问题
会话 / 当前回合尚未结束时,AI 回复卡片就已经出现复制按钮(及同类 tools 动作)。此时内容仍在流式生成,或主代理正在 Waiting for N subagents,复制到的是半成品。
复现
- 触发一个会派发子代理的长回合。
- 主代理进入等待(状态条:
Waiting for 3 subagents,底部仍为停止按钮)。
- 观察 AI 回复卡片 / 片段下方的操作区。
实际表现
- 会话
isActive / 消息 streaming 时,只要 content 非空,复制按钮就会渲染。
fork / retry 已按 complete(!isActive && !hasError && hasContent)门控,复制没有同等约束。
- 半截回复上的复制按钮容易误导用户“这段已经写完了”。
期望
复制按钮与 fork / retry 一样,仅在回合完成后出现;进行中隐藏(或至少禁用)。适用范围:
AssistantTurn 的 message-actions(ChatTranscript.tsx 中 CopyButton text={content})
- 其它在 running 状态下提前露出的复制 / 导出 tools 动作
相关实现线索
- 回合动作区:
AssistantTurn(apps/desktop/src/components/ChatTranscript.tsx)
complete = !isActive && !hasError && Boolean(content) && Boolean(actionMessage)
- 复制:
{content ? <CopyButton … /> : null} — 未使用 complete
- fork / retry:
{complete ? <button …> : null}
- 行级
MessageRow 的复制同样未按 isRunning 隐藏
验收
问题
会话 / 当前回合尚未结束时,AI 回复卡片就已经出现复制按钮(及同类 tools 动作)。此时内容仍在流式生成,或主代理正在
Waiting for N subagents,复制到的是半成品。复现
Waiting for 3 subagents,底部仍为停止按钮)。实际表现
isActive/ 消息streaming时,只要content非空,复制按钮就会渲染。fork/retry已按complete(!isActive && !hasError && hasContent)门控,复制没有同等约束。期望
复制按钮与
fork/retry一样,仅在回合完成后出现;进行中隐藏(或至少禁用)。适用范围:AssistantTurn的 message-actions(ChatTranscript.tsx中CopyButton text={content})相关实现线索
AssistantTurn(apps/desktop/src/components/ChatTranscript.tsx)complete = !isActive && !hasError && Boolean(content) && Boolean(actionMessage){content ? <CopyButton … /> : null}— 未使用complete{complete ? <button …> : null}MessageRow的复制同样未按isRunning隐藏验收
isActive/ streaming / 等待子代理时不显示(或禁用)AI 回复复制按钮isRunning规则)