跳到主要內容
Cypher's Practical Coding
正在準備工作環境...

風險與邊界

循環改變了工作方式,但沒把你從工作裡刪掉。循環越強,下面三個問題越繞不開。

問題一:讓循環停下來很難

每個循環都得帶硬煞車。三道閘盡量都要有:

閘門作用範例設定
迭代次數硬上限防止無限跑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 通常也會跳過持久化——因為不在乎品質的團隊,通常也不在乎記錄。

四個隱性成本的惡性循環

這四個成本會互相增強,形成一個你不容易察覺的下降螺旋:

  1. 驗證債(Verification debt):loop 產出的每個 PR 都過了測試,但測試沒覆蓋到的邊界情況慢慢堆積,直到某天一起爆發
  2. 理解腐蝕(Comprehension rot):你沒寫的程式碼越多,你對 codebase 的心智地圖越過時
  3. 認知投降(Cognitive surrender):loop 跑得越順,你越不想花力氣審查——「反正前 29 個都對了,這個大概也沒問題」
  4. 帳單爆炸(Token blowout):一個 bug 讓 loop 整晚空轉 retry,帳單翻倍

惡性循環:未驗證的產出 → 理解下降 → 認知投降 → loop 跑更久沒人看 → 花更多錢 → 產出更多未驗證的東西。

對抗方法(三條操作紀律):

  1. 每天抽查:不用全看,但每天至少認真看一個 loop 產出,能解釋它做了什麼和為什麼
  2. 先設上限再上線:per-run 預算、每日預算、最大 retry 次數——讓一個空轉的 bug 燒不掉整晚的額度
  3. 保留一扇門:loop 裡至少有一個人類檢查點,不是因為你每次都會看,而是讓你保持「隨時可以看」的能力

小結:循環讓你放大,也讓你的錯誤放大

循環放大的不只是你的產出,也放大了你的判斷失誤。一個設計不好的驗收條件,在手動時只會讓一份輸出出錯;在循環裡,可能讓一百份輸出都出錯。

所以設計循環時,謹慎程度要比寫一段程式碼更高,不是更低。

AI 協作:學了這個,跟 AI 怎麼配合?

知道循環的風險,讓你成為更好的循環設計師,而不是讓你不敢用循環。

你的人類優勢:

  • 感知「這次結果感覺不對」——直覺是抽樣審查的觸發器,AI 沒有這個直覺
  • 決定信任程度——要抽查幾%、多久做一次完整 review,這是你的判斷

可以這樣跟 AI 說:

我設計了一個每天自動處理退貨分類的循環,已經跑了兩週,成功率看起來很高。幫我設計一個抽查機制:每天自動跑完後,我需要花 10 分鐘確認哪些東西,才能對這批結果有合理的信心?

互動示範

DEMO 1可以修改程式碼試玩

挑戰任務

Task 1

如果你明天要把某個重複性工作交給循環自動跑,你最擔心它出什麼問題?試著列出兩個「感覺不太可能但一旦發生就很麻煩」的失敗情境,然後想想對應的煞車機制是什麼。

BackNext Lesson →