问题
对 step-3.7-flash 做了 5 类任务的基线实测(392 次请求 / 约 1590 万 prompt tokens,经本地记录代理逐请求落盘),发现 agent 纠错回路存在三类失败模式。失败全部集中在多步工具编排场景,单步任务正常。三类问题彼此放大,最终表现为失控循环:一次运行 600 秒 / 305 请求 / 约 1480 万 prompt tokens 才被外部杀掉。
FM1:UNKNOWN_TOOL 报错没有给模型任何恢复信息
Code Mode 下顶层只有 exec + wait,但模型(Claude Code 风格先验)会调用顶层 read_file 等幻觉工具名。原报错只有 Tool 'read_file' is not registered,模型收不到任何"该用什么"的信息,实测最多 13+ 轮无效重试。
FM2:数值微调逃逸 REPEATED_TOOL_CALL 检测
命令失败后模型误诊为超时问题,指数级抬高 timeout_ms(实测序列 2e10 → 2.4e37 → 3.6e76)。指纹含完整参数原文,每次只改一个数字就生成新指纹,重复调用检测永远不触发——这是失控循环的直接机制。
FM3:exec 沙盒反馈隐藏工具失败
脚本内嵌套工具失败时整体仍返回 ok: true + Script completed,失败原因(exit code/stderr,已记录在 nested call summary 里)没有渲染进模型可见输出;无返回值时的 Diagnostic 文案也无法与"工具失败/超时"区分。模型因此把 FM2 的命令失败误诊为超时。
修复
PR #111 修复了三个反馈缺口:报错附真实工具清单与 Code Mode 路由指引(含 Levenshtein 最近匹配)、指纹把 |数值| > 1e9 的参数折叠为占位符、✗ 行带失败原因 + summary 失败计数 + Diagnostic 明确排除超时方向。core 314 测试全绿;端到端对比:定位检索任务 90s 超时 → 47s 完成零无效重试;精确编辑任务 30 次调用熔断 → 9 次收敛。
诚实的边界:修复让"踩雷后"恢复变快,不阻止首次幻觉调用(模型指令遵循的固有限制,prompt 侧另行缓解)。
问题
对
step-3.7-flash做了 5 类任务的基线实测(392 次请求 / 约 1590 万 prompt tokens,经本地记录代理逐请求落盘),发现 agent 纠错回路存在三类失败模式。失败全部集中在多步工具编排场景,单步任务正常。三类问题彼此放大,最终表现为失控循环:一次运行 600 秒 / 305 请求 / 约 1480 万 prompt tokens 才被外部杀掉。FM1:
UNKNOWN_TOOL报错没有给模型任何恢复信息Code Mode 下顶层只有
exec+wait,但模型(Claude Code 风格先验)会调用顶层read_file等幻觉工具名。原报错只有Tool 'read_file' is not registered,模型收不到任何"该用什么"的信息,实测最多 13+ 轮无效重试。FM2:数值微调逃逸
REPEATED_TOOL_CALL检测命令失败后模型误诊为超时问题,指数级抬高
timeout_ms(实测序列 2e10 → 2.4e37 → 3.6e76)。指纹含完整参数原文,每次只改一个数字就生成新指纹,重复调用检测永远不触发——这是失控循环的直接机制。FM3:exec 沙盒反馈隐藏工具失败
脚本内嵌套工具失败时整体仍返回
ok: true+Script completed,失败原因(exit code/stderr,已记录在 nested call summary 里)没有渲染进模型可见输出;无返回值时的Diagnostic文案也无法与"工具失败/超时"区分。模型因此把 FM2 的命令失败误诊为超时。修复
PR #111 修复了三个反馈缺口:报错附真实工具清单与 Code Mode 路由指引(含 Levenshtein 最近匹配)、指纹把 |数值| > 1e9 的参数折叠为占位符、
✗行带失败原因 + summary 失败计数 + Diagnostic 明确排除超时方向。core 314 测试全绿;端到端对比:定位检索任务 90s 超时 → 47s 完成零无效重试;精确编辑任务 30 次调用熔断 → 9 次收敛。诚实的边界:修复让"踩雷后"恢复变快,不阻止首次幻觉调用(模型指令遵循的固有限制,prompt 侧另行缓解)。