会话
Pi 将对话保存为会话(session),方便你继续工作、从更早的轮次分支(branch),并重新回顾之前的路径。
会话自动保存到 ~/.pi/agent/sessions/,按工作目录组织。每个会话是一个 JSONL 文件,内部采用树形结构。
pi -c # 继续最近一次会话pi -r # 浏览并从过去的会话中选择pi --no-session # 临时模式;不保存pi --name "my task" # 启动时设置会话显示名称pi --session <path|id> # 使用指定的会话文件或部分会话 IDpi --fork <path|id> # 将某个会话文件或部分会话 ID 分叉为新会话在交互模式下使用 /session 可查看当前会话文件、会话 ID、消息数、token 数和费用。
JSONL 文件格式和 SessionManager API 参见会话格式。
| 命令 | 说明 |
|---|---|
/resume |
浏览并选择之前的会话 |
/new |
开始一个新会话 |
/name <name> |
设置当前会话的显示名称 |
/session |
显示会话信息 |
/tree |
在当前会话树中导航 |
/fork |
从之前的一条用户消息创建新会话 |
/clone |
将当前活动分支复制为新会话 |
/compact [prompt] |
总结较早的上下文;参见上下文压缩 |
/export [file] |
将会话导出为 HTML |
/share |
上传为私有 GitHub gist,并提供可分享的 HTML 链接 |
继续与删除会话
Section titled “继续与删除会话”/resume 打开当前项目的交互式会话选择器。pi -r 在启动时打开同一个选择器。
在选择器中,你可以:
- 通过输入进行搜索
- 按 Ctrl+P 切换路径显示
- 按 Ctrl+S 切换排序方式
- 按 Ctrl+N 过滤出已命名的会话
- 按 Ctrl+R 重命名
- 按 Ctrl+D 删除,然后确认
可用时,pi 使用 trash 命令行工具执行删除,而非永久移除文件。
使用 /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 进行分支
Section titled “使用 /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..." ← 当前│ └─ 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 配置。
选择一条用户消息或自定义消息时:
- 将叶节点移动到所选消息的父节点。
- 将所选消息文本放入编辑器。
- 你可以编辑并重新提交,从而创建新分支。
选择一条助手、工具、压缩或其他非用户记录时:
- 将叶节点移动到该记录。
- 编辑器保持为空。
- 你可以从该位置继续。
选择根用户消息会将叶节点重置为空对话,并把原始提示词放入编辑器。
/tree、/fork 与 /clone
Section titled “/tree、/fork 与 /clone”| 特性 | /tree |
/fork |
/clone |
|---|---|---|---|
| 输出 | 同一会话文件 | 新会话文件 | 新会话文件 |
| 视图 | 完整树 | 用户消息选择器 | 当前活动分支 |
| 典型用途 | 就地探索各种备选路径 | 从较早的提示词开始新会话 | 在继续之前复制当前工作 |
| 概要 | 可选的分支摘要 | 无 | 无 |
当你想把备选路径保留在一起时,使用 /tree;当你想要独立的会话文件时,使用 /fork 或 /clone。
当 /tree 从一个分支切换到另一个分支时,pi 可以总结被放弃的分支,并把摘要附加到新位置。这样可以在不重放整条分支的情况下,保留你离开路径时的重要上下文。
提示时,选择以下之一:
- 不生成摘要
- 使用默认提示词生成摘要
- 使用自定义重点指令生成摘要
分支摘要的实现细节和扩展钩子参见上下文压缩。
会话文件是 JSONL 格式,包含消息记录、模型切换、思考级别切换、标签、压缩记录、分支摘要和扩展记录。
解析器、扩展、SDK 用法以及完整的 SessionManager API 参见会话格式。