最近大家都在熱議“設計循環 (designing loops)”,而不是簡單地給你的編程 AI 智能體 (AI Agent) 扔一條提示詞 (prompt) 就完事。如果你在 X(原 Twitter)上花點時間,想搞清楚到底什麼是“循環”,你會聽到五花八門的答案。
在 Claude Code 團隊,我們將“循環”定義爲: AI 智能體不斷重複執行工作週期,直到滿足某個預設的停止條件。 爲了方便理解,我們根據以下四個維度,對循環進行了分類:
-
• 它是如何被觸發的 -
• 它是如何停止的 -
• 它使用了哪種 Claude Code 基礎指令 (primitive) (在這裏指系統內置的基礎命令或核心功能模塊) -
• 哪種類型的任務最適合它
接下來,我們將帶你瞭解這幾種主要的循環類型、適用場景,以及如何在控制 token 消耗的同時,保證產出的代碼質量。請記住,並不是所有任務都需要複雜的循環;建議從最簡單的方案開始上手,然後根據實際情況靈活挑選這些模式。
回合制循環 (Turn-based loops)
-
• 觸發方式 :用戶輸入提示詞。 -
• 停止條件 :Claude 自行判斷任務已經完成,或者它發現需要向你索要更多上下文信息。 -
• 最佳適用場景 :不屬於常規流程或定時計劃的、比較簡短的任務。 -
• 如何控制消耗 :編寫非常具體的提示詞,並通過“技能 (Skills)”功能強化驗證環節,從而減少來回交互的回合數。
你發送給 AI 的每一個提示詞,其實都開啓了一個由你手動主導的循環。在這個循環裏,你指揮着每一個回合:Claude 收集上下文、採取行動、檢查自己的工作,必要時重複這些動作,最後給你回覆。我們稱之爲“智能體循環 (agentic loop)”。
舉個例子:你讓 Claude 做一個“點贊”按鈕。它會閱讀你的代碼、進行修改、運行測試,然後把它認爲沒問題的成果交還給你。接着,你手動檢查一遍它的工作,發現沒問題或需要修改後,再寫出下一條提示詞。
其實,你可以把你自己手動檢查的這些步驟,寫進一個名爲
SKILL.md
的文件裏。這樣一來,Claude 就能端到端地自行完成更多檢查工作。在這個文件裏,你應該提供各種工具或連接器,讓 Claude 能夠“看”到、衡量或與最終結果進行真實交互。
驗證的標準越量化、越具體,Claude 就越容易進行自我判斷。
例如,你可以在
SKILL.md
文件中這樣規定:
---
name: verify-frontend-change
description: 在宣佈完成之前,端到端驗證任何 UI 更改。
---
# 驗證前端更改 (Verifying frontend changes)
絕不能僅僅因爲代碼修改成功,就報告 UI 更改已完成。必須像人類代碼審查員那樣進行驗證:
1. 啓動開發服務器 (dev server),並在瀏覽器中打開修改後的頁面。
2. 直接與更改後的內容交互。對於新增的控件(如按鈕、輸入框、開關):點擊它,確認狀態如預期般改變,並在操作前後截圖。
3. 檢查瀏覽器控制檯 (browser console):確保沒有新增任何錯誤 (errors) 或警告 (warnings)。
4. 使用 Chrome 開發者工具的 MCP **(Model Context Protocol,模型上下文協議,一種讓 AI 連通外部工具和數據的標準標準)**,運行性能追蹤,並審覈網頁核心性能指標 (Core Web Vitals)。
如果任何一個步驟失敗,請修復問題並從步驟 1 重新開始 —— 絕對不要把只驗證了一半的工作交回給我。
目標導向循環 (Goal-based loop /goal)
-
• 觸發方式 :實時手動輸入提示詞。 -
• 停止條件 :目標達成,或者達到了設定的最大嘗試回合數。 -
• 最佳適用場景 :具備可驗證退出標準(能明確用客觀數據判斷對錯)的任務。 -
• 如何控制消耗 :設定非常具體的完成標準和明確的回合數上限,例如“嘗試 5 次後停止”。
有時候,僅僅交互一個回合是不夠的,特別是在處理複雜任務時。當 AI 智能體能夠不斷試錯、迭代時,它們往往表現得更好。你可以通過
/goal
指令定義“到底什麼樣纔算做完”,從而讓 Claude 有更長的時間去持續迭代。
當你明確定義了成功標準後,Claude 就不需要自己去瞎猜什麼是“足夠好”並過早地結束工作。每次 Claude 試圖停下來交差時,背後的評估模型都會檢查你的條件,如果不達標,它會被打回去繼續幹活,直到目標達成,或者達到了你設定的嘗試次數上限。
這就是爲什麼 確定性的標準 (比如通過了多少個測試用例,或者達到了某個具體的分數門檻)會如此有效的原因。
例如:
# 將主頁的 Lighthouse 網頁性能跑分提高到 90 分或以上,嘗試 5 次後停止。
/goal get the homepage Lighthouse score to 90 or above, stop after 5 tries.
基於時間的循環 (Time-based loop /loop 和 /schedule)
-
• 觸發方式 :設定的時間間隔。 -
• 停止條件 :你手動取消它,或者工作徹底完成了(比如代碼被合併了,任務隊列清空了)。 -
• 最佳適用場景 :週期性重複的工作,或者需要與外部環境、外部系統對接的任務。 -
• 如何控制消耗 :設置更長的時間間隔,或者改爲基於事件觸發(而不是單純按時間盲目運行)。
有些 AI 智能體工作是週期性的:任務本身一成不變,只是輸入的數據變了。比如,每天早上彙總 Slack 聊天記錄。另一些工作則依賴外部系統,與外部系統對接最簡單的方式,就是每隔一段時間去檢查一次,並根據變化做出反應。例如,監控一個可能會收到代碼審查意見、或者未能通過 CI (Continuous Integration,持續集成,用於自動測試和構建代碼) 的 PR (Pull Request,代碼拉取請求,即代碼合併申請) 。
對於這些場景,你可以使用
/loop
指令來觸發 Claude,它會按照設定的時間間隔重複執行某條提示詞。例如:
# 每 5 分鐘檢查一次我的 PR,處理最新的代碼審查意見,並修復失敗的持續集成測試。
/loop 5m check my PR, address review comments, and fix failing CI
需要注意的是,
/loop
是在你本地電腦上運行的,所以一旦你關機或者退出,它就停止了。如果你想把循環搬到雲端全天候運行,可以使用
/schedule
指令來創建一個雲端的例行程序 (routine)。
主動式循環 (Proactive loops)
-
• 觸發方式 :事件觸發或定時計劃,全程無需人類實時參與。 -
• 停止條件 :每個子任務在達成其具體目標時退出。但整個例行程序本身會一直運行,直到你主動將它關閉。 -
• 最佳適用場景 :定義清晰、源源不斷的重複性工作流:比如用戶漏洞報告 (bug reports)、工單分診處理 (issue triage)、數據遷移、代碼依賴項升級等。 -
• 如何控制消耗 :將常規的、簡單的流程分配給更小、更快的模型,把能力最強的大模型留給需要做複雜判斷的環節。
上面提到的那些基礎指令,結合 Claude Code 的其他進階功能(比如自動模式 auto mode 和動態工作流 dynamic workflows,目前爲研究預覽版),可以被組合成一個處理長期複雜任務的“超級循環”。
例如,爲了處理不斷湧入的用戶反饋,你可以這樣搭配組合:
-
1. 使用 /schedule(研究預覽版)運行一個例行程序,定時檢查有沒有新的反饋報告。 -
2. 使用 /goal定義任務完成的最終目標,並利用技能 (skills) 記錄下應該如何驗證結果。 -
3. 利用動態工作流 (Dynamic workflows) 來統籌多個 AI 智能體,讓它們分別負責給報告分類、修復問題,以及審查代碼。 -
4. 開啓自動模式 (Auto mode),這樣整個流程就能全自動無縫運轉,無需停下來等你點擊確認。
把這些組合在一起,你的提示詞可能會長這樣:
# 每小時執行一次:檢查 project-feedback 頻道中的 bug 報告。目標:直到本次運行發現的所有報告都已被分類、處理並回復,才停止運行。在修復 bug 時,使用工作流在平行的工作區中探索三種不同的解決方案,並讓一個專門作爲“裁判”的模型對它們進行對抗性的嚴格審查。
/schedule every hour: check the project-feedback channel for bug reports. /goal: don't stop until every report found this run is triaged, actioned, and responded to. When fixing a bug, use a workflow to explore three solutions in parallel worktrees and have a judge adversarially review them.
保持代碼質量 (Maintaining code quality)
一個循環產出成果的質量,很大程度上取決於圍繞它建立的外圍系統。在設計這個系統時,請遵循以下原則:
-
• 保持代碼庫本身的整潔 :Claude 會不知不覺地模仿你代碼庫中已有的模式和規範。底子好,它寫出來的代碼就好。 -
• 給 Claude 提供自我驗證的方法 :通過 技能文檔 (Skills) [1] 功能,把你和團隊眼中的“優秀代碼標準”寫成規則,讓它自己去對照。 -
• 讓文檔觸手可及 :各種編程框架和代碼庫的官方文檔裏,都藏着最新、最好的實踐經驗。確保你的 AI 能夠輕鬆訪問這些資料。 -
• 使用第二個智能體來進行代碼審查 :找一個沒有被歷史對話污染、擁有全新上下文的智能體來做代碼審查。它的偏見更少,也不會被主幹智能體的思路“帶偏”。你可以使用內置的 /code-review技能,或者針對 Github 的專用審查工具 (代碼審查文檔 [2] )。
當某一次執行的結果沒達到你的標準時, 千萬別僅僅停留在“把這個 bug 修好”就完事了。 試着把這次踩坑的教訓提煉出來,固化到你的規則裏,從而在未來的無數次迭代中改善整個系統。
控制 Token 消耗 (Managing token usage)
爲了有效控制 Token 消耗 (Token 是大語言模型處理文本的基本計費單位,類似按字數算錢) ,你的循環必須有清晰的邊界:
-
• 選擇合適的指令和模型 :殺雞焉用牛刀。小任務根本不需要動用多個智能體或複雜的循環。很多任務用更便宜、更快的模型就能完美解決。 -
• 定義明確的成功與停止標準 :非常具體地描述出“完成”到底是個什麼狀態,這樣 Claude 就能更快地找到答案(當然,也不能快到敷衍了事)。 -
• 在大規模運行前先“試水” :動態工作流可能會一下子衍生出幾百個智能體。在大規模部署前,請先切出一小塊工作,測試一下實際的消耗量,心裏有個底。 -
• 用腳本處理確定性的工作 :直接運行一段腳本,比讓大模型一步步去邏輯推理要便宜得多。例如,處理 PDF 的技能可以直接內嵌一個填寫表單的腳本,每次讓 Claude 跑這個腳本就行,而不是每次都讓它絞盡腦汁重新推導代碼該怎麼寫。 -
• 別把例行程序跑得太頻繁 :你監控的事物多久變一次,你的檢查間隔就應該設爲多長。不要讓 AI 傻傻地每秒鐘去刷新一個一天才更新一次的網頁。 -
• 定期查看消耗 :輸入 /usage命令,它可以按技能、子智能體 (SubAgents) 和 MCP 詳細拆解近期的消耗情況;直接輸入不帶參數的/goal,可以查看目前跑了多少回合以及 Token 的消耗量;/workflows會顯示每個智能體的具體 Token 消耗,並且你可以在那裏隨時讓某個智能體停下來。
開始你的探索之旅 (Getting started)
簡單總結一下:
| 循環類型 (Loop) | 你需要移交什麼 (You hand off) | 適用場景 (Use it when) | 所需工具 (Reach for) |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
/goal
|
|
|
|
|
/loop
/schedule
|
|
|
|
|
|
想要開始嘗試循環,不妨先審視一下你日常手頭的工作。挑一個你總是成爲效率“瓶頸”的任務,然後問問自己:
我能把哪一部分交接給 AI?
我能寫出自動驗證的檢查項嗎?任務目標足夠清晰嗎?這項工作是不是定時發生的?
一旦你有了思路,就把循環跑起來!仔細觀察結果,看看它在哪裏卡殼了,或者在哪裏用力過猛了, 不要害怕去不斷迭代和優化它 。
欲瞭解更多進階信息,請閱讀 Claude Code 的官方文檔:AI 智能體基礎 [3] ,以及 目標設定 (/goal) [4] 、例行程序 (/routines) [5] 和 動態工作流 (workflows) [6] 的相關專題頁面。
本文由 @delba_oliveira 撰寫。
https://x.com/ClaudeDevs/status/2074208949205881033
引用鏈接
[1]
技能文檔 (Skills):
https://code.claude.com/docs/en/skills
[2]
代碼審查文檔:
https://code.claude.com/docs/en/code-review
[3]
AI 智能體基礎:
https://code.claude.com/docs/en/agents
[4]
目標設定 (/goal):
https://code.claude.com/docs/en/goal
[5]
例行程序 (/routines):
https://code.claude.com/docs/en/routines
[6]
動態工作流 (workflows):
https://code.claude.com/docs/en/workflows#orchestrate-subagents-at-scale-with-dynamic-workflows