Repository navigation
goal:自治循环缺少三类机械护栏 —— 裁决点停不下来、轮粒度过碎、重试失败无熔断 #7869
Augenblick0v0
started this conversation in
Ideas
Replies: 1 comment
你列的三类护栏里,至少第三类我此前独立核实过:确实没有1. 先给你一条已核实的事实(对"重试失败无熔断")我在另一条帖子里核实过:在 ⇒ 也就是说:"无进展熔断"这一类机制在当前代码里不存在。所以你的第三类(重试失败无熔断)不是"配置没开",而是"没实现"——这条可以直接按"缺失能力"提。 2. 建议把三类拆成三条独立的诉求(它们的可行性差别很大)
建议按 3 → 1 → 2 的顺序写(第三类先落地、也最容易达成共识)。 3. 请补三样让每条可判定
现在这三条是方向性意见,补上第 2 项之后每条都能变成可验收的要求。 4. 一条相关背景(对你有用)同类问题还有一条独立报告:工具挂载失败会连坐整个会话创建(#7865),以及单个插件不兼容会让整页不可用(#7835)。⇒ 三条合起来是同一个主题:自治运行时缺少"局部失败不扩散"的边界。建议你在报告里把这层主题点出来——它会让你这三条从"体验建议"变成"自治模式缺一类基础护栏"。 5. 版本提醒
一条边界我确认的是第三类机制(无进展熔断)在代码里不存在——这是你三条里我唯一能给出确定结论的一条。第一、二类我没有逐一核对实现,所以按"待判定"处理。 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
让AI给我写的一个关于goal功能的相关建议
一句话
goal 开启后,循环的实际停机条件只有三个:模型自报 complete/blocked、轮数耗尽(默认 256)、用户人工 pause。中间缺少最基本的机械护栏:需要用户拍板的点停不下来(P1);每轮干一小步就结束、立刻开新一轮,轮次被仪式性开销吃掉(P2);同一失败反复重试也没有熔断(P3)。
实测现象(2026-09-25 会话 session-3e72569d-e8ea-407f-a2a0-4027c89acca6,目标 = web-v1.5.4 T01–T07 交付计划)
goal/change全程只有 create / pause / resume,从未出现 blocked。21:28 的 pause 是用户人工介入。ask_user_question全程 0 次调用(发了也停不住循环)。maxGoalRounds默认 256;本轮 cap 之外没有任何「无进展/重复失败」检测。根因与建议
P1「等待用户裁决」在现行 blocked 政策下实际不可达
根因(合约层):
dsh-tool-goal执行层:"a blocked call is mechanically rejected until the configured number of consecutive rounds has passed"(blockedAfterConsecutiveRounds默认 3,硬下限,模型自判同一条件是否持续)。dsh-goal设计意图自相矛盾:服务层 README 明确 block 阶段为 "provider limits, exhausted budgets, execution errors, and requests for human input" 统一设计,但 tool 层把 "requests for human input" 这一类唯一封死了。建议:
awaiting-user-decision(或独立waiting阶段):当前轮内立即生效,不受 3 轮硬下限约束(该阈值只应约束「模型自判环境性受阻」);生效即 disarm 续跑(复用 blocked 的 disarm 语义);携带结构化 decision payload(问题/选项/影响面/默认行为),Web/CLI 渲染为显式「等待裁决」卡片,用户作答 =resume并把答案注入下一轮 prompt。awaiting-user-decisionblock,不得绕行;difficulty/uncertainty 排除条款仅适用于模型可自行消化的不确定性。ask_user_question且未获回答时,不得排队下一轮。P2 轮粒度过碎:没实现几个功能就停轮开新一轮
根因:round prompt 只点名 objective、round number、cap,并要求以 workspace/工具结果/持久状态为权威——没有任何「持续干到里程碑再结束本轮」的指引。模型把每轮当作小步长 + 汇报单元,轮末自然写出全套状态总结,driver 见 idle 立即入队下一轮。每轮固定支付轮首注入 + 轮末总结两份开销,且按次烧 cap。
建议:
P3 缺少「重试几次就受阻」的熔断
根因:现行设计里唯一的机械停机是轮数耗尽("exhaustion records a blocker");模型自报 blocked 又受 3 轮门槛约束且完全依赖自判(
dsh-goalKnown Limitations:"No independent evaluator — the caller that records completion or blocking is authoritative")。同一命令/同一测试/同一构建错误反复失败重试时,没有任何宿主侧计数器介入,模型可以在失败循环里烧掉大量轮次与 token。建议:
dsh-tool-goal(或 driver)新增配置如blockAfterRepeatedFailures: N:宿主侧统计同一失败特征(相同命令退出码/相同错误签名/相同失败测试集合)连续出现 N 次后,机械转入 blocked(稳定代码如repeated-failure),与模型自判解耦。awaiting-user-decision、既有blockedAfterConsecutiveRounds互补,覆盖三类停机:等输入、环境性受阻、失败循环。环境
--profile web)@deepseek-ai/dsh-goal、@deepseek-ai/dsh-tool-goal(blockedAfterConsecutiveRounds,默认 3)、@deepseek-ai/dsh-goal-round-driversession-3e72569d-e8ea-407f-a2a0-4027c89acca6(宿主会话日志,goal idgoal-bdc16a7e-fdb4-404d-a2cc-0e96ccd2dbc1)All reactions