セッション
Pi は会話をセッションとして保存するので、作業を続行したり、以前のターンから分岐したり、以前のパスを再訪したりすることができます。
セッションストレージ
セッションは作業ディレクトリごとに整理されて ~/.pi/agent/sessions/ に自動保存されます。各セッションはツリー構造の JSONL ファイルです。
pi -c # Continue most recent session
pi -r # Browse and select from past sessions
pi --no-session # Ephemeral mode; do not save
pi --name "my task" # Set session display name at startup
pi --session <path|id> # Use a specific session file or partial session ID
pi --fork <path|id> # Fork a session file or partial session ID into a new session対話モードで /session を使用すると、現在のセッション ファイル、セッション ID、メッセージ数、トークン、コストが表示されます。
JSONL ファイル形式と SessionManager API については、Session Format を参照してください。
セッションコマンド
| 指示 | 説明 |
|---|---|
/resume |
以前のセッションを参照して選択する |
/new |
新しいセッションを開始する |
/name <name> |
現在のセッションの表示名を設定します |
/session |
セッション情報を表示 |
/tree |
現在の session tree をナビゲートします |
/fork |
以前のユーザー メッセージから新しいセッションを作成する |
/clone |
現在のアクティブなブランチを新しいセッションに複製します。 |
/compact [prompt] |
古いコンテキストを要約します。 Compactionを参照 |
/export [file] |
セッションをHTMLにエクスポート |
/share |
共有可能な HTML リンクを使用してプライベート GitHub 要点としてアップロードします |
セッションの再開と削除
/resume は、現在のプロジェクトの対話型セッション ピッカーを開きます。 pi -r は起動時に同じピッカーを開きます。
ピッカーでは次のことができます。
- 入力して検索する
- Ctrl+Pでパス表示を切り替える
- Ctrl+S で並べ替えモードを切り替えます
- Ctrl+N を使用して名前付きセッションにフィルターをかける
- Ctrl+Rで名前を変更
- Ctrl+D で削除し、確認します
利用可能な場合、pi はファイルを完全に削除するのではなく、削除に trash CLI を使用します。
セッションの命名
/name <name> を使用して、人間が読めるセッション名を設定します。
/name Refactor auth module起動時の名前を --name または -n で設定します。
pi --name "Refactor auth module"
pi --name "CI audit" -p "Review this build failure"名前付きセッションは、/resume と pi -r で見つけやすくなります。
/treeで分岐
セッションはツリーとして保存されます。すべてのエントリには id と parentId があり、現在の位置がアクティブ リーフになります。 /tree を使用すると、新しいファイルを作成せずに、前のポイントにジャンプしてそこから続行できます。

形状の例:
├─ user: "Hello, can you help..."
│ └─ assistant: "Of course! I can..."
│ ├─ user: "Let's try approach A..."
│ │ └─ assistant: "For approach A..."
│ │ └─ user: "That worked..." ← active
│ └─ user: "Actually, approach B..."
│ └─ assistant: "For approach B..."ツリーコントロール
| 鍵 | アクション |
|---|---|
| ↑/↓ | 表示されているエントリを移動する |
| ←/→ | ページアップ/ページダウン |
| Ctrl+←/Ctrl+→ または Alt+←/Alt+→ | 分岐セグメント間を折りたたむ/展開する、またはジャンプする |
| Shift+L | 選択したエントリのラベルを設定またはクリアします |
| Shift+T | ラベルのタイムスタンプを切り替えます |
| 入力 | エントリを選択 |
| エスケープ/Ctrl+C | キャンセル |
| Ctrl+O | サイクルフィルターモード |
フィルター モードは、デフォルト、ツールなし、ユーザーのみ、ラベル付きのみ、およびすべてです。 SettingsのtreeFilterModeでデフォルトを設定します。
選択動作
ユーザーまたはカスタム メッセージの選択:
- リーフを選択したメッセージの親に移動します。
- 選択したメッセージ テキストをエディタに配置します。
- 新しいブランチを作成して、編集して再送信できます。
アシスタント、ツール、圧縮、またはその他の非ユーザー エントリの選択:
- リーフをそのエントリに移動します。
- エディターを空のままにします。
- その時点から続行できます。
root ユーザーのメッセージを選択すると、リーフが空の会話にリセットされ、元のプロンプトがエディターに表示されます。
/tree、/fork、/clone
| 特徴 | /tree |
/fork |
/clone |
|---|---|---|---|
| 出力 | 同じセッションファイル | 新しいセッションファイル | 新しいセッションファイル |
| ビュー | 完全なツリー | ユーザーメッセージセレクター | 現在アクティブなブランチ |
| 一般的な使用方法 | 代替案を検討する | 以前のプロンプトから新しいセッションを開始する | 続行する前に現在の作業を複製してください |
| まとめ | オプションのブランチの概要 | なし | なし |
代替案をまとめたい場合は、/tree を使用します。別のセッション ファイルが必要な場合は、/fork または /clone を使用します。
ブランチの概要
/tree があるブランチから別のブランチに切り替えると、pi は放棄されたブランチを要約し、その要約を新しい位置に添付できます。これにより、ブランチ全体を再生することなく、離れたパスからの重要なコンテキストが保持されます。
プロンプトが表示されたら、次のいずれかを選択します。
- 要約なし
- デフォルトのプロンプトで要約する
- カスタムフォーカス命令で要約する
branch summarization の内部構造と拡張フックについては、Compaction を参照してください。
セッション形式
セッション ファイルは JSONL で、メッセージ エントリ、モデルの変更、思考レベルの変更、ラベル、圧縮、ブランチの要約、および拡張エントリが含まれます。
パーサー、拡張機能、SDK の使用法、および完全な SessionManager API については、Session Format を参照してください。