Pi Web Windowsインストールガイド:Pi Coding Agentのセッション、モデル、Worktreeをブラウザで管理

WindowsでPi Webを導入し、プロキシとポートを設定しながら、Pi Coding Agentのセッション、モデル、Skills、プロジェクトファイル、Git Worktreeを管理する方法を解説します。

Pi Web は、Pi コーディング エージェントのネイティブ Web インターフェイスです。 Pi を別のクラウド エージェントに変換するわけではありません。代わりに、ローカル マシン上の既存の Pi セッション ファイルを読み取り、会話、ツール呼び出し、コンテキストの使用状況、モデル設定、スキル、プロジェクト ファイルをブラウザーに表示します。

プロジェクトアドレス:

https://github.com/agegr/pi-web

これが適したシナリオは明らかです。すでに Pi を使用しているが、ターミナルで履歴セッションを常にスクロールしたくない場合、またはプロジェクト ファイルを見ながら同じエージェント タスクを続行したい場合です。

インストール前に確認してください

Windows では、以下を準備します。

  • Node.js と npm;
  • すでに通常に使用されている Pi コーディング エージェント。
  • PowerShell または Windows ターミナル;
  • Gitで管理されるプロジェクトディレクトリ。

Node.js を確認します。

1
2
node --version
npm --version

Pi Web はデフォルトで次のように読み取ります。

1
~/.pi/agent/sessions

Pi がセッションを生成していない場合は、Web ページを起動できますが、セッション リストは空である可能性があります。

インストールせずに直接実行

最も簡単な方法は、npx を使用することです。

1
npx @agegr/pi-web@latest

サービスが開始されると、ブラウザが自動的に開こうとします。デフォルトのアドレスは次のとおりです。

1
http://localhost:30141

この方法は初めての経験に適しています。コマンドをグローバル npm ディレクトリに永続的にインストールする必要はありません。

グローバルインストール

よく使用されるものは次のように実行できます。

1
2
npm install -g @agegr/pi-web
pi-web

PowerShell で pi-web が見つからないというメッセージが表示された場合は、npm グローバル ディレクトリが PATH にあるかどうかを確認します。

1
2
npm config get prefix
Get-Command pi-web -ErrorAction SilentlyContinue

PATH を変更した後、ターミナルを再度開く必要があります。

ポートとリスニングアドレスを変更します

デフォルトでこのマシンのみで使用する場合は、ループバック アドレスを明示的にバインドすることをお勧めします。

1
pi-web --hostname 127.0.0.1

ポートを変更します:

1
pi-web --port 8080

組み合わせて使用​​します:

1
pi-web -p 8080 -H 127.0.0.1

バックグラウンド サービスとして、ブラウザを自動的に開きたくない場合:

1
pi-web --no-open

携帯電話からアクセスするためだけに、0.0.0.0 を直接バインドしてパブリック ネットワーク ポートを開かないでください。 Pi Web は、エージェント セッション、プロジェクト ファイル、およびソース コード、ファイル パス、プロンプト ワード、ツール出力を含むモデル構成を読み取ることができます。

HTTP プロキシを構成する

Pi Web は、標準のプロキシ環境変数を読み取ります。 Windows PowerShell の例:

1
2
3
4
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:NO_PROXY = "localhost,127.0.0.1"
npx @agegr/pi-web@latest

これらの変数は、現在の PowerShell セッション内でのみ有効です。 NO_PROXY は非常に重要です。そうしないと、ローカル サービスにアクセスするときにプロキシにも送信される可能性があります。

Pi セッションが見つからない場合はどうすればよいですか?

Pi Web は、デフォルトで ~/.pi/agent/sessions から JSONL セッションを読み取ります。 Pi データ ディレクトリがデフォルトの場所にない場合は、次のように設定します。

1
2
$env:PI_CODING_AGENT_DIR = "D:\pi-data"
pi-web

まず、ディレクトリが実際に存在するかどうかを確認します。

1
2
Test-Path "$HOME\.pi\agent\sessions"
Get-ChildItem "$HOME\.pi\agent\sessions" -Directory

セッションはプロジェクトの作業ディレクトリごとに編成されます。同じリポジトリが異なるドライブ文字、ソフト リンク、または WSL パスから開かれた場合、異なるプロジェクトとして認識される可能性があります。

Web ページでは何を管理できますか?

