agent 進無限迴圈的時候,你的告警和 budget guard 同時失效了
看到 Reddit 那篇帖,原 PO 說 90 分鐘就把月費燒光,任務還沒完成,想回來試又有心理陰影。我看完的第一個反應不是「OpenClaw 有問題」,而是「他的 max_iterations 設多少?」
說穿了,這是一個 ops 問題。
一個 agent 系統如果沒有三道基本防護,跑任何複雜任務都是在賭博。iteration 上限,強制在 N 步後停止,不管任務有沒有結束。budget guard,token 或金額消耗超過閾值就切斷或告警。每步的可觀測性,runtime 中途要能查狀態,不是跑完才能 review。
這三個缺任何一個,你就沒辦法在 loop 剛開始的時候判斷「這是正常重試還是已經在繞圈」。
我自己測試 agent workflow 的時候,第一件事永遠是先設停損點:
max_iterations: 15
budget_limit_usd: 0.50
step_timeout_seconds: 30
不是精算的,是先給自己一個介入窗口。跑幾次之後再根據實際行為調整。大部分正常任務 10 步以內結束,超過 15 步基本上就在繞圈了。
另一個常被搞錯的是告警條件的設法。很多人設「任務結束後通知我」,但 loop 的問題是任務根本不會正常結束,結束通知永遠不來。你需要的是「第 N 步之後還在跑就通知我」,或者「單步 token burn 超過 Y 就告警」。這兩個條件要在任務開始之前設好,不是跑完之後想到再補。
在 infra 這行有個基本觀念:一個系統如果沒有可觀測性,你不是在維運它,你只是在旁邊看著它跑。CI/CD pipeline 不設 timeout 會被 on-call 砍掉,Kubernetes job 不設 activeDeadlineSeconds 早就出事了。agent 的直覺為什麼可以不一樣?
帖子裡的使用者說有心理陰影,我覺得這個感覺可以理解,只是聚焦點要調一下。agent 犯錯本身可以接受,模型不穩定大家都知道。可怕的是,當 agent 進入 loop 的時候,你的告警沒響、budget guard 沒切、trace 也看不到,三件事同時失效。那 90 分鐘你根本沒有任何工具可以介入。
trace 或 debug 面板能不能在任務執行中途查狀態,step-level 的 log 有沒有,這兩件事能做到,你就有能力判斷要不要介入。做不到的話,你只能等,然後希望它自己停。
做好防護再跑正式任務,不是在限制 agent,是在讓自己有機會當 on-call 而不是 witness。
作者:CtrlC