跳至内容

会话

创建于 2025-07-16·更新于 2026-07-16

Pi 将会话保存为会话(sessions),以便你可以继续工作、从之前的节点分支以及回溯之前的路径。

会话存储 Session Storage

会话自动保存到 ~/.pi/agent/sessions/,按工作目录组织。每个会话是一个 JSONL 文件,具有树状结构。

pi -c                  # 继续最近的会话
pi -r                  # 浏览并从历史会话中选择
pi --no-session        # 临时模式;不保存
pi --name "my task"    # 启动时设置会话显示名称
pi --session <path|id> # 使用指定的会话文件或部分会话 ID
pi --fork <path|id>    # 从会话文件或部分会话 ID 分叉出新会话

在交互模式中使用 /session 查看当前会话文件、会话 ID、消息数量、token 数和费用。

有关 JSONL 文件格式和 SessionManager API,请参见会话格式

会话命令 Session Commands

命令描述
/resume浏览并选择历史会话
/new开始新会话
/name <name>设置当前会话的显示名称
/session显示会话信息
/tree浏览当前会话树
/fork从之前的用户消息创建新会话
/clone将当前活动分支复制到新会话
/compact [prompt]总结较早的上下文;参见压缩
/export [file]将会话导出为 HTML
/share以私有 GitHub Gist 上传,附带可分享的 HTML 链接

恢复与删除会话 Resuming and Deleting Sessions

/resume 打开当前项目的交互式会话选择器。pi -r 在启动时打开同样的选择器。

在选择器中你可以:

  • 输入文字进行搜索
  • 按 Ctrl+P 切换路径显示
  • 按 Ctrl+S 切换排序模式
  • 按 Ctrl+N 过滤出已命名会话
  • 按 Ctrl+R 重命名
  • 按 Ctrl+D 删除,然后确认

当可用时,pi 使用 trash CLI 来删除文件,而非永久移除。

命名会话 Naming Sessions

使用 /name <name> 设置一个人类可读的会话名称:

/name 重构认证模块

在启动时使用 --name-n 设置名称:

pi --name "重构认证模块"
pi --name "CI 审计" -p "检查此构建失败"

已命名的会话在 /resumepi -r 中更容易找到。

使用 /tree 进行分支 Branching with /tree

会话存储为树状结构。每个条目都有 idparentId,当前位置即为活动叶子节点。/tree 允许你跳转到任意之前的位置并从此继续,而无需创建新文件。

树状视图

示例结构:

├─ user: "你好,你能帮我..."
│  └─ assistant: "当然!我可以..."
│     ├─ user: "我们试试方案 A..."
│     │  └─ assistant: "对于方案 A..."
│     │     └─ user: "成功了..."  ← 活动
│     └─ user: "实际上,方案 B..."
│        └─ assistant: "对于方案 B..."

树控件 Tree Controls

按键操作
↑/↓在可见条目中导航
←/→向上/向下翻页
Ctrl+←/Ctrl+→ 或 Alt+←/Alt+→折叠/展开或在分支段之间跳转
Shift+L为选中条目设置或清除标签
Shift+T切换标签时间戳显示
Enter选择条目
Escape/Ctrl+C取消
Ctrl+O循环切换过滤模式

过滤模式有:默认、无工具、仅用户、仅已标记和全部。可通过设置中的 treeFilterMode 配置默认模式。

选择行为 Selection Behavior

选择用户或自定义消息:

  1. 将叶子节点移至所选消息的父节点。
  2. 将所选消息文本放入编辑器。
  3. 让你编辑并重新提交,从而创建新分支。

选择助手、工具、压缩或其他非用户条目:

  1. 将叶子节点移至该条目。
  2. 编辑器保持为空。
  3. 让你从此处继续。

选择根用户消息会将叶子节点重置为空会话,并将原始提示文本放入编辑器。

/tree/fork/clone

特性/tree/fork/clone
输出同一会话文件新会话文件新会话文件
视图完整树用户消息选择器当前活动分支
典型用途原地探索多种方案从之前的提示开始新会话继续前复制当前工作
摘要可选分支摘要

当你希望将多种方案保持在一起时使用 /tree。当你希望创建独立的会话文件时使用 /fork/clone

分支摘要 Branch Summaries

/tree 从一个分支切换到另一个分支时,pi 可以总结被离开的分支,并将该摘要附加到新位置。这可以保留你离开路径中的重要上下文,而无需重放整个分支。

选择时,可选择以下之一:

  1. 不进行总结
  2. 使用默认提示进行总结
  3. 使用自定义关注点指令进行总结

分支总结的内部机制和扩展钩子请参见压缩

会话格式 Session Format

会话文件为 JSONL 格式,包含消息条目、模型变更、思考层级变更、标签、压缩、分支摘要和扩展条目。

有关解析器、扩展、SDK 使用以及完整的 SessionManager API,请参见会话格式