排程任務與無頭模式
一旦您信任 Claude 能完成某項任務,下一步就是不再手動執行它。如果這是在重複觸發條件下的相同提示,您就不應該每次都坐在那裡親自啟動它。本課程涵蓋兩種交接這項工作的方式:雲端排程任務(舊稱 routines),您不需要建置任何東西;以及無頭模式(headless mode),您可以從自己的腳本中獲得完全的控制權。
把它想像成一個光譜。一端是在 Anthropic 託管基礎設施上執行的雲端排程任務。另一端則是無頭模式與 Agent SDK,它們從您自己的程式碼中執行 Claude Code。讓我們從您建置最少的那一端開始。
排程任務:在雲端執行的已儲存提示
雲端排程任務是自動化重複性工作最直接的方式。沒有腳本,也沒有伺服器。它將三樣東西綁在一起:一個提示、它所作用的儲存庫,以及它所需要的任何連接器。然後,每當被觸發時,它就會在雲端執行這個組合。
關鍵在於基礎設施是 Anthropic 的。您不需要讓自己的機器整夜開著,也沒有工作流程檔案需要您維護。您只需描述一次這項工作,它就會自動執行。
排程任務不一定需要排程。它可以由幾種觸發條件啟動:
- 一個 cron 排程,例如每天早上 9 點。
- 對其 API 端點發出的 HTTP POST 請求,讓您自己的程式碼可以啟動它。
- 一個 GitHub 事件,例如有新的 pull request 送達。
任何在重複觸發條件下都是相同提示的工作,都很適合這種方式。例如每天早上的相依性稽核、在新 pull request 進來時觸發的 PR 分流器,或是每天掃描您的 Sentry 工單以找出最緊急事項。
以下是排程任務所串連起來的心智模型:一個提示、儲存庫、連接器,以及一個觸發條件。
兩種建立方式
您可以從網頁 claude.ai/code/routines 建立一個排程任務。您為它取一個名稱,寫下描述 Claude 在每個工作階段中應該做什麼的指示,選擇一個儲存庫,並選擇一個觸發條件。
您也可以在不離開終端機的情況下,從 Claude Code 內部建立一個。只需執行 /schedule 指令,並以自然語言描述您想要的內容,例如:
/schedule daily dependency audit at 9am無論從哪個入口,概念都是一樣的。選擇最適合您工作流程的方式即可。
在依賴雲端排程任務之前,您應該知道的三件事
在您依賴雲端排程任務處理任何重要事項之前,請記住以下三個限制。
- 雲端排程任務目前是研究預覽版。 行為與限制會持續變動,所以如果有所改變,請不要感到意外。
- 重複排程最多每小時執行一次。 如果您需要更頻繁的執行,雲端排程任務並不是合適的工具。
- 執行會從您預設分支的全新複本開始,並推送到
claude/分支,除非您的提示指定了其他分支。 當 GitHub pull request 事件觸發執行時,該 pull request 所屬的儲存庫會改為從該 pull request 的 head commit 開始,前提是它是該排程任務中的第一個儲存庫。若要控制執行可以推送到哪些分支,請在 GitHub 上使用分支保護規則或規則集。GitHub 會將這些規則套用到您所連接的 GitHub 存取權限上,因此如果您的存取權限可以繞過某條規則,該規則就不會阻擋推送。
無頭模式:當您需要自己的環境時
當工作可以在 Anthropic 的基礎設施上執行時,雲端排程任務非常好用。但有時工作需要您自己的環境,或是需要在執行過程中包裹一些邏輯。這時您就要降到無頭模式,文件現在稱之為非互動模式(non-interactive mode)。
無頭模式的核心是 -p 旗標(--print 的縮寫)。它以一次性指令的方式執行 Claude Code,沒有互動式介面。它讀取標準輸入並寫入標準輸出,因此可以像任何其他 shell 工具一樣進行管線串接:
claude -p "summarize the changes in this diff"有一點值得了解:單獨使用時,-p 會載入與互動式工作階段相同的上下文,包括 hooks、skills、plugins、MCP 伺服器,以及 CLAUDE.md 檔案。若要跳過這一切,請加上 --bare,下面會介紹。
取得結構化輸出
由於無頭模式可以像任何 shell 工具一樣進行管線串接,您通常會想要取得結構化資料而非散文文字。您可以將 JSON schema 與 JSON 輸出格式搭配使用,Claude 就會將其輸出限制為符合您的 schema。
符合您 schema 的物件會出現在 JSON 回應的 structured_output 欄位中。因此您可以用 jq 指令將它取出,並將其導入資料庫或另一個腳本:
claude -p "Extract the exported function names from src/core/style.js" \
--output-format json \
--json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}' \
| jq '.structured_output.functions'這樣您就能得到一個乾淨的陣列,可以交給接下來的任何流程使用。
使用工作階段進行多步驟自動化
對於跨越多個步驟的工作,您不必把所有東西都塞進一個指令裡。從 JSON 輸出中擷取工作階段的 ID,稍後再恢復它:
claude --resume "$(jq -r .session_id /tmp/plan.json)"一個腳本啟動工作,另一個腳本稍後以完整的上下文恢復它。當第一輪產生一個計畫、第二輪再執行該計畫時,這種方式就很方便。
CI 的一致執行
當 CI 需要在每台機器上都有相同的設定時,有一種模式正是為此而設計的。
--bare 旗標會跳過 hooks、skills、plugins、MCP 伺服器,以及 CLAUDE.md 檔案的自動探索。您會得到具備 Bash、檔案讀取與檔案編輯工具的 Claude,再加上您透過 --settings 或 --mcp-config 等旗標傳入的任何內容。因此每台機器都從相同的設定開始,啟動速度也更快。裸機模式(Bare mode)不會使用您的訂閱登入,因此請先設定 ANTHROPIC_API_KEY。
Agent SDK:在您自己的應用程式中使用 Claude Code
光譜上的最後一步是 Agent SDK。這會為您提供一個函式庫,將 Claude Code 嵌入到您自己的 TypeScript 或 Python 應用程式中。
兩種語言都公開了一個 query 函式,以及與 CLI 相同的基本元件。您傳入一個提示加上選項,例如:
allowedTools用來控制 Claude 可以做什麼,- 一個系統提示,
- 以及一個權限模式。
接著您逐一處理 Claude 串流回傳的訊息,並依照您應用程式的需求來處理它們。這與 CLI 是同一個引擎,只是可以從您的產品內部呼叫。
您應該選擇哪一種?
以下是快速的決策指南:
- 雲端排程任務 是重複性工作的預設選擇。它們在 Anthropic 的基礎設施上執行,您不需要託管任何東西。
- 搭配
-p的無頭模式 適用於工作需要您自己的管線,且您想要透過腳本傳遞資料的情況。 --bare適用於 CI 需要在每台機器上都有相同設定的情況。- Agent SDK 適用於工作需要內嵌在您自己產品中的情況。
從雲端排程任務開始。只有在工作需要額外控制權時,才沿著光譜往下走。