工作階段
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、訊息數量、token 和成本。
JSONL 檔案格式和 SessionManager API 見 Session Format。
工作階段指令
| 指令 | 描述 |
|---|---|
/resume |
瀏覽並選擇以前的工作階段 |
/new |
開始新工作階段 |
/name <name> |
設定目前工作階段顯示名稱 |
/session |
顯示工作階段資訊 |
/tree |
導航目前 session tree |
/fork |
根據先前的使用者訊息建立新工作階段 |
/clone |
將目前活動分支複製到新工作階段中 |
/compact [prompt] |
總結較舊的上下文;見 Compaction |
/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 設定啟動時的名稱:
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 | 切換標籤時間戳 |
| Enter | 選擇條目 |
| Escape/Ctrl+C | 取消 |
| Ctrl+O | 循環過濾模式 |
過濾器模式有:預設、無工具、僅使用者、僅標記和全部。在 Settings 中設定預設值 treeFilterMode。
選擇行為
選擇使用者或自訂訊息:
- 將葉節點移動到所選訊息的父級。
- 將選定的訊息文字放置在編輯器中。
- 可以編輯並重新commit,從而建立新分支。
選擇助理、工具、壓縮或其他非使用者條目:
- 將葉節點移動到該條目。
- 將編輯器留空。
- 可以從該位置繼續。
選擇根使用者訊息會將葉節點重置為空對話,並將原始 Prompt 放入編輯器。
/tree、/fork、/clone
| 功能 | /tree |
/fork |
/clone |
|---|---|---|---|
| 輸出 | 相同的工作階段檔案 | 新工作階段檔案 | 新工作階段檔案 |
| 視圖 | 完整樹 | 使用者訊息選擇器 | 目前活動分支 |
| 典型用途 | 在原工作階段中探索替代方案 | 從之前的 Prompt 開始新工作階段 | 在繼續前複製目前工作 |
| 摘要 | 選用分支摘要 | 無 | 無 |
想把替代方案儲存在同一個工作階段中時,使用 /tree。需要單獨工作階段檔案時,使用 /fork 或 /clone。
分支摘要
當 /tree 從一個分支切換到另一個分支時,pi 可以總結被離開的分支,並將摘要附加到新位置。這樣可以保留原路徑中的重要上下文,而不必重放整個分支。
出現提示時,選擇以下選項之一:
- 不產生摘要
- 使用預設 Prompt 產生摘要
- 使用自訂關注點說明產生摘要
請參閱 Compaction 瞭解分支摘要的內部機制和擴充 Hook。
工作階段格式
工作階段檔案是 JSONL,包含訊息條目、模型變更、thinking level 變更、標籤、壓縮、分支摘要和擴充條目。
解析器、擴充、SDK 用法和完整的 SessionManager API 見 Session Format。