Skip to content

MainAIChat 运行中状态不应默认暴露计时和工具调用统计 #251

Description

@blueberrycongee

背景

MainAIChat 的 Agent 任务进行中状态目前仍把内部执行遥测作为默认可见信息:

  • 等待首个 token 时,TypingIndicator 显示 正在工作中 · 0:xx
  • 有 reasoning / tool part 后,AgentMessageRenderer 会把中间步骤打包成 WorkSession,折叠态仍显示 正在工作中 · 0:xx
  • 任务完成后,WorkSession 折叠态会显示 0:xx · N 个步骤
  • 连续工具调用的折叠行会显示 工具调用 · N (tool ×count)

这说明之前已经收起了一部分细节,但“时间 / 步骤数 / 工具调用数”仍然处在默认主路径里。

问题

这不符合普通用户使用 AI 对话时的心智模型。

用户此时关心的是:

  • 我的请求是否已经被接收?
  • AI 当前是在思考、读取上下文、修改文件、生成图片,还是等待我授权?
  • 我是否需要做什么?
  • 如果时间过长,是否卡住或需要重试?

但当前 UI 默认给出的信号更像内部调试 / 运行遥测:耗时、步骤数、工具调用数量、工具名称 tally。它会让用户把内部步骤误解成稳定进度指标,也容易把普通等待感知成“性能监控中”或“任务异常久”。工具细节对审计和调试有价值,但不应该是默认状态摘要。

当前代码位置

  • src/components/chat/StreamingMessage.tsx:246-249:等待首个可见内容时显示 正在工作中 · {elapsed}
  • src/components/chat/AgentMessageRenderer.tsx:233-258:把 thinking/tool 统一打包成 work_session
  • src/components/chat/AgentMessageRenderer.tsx:261-268:把 thinking/tool 都计入 step count。
  • src/components/chat/AgentMessageRenderer.tsx:1766-1773:折叠态标题显示 正在工作中 · 时间,完成后显示 时间 · N 个步骤
  • src/components/chat/AgentMessageRenderer.tsx:1400-1442:连续工具调用折叠态显示工具数量和工具 tally。
  • src/i18n/locales/zh-CN.ts:1451-1471:相关文案包括 steps / toolGroup / working

期望方向

默认运行中状态应该面向用户任务,而不是面向内部执行日志:

  • 默认摘要使用用户能理解的状态,例如“正在准备回复”“正在读取上下文”“正在修改文件”“正在生成图片”“等待工具授权”。
  • 计时不作为默认主信息;可以只在展开详情、调试模式、或超过阈值后出现。现有超过 2 分钟的 timeout warning 可以继续承担“过久”提示职责。
  • 工具名称、工具数量、步骤数保留在展开详情里,用于审计和调试,不在默认折叠标题里强调。
  • 完成后默认摘要不应继续突出 耗时 · N 个步骤;可以改为更轻的“已完成”/“查看工作过程”,详情里再展示耗时和工具日志。
  • 等待用户动作的状态(尤其工具授权)要比计时/步骤数优先展示。

验收标准

  • 普通运行中对话默认不再显示持续跳动的 正在工作中 · 0:xx 作为主要信息。
  • 默认折叠标题不再把 N 个步骤 或工具调用数量当成主摘要。
  • 用户仍能展开查看 reasoning/tool 细节。
  • 长时间无响应时仍有明确反馈和重试/中断路径。
  • 更新 AgentMessageRenderer / MainAIChatShell 相关测试,避免继续锁定旧的 正在工作中 / N 个步骤 默认行为。

非目标

  • 不要求删除工具调用详情。
  • 不要求改变 opencode 事件模型。
  • 不要求重新设计整个 AI 对话界面;先修运行中状态的信息层级。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions