Question

幫我整理一下 ai agent 中 loop engineering 相關的詳細內容,用繁體中文說明,特定專有名詞保留英文,目標是讓我能理解 loop engineering 並套用在我的工作流程中

Answer

1. 什麼是 Loop Engineering

Vault 中 5 篇文章對 loop engineering 的定義幾乎一致,可以歸納成一句話:

Prompt 是一個問題,Loop 是一份工作(job)。

傳統用法(prompting)是「人類驅動」的循環:你打字、等待、檢查結果、再打字。人類本身就是那個迴圈。Loop engineering 則是把這個迴圈外部化成一個系統:你定義目標(goal),系統自己發現要做什麼、規劃、執行、驗證結果、決定下一步,直到目標達成或觸發停止條件,整個過程不需要你在場盯著。

業界最常被引用的兩句話(出自 Loops explainedLoop Engineering: The AI skill…):

“You should not be prompting coding agents anymore. You should be designing loops that prompt your agents.” — 業界流傳語 “I do not prompt Claude anymore. I have loops running that prompt Claude and figure out what to do. My job is to write loops.” — Boris Cherny(Claude Code 負責人)

2. 五個階段(Loop 的基本骨架)

幾乎每篇文章都用同一個五階段循環來描述 loop 的運作機制:

DISCOVER(發現)→ PLAN(規劃)→ EXECUTE(執行)→ VERIFY(驗證)→ ITERATE(迭代)
  • Discover:找出有什麼需要處理(例如:掃描 CI failure、新 issue)
  • Plan:決定怎麼做
  • Execute:實際動手做
  • Verify:用客觀標準檢查結果是否達標
  • Iterate:沒過關就把結果丟回迴圈重新跑,過關就停止

其中 Verify 是整個 loop 的核心。沒有真正的驗證機制,loop 就只是 agent 自己跟自己說「做得不錯」,這不是進步,只是重複。

3. 是否值得建立一個 Loop?(4-Condition Test)

這是套用前最該先做的篩選,三篇文章都用幾乎相同的四條件測試:

  1. 任務會重複發生(至少每週一次)——如果是一次性任務,寫一個好 prompt 比建 loop 划算
  2. 驗證可以自動化——要有 test、type check、build、linter 等「能客觀判斷失敗」的機制,否則 agent 是在自己批改自己的作業
  3. Token 預算能吸收浪費——loop 會反覆重讀 context、重試、探索,這些都燒 token,且每一輪都更貴(因為 context 越滾越大)
  4. Agent 有資深工程師等級的工具——能看 log、有可重現的環境、能執行並觀察自己寫的程式碼結果

只要漏一個條件,就維持手動 prompt,不要建 loop。Loop engineering 14-step roadmapLoops explained 皆強調這點)

4. 六個構成要素(Building Blocks)

跨文章一致提到的 loop 組成要素:

要素作用說明
Automation心跳(heartbeat)讓 loop 自動觸發的排程或事件機制,沒有它 loop 只是你跑過一次的 script
Worktree平行不衝突多個 agent 同時改 code 時,各自獨立的 git checkout + branch,避免互相覆寫
Skill可重複使用的知識把專案規則、慣例、「絕不能做的事」寫成一份檔案(SKILL.md),每次執行都讀取,不用每次重新解釋
Connector / Plugin真實工具存取透過 MCP 等方式連到 GitHub、Slack、Linear、Jira 等,讓 loop 能「真的去做」而不只是「建議該怎麼做」
Subagent製作者與檢查者分離寫程式碼的 agent 對自己的成果通常太寬容(self-preferential bias),用獨立的 agent/model 來審查,是提升品質最有效的單一手段
Memory / State跨輪記憶Model 會忘記,但 repo 不會。用 STATE.md、Linear ticket、GitHub Issue 等外部紀錄保存「做了什麼、卡在哪、下一步是什麼」,讓明天的 run 是「接續」而不是「從零開始」

在 Claude Code 中,這些要素具體對應:

  • Automation/loop(session 內、固定或動態間隔排程)、/goal(跑到某個條件成立為止,由獨立的 checker model 判斷,不是寫程式碼的 model 自己判定)、Routines(雲端託管、不需開著 session,最短間隔 1 小時,會有最多 30 分鐘的排程抖動)
  • Worktree--worktree flag、isolation: worktree 設定
  • Skill.claude/skills/ 下的 SKILL.md
  • Subagent.claude/agents/ 下定義的子代理,用 --agent=<name> 呼叫

5. Open Loop vs Closed Loop

  • Closed Loop(封閉式):人類先設計好路徑,包含明確目標、固定步驟、每步都驗證、有停止條件、卡住時有交接點。便宜、可靠、輸出乾淨,是現在實際該從這裡開始的版本。
  • Open Loop(開放式):給 agent 一個寬泛目標,讓它自己探索路徑。能發現你沒想到的東西,但容易嘗試太多路徑、燒太多 token、漂離真正目標、難以控制。

建議:先從 Closed Loop 開始,等驗證機制夠強之後再考慮開放。

6. 正確的建置順序

四篇文章(Loops explained14-step roadmapLoop Engineering: The AI skill)都強調順序比工具選擇更重要:

1. 先讓「一次手動執行」變得可靠
2. 把這次執行的方法寫成 Skill
3. 把 Skill 包進一個 Loop(加上 gate + 停止條件)
4. 最後才排程(schedule)

跳過前面步驟直接排程,是「loop 在你睡覺時突然爆炸」最常見的原因。

7. 常見失敗模式(必須知道)

  • Ralph Wiggum Loop(工程師 Geoffrey Huntley 命名):agent 過早判定「完成」,loop 在任務只做一半時就退出,卻持續安靜地花錢,不會崩潰也不會報錯,只是默默燒 token。修法:要有客觀的 gate(test/build/lint 結果),不能只靠「另一個 agent 覺得做完了」。
  • Goal drift(目標漂移):長對話中每次摘要都會丟失一些資訊,「不要做 X」這類限制條件在第 47 輪可能就消失了。緩解方式:用一份固定重讀的 VISION.md / AGENTS.md。
  • Self-preferential bias(自我偏好偏誤):寫程式的 agent 對自己的成果評分太寬容。緩解方式:獨立 reviewer subagent,不看 maker 的推理過程。
  • Agentic laziness:loop 在還沒真正做完時就宣告「夠好了」。緩解方式:/goal 配合獨立 checker model 的客觀停止條件。
  • Comprehension debt(理解債)與 cognitive surrender(認知放棄):loop 跑得越好,repo 裡的程式碼和團隊實際理解的落差就越大;放棄形成自己的判斷、無腦接受 loop 輸出的誘惑也越大。緩解:讀 diff、定期檢查 gate 是否真的還能抓到問題、把 loop 限制在小範圍可機器驗證的工作,不要讓它碰架構決策。
  • 沒有 token 上限:每次重試、每個 subagent、每輪驗證都在燒錢,沒有上限的 loop 容易燒到 5-10 倍預期成本。
  • 模糊的排程指令/升級規則:例如「每小時幫我看通知」沒有明確的「只在 X 情況才通知我」規則,結果變成資訊轟炸,一個無法略讀的報告等於沒人會看(出自 17 prompts that make Hermes run while you sleep 的實戰教訓)。

8. 真正該追蹤的指標

不是「燒了多少 token」或「跑了幾次 loop」,而是 cost per accepted change(每個被接受變更的成本)。如果 loop 產出 10 個結果你丟掉 6 個,等於你在做它本該幫你省下的審查工作;接受率低於 50% 時,loop 是虧本的。

9. 規模:Single-Agent Loop vs Fleet Loop

  • Single-Agent Loop:一個 agent 跑完整個五階段循環,適合範圍小、目標單一的任務(bug fix、研究摘要、內容草稿)。
  • Fleet Loop:一個 orchestrator agent 拆解任務,分給多個 specialist agent,每個 specialist 又可以用自己的 subagent。適合大型、多步驟目標(例如「建一個生產力 App」)。Boris Cherny 的 Tier 3(/batch 與動態 JavaScript workflow,用 agent() / parallel() / pipeline())就是 Fleet Loop 的具體實作,曾用 800 個 agent 完成 4000 個檔案的 monorepo 改名任務,每個 agent 有自己的 worktree 並被另一個 agent 做對抗式審查(adversarial review)。

10. 如何套用在你的工作流程

具體的落地步驟建議:

  1. 先用 4-Condition Test 篩選:你目前手動重複做的工作中,哪些符合「每週重複、可自動驗證、agent 有能力做、token 預算可接受」?例如 vault 的 /lint-vault/analyze-vault 本身就是很適合的 closed loop 候選(有明確驗證標準:YAML 是否合法、frontmatter 是否齊全)。
  2. 從最小可行循環開始The minimum viable loop,出自 14-step roadmap):一個 automation + 一個 skill + 一個 state file + 一個 gate,不要一次上 Fleet。
  3. 先手動跑一次,確認可靠,再寫成 Skill,再包成 Loop,最後才排程——不要跳步。
  4. 把 maker 和 checker 分開:如果是程式碼類任務,讓另一個 agent/model 做審查,不要讓寫程式的 agent 自己批改自己。
  5. 明確寫出升級規則 / 停止條件:每個排程型 prompt 都要包含「只在 X 情況才通知我」與「跑 N 次或 N 小時就停」,否則會收到資訊轟炸或無限燒錢。
  6. 用一份外部 state 檔案記錄進度(例如 vault 的 log.md 模式),讓 loop 下次執行時是接續,不是從零開始。
  7. 定期檢查 gate 是否還有效:gate 會「rot(腐化)」,要抽樣檢查 loop 通過的結果是否真的符合你在意的品質標準。

Sources

Vault notes consulted:

Follow-up Questions

  • vault 目前沒有任何文章實測「cost per accepted change」的具體計算方法或工具,若要真的追蹤這個指標,需要額外研究或自行設計記錄方式。
  • 5 篇來源中有 4 篇高度重疊(同一波文章潮,互相引用同樣的 Boris Cherny 語錄),可能反映社群迴聲而非獨立驗證的最佳實踐;尚未有 vault 內容是「loop 失敗的真實案例覆盤」或「大規模生產環境的長期維運報告」,可作為未來 /research-vault 的延伸題目。
  • 三層 Tier 中的 Tier 2 Routines(雲端排程)與 Tier 3 動態 workflow 的具體設定語法(cron 表示式、.claude/agents/ TOML 格式)目前只在 Three-Tier Agent Stack 一篇中有範例,若要實作可能需要查官方文件補齊細節。

Connections