chat:agent 运行中无法回复(A/B 追问发不出)+ 插话文本被渲染成 agent 正文
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- Avg merge
- 1h 7m
- Merged PRs (30d)
- 969
Description
## 现象(devapp 实测,2026-09-06 人类反馈)
1. agent 在回复里问「回复 A 或 B」,随后继续调工具(run 仍在 `running`)。用户在主 composer 敲「B」发不出去:发送键是「停止」、Enter 无响应、页脚「Agent 正在处理上一条消息,请稍候…」。人类原话:**要改为可以回复 A/B,就算 agent 还在生成**。
2. 用户的「B」出现在了 **assistant 气泡正文里**(第二张截图),看起来像 agent 自己说了「B」。
## 根因
- 前端 `copilotkit-v2-panel-body.tsx` 把 `agent.isRunning` 当发送禁用理由;既有的中途插话链路(#2756,`POST /agent-runs/:runId/interject`)只挂在进度指示下方一个独立小框里,主 composer 没接。
- 后端 `deep-agent-model-provider.ts` `tryStreamRun` 的 messages-tuple 分支不看 chunk `type`,图里任何节点追加的消息(含 `harness.py` `InterjectionMiddleware` 注入的 `HumanMessage`)都被当模型 token 喂给 `onDelta`。
## 处置
见关联 PR(ad-hoc 直接交办,按 `.harness/instructions/ad-hoc-fix-pr-sop.md` 走 `Refs`)。
已知边界:插话不落库为 chat 消息(`interject-run.ts` 只写内核账本),前端本地回显刷新后会消失——后端插话链路今天的边界,本次不补。
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with copilotkit-v2-panel-body.tsx and trace how the main composer handles agent.isRunning and the existing POST /agent-runs/:runId/interject flow from #2756. Then inspect deep-agent-model-provider.ts and tryStreamRun, along with the messages-tuple chunks and InterjectionMiddleware behavior. Done means A/B replies can be sent while a run is active and injected human messages are not rendered as assistant text.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api, backend, frontend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 25/100