風險與邊界
循環改變了工作方式,但沒把你從工作裡刪掉。循環越強,下面三個問題越繞不開。
問題一:讓循環停下來很難
每個循環都得帶硬煞車。三道閘盡量都要有:
| 閘門 | 作用 | 範例設定 |
|---|---|---|
| 迭代次數硬上限 | 防止無限跑 | max_iterations: 50 |
| 無進展檢測 | 防止原地打轉 | 連續 3 次沒有新的完成項目 → 停止 |
| token / 美元預算上限 | 防止帳單失控 | 單次跑超過 $2 USD → 停止 |
三道閘缺一道都不安全:
- 只有次數上限,遇到假進展(循環一直產出但沒有實際效果)就失效
- 只有無進展檢測,計算量特別大的任務可能在「進展」但燒掉幾倍預算
- 只有預算上限,任務沒做完但不知道停在哪裡
問題二:驗證還是你的活
無人值守地跑,也會無人值守地犯錯。
常見的錯誤形態:
- 驗收條件不夠嚴:循環產出符合格式但內容有誤的東西,驗收照樣過
- 邊界情況沒覆蓋:循環在一般情況正確,遇到特殊輸入就出錯
- 外部狀態改變:API 格式更新、資料結構調整,循環繼續跑但結果已經偏掉
不管循環多智能,最後驗收的還是人。差別在於:你是要查 100 份輸出,還是只查 10 份抽樣,取決於你對這個循環的信任程度——而信任是靠時間和紀錄累積出來的,不是一開始就有的。
問題三:理解會慢慢變薄
這是最隱微的風險,也是最容易忽略的一個。
循環把你沒有親手寫的程式碼更快送進儲存庫。「儲存庫裡有什麼」和「你真正理解什麼」之間的缺口會隨著每次自動合併而變大。這個缺口有個名字:理解債(comprehension debt)。
理解債的後果:
- 出了 bug 不知道從哪裡查起
- 別人問你為什麼這樣寫,你說不清楚
- 想改一個功能,但不確定改了會不會影響其他地方
另一個相關問題是認知投降(cognitive surrender):循環產出什麼,你就接受什麼,不再認真審查,因為「反正 AI 跑過了」。認知投降的起點通常是疲勞——你看了第 30 份輸出,覺得前 29 份都過了,這份大概也沒問題。
對抗理解債的做法:
- 設定「我親自讀懂」的配額,例如每 10 個自動合併,至少完整 review 1 個
- 定期問自己:「如果這個循環明天掛掉,我知道從哪裡開始 debug 嗎?」
- 偶爾關掉循環,手動跑幾次,感受一下細節
問題四:成本會複利式增長
Loop 消耗 token,token 就是錢。真正的問題不只是每一步都要花錢——而是成本會複利式增長。
每一輪循環,agent 都要重新讀取:目標、程式碼、上一輪結果、失敗原因。這些內容每一輪都會重新送進模型,而且上下文會越跑越大。
一個跑 10 輪的 loop,不等於 10 次普通 prompt——它是 10 次越來越大的 prompt。如果你還用了做檢分離(maker + checker),帳單會再翻倍。
真正該看的指標:每個被接受的有效改動成本是多少?如果 loop 給你 10 個結果,你丟掉 6 個,你仍然在做人類審核工作。當接受率低於 50%,loop 通常就開始虧了。
問題五:Ralph Wiggum Loop
工程師 Geoffrey Huntley 提出了一個概念叫 Ralph Wiggum loop:agent 過早判斷自己完成了任務。
它在半成品狀態退出,但 loop 還在繼續執行、繼續花錢,卻沒有產出真正的結果。沒有硬性驗證關卡時,loop 往往不會明顯崩潰——它會悄悄計費。
所以重型 loop 更適合有預算、有監控、有護欄的團隊:迭代上限、token 預算、無聊步驟用便宜模型、監控和告警。
五個反模式:每一個都是跳過了某個步驟
| 反模式 | 跳過了什麼 | 症狀 | 修法 |
|---|---|---|---|
| Nodding Loop | 驗證 | 幾百輪都沒對自己說過 No | 加獨立 evaluator |
| Amnesiac Loop | 持久化 | 每天從同一個起點開始,昨天白做 | 加狀態檔 |
| Manual Loop | 排程 | 你忘記手動跑,它就停了 | 加定時觸發或事件驅動 |
| Blind Loop | 發現 | 自動化了「做」但人還是得決定「做什麼」 | 讓 skill 自己找工作 |
| Tangled Loop | 隔離 | 多 agent 改同一目錄,merge 變災難 | 一個任務一個 worktree |
這五個不是獨立的。一個跳過驗證的 loop 通常也會跳過持久化——因為不在乎品質的團隊,通常也不在乎記錄。
四個隱性成本的惡性循環
這四個成本會互相增強,形成一個你不容易察覺的下降螺旋:
- 驗證債(Verification debt):loop 產出的每個 PR 都過了測試,但測試沒覆蓋到的邊界情況慢慢堆積,直到某天一起爆發
- 理解腐蝕(Comprehension rot):你沒寫的程式碼越多,你對 codebase 的心智地圖越過時
- 認知投降(Cognitive surrender):loop 跑得越順,你越不想花力氣審查——「反正前 29 個都對了,這個大概也沒問題」
- 帳單爆炸(Token blowout):一個 bug 讓 loop 整晚空轉 retry,帳單翻倍
惡性循環:未驗證的產出 → 理解下降 → 認知投降 → loop 跑更久沒人看 → 花更多錢 → 產出更多未驗證的東西。
對抗方法(三條操作紀律):
- 每天抽查:不用全看,但每天至少認真看一個 loop 產出,能解釋它做了什麼和為什麼
- 先設上限再上線:per-run 預算、每日預算、最大 retry 次數——讓一個空轉的 bug 燒不掉整晚的額度
- 保留一扇門:loop 裡至少有一個人類檢查點,不是因為你每次都會看,而是讓你保持「隨時可以看」的能力
小結:循環讓你放大,也讓你的錯誤放大
循環放大的不只是你的產出,也放大了你的判斷失誤。一個設計不好的驗收條件,在手動時只會讓一份輸出出錯;在循環裡,可能讓一百份輸出都出錯。
所以設計循環時,謹慎程度要比寫一段程式碼更高,不是更低。
AI 協作:學了這個,跟 AI 怎麼配合?
知道循環的風險,讓你成為更好的循環設計師,而不是讓你不敢用循環。
你的人類優勢:
- 感知「這次結果感覺不對」——直覺是抽樣審查的觸發器,AI 沒有這個直覺
- 決定信任程度——要抽查幾%、多久做一次完整 review,這是你的判斷
可以這樣跟 AI 說:
我設計了一個每天自動處理退貨分類的循環,已經跑了兩週,成功率看起來很高。幫我設計一個抽查機制:每天自動跑完後,我需要花 10 分鐘確認哪些東西,才能對這批結果有合理的信心?
互動示範
挑戰任務
如果你明天要把某個重複性工作交給循環自動跑,你最擔心它出什麼問題?試著列出兩個「感覺不太可能但一旦發生就很麻煩」的失敗情境,然後想想對應的煞車機制是什麼。