コンテンツにスキップ

セッション

Pi は会話をセッションとして保存し、作業の続行、以前のターンからの分岐、過去のパスの再訪ができます。

セッションは作業ディレクトリごとに整理され、~/.pi/agent/sessions/ に自動保存されます。各セッションはツリー構造を持つ JSONL ファイルです。

Terminal window
pi -c # 直近のセッションを続行
pi -r # 過去のセッションを参照して選択
pi --no-session # 一時モード;保存しない
pi --name "my task" # 起動時にセッション表示名を設定
pi --session <path|id> # 特定のセッションファイルまたは部分セッション ID を使用
pi --fork <path|id> # セッションファイルまたは部分セッション ID を新しいセッションにフォーク

対話モードでは /session で現在のセッションファイル、セッション ID、メッセージ数、トークン、コストを確認できます。

JSONL ファイル形式と SessionManager API については セッション形式 を参照してください。

コマンド説明
/resume過去のセッションを参照して選択
/new新しいセッションを開始
/name <name>現在のセッション表示名を設定
/sessionセッション情報を表示
/tree現在のセッションツリーを操作
/fork以前のユーザーメッセージから新しいセッションを作成
/clone現在のアクティブブランチを新しいセッションに複製
/compact [prompt]古いコンテキストを要約;コンパクション を参照
/export [file]セッションを HTML にエクスポート
/share非公開 GitHub gist としてアップロードし、共有可能な HTML リンクを取得

/resume は現在のプロジェクト用の対話型セッションピッカーを開きます。pi -r は起動時に同じピッカーを開きます。

ピッカーでは以下ができます:

  • 入力で検索
  • Ctrl+P でパス表示を切り替え
  • Ctrl+S でソートモードを切り替え
  • Ctrl+N で名前付きセッションに絞り込み
  • Ctrl+R で名前を変更
  • Ctrl+D で削除し、確認

利用可能な場合、pi はファイルを完全削除する代わりに trash CLI で削除します。

/name <name> で人間が読めるセッション名を設定:

/name Refactor auth module

起動時に --name または -n で名前を設定:

Terminal window
pi --name "Refactor auth module"
pi --name "CI audit" -p "Review this build failure"

名前付きセッションは /resumepi -r で見つけやすくなります。

セッションはツリーとして保存されます。各エントリには idparentId があり、現在位置はアクティブなリーフです。/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ラベルのタイムスタンプを切り替え
Enterエントリを選択
Escape/Ctrl+Cキャンセル
Ctrl+Oフィルターモードを切り替え

フィルターモードは default、no-tools、user-only、labeled-only、all です。デフォルトは 設定treeFilterMode で構成します。

ユーザーメッセージまたはカスタムメッセージを選択した場合:

  1. リーフを選択メッセージの親に移動。
  2. 選択メッセージのテキストをエディターに配置。
  3. 編集して再送信し、新しいブランチを作成。

アシスタント、ツール、コンパクション、その他の非ユーザーエントリを選択した場合:

  1. リーフをそのエントリに移動。
  2. エディターを空のままにする。
  3. その地点から続行。

ルートユーザーメッセージを選択すると、リーフが空の会話にリセットされ、元のプロンプトがエディターに配置されます。

機能/tree/fork/clone
出力同じセッションファイル新しいセッションファイル新しいセッションファイル
表示完全なツリーユーザーメッセージセレクター現在のアクティブブランチ
典型的な用途代替案を同じ場所で探索以前のプロンプトから新しいセッションを開始続行前に現在の作業を複製
要約オプションのブランチ要約なしなし

代替案をまとめて保持したい場合は /tree を使用します。別のセッションファイルが必要な場合は /fork または /clone を使用します。

/tree であるブランチから別のブランチに切り替えると、pi は放棄されたブランチを要約し、その要約を新しい位置に添付できます。これにより、離れたパスの重要なコンテキストを、ブランチ全体を再生せずに保持できます。

プロンプトが表示されたら、以下から 1 つを選択:

  1. 要約なし
  2. デフォルトプロンプトで要約
  3. カスタムフォーカス指示で要約

ブランチ要約の内部と拡張フックについては コンパクション を参照してください。

セッションファイルは JSONL で、メッセージエントリ、モデル変更、思考レベル変更、ラベル、コンパクション、ブランチ要約、拡張エントリを含みます。

パーサー、拡張機能、SDK の使用、完全な SessionManager API については セッション形式 を参照してください。