06 · 設上限:失控的四種形狀
Workflow 的成本是你算得出來的:四步就是四次呼叫。Agent 的成本是它自己決定的。不設上限,等於把帳單和你的耐心一起交出去。而它不會自己喊停。
失控的四種形狀
先認清楚它會怎麼壞,閘才知道設在哪。
一、繞圈
圈 12:搜尋"A 家 定價" → 沒找到
圈 13:搜尋"A 家 價格" → 沒找到
圈 14:搜尋"A家定價方案" → 沒找到
圈 15:搜尋"A 家 pricing" → 沒找到
……它在用同一個方法反覆試,每次只改一點點。 因為沒有任何東西告訴它"這條路走不通,換一條或者認輸"。
這是最常見的一種,也是最費錢的。
二、範圍爆炸
目標:查三家競品的定價
圈 8:找到 A 家有五個套餐 → 決定每個套餐都詳細展開
圈 15:發現套餐有地區差異 → 決定每個地區都查
圈 30:還在查每一步都"合理",加起來完全跑偏。 根源在目標沒寫完成標準。
三、上下文撐爆
跑到二十幾圈,前面所有工具返回都堆在上下文裡,桌子滿了——最早的目標被擠掉,它開始幹別的。07 章專門講這個。
四、越錯越遠
第 5 圈它抓錯了一個數,後面二十圈全建立在這個數上。Agent 不會回頭質疑早期結論——早期結論在它眼裡就是既成事實。
第四種最貴
前三種你至少能從"跑得太久""花得太多"看出來。第四種跑得又快又順,交付的東西格式完美,只是錯的。
這跟 Workflow 篇 06 章那個"靜默錯誤"是同一類,只是在 Agent 裡更難查——因為你沒有乾淨的中間產物可以對照。
四道閘
對應上面四種,四道閘。每一道都是幾行配置的事,但沒有預設值——你不設就是沒有。
閘一:步數上限
最多 15 圈。到了還沒完成,就停下來,交出:
- 已經拿到的部分結果
- 還差什麼
- 你卡在哪兒了關鍵是最後那三行:不是硬中斷,而是讓它交一份"跑到哪兒了"的報告。這樣這次執行不算白花,你還知道該怎麼調。
上限設多少?先設一個你覺得"正常應該夠用"的兩倍,跑幾次看實際用多少圈,再往下收。
閘二:成本上限
按 Token 或按錢。超了就停。
這道閘的意義不只是省錢,更是發現異常:一個平時花五毛錢的任務,這次花了二十塊,說明它在裡面兜圈子了。
閘三:時間上限
單次執行的牆鍾時間。防的主要是"某個工具卡住了"這種情況——不設的話它可能掛在那兒一整夜。
閘四:重複檢測
專治繞圈。規則很簡單:
如果你連續三次呼叫同一個工具、且參數高度相似、且都沒有拿到有用結果,
就停止這條路徑。改用別的方法,或者把這一項標為"未獲得"並繼續下一項。這條寫在目標裡就行,不需要額外機制。它比步數上限更早生效,也更省錢。
四道閘裡,閘一(步數)和閘四(重複檢測)是必設的,而且都只是幾行文字。
閘二、閘三看你的執行方式——如果是在某個產品裡跑,它可能已經內建了;如果是自己搭的,要自己加。
沒有任何一道閘是"等出了問題再加"的。 第一次跑就該有,因為第一次最容易失控——那時候你的目標還沒調好。
停下來之後要交什麼
上限觸發時最忌諱的是隻說一句"已達上限"。要交三樣:
① 部分結果 —— 已經拿到的,哪怕不完整
② 缺口清單 —— 還差哪幾項,各自卡在哪
③ 執行路徑 —— 你都試過什麼(一行一條)有了這三樣,你可以:直接用部分結果、手動補上缺口、或者根據 ③ 看出它為什麼卡住,然後去改目標或改工具。
這三樣也正是驗收時要看的東西。
一個反向的問題:它太早停了怎麼辦
上限防的是跑太久。反過來也會出問題:它第二圈就說"我已經完成了"。
原因通常有兩個:
一、完成標準太鬆。 "調研一下"——它查到一條就算調研了。解法回 02 章:寫成可勾選的清單。
二、它遇到困難就宣佈完成。 查不到,它不說查不到,說"根據我的瞭解……"——這是幻覺在 Agent 裡的表現形式。
解法是那句:
"未獲得"是一個合格的結果,不扣分。猜一個答案才扣分。
交付前逐條核對完成標準清單,有任何一項既沒拿到、也沒標註"未獲得"的,
就不算完成。一個常被忽略的上限:併發
如果你的 Agent 能同時開好幾條支線(比如同時查三家競品),也要設上限。不然:
- 成本以併發數倍增;
- 同時對一個站點發很多請求,可能被限流甚至封掉;
- 出了問題,幾條支線的日誌混在一起,更難查。
入門階段:先序列跑通,再考慮併發。
一句話收口
上限不是不信任它,是承認你不知道它會走多遠。