Repository navigation
Replies: 2 comments
|
补充一个同场景的真实案例(2026-08-14,deepseek-v4-flash via deepseek-official,主 agent + 4 个后台子代理四域并行审计)。除帖内已述的「追加确认回合」外,新增 4 个观察: 1. 即使主 agent 已正确收齐,迟到的 relay 仍渲染为「最终答复之后的顶级消息」——人类读者无法区分「重复通知」与「未汇入的新结果」 2. 工具层缺「阻塞等待全部子代理结算」的原语——收尾靠碰运气 3. 「已收齐后的重复送达」与「未收齐」是两回事 4. 差点发生的真实遗漏(机制必要性证据) 补充建议(在 a/b 之外): |
|
你给的两个方向里,(a) 今天有机制、(b) 没有——但我认为 (b) 才是对的修法,先把话说全。 (a)「交付前先收齐」有机制,但那是模型纪律不是 loop 保证
这条我在真 DSH loop 上端到端跑过(干净 DSH_HOME、stock CLI、stock 包、真模型,断言是坏掉就会失败的那种)。 但必须说清它的性质:这是给模型一个能等的工具,不是让 loop 强制它等。模型仍然可以选择不调 (b)「loop 识别父代理已交付、把迟到 relay 合并成单条非交互通知」——这个我们做不了,而且它更好这是投递调度层的事,在 DSH 自己的 agent loop 里,外部插件够不着。 而且我觉得 (b) 比 (a) 更该做:(a) 依赖模型每次都记得先收齐,(b) 是结构性的。你这个场景(并行深读、每个子代理正文都很长)恰恰是模型最容易"觉得 settled 通知够用了"的场景。@C-git-qok 补的那个四域并行审计案例是同一形状的第二份证据。 顺带:#2192 报的是同一投递体系的另一面——settle notice 与 report relay 内容相同但走两条路、顺序反转、零去重。你这条和那条合起来看,问题不只是"晚到",是两条投递路径本来就没有统一的调度与去重。建议维护者一起看。 边界我们不修 DSH 的子代理投递链路。上面 (a) 是并排的另一套子代理运行时,换它是个不小的动作——如果你只是偶尔遇到,等 (b) 被官方接可能更划算。 利益相关:我维护 pi2dsh, |
Uh oh!
There was an error while loading. Please reload this page.
背景
后台子代理完整汇报(
subagent-reportrelay)晚于主 agent 的最终答复送达。主 agent 在收到全部subagent-settled通知后即交付最终答复,随后每个迟到的完整汇报 relay 触发一个确认回合,最终答复之后出现一连串追加回复,会话阅读混乱。复现
subagent工具以run_in_background: true派多个子代理做深读任务subagent-settled通知后直接写最终答复,不显式调用tool-subagent-report收齐汇报subagent-reportrelay 异步送达实际结果
主 agent 在 turn 1 交付最终汇报后,turn 2–7 各收到一条
subagent-reportrelay(基础设施 / 数据身份 / 能力族 B / 能力族 A / 外部接口 / 文档),每条都唤醒主 agent 生成一条「收到…完整汇报」确认回合,六条追加回复排在交付物之后。会话session-4cae51a3-0455-4f16-b503-e32befbb232f完整可回放。期望(建议方向,满足其一)
环境
dsh 0.1.0-rc(源码
pnpm dsh web),deepseek-v4-flash via deepseek-official,Windows 11。All reactions