從零開始玩轉循環 (Getting started with loops)【譯】

寶玉AI2026年7月7日

最近大家都在熱議“設計循環 (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. 1. 使用 /schedule (研究預覽版)運行一個例行程序,定時檢查有沒有新的反饋報告。
  2. 2. 使用 /goal 定義任務完成的最終目標,並利用技能 (skills) 記錄下應該如何驗證結果。
  3. 3. 利用動態工作流 (Dynamic workflows) 來統籌多個 AI 智能體,讓它們分別負責給報告分類、修復問題,以及審查代碼。
  4. 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)
回合制 (Turn-based)
檢查工作 (The check)
你正處於探索或決策階段
自定義驗證技能
目標導向 (Goal-based)
停止條件 (The stop condition)
你明確知道“完成”的標準是什麼
/goal
基於時間 (Time-based)
觸發器 (The trigger)
工作在你的項目之外按時間表發生
/loop
, /schedule
主動式 (Proactive)
提示詞 (The prompt)
循環往復且定義極其明確的工作
以上全部,外加動態工作流

想要開始嘗試循環,不妨先審視一下你日常手頭的工作。挑一個你總是成爲效率“瓶頸”的任務,然後問問自己: 我能把哪一部分交接給 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