PI DOCUMENTATION / 日本語
Pi の仕組み
Pi は、モデルへのリクエスト、ツールの実行、コンテキストの組み立て、セッションの保存を調整します。セッションは、メッセージ、ツール呼び出しとその結果、モデルの変更、圧縮、その他のイベントを含む、Pi による会話の記録です。
セッション内のメッセージとイベントはツリーを形成します。そのツリー内の各パスが分岐です。現在のエントリで終わる分岐がアクティブな分岐であり、次のモデルリクエストに使用する履歴を提供します。
エージェントループ#
送信されたメッセージは、アクティブな分岐に追加されます。Pi は、システムプロンプト、アクティブな分岐、利用可能なツール、モデル設定からモデルリクエストを構築し、選択されたプロバイダーを通じて送信します。
プロバイダーは、テキストとツール呼び出しを含むことができるアシスタントの応答をストリーミングします。Pi は応答を記録し、各ツール呼び出しを実行して、その結果を記録します。これで1回のターンが完了します。ツールの結果またはキューに入っているメッセージによって別のモデルリクエストが必要になった場合、Pi は次のターンを開始します。それ以外の場合、実行は終了します。
ステアリングメッセージは、現在のアシスタントのターンの後に入ります。フォローアップメッセージは、エージェントが保留中の作業を完了した後に入ります。中止すると、現在の実行が停止し、キューに入っているメッセージがエディターに戻されます。
コンテキスト#
アクティブな分岐が会話履歴を提供します。Pi は、そのセッションエントリをモデル互換のユーザー、アシスタント、ツール結果の各メッセージに変換します。
Pi は、基本命令と検出されたコンテキストファイルからシステムプロンプトを構築します。リクエストには、ツール定義とスキルの説明も含まれます。
スキルの完全な指示は、必要に応じて読み込まれます。拡張機能は、指示を追加したり、コンテキストを変換したりできます。
プロンプトテンプレートは、エディターの入力がユーザーメッセージになる前に展開されます。選択したファイル、画像、貼り付けたテキスト、シェル出力は、メッセージの内容にできます。
セッション#
永続セッションは JSONL ファイルです。各ツリーエントリには ID があり、親を参照します。現在のエントリがアクティブな分岐を特定します。
以前のエントリから続行すると、同じファイル内に別の分岐が作成されます。フォークとクローンでは、選択した履歴が新しいセッションファイルにコピーされます。
モデルのコンテキストは、アクティブな分岐から再構築されます。圧縮では、以降のモデルリクエストで古いメッセージを置き換える要約エントリが挿入されます。元のエントリはセッションツリーに残ります。
インターフェース#
対話モードでは、セッションとエージェントのイベントがターミナルに表示されます。プリントモードでは、プロンプトを実行して最終応答を書き出します。JSON モードでは、エージェントのイベントを JSONL として書き出します。
RPC モードでは、標準入力で JSONL コマンドを受け取り、標準出力に応答とイベントを書き出します。TypeScript SDK は、プロセス内でエージェントセッションを作成および制御します。
すべてのインターフェースで、同じエージェントとセッションの仕組みが使用されます。
拡張機能とリソース#
拡張機能は、Pi プロセスに読み込まれる TypeScript モジュールです。そのファクトリ関数は、ツール、コマンド、ショートカット、プロバイダー、イベントハンドラー、レンダラー、ターミナル UI を登録します。
スキルは、必要に応じて読み込まれる指示と補助ファイルを提供します。プロンプトテンプレートは、再利用可能なメッセージテキストを提供します。テーマは、ターミナルの配色を提供します。Pi パッケージは、npm または git を通じてこれらのリソースを配布します。
信頼と権限#
Pi は、プロジェクトの設定とリソースを読み込む前に、プロジェクトを信頼するかどうかを決定します。信頼に関する決定とプロジェクトリソースの読み込みが完了した後、Pi はコンテキストファイルを読み込みます。有効なツールは、Pi プロセスのオペレーティングシステム権限を使用します。拡張機能は、そのプロセス内で実行されます。