Repository navigation
Replies: 1 comment 1 reply
|
@B1lli 你这帖把「信息同步」和「唤醒主 Agent」明确拆成两件事,我认为判断是对的:单靠去重/修顺序解决不了。下面是我在 0.1.5-alpha.2 基线沿 一、你看到的两次投递,确实是两条独立路径
所以 09:36 那次没有 二、一个重要修正:核心其实已经有「不唤醒」的档位,只是不由场景决定我原本也以为是「一律唤醒」,读下来不是。 const parent = this.ctx.agents.get(activation.parentSession)
if (parent === undefined) return
const message = createSettlementMessage(activation.childId, terminal)
if (this.closingTeardownFor(parent) !== undefined) {
parent.inject(message) // 不唤醒:只进上下文
return
}
this.sendWaking(parent, message, parent.status === 'idle' ? 'queue' : 'steer') // 唤醒对照三个原语(
所以你要的第 3 档原语存在,你猜的也没错;真正的缺口是:这个选择由核心按「父 Agent 是否正在拆除」来决定( 顺带回答你「只改一条路径够不够」:不够,而且比你想的更彻底—— 三、拆成三个子缺口,好让维护者逐个取舍(a) 谁决定唤醒。 现代码:核心按拆除状态。期望:子 Agent 按场景。这是最小、最干净的一处—— (b) 行动建议 / 「希望它做什么」的载具。 现在结算消息是固定 notice( (c) 父 Agent 的 effort。 这条技术上已经有挂载点,但粒度不匹配: 四、插件可挂载面:能「压住唤醒」,但做不出「无唤醒投递」本期我按任务惯例扫了这一层的可用缝,结论要诚实说明:
结论:缺口在核心面、插件只是受害者。插件今天能做到的是「抑制这次额外运行」(有损:消息被吞),而你要的「只同步、之后正常运行再看到」,需要核心把注入档位交出来——这件事之后,插件才谈得上做成完整实现。我不会把「能屏蔽」包装成「能实现你的需求」。 五、给你的收敛建议最小核心改动是把 delivery 的选择权从「拆除状态」移到「子 Agent 意图」:
如果你或维护者觉得方向可行,我可以先出一个插件做兜底(用 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
希望解决什么问题
我会直接打开子 Agent 的会话,继续提问、讨论方案或处理它提出的决策。子 Agent 已经向我解释清楚后,主 Agent 又因为收到通知而运行,把同一份信息重新讲一遍。
希望把两件事分开:把信息同步给主 Agent,和让主 Agent 现在开始思考、行动或回答。由子 Agent 根据当前情况决定采用哪一种,而不是每次结束一轮就自动唤醒主 Agent。
核心是让子 Agent 可以选择通知方式。“在主会话直接展示子 Agent 原话”只是可选的展示办法,不是这条需求要求所有通知采用的形式。
我的意见和建议原文
以下完整保留我的原始表述:
实际遇到的情况
环境:macOS,DSH Desktop 0.7.2。以下是对 2026-09-09 本地父、子会话持久化记录的核对,不是另行构造的测试;已省略项目、文档、会话标识和内部方案内容。
一个很明确的例子(纽约时间):
report。subagent-settled,开始新一轮。这不是界面把同一条消息画了两遍,而是主 Agent 确实又运行、又生成了回答。上述 token 数是整轮的用量,不能全部归为逐字复述成本。
另两次直接向子 Agent 提交的请求中,子 Agent 先调用
report,随后又有subagent-settled。其系统提示仍要求结束前调用report。因此,只改其中一条通知路径可能不够。也不希望一刀切地禁止主 Agent 接收结果或继续工作:同一组记录里,主 Agent 有时确实做了有用的文档同步、证据核对。要避免的是每次子 Agent 回答完,都默认值得主 Agent 再运行一轮。
核心建议:由子 Agent 按情况选择通知方式
子 Agent 应能根据自己正在处理的事情、当前结果和协作需要,选择:
这些方式由子 Agent 按情况决定,不应固定为每次都唤醒。子 Agent 对具体行动和 effort 的说明,也不应成为所有通知的必填项;它可以只报告情况,让主 Agent 自己决定。
正在等待子任务结果才能推进工作时,可以选择唤醒;用户直接在子会话里追问、补充信息时,可以选择只同步。它们是使用场景,不是要用固定关键词或“紧急/不紧急”规则替代子 Agent 的判断。
可选办法:在主会话直接展示子 Agent 原话
当消息主要是给用户看的,例如一组待决策事项,可以在主会话显示简短提示和子 Agent 的原消息块,标明来源并能跳回原消息。正文逐字展示,用户从任一会话进入都能处理同一条信息,避免主 Agent 为转述再生成一遍。
这只是其中一种展示方式。需要主 Agent 理解现状、分析或派发任务时,仍然应允许它正常思考、回答和行动。
如果提示只是固定文案,可以直接由前端展示,不必为生成这句提示再启动主 Agent。这里希望消除的是不必要的二次改写开销;不声称后续模型读取这些上下文也没有 token 成本。
对这条建议的进一步澄清(原文)
与已有讨论的区别
report与结束通知的重复投递和顺序。这条需求的核心是让子 Agent 按情况决定是否唤醒主 Agent,以及唤醒时是否附上行动建议。用户直接与子 Agent 继续对话是一个具体例子,直接展示原消息只是可选方案。上面的实际案例没有主动
report,单独一条结束通知也会触发主 Agent,所以仅做重复消息去重或修复顺序,不能完整解决。这是产品体验建议,不预设底层必须采用哪种实现。如果已有设置、插件接口或计划能支持这种用法,也请指出。
All reactions