现在位置: 首页 > Pi Agent > 正文

Pi Agent 会话管理

Pi Agent 的会话管理系统是其最强大的特性之一。本章详细介绍会话的保存、恢复、分支和导出。


会话存储机制

每次对话会自动保存为一个会话文件,以 JSONL 格式存储在 ~/.pi/agent/sessions/ 中,按工作目录分类。

每个会话内部以树状结构组织——这意味着你可以在任意历史节点分叉,而不会丢失之前的对话内容。

~/.pi/agent/sessions/
└── my-project/
    ├── abc123.jsonl    # 会话 1
    ├── def456.jsonl    # 会话 2
    └── ghi789.jsonl    # 会话 3

启动时的会话选项

通过命令行参数在启动时控制会话行为:

实例

# 继续最近的会话
pi -c

# 浏览并选择历史会话
pi -r

# 使用指定会话文件
pi --session ~/.pi/agent/sessions/my-project/abc123.jsonl

# 使用会话 ID(支持部分匹配)
pi --session abc123

# 从指定会话分叉出新会话
pi --fork abc123

# 设置会话显示名称
pi --name "重构认证模块"

# 临时会话模式(不保存)
pi --no-session

会话管理命令

命令功能使用场景
/resume浏览并恢复历史会话切换到之前的对话继续工作
/new开始新会话开始一个与历史无关的全新任务
/name 名称设置会话名给会话取一个易记的名称
/session查看会话信息查看文件路径、消息数、token 用量和费用
/tree打开会话树浏览器在对话树中跳转到任意节点
/fork分叉会话从之前的用户消息创建新会话
/clone克隆会话复制当前活动分支到新会话文件
/export 文件导出会话保存为 HTML 文件便于分享
/share分享会话上传为 GitHub Gist,生成可分享链接

会话树(/tree)

这是 Pi Agent 最独特的特性——会话以树状结构存储,你可以在任意历史节点分叉。

树的结构

以下是一个典型的会话树结构:

├─ user: "帮我实现一个登录功能..."
│  └─ assistant: "好的,我来实现..."
│     ├─ user: "用 JWT 方案..."
│     │  └─ assistant: "使用 JWT 实现..."
│     │     └─ user: "测试通过了"  ← 当前活跃分支
│     └─ user: "还是用 Session 方案..."
│        └─ assistant: "使用 Session 实现..."

在这个例子中,你从同一个起点出发,分别探索了 JWT 和 Session 两个方案,每个方案的对话都被完整保留。

树浏览器操作

操作快捷键说明
上下移动↑/↓在可见的条目中移动光标
翻页←/→向上/向下翻页
折叠/展开Ctrl+←/Ctrl+→折叠/展开分支段或跳转
设置标签Shift+L为选中节点设置标签
确认选择Enter选中当前节点
取消Escape / Ctrl+C退出树浏览器
切换过滤模式Ctrl+O在过滤模式间循环

过滤模式

模式显示内容
default默认视图,折叠工具调用细节
no-tools隐藏所有工具调用和结果
user-only仅显示用户消息
labeled-only仅显示有标签的条目
all显示所有条目

选中用户消息会将其文本填入编辑区,让你可以重新编辑并提交,创建新的分支。选中 AI 回复或工具调用则会直接跳转到那个位置,让你可以从那里继续对话。


/tree 与 /fork 与 /clone 的区别

特性/tree/fork/clone
输出同一个会话文件新建会话文件新建会话文件
视图完整对话树仅显示用户消息当前活动分支
典型用途在同一会话中探索备选方案从早前提示开始新会话复制当前工作再继续
分支摘要可选的摘要

简单来说:

  • /tree:多条思路放在一起管理,方便对比
  • /fork:从某个历史点重新开始,完全独立的会话
  • /clone:在继续之前先做个副本,保留退路

分支摘要

当你通过 /tree 从一个分支跳到另一个分支时,Pi Agent 可以为你生成被放弃分支的摘要。

这个摘要会附加到新的位置,让你知道之前的分支做了什么:

  • 不生成摘要:直接跳转,不保留被放弃分支的任何信息
  • 默认摘要:使用默认提示让 AI 总结被放弃的分支
  • 自定义摘要:指定关注重点,AI 按你的需求总结

你可以在设置中控制摘要行为:

实例

{
  "branchSummary": {
    "reserveTokens": 16384,
    "skipPrompt": false
  }
}

设置 skipPrompt 为 true 可以在 /tree 导航时跳过「是否生成摘要」的提问。


导出与分享会话

导出为 HTML

# 导出到默认位置
/export

# 导出到指定文件
/export ~/Desktop/my-session.html

分享为 GitHub Gist

/share

执行后会创建一个私有 GitHub Gist,并生成可分享的 HTML 链接。

命令行导出

$ pi --export session.jsonl output.html

如果你做开源项目并希望将会话发布用于研究目的,可以查看 pi-share-hf 工具,它可以将会话发布到 Hugging Face 数据集。