Skip to content

[bug] agent loop 三类失败回路:UNKNOWN_TOOL 无恢复信息、数值微调逃逸重复检测、exec 反馈隐藏工具失败 #112

Description

@Zi-Yi-Ming

问题

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 侧另行缓解)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions