同一提示词四次实测:简单配置任务出现 33–50 轮「无界确认」行为(DeepSeek V4.1 + DSH) #6366
Replies: 1 comment
|
这份报告的数据质量很高,所以我没有停在"看起来合理"上,而是把你指出的机制逐条核到源码,并且把你的建议 2 做成了可直接挂载的插件(下面第 5 节)。结论:你的三条建议都成立,其中两条在源码层比你描述的更"结构性"——失败不是某处写得不对,而是循环本身没有上限这个设计事实。 1. 为什么你观测到的形状是确定的(不是偶发)
⇒ 只要模型持续调用工具, 这也解释了你"每一步单独看都合理,合起来没有边界"的观察:每一步的正确性检查都在框架内合法,缺的是对步数求和的那一层。 2. 为什么现有的两个 guard 都挡不住(你可能已经排除过,这里给出机制)
⇒ 这两个 guard 覆盖的是"同一步卡死"和"同一调用重复",都不是"步数无界"。你的用例正好落在两者的缝隙上。 3. ★ 你的 token 数据还能再解释一层:成本是双重的你说"推理长度看起来正常,膨胀的是动作数量"——同意,但动作数量本身还会把每一步的成本抬高: 这正好落在你的记账上:探查 160 万、写入 9 万、写入之后重新验证 125 万——不是"验证那几步"本身贵,而是那几步的上下文最贵(此时历史里已经装满了探查结果)。也就是说:减少步数是二次收益,越靠后的步省得越多。 4. 逐条回应你的三点框架层建议建议 2(步数/预算软上限)——最小、且落在可挂载的缝上。 我做了(见下节)。这是你三点里唯一不需要改 core 的。 建议 1("交付即可停"的显式信号)——它不能单独存在。 一个没有阈值的"信号"就只是提示词里再多一句,而提示词的量级你的数据已经排除了(加载/不加载规则文件结果一致)。我的实现把 1 和 2 合在一起:信号由步数触发后,以一条具体的、要求回答"已完成/剩余/下一步"的消息送达,而不是一句泛泛的鼓励。 建议 3(压缩后恢复"本会话已执行的动作")——可挂载,但你说的其实是两件事,值得分开。
5. 交付物:
|
Uh oh!
There was an error while loading. Please reload this page.
现象
一条只需改一个配置字段的提示词,在 DSH 里四次独立会话分别消耗 33–50 轮、32–70 次工具调用;其中真正写入配置的那一步只有 1–3 轮,其余全在动手前反复确认和动手后反复验证。
环境
提示词原文(四次完全相同)
起点状态:配置文件里没有该字段。
数据
阶段分解(第 2–4 次测得明细):
唯一有 token 记账的一次(第 1 次):输入 2,946,619 token——探查 1,602,644、写入回合 90,603、写入之后重新验证 1,253,372。真正的改动占 3%。
已排除的变量
规则文件有无、技能有无、技能目录体量、交互模式、会话工作目录、用户打断。未排除:模型版本(四次都在 V4.1)、框架版本、样本量(四次同一任务)。
观察到的机制
模型在 6–12 轮内就已拿到所需知识,随后 20–40 轮都在证明自己没写错——包括验证那些只有改完才知道结果的事(配置会不会热重载、网关收不收这个值、默认档解析链路对不对)。每一步单独看都合理,合起来没有边界;推理长度看起来正常,膨胀的是动作数量。
框架层可以做的三点
事实与推断的分界
上面所有轮数、工具调用数、token 分解、四种条件下一致的形状都是实测。未声称该行为只出现在 V4.1,也未声称它在所有任务类型上都出现;「模型版本变化导致退化」只是线索,没有做同题跨版本对照。
English summary
Four identical prompts (a one-field config edit) on DeepSeek V4.1 inside DSH produced 33–50 assistant turns and 32–70 tool calls, while the actual write took 1–3 turns; one recorded run spent 2,946,619 input tokens with 3% of them in the write step. The same prompt with no rule file or skill loaded still took 33–50 turns, so instruction text is ruled out. Reasoning length looks normal — what inflates is the number of actions: the model keeps verifying things that can only be known after the change is applied, and it has no internal "enough" criterion. Behavior is consistent with Infinite Agentic Loops (arXiv 2607.01641). Suggested harness-level mitigations: an explicit "deliverable is enough" signal, a soft step/budget cap forcing a "what is missing" report, and post-compaction recovery of the session's own executed actions.
All reactions