存储格式
会话以 JSONL 文件存储,支持树形结构。每条记录有 id 和 parentId,原地分支无需创建新文件。
默认存储位置:~/.pi/agent/sessions/(按工作目录组织)
CLI 选项
pi -c # 继续最近的会话
pi -r # 浏览并选择历史会话
pi --no-session # 临时模式(不保存)
pi --name "my task" # 启动时设置会话名
pi --session <path|id> # 使用指定会话文件或 ID
pi --fork <path|id> # Fork 指定会话到新会话分支操作
/tree
在 TUI 内导航会话树:
- 输入文字搜索
Ctrl+←/→或Alt+←/→折叠/展开并跳转分支←/→翻页- 过滤模式(Ctrl+O):default → no-tools → user-only → labeled-only → all
Shift+L标记书签,Shift+T切换标签时间戳
/fork
从当前活跃分支的某条历史 user 消息创建新会话文件。选择后,将所选 prompt 放入编辑器供修改,然后作为新会话的起点。
/clone
将当前活跃分支完整复制为新会话文件(保留完整历史,但编辑器为空)。
--fork <path|id>
从 CLI 直接 fork 现有会话文件,将完整源会话复制到当前项目的新会话文件。
Context 压缩(Compaction)
长会话可能耗尽 context window,压缩可将旧消息摘要化同时保留近期消息。
- 手动:
/compact或/compact <自定义指令> - 自动:默认启用,在 context 溢出或接近上限时触发
- 可通过
/settings或settings.json配置 - 压缩是有损的,完整历史仍保留在 JSONL 文件中,可通过
/tree回溯 - extensions 可自定义压缩行为
会话标识
在交互模式中用 /session 查看当前会话 ID(JSONL 文件路径、消息数、token 用量、成本等),然后可通过 --session <id> 或 --fork <id> 复用。