Pi Web は主に次の機能を提供します。

  • 過去の Pi セッションをプロジェクトごとに閲覧できます。
  • 継続、フォーク、または古いメッセージから新しいブランチを作成します。
  • マークダウン、ツール呼び出し、およびコンテキスト圧縮ステータスを表示します。
  • プロジェクトのソース コード、ドキュメント、画像、オーディオ、PDF を表示します。
  • モデル、ログイン情報、API キー、およびモデルのテストを管理します。
  • スキルをオンまたはオフにします。
  • Git ワークツリーを切り替えます。

クラウド状態の個別のコピーではなく、ローカルの Pi 構成とセッションを読み書きします。モデル設定またはセッション ブランチを変更する前に、.pi ディレクトリをバックアップすることをお勧めします。

フォークとセッション内分岐の違いは何ですか?

Pi Web のフォークは、元のセッションを保持しながらノードから別の実装ルートを試すのに適した新しい JSONL セッション ファイルを作成します。

「ここから編集」は、同じセッションファイル内にブランチを作成します。軽量ですが、スタンドアロン ファイルよりも整理や移行が直感的ではありません。

2 つの実装を比較する場合、または異なるワークツリーにハンドオフする場合は、最初にフォークします。プロンプトを修正するか、前のステップに戻るだけの場合は、セッション内分岐を使用します。

Git Worktree と連携する

ワークツリーは、同じファイルが同時に変更されることを避けるために、異なるエージェント セッションが独立した作業ディレクトリ内の異なるブランチを処理できるようにするのに適しています。

まず、メイン リポジトリにワークツリーを作成します。

1
2
git worktree add ..\my-project-feature -b feature/pi-test
git worktree list

Pi Web のサイドバーでは、認識されたワークツリーを切り替え、新しいセッションとファイル ブラウザが対応するディレクトリをたどることができます。

完了したら、まずブランチのコンテンツが送信されたことを確認してから、ブランチのコンテンツを削除します。

1
2
git worktree remove ..\my-project-feature
git branch -d feature/pi-test

コミットされていない変更が存在する場合は、ワークツリーの削除を強制しないでください。

## よくある質問

よくある問題

ページは開きますが、履歴がありません

PI_CODING_AGENT_DIR、デフォルトのセッション ディレクトリ、および現在の Windows ユーザーが正しいことを確認してください。管理者として 1 回実行し、通常のユーザーとして 1 回実行すると、2 つの異なるユーザー ディレクトリ セットが作成される場合もあります。

ポートが占有されています

ポートを変更します。

1
pi-web --port 30142

または、占有されているプロセスをクエリします。

1
Get-NetTCPConnection -LocalPort 30141 -ErrorAction SilentlyContinue

モデルリクエストが失敗しました

まず、Pi CLI で同じモデルが使用できることを確認し、次に Pi Web プロセスがプロキシ変数と API キーを継承しているかどうかを確認します。 Web ページが開ける場合は、ローカル サービスが正常であることを意味するだけで、モデル サプライヤーが正常に接続されたことを意味するわけではありません。

プロジェクトファイルが見られません

ファイル プレビューの範囲は、選択したプロジェクト ディレクトリとセッション作業ディレクトリによって制限されます。セッションが実際にターゲット リポジトリから開始されていることを確認し、一貫性のないドライブ文字マッピングやソフト リンクを介してプロジェクトに入らないようにしてください。

Pi Web への安全なリモートアクセス

Pi Web はデフォルトで 127.0.0.1 のみをリッスンし、独自のアプリケーションログイン機能を持ちません。画面から Pi Coding Agent のセッションを操作できるため、サービスはループバックのままにし、SSH トンネル経由でアクセスします。手順を一つ減らすためにインターネットへ直接公開しないでください。

推奨構成:ループバックと SSH トンネル

サーバー側でループバックアドレスを明示して Pi Web を起動します。

1
npx @agegr/pi-web@latest --hostname 127.0.0.1 --port 30141 --no-open

結果が 0.0.0.0:30141 ではなく 127.0.0.1:30141 になっていることを確認します。

1
Get-NetTCPConnection -LocalPort 30141 -ErrorAction SilentlyContinue

クライアントからローカルポートフォワーディングを作成します。

1
ssh -L 30141:127.0.0.1:30141 user@server

