会话查看器
查看会话对话,支持树形导航、流程可视化和子代理会话。
会话查看器将 Pi 的 JSONL 会话文件渲染为丰富的交互式对话。支持分支对话、可折叠区块和多种可视化模式。
树形视图
左侧边栏以树形结构展示对话。每个节点代表一条消息,在对话分叉的决策点处形成分支。
导航
- 点击任意节点跳转到该消息
- 树形视图采用"最新叶节点"策略——点击节点会导航到该分支中最新的后代
- 分支点(有多个子节点的节点)显示折叠/展开切换
过滤器
树形视图工具栏提供过滤器,控制哪些节点可见:
| 过滤器 | 显示内容 |
|---|---|
| 默认 | 用户 + 助手消息 |
| 无工具 | 隐藏工具调用节点 |
| 用户 | 仅用户消息 |
| 全部 | 所有条目(包括元数据) |
| Read | 仅 read 工具调用 |
| Edit | 仅 edit 工具调用 |
| Write | 仅 write 工具调用 |
流程可视化
切换到流程视图,获得基于 React Flow 的图形化可视化。该模式:
- 将对话渲染为紧凑树形布局的有向图
- 将线性工具调用链折叠为边标签(如
bash ×2, read, edit) - 使用基于角色的节点图标:用户 / 机器人 / 工具 / 设置
- 包含带角色着色的 MiniMap
- 点击任意节点导航到对应的对话分支
流程工具栏
- 放大 / 缩小
- 适应视图(自动缩放以显示所有节点)
- 聚焦当前节点
流程视图与树形视图共享同一过滤栏。
可折叠区块
工具调用
工具调用(bash、read、edit、write 等)渲染为可折叠卡片。按 Cmd/Ctrl + O 切换所有工具调用的展开/折叠。
每个工具调用显示:
- 工具名称和参数
- 执行结果(可展开)
- 语法高亮的代码块,带复制按钮
思考块
AI 的思考/推理块默认折叠。按 Cmd/Ctrl + T 切换。
会话内消息搜索
打开会话后,按 Cmd/Ctrl + F 或使用工具栏中的搜索按钮,即可打开内联消息搜索栏。
搜索栏提供:
- 紧凑的范围过滤器,支持
全部、用户 + 助手消息、用户消息三种模式;其中纯消息范围在显示思考块时仍会包含可见的思考内容 - 当前渲染的用户/助手消息历史中的全部命中高亮;当范围为
全部时,也包含助手消息中显示的通用/自定义工具结果输出 - 带
当前 / 总数计数器的上一个/下一个结果导航(Enter/Shift+Enter与Cmd/Ctrl + G/Shift + Cmd/Ctrl + G) - 即使消息列表使用虚拟滚动,也能精确滚动到当前命中
- 通过关闭按钮或
Esc完整重置,清空查询、恢复默认范围并移除高亮
可配置的 Cmd+F 行为
Cmd/Ctrl + F 快捷键行为可在 设置 → 会话 → Cmd+F 行为 中自定义:
| 模式 | Cmd/Ctrl + F | Cmd/Ctrl + Shift + F |
|---|---|---|
| 会话内搜索(默认) | 打开会话内搜索 | 切换会话树侧边栏 |
| 切换会话树 | 切换会话树侧边栏 | 打开会话内搜索 |
习惯旧版 Cmd/Ctrl + F = 切换侧边栏行为的用户可以在此恢复。
子代理会话
当会话使用子代理(通过 Pi 的 subagent 工具)时,查看器会渲染可点击的卡片,显示每次子代理运行的信息:
- 代理名称和模型
- 运行时长和 Token 使用量
- 任务预览
点击卡片可在模态窗口中打开完整的子代理对话。模态窗口复用相同的消息渲染组件(UserMessage、AssistantMessage、ToolCallList),并支持:
- 嵌套子代理(堆叠模态窗口,递增 z-index)
- 思考/工具切换(
Cmd/Ctrl + T/Cmd/Ctrl + O) - 单次、并行、链式和管理操作模式
子代理产物存储在 session-dir/subagent-artifacts/,使用与主会话相同的 JSONL 格式。查看器通过回退逻辑解析产物路径。
会话内容缓存
基于文件路径 + 修改时间戳的 LRU 缓存(5 个条目)加速了回退导航。缓存命中时完全跳过文件读取。
快捷键
| 快捷键 | 操作 |
|---|---|
Cmd/Ctrl + T | 切换思考块 |
Cmd/Ctrl + O | 切换工具调用展开 |
Cmd/Ctrl + F | 在当前会话中搜索消息(或切换侧边栏,可配置) |
Cmd/Ctrl + Shift + F | 切换会话树侧边栏(或搜索消息,可配置) |
Cmd/Ctrl + G | 下一个会话内搜索结果 |
Shift + Cmd/Ctrl + G | 上一个会话内搜索结果 |
Cmd/Ctrl + E | 导出并在浏览器中打开 |
Cmd/Ctrl + R | 在终端中恢复会话 |