Skip to content

06 · 设上限:失控的四种形状 ​

Workflow 的成本是你算得出来的:四步就是四次调用。Agent 的成本是它自己决定的。不设上限,等于把账单和你的耐心一起交出去。而它不会自己喊停。

失控的四种形状 ​

先认清楚它会怎么坏,闸才知道设在哪。

一、绕圈 ​

text
圈 12:搜索"A 家 定价" → 没找到
圈 13:搜索"A 家 价格" → 没找到
圈 14:搜索"A家定价方案" → 没找到
圈 15:搜索"A 家 pricing" → 没找到
……

它在用同一个方法反复试,每次只改一点点。 因为没有任何东西告诉它"这条路走不通,换一条或者认输"。

这是最常见的一种,也是最费钱的。

二、范围爆炸 ​

text
目标:查三家竞品的定价
圈 8:找到 A 家有五个套餐 → 决定每个套餐都详细展开
圈 15:发现套餐有地区差异 → 决定每个地区都查
圈 30:还在查

每一步都"合理",加起来完全跑偏。 根源在目标没写完成标准。

三、上下文撑爆 ​

跑到二十几圈,前面所有工具返回都堆在上下文里,桌子满了——最早的目标被挤掉,它开始干别的。07 章专门讲这个。

四、越错越远 ​

第 5 圈它抓错了一个数,后面二十圈全建立在这个数上。Agent 不会回头质疑早期结论——早期结论在它眼里就是既成事实。

第四种最贵

前三种你至少能从"跑得太久""花得太多"看出来。第四种跑得又快又顺,交付的东西格式完美,只是错的。

这跟 Workflow 篇 06 章那个"静默错误"是同一类,只是在 Agent 里更难查——因为你没有干净的中间产物可以对照。

四道闸 ​

对应上面四种,四道闸。每一道都是几行配置的事,但没有默认值——你不设就是没有。

闸一:步数上限 ​

text
最多 15 圈。到了还没完成,就停下来,交出:
- 已经拿到的部分结果
- 还差什么
- 你卡在哪儿了

关键是最后那三行:不是硬中断,而是让它交一份"跑到哪儿了"的报告。这样这次运行不算白花,你还知道该怎么调。

上限设多少?先设一个你觉得"正常应该够用"的两倍,跑几次看实际用多少圈,再往下收。

闸二:成本上限 ​

按 Token 或按钱。超了就停。

这道闸的意义不只是省钱,更是发现异常:一个平时花五毛钱的任务,这次花了二十块,说明它在里面兜圈子了。

闸三:时间上限 ​

单次运行的墙钟时间。防的主要是"某个工具卡住了"这种情况——不设的话它可能挂在那儿一整夜。

闸四:重复检测 ​

专治绕圈。规则很简单:

text
如果你连续三次调用同一个工具、且参数高度相似、且都没有拿到有用结果,
就停止这条路径。改用别的方法,或者把这一项标为"未获得"并继续下一项。

这条写在目标里就行,不需要额外机制。它比步数上限更早生效,也更省钱。

四道闸里,闸一(步数)和闸四(重复检测)是必设的,而且都只是几行文字。

闸二、闸三看你的运行方式——如果是在某个产品里跑,它可能已经内置了;如果是自己搭的,要自己加。

没有任何一道闸是"等出了问题再加"的。 第一次跑就该有,因为第一次最容易失控——那时候你的目标还没调好。

停下来之后要交什么 ​

上限触发时最忌讳的是只说一句"已达上限"。要交三样:

text
① 部分结果    ——  已经拿到的,哪怕不完整
② 缺口清单    ——  还差哪几项,各自卡在哪
③ 执行路径    ——  你都试过什么(一行一条)

有了这三样,你可以:直接用部分结果、手动补上缺口、或者根据 ③ 看出它为什么卡住,然后去改目标或改工具。

这三样也正是验收时要看的东西。

一个反向的问题:它太早停了怎么办 ​

上限防的是跑太久。反过来也会出问题:它第二圈就说"我已经完成了"。

原因通常有两个:

一、完成标准太松。 "调研一下"——它查到一条就算调研了。解法回 02 章:写成可勾选的清单。

二、它遇到困难就宣布完成。 查不到,它不说查不到,说"根据我的了解……"——这是幻觉在 Agent 里的表现形式。

解法是那句:

text
"未获得"是一个合格的结果,不扣分。猜一个答案才扣分。
交付前逐条核对完成标准清单,有任何一项既没拿到、也没标注"未获得"的,
就不算完成。

一个常被忽略的上限:并发 ​

如果你的 Agent 能同时开好几条支线(比如同时查三家竞品),也要设上限。不然:

  • 成本以并发数倍增;
  • 同时对一个站点发很多请求,可能被限流甚至封掉;
  • 出了问题,几条支线的日志混在一起,更难查。

入门阶段:先串行跑通,再考虑并发。

一句话收口 ​

上限不是不信任它,是承认你不知道它会走多远。

下一步 ​

07 · 长跑的上下文

一份讲通用概念的入门手册 · 不绑定任何一家模型或工具 · 例子可直接照抄