SSH セッションを開いたまま、クライアントで http://127.0.0.1:30141 を開きます。Pi Web はサーバーのループバックだけで待ち受け、認証と通信の暗号化は SSH が担当します。

0.0.0.0 に直接バインドしない理由

0.0.0.0 はすべてのネットワークインターフェースで待ち受けます。現在は内部ネットワークでも、クラウドのファイアウォール、ルーティング、VPN、ポート転送の変更で公開される可能性があります。Pi Web には組み込みのログイン層がないため、ページへ到達できる利用者はセッション、プロジェクトパス、Agent の操作入口を見られるおそれがあります。

テストで外部向けにバインドした場合は、すぐに 127.0.0.1 へ戻し、リスナーと一時的なファイアウォールルールを確認してください。

リバースプロキシが必要な場合の保護

継続的な複数ユーザーアクセスが必要な場合だけリバースプロキシを使います。入口には TLS、独立した認証、アクセスログ、接続元制限が必要です。reverse_proxy 127.0.0.1:30141 だけでは十分な保護になりません。

再読み込み前に設定を検証します。

1
caddy validate --config Caddyfile

未認証の要求が拒否されること、WebSocket や長時間接続が動くこと、認証が壊れた場合にルートを直ちに停止できることも確認します。Pi のセッション、Cookie、モデル認証情報をログへ記録しないでください。

プロキシ環境変数はサービスプロセスに設定する

モデル要求に HTTP プロキシが必要なら、Pi Web を起動する同じターミナルで変数を設定します。

1
2
3
4
$env:HTTP_PROXY='http://127.0.0.1:7890'
$env:HTTPS_PROXY=$env:HTTP_PROXY
$env:NO_PROXY='localhost,127.0.0.1'
npx @agegr/pi-web@latest --hostname 127.0.0.1 --port 30141 --no-open

ページは開くのにモデル要求が失敗する場合、Pi Web のサーバーログとプロキシログを確認します。ブラウザーのプロキシ設定は、サーバー上の Node.js プロセスへ自動的には渡りません。

トンネル切断と古い画面表示

タブに古い画面が残っていても、トンネルが生きているとは限りません。新しい要求を送って確認します。

1
2
Test-NetConnection 127.0.0.1 -Port 30141
curl.exe -I http://127.0.0.1:30141

SSH が切断していたら、トンネルを作り直してからページを再読み込みします。調査中にポート、プロキシ、起動引数を同時に変えないでください。

複数ユーザーサーバーでのセッション分離

Pi のセッションは通常、現在のユーザーの ~/.pi に保存されます。共有サーバーでは OS アカウントを分けて Pi Web を実行し、ディレクトリ権限を確認します。

1
Get-ChildItem -Force $env:USERPROFILE\.pi -ErrorAction SilentlyContinue

共通サービスアカウントに全員のセッションを読ませたり、ディレクトリ全体を共有ドライブへコピーしたりしないでください。バックアップにプロジェクトパス、会話、トークンなどの機密情報が含まれないか確認します。

終了と受け入れ確認

リモートアクセスが不要になったら Pi Web と SSH トンネルを停止し、ポートが消えたことを確認します。

1
Get-NetTCPConnection -LocalPort 30141 -ErrorAction SilentlyContinue

合格条件は、Pi Web がループバックだけをリッスンすること、リモート通信が SSH または認証済みプロキシだけを通ること、未認証要求が拒否されること、切断済みトンネルから新しい操作を開始できないこと、ログに認証情報がないこと、更新後にリスナーと認証境界を再確認することです。

セキュリティに関する推奨事項

Pi Web は、モデル設定、エージェント セッション、プロジェクト ファイルにアクセスします。提案:

  1. デフォルトのバインディング 127.0.0.1;
  2. ポートをパブリック ネットワークに直接マッピングしないでください。
  3. API キー、プロンプト ワード、プライベート ソース コードをスクリーンショットで公開しないでください。
  4. Pi セッション ディレクトリを定期的にバックアップします。
  5. Worktree を切り替えるか削除する前に、コミットされていない変更を確認します。
  6. まず企業プロジェクトにおけるコードとモデルデータの使用ポリシーを確認します。

Pi Web は、既存の Pi ユーザーがセッション管理を改善するのに適しています。コードを記述できるエージェントを探しているだけの場合は、Web インターフェイスをインストールする前に、まず Pi CLI モデル、権限、および基本的なワークフローを実行する必要があります。