流式会话与工具卡片
transcript 层把会话事件流折叠为条目并渲染。本页描述你会看到什么;事件到条目的规则对所有消费者一致(live 流与快照回放同构)。
消息条目
- 用户消息 ——
❯边栏气泡(roleUser色);包含的图片在终端可显示图片时直接渲染(上限 12 行),否则保持[image]占位。 - 助手消息 —— 普通大小的输出流式渲染为 Markdown;超大输出在 live 和收尾阶段都显示有界的安全尾部,完整原文仍保留在会话记录中。消息空行分隔、首行
●bullet、两列缩进续行。 - 思考块 —— reasoning 独立成块挂在正文上方。live 时只显示
✻标记与 reasoning 最后两行,不带标题也不计时:activity 行显示思考中,并负责耗时、token 计数与速率。阶段结束后收成一行✻ 已思考 6s,并预览首行(显示思考内容的 Detailed、Verbose)。Ctrl-O 展开完整内容。
工作详情
会话记录只用过去时,底部 activity 行只用现在时:所有实时信息——spinner、回合耗时、当前步骤与吞吐——只出现在 activity 行,会话记录中没有任何一行会计时或说明正在运行什么。mayfly.transcriptView 沿用 Harness Chat 的模式名,每升一级多展示一层工作:
| 模式 | 运行中回合 | 已完成回合 | 已停止/失败回合 | activity 行详情 |
|---|---|---|---|---|
| Compact | 只显示消息 | 标题 + 最终回答 | 过去时分组标题 | — |
| Standard(默认) | 消息、文件修改卡片、过去时分组标题 | 标题 + 文件修改卡片 + 最终回答 | 分组标题 + 文件修改卡片 | 命令、路径、查询或思考内容 |
| Detailed | 所有卡片实时显示 | 标题 + 文件修改卡片 + 最终回答 | 分组标题 + 文件修改卡片 | — |
| Verbose | 所有卡片实时显示 | 保持展开 | 所有卡片 | — |
- 回合标题 —— 含过程的回合在结束时才出现标题行:
用时 38s、已停止或处理失败,并附工具调用与 subagent 计数(派生 subagent 只计为 subagent,不计为工具调用)。运行中的回合没有标题行,耗时由 activity 行显示。正常完成的回合把过程与中间回复折叠到这一行下;被停止、失败或插话(steer)的回合不折叠。 - 过程分组 —— 两段回复之间的思考与工具调用组成一组。分组标题只总结已完成的工作,如
已读取文件并搜索代码、执行了命令 · 1 个失败。仍在运行、或只含思考的分组在有工作完成前不显示标题。 - 文件修改 —— 从 Standard 起,presenter 声明 diff 卡的调用(
Write <path>、Edit <path>、apply_patch)直接显示为 diff 卡片,把前后的分组隔开,并在回合折叠后依然可见,代码改动与最终回答并列呈现。Compact 把它们计入其他工作。 - Ctrl-O —— 展开最近 3 个回合(
expandTurns)的折叠、分组与卡片内容。只在按键能生效的范围内提示按键;更早的回合只说明隐藏了多少内容。
工具卡片
- 终端卡 ——
$ command加exit N或signal标记(失败显示✗)与运行时长;正文是描述与输出的最后三行;Ctrl-O 显示完整的有界输出。 - diff 卡 —— presenter 标题(
Edit src/auth.ts · +1 −1)加逐文件统一 diff(LCS 行级着色);折叠态至多 12 行。 - presenter 卡 —— 其他声明了 presenter 的工具显示自己的调用标题与结果预览(文本三行)。
- 分组调用 —— 同一 step 内连续的文件读取、代码搜索与命令合并为一张树形卡(
Read 3 files、Searched 2 patterns、Ran 3 commands);部分失败显示◐与逐项✗,非零退出码同样算失败。 - 单行调用 —— 委派、计划与目标更新、提问、网页检索、skill 与 agent 消息各占一行(
✓ 已搜索网页 · vitest vi.fn · 5 个来源、? Also fix signup? → No);Ctrl-O 展开有界结果。 - 回退卡 —— 没有 presenter 的工具显示
Used name (关键参数)(MCP 工具显示为server › tool)与结果预览;JSON 结果展开时格式化显示。 - 回合结束时仍未得到结果的调用显示
⊘ 已取消。
长会话窗口
只保持最新 15 个回合的挂载(windowTurns);更旧的回合离开渲染树,事件数据仍完整保留在会话记录里。