mirror of
https://github.com/ThearchyHelios/AgentLab.git
synced 2026-11-15 02:51:58 +00:00
4057cdc35f
走到步数上限一定意味着最后那步**要求了工具**(不要工具的话循环早 break 了), 也就是说模型从来没拿到过"说结论"的那一轮——它只是被掐断在半路。交出去的 是它上一句中间过程的话,末尾补一句"步数不够,请调大"。 实测这条线是绷紧的:库里 116 个 agent 节点,87% 在 10 步内收口,11 步只有 1 个,**正好 12 步的有 11 个**。1 跳到 11 是被截断的特征,不是自然分布。 所以补上那一轮:不给工具,让它基于已经查到的收口,并说清哪些没查到、 结论因此有什么局限。用 base_model 而不是绑过工具的 model——收尾轮必须在 结构上发不出 tool_call,靠提示词请它别调是约束不住的。 两种收场发不同的 code:收上来了是 step_limit_settled(DEGRADED), 收不上来仍是 step_limit(BROKEN)。不复用同一个 code:库里那 8 条老事件 的含义确实是硬截断,改语义等于把历史运行重新解释成另一回事。 顺带修掉一个一直在白烧钱的 bug:chat.ts:440 的注释说自动重试能"调大最大 步数",而 copilot.py 明确禁止模型写 max_steps。两边对不上,于是 step_limit 的重试是用同一个默认 12 再跑一遍,必然撞同一堵墙。现在那条禁令改成有条件 的——只有上一次死于步数不够时才准显式写大值。改完两条路各自成立:收尾 成功走 DEGRADED,闸门不开、不重试(对的,同配置再跑还是撞墙);收尾失败 仍是 BROKEN,而这次 Copilot 真能把步数调大。 硬顶 25 → 100,画布滑块跟着放开,**节点默认仍是 12**:要更多的人调得动, 不知情的人不会突然多花十倍。 新增 tests/test_agent_steps.py,顺带补回 agent 循环的集成测试(原来那个 文件在脱敏那轮被整个删掉了)。两条反向断言是重点:正常收口的 agent 一次 调用都不该多花,以及收尾轮发不出工具调用。两者都做过变异验证——把收尾 结果丢弃、把收尾轮换成绑工具的 model,各自都能让对应的断言变红。 273 passed(去掉一个会真连 api.openai.com 的既有慢测试是 238 passed / 9.4s)。