本文为社区中文翻译(依据 MIT 协议),阅读英文原文 →。译文可能滞后于上游更新。
会话
会话存储
会话自动保存到 ~/.pi/agent/sessions/,按工作目录归档。每个会话是一棵树状结构的 JSONL 文件。
pi -c # 继续最近一次会话
pi -r # 浏览并选择历史会话
pi --no-session # 临时模式,不保存
pi --name "我的任务" # 启动时设置会话显示名
pi --session <路径|id> # 使用指定会话文件或部分会话 ID
pi --fork <路径|id> # 把会话文件分叉为新会话
交互模式中用 /session 查看当前会话文件、会话 ID、消息数、token 与费用。
JSONL 文件格式与 SessionManager API 见会话格式。
会话命令
| 命令 | 说明 |
|---|---|
/resume |
浏览并选择历史会话 |
/new |
开始新会话 |
/name <名称> |
设置当前会话显示名 |
/session |
显示会话信息 |
/tree |
在当前会话树中导航 |
/fork |
从更早的用户消息创建新会话 |
/clone |
把当前活动分支复制为新会话 |
/compact [提示] |
摘要较早的上下文,见压缩 |
/export [文件] |
把会话导出为 HTML |
/share |
上传为私有 GitHub gist,生成可分享链接 |
恢复与删除会话
/resume 打开当前项目的交互式会话选择器;pi -r 在启动时打开同一个选择器。
选择器里可以:
- 输入即搜索
- Ctrl+P 切换路径显示
- Ctrl+S 切换排序方式
- Ctrl+N 只看命名会话
- Ctrl+R 重命名
- Ctrl+D 删除(需确认)
可用时,Pi 会用 trash CLI 删除文件,而不是直接永久移除。
会话命名
用 /name <名称> 设置人类可读的会话名:
/name 重构 auth 模块
启动时用 --name 或 -n 设置:
pi --name "重构 auth 模块"
pi --name "CI 审计" -p "评审这个构建失败"
命名会话在 /resume 和 pi -r 里更容易找到。
用 /tree 分支
会话以树的形式存储。每个条目都有 id 和 parentId,当前位置就是活动叶子节点。/tree 可以跳到任意历史节点并从那里继续,不需要新建文件。
示例形状:
├─ user: "你好,能帮我……"
│ └─ assistant: "当然可以!我可以……"
│ ├─ user: "我们试试方案 A……"
│ │ └─ assistant: "对于方案 A……"
│ │ └─ user: "方案 A 成功了……" ← 当前
│ └─ user: "其实还是用方案 B……"
│ └─ assistant: "对于方案 B……"
树视图按键
| 按键 | 动作 |
|---|---|
| ↑/↓ | 在可见条目间移动 |
| ←/→ | 上下翻页 |
| Ctrl+←/Ctrl+→ 或 Alt+←/Alt+→ | 折叠/展开,或在分支段之间跳转 |
| Shift+L | 给选中条目设置或清除标签 |
| Shift+T | 切换标签时间戳显示 |
| Enter | 选中条目 |
| Escape/Ctrl+C | 取消 |
| Ctrl+O | 循环切换过滤模式 |
过滤模式有:默认、不显示工具、仅用户消息、仅带标签、全部。默认值可在设置中用 treeFilterMode 配置。
选中行为
选中用户消息或自定义消息时:
- 叶子节点移动到该消息的父节点。
- 该消息文本放进编辑器。
- 你可以编辑后重新提交,形成新分支。
选中助手消息、工具、压缩或其他非用户条目时:
- 叶子节点移动到该条目。
- 编辑器保持为空。
- 你可以从该节点继续。
选中根用户消息会把叶子重置为空对话,并把最初的提示词放回编辑器。
/tree、/fork 与 /clone
| 特性 | /tree |
/fork |
/clone |
|---|---|---|---|
| 输出 | 同一会话文件 | 新会话文件 | 新会话文件 |
| 视图 | 完整树 | 用户消息选择器 | 当前活动分支 |
| 典型用途 | 原地比较不同方案 | 从更早的提示词另起新会话 | 继续之前先复制当前工作 |
| 摘要 | 可选的分支摘要 | 无 | 无 |
想把备选方案留在同一处,用 /tree;想要独立的会话文件,用 /fork 或 /clone。
分支摘要
当 /tree 从一条分支切换到另一条时,Pi 可以把被离开的分支生成摘要并挂到新位置。这样既保留了那条路径的重要上下文,又不必整段回放。
出现询问时,可选:
- 不生成摘要
- 用默认提示词生成摘要
- 用自定义关注点生成摘要
分支摘要的内部机制与扩展钩子见压缩。
会话格式
会话文件是 JSONL,包含消息条目、模型切换、思考等级切换、标签、压缩、分支摘要和扩展条目。
解析器、扩展、SDK 用法与完整的 SessionManager API 见会话格式。