AI 程式開發與代理

[Claude Code #14] claude -p 無頭模式:將 AI 加入管線

claude -p 無頭模式可讓你像使用 Unix 工具一樣使用 Claude Code。本篇整理 stdin 管線、搭配 jq 的 --output-format json、--allowedTools 權限,以及 CI 的 --bare 模式。

閱讀 4 分鐘
[Claude Code #14] claude -p 無頭模式:將 AI 加入管線 封面圖

如果你只透過對話視窗使用 Claude Code,就只發揮了一半的功能。把它加入終端機管線後,就能像 grep 或 jq 等 Unix 工具一樣使用。

關鍵在於 -p(或 --print)旗標。它會在沒有互動式畫面的情況下處理一個提示,只輸出結果後結束。

claude -p "auth 請說明這個模組的用途"

如果說 Claude Code 第 13 集 談的是工作階段內的內容,這次要介紹的是如何在工作階段外使用它。

透過管線輸入,寫入檔案接收結果

官方文件 為基準,-p 模式會讀取標準輸入。將資料透過管線傳入並重新導向結果,就和其他 CLI 工具一樣。

cat build-error.txt | claude -p '請簡潔說明這個建置錯誤的根本原因' > output.txt

依照 官方文件,成功時以結束碼 0 結束,失敗時則以非 0 結束,因此可以在腳本中分支處理。管線輸入上限為 10MB,超過時可在提示中填入檔案路徑繞過限制。

放進 package.json 的腳本後,也能建立專案專用的檢查工具。例如將 diff 傳入管線,只讓它回報錯字。

接收 JSON,交由程式消費

加上 --output-format json 後,結果會連同工作階段 ID、成本等中繼資料,以結構化格式輸出。

claude -p "請摘要這個專案" --output-format json | jq -r '.result'

若需要符合特定結構描述的輸出,請在 --output-format json 中加入 --json-schema。回應會以經過驗證的結構放在 structured_output 欄位中。

若要以 token 為單位即時串流,請使用 --output-format stream-json --verbose --include-partial-messages 組合。

顯示 claude -p 管線輸入、JSON 輸出與依結束碼分支的流程圖
透過管線傳入,用 jq 接收,再依結束碼分支

權限必須事先開啟

-p 模式中,沒有任何人可以按下核准按鈕。必須事先允許所需的工具。

claude -p "執行測試並修正失敗" --allowedTools "Bash,Read,Edit"

--allowedTools 會直接使用權限規則語法。可以像 Bash(git diff *) 一樣縮小範圍。星號前的空格很重要;沒有空格就會一路比對到 git diff-index

提供 --permission-mode acceptEdits 後,檔案寫入,以及 mkdirmv 等常見檔案系統命令會自動核准。其他 Shell 命令與網路請求仍需要 --allowedTools

延續對話

如果工作無法在一次呼叫中完成,可以延續工作階段。

claude -p "請檢視這個程式碼庫的效能問題"
claude -p "現在 DB 請專注於查詢" --continue

如果同時進行多個對話,請保存 JSON 輸出的 session_id,再使用 --resume 指定並延續特定對話。

CI 中的標準做法是 –bare

若用於腳本或 CI,建議一併使用 --bare。略過自動載入 hook、skill、plugin、MCP 與 CLAUDE.md,可加快啟動速度,也能在任何機器上得到相同結果。

這也有安全性上的理由。-p工作階段無法顯示工作區信任確認視窗,因此沒有 --bare 時,陌生儲存庫中的 hook 與 MCP 伺服器也會照樣執行。官方文件也明確將 --bare 列為腳本呼叫的建議模式,並表示未來預計將 -p 設為預設值。

--bare 中,請記住必須使用 ANTHROPIC_API_KEY 環境變數,而不是訂閱登入。

以「GO BARE IN CI」字樣、空房間中的赤裸機器人,以及掛滿設備的機器人形成對比的插圖
在 CI 中,把所有設備拆掉,以赤裸狀態執行更安全

總結

claude -p 會將 Claude Code 變成 Unix 工具。透過管線傳入、以 JSON 接收,再依結束碼分支。

使用 --allowedTools 預先開啟權限,並在 CI 中透過 --bare 以具決定性且安全的方式執行。

下一集會回到互動式畫面,完整整理 ! Shell 模式,以及 Ctrl+O 等特殊輸入與快速鍵。

來源與確認標準

延伸閱讀

Claude Code 系列

相關主題