Claude Code headless 模式:用 claude -p 寫腳本和自動化

headless(非交互)模式就是 claude -p:一次輸入、輸出結果就退出,適合腳本、CI 和定時任務。本文講常用參數、JSON 與流式輸出、自動批准工具、--bare 模式、無瀏覽器環境怎麼登入。

NNathaniel bigo··原創首發·AI 輔助撰寫
9 分鐘讀完
資料核對於 2026-10-07 · 依據官方文檔與公開資料整理 Plus 帳號
本文根據 Claude Code 官方文檔《Run Claude Code programmatically》《CLI reference》《Authentication》整理,核對日期 2026-10-07。示例改寫自官方示例。

適用於誰

  • 想在 shell 腳本、package.json、CI 流水線、定時任務裏調用 Claude Code 的開發者;
  • 搜「claude code headless 是什麼」「headless mode」「headless authentication」的人;
  • 想把 Claude 的輸出變成 JSON 交給其他程序處理的人。

結論先說

  1. headless 模式 = 給 claude 加上 -p(或 --print):不進交互介面,處理完這一句就把結果打印出來並退出。官方現在把它歸入 Agent SDK 的命令行用法。
  2. 成功時退出碼為 0,失敗為非 0,腳本可以據此判斷;可以用管道把內容餵給它,也能把結果重定向到文件。
  3. 沒人點「允許」,所以要提前用 --allowedTools 或 --permission-mode 規定它能做什麼,CI 裏推薦 dontAsk 加精確白名單。
  4. 在 CI 和腳本里官方推薦加 --bare:跳過本機的 Hooks、技能、插件、MCP、CLAUDE.md 自動加載,保證每台機器結果一致,但它只認 API Key,不認訂閱登入。
  5. 沒有瀏覽器的環境要用訂閱帳號,用 claude setup-token 生成長期令牌,設定為 CLAUDE_CODE_OAUTH_TOKEN。

一、基本用法

bash
# 問一個問題,打印回答後退出
claude -p "認證模組是做什麼的?"

# 讓它修 bug,並預先允許讀、改文件和執行命令
claude -p "找到並修復 auth.py 裏的 bug" --allowedTools "Read,Edit,Bash"

用管道處理數據:

bash
cat build-error.txt | claude -p "簡要說明這個構建錯誤的根本原因" > output.txt

管道輸入上限 10MB,超過會報錯退出;更大的內容先寫進文件,再在提示詞裏給出路徑。

放進構建腳本(官方示例:把相對 main 的 diff 交給 Claude 找錯別字):

json
{
  "scripts": {
    "lint:claude": "git diff main | claude -p \"你是錯別字檢查器。對 diff 裏的每個錯別字,第一行寫 文件名:行號,第二行寫問題。其他什麼都不要輸出。\""
  }
}

運行 npm run lint:claude 即可。把 diff 通過管道喂進去,Claude 就不需要執行 git 命令的權限。

二、常用參數

參數作用
-p / --print非交互模式
--output-format text\json\
--json-schema '<schema>'配合 json 輸出,按指定結構返回,結果在 structured_output 字段
--allowedTools "..."這些工具不經詢問直接用,寫法同權限規則
--permission-mode <模式>設定整個會話的權限基線
--max-turns N最多執行 N 輪,到了就報錯退出
--max-budget-usd 金額預估花費達到上限就停止(按客戶端估算,可能與帳單不同)
--continue / --resume <ID>繼續最近一次 / 指定的對話
--append-system-prompt "..."在預設系統提示詞後追加指令
--bare跳過自動加載本機配置,啟動更快、結果更穩定
--model <模型>指定模型

三、拿到結構化結果

bash
# JSON:文本結果在 result 字段,另含 session_id、用量和預估花費
claude -p "總結一下這個項目" --output-format json | jq -r '.result'

# 按指定結構輸出
claude -p "提取 auth.py 裏主要的函數名" \
  --output-format json \
  --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}' \
  | jq '.structured_output'

json 輸出裏帶有 total_cost_usd 和按模型拆分的花費,方便腳本統計開銷;官方說明這是客戶端估算,可能和實際帳單不同。

流式輸出(邊生成邊顯示):

bash
claude -p "解釋一下遞歸" --output-format stream-json --verbose --include-partial-messages

每行一個 JSON 事件,最後一行是包含最終結果、花費和會話資訊的 result 消息。

四、權限:沒人點「允許」怎麼辦

方式一:精確列出允許的工具

bash
claude -p "查看暫存的改動並寫一個合適的提交" \
  --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"

Bash(git diff ) 裏 前面的空格很重要:沒有空格的 Bash(git diff*) 還會匹配到 git diff-index。

方式二:設定權限模式

  • --permission-mode dontAsk:凡是需要詢問的一律拒絕,只執行無需批准的讀取和你白名單裏的工具,最適合鎖死權限的 CI;
  • --permission-mode acceptEdits:自動改文件和執行常見文件命令,其他 shell 命令仍需白名單;
  • --permission-mode auto:由分類器審核每個操作。

官方提醒:不指定時會採用內置的起始模式(可能是 auto),所以腳本里最好明確寫出你想要的模式。完全無人值守的定時任務可以再加 --permission-prompts none(v2.1.259 起),讓所有「本該彈窗詢問」的請求直接拒絕並告訴 Claude 不要重試。權限模式詳解見本站《Claude Code 權限模式詳解:auto、手動、plan、bypass 與權限規則配置》。

五、--bare 模式:CI 的推薦寫法

不加 --bare 時,claude -p 會像交互會話一樣加載當前目錄和 ~/.claude 裏的一切:Hooks、技能、插件、MCP 伺服器、自動記憶和 CLAUDE.md。而且-p 模式不會彈出「信任此文件夾」和 MCP 批准提示,在陌生倉庫裏運行會直接執行它 .claude/settings.json 裏的 Hooks、連接它 .mcp.json 裏的伺服器。

加上 --bare 後這些都不自動加載,需要的東西用參數顯式傳入:

bash
claude --bare -p "總結 README.md" --allowedTools "Read"
想加載用
追加系統提示詞--append-system-prompt、--append-system-prompt-file
設定--settings <文件或JSON>
MCP 伺服器--mcp-config <文件或JSON>
自定義子代理--agents <文件或JSON>
插件--plugin-dir <路徑>

官方說明 --bare 是腳本和 SDK 調用的推薦模式,未來會成為 -p 的預設行為。注意:bare 模式不讀訂閱登入憑據,要用 Claude Console 的 ANTHROPIC_API_KEY(或 apiKeyHelper)。

六、在伺服器 / CI 裏怎麼登入

方式適用說明
CLAUDE_CODE_OAUTH_TOKEN用 Pro / Max / Team / Enterprise 訂閱在有瀏覽器的電腦上運行 claude setup-token,授權後終端會打印一個有效期一年的令牌(不會儲存),把它設為環境變量
ANTHROPIC_API_KEY用 Console 預付費額度在 Claude Console 創建 API Key;-p 模式下只要設定了就會使用
bash
export CLAUDE_CODE_OAUTH_TOKEN=你的令牌    # macOS / Linux
$env:CLAUDE_CODE_OAUTH_TOKEN = "你的令牌"  # PowerShell

官方說明:這個訂閱令牌只能發起模型請求,不能建立 Remote Control 會話,也拿不到 claude.ai 上的連接器;本地配置的 MCP 伺服器照常可用。--bare 模式不讀這個令牌。令牌等同於帳號憑據,務必放在 CI 的密鑰管理裏,不要寫進倉庫。

七、多輪對話

bash
claude -p "檢查這個代碼庫的性能問題"
claude -p "現在重點看數據庫查詢" --continue
claude -p "彙總所有發現的問題" --continue

同時跑多個對話時,記下會話 ID 再精確恢復:

bash
session_id=$(claude -p "開始一次代碼審查" --output-format json | jq -r '.session_id')
claude -p "繼續剛才的審查" --resume "$session_id"

常見問題

Q:-p 模式下能用斜槓命令嗎?

你自己寫的技能和自定義命令可以,把 /技能名 寫進提示詞即可;/login 這類只能在交互介面運行的命令不行。/model sonnet、/config thinking=false 這類帶參數的寫法新版本支持。

Q:GitHub Actions 裏怎麼用?

官方有專門的 Claude Code GitHub Action,詳見本站《Claude Code GitHub Actions 配置教學:@claude 自動審 PR、修 issue》。

Q:想在 Python / TypeScript 程序裏調用怎麼辦?

用 Claude Agent SDK,它提供和 Claude Code 相同的工具、智能體循環和上下文管理,還有結構化輸出和工具審批迴調,詳見本站《Claude Agent SDK 入門:是什麼、怎麼裝、第一個智能體(Python / TypeScript)》。

Q:headless 模式會消耗訂閱額度嗎?

用訂閱令牌登入時,用量和交互使用一樣計入你的套餐額度;用 API Key 時按 API 用量計費。額度說明詳見本站《Claude 使用限制與額度:用量怎麼看、什麼時候重置(Free / Pro / Max / Claude Code)》。

參考資料

  • Run Claude Code programmatically(官方):https://code.claude.com/docs/en/headless
  • CLI reference(官方):https://code.claude.com/docs/en/cli-reference
  • Authentication(官方):https://code.claude.com/docs/en/authentication
  • Choose a permission mode(官方):https://code.claude.com/docs/en/permission-modes
  • Agent SDK overview(官方):https://code.claude.com/docs/en/agent-sdk/overview
需要開通或續費?Claude Pro 充值 →

Nathaniel 的更多內容

  1. 01

    AI 學習路線:零基礎從哪開始,6 個階段、每階段該讀哪幾篇教學(2026)

    AI 學習路線怎麼走?給零基礎的人一條循序漸進的路徑:先選一個助手用順,再學提問,再用進日常工作,按需學做圖做影片,守住私隱與版權,最後進階自動化和編程。每個階段都配了本站對應的教學。

    其他 AI 工具0
  2. 02

    AI 瀏覽器有哪些:Perplexity Comet、Opera Neon、Dia、Brave Leo 與 Edge Copilot 的官方說法對照

    AI 瀏覽器有哪些?按官方頁面整理 Perplexity Comet、Opera Neon、Dia、Brave Leo 和 Edge 裏的 Copilot:官方自述的定位、支持的平台、免費還是訂閱,以及 Gemini、Claude 的 Chrome 方案和已停用的 ChatGPT Atlas。

    其他 AI 工具0
  3. 03

    即夢國際版 Dreamina 是什麼:官方站入口、能生成什麼、免費積分和模型(2026)

    即夢國際版 Dreamina 是什麼?官方站是 dreamina.capcut.com,是一個圖片、影片和數字人一體的 AI 創作平台。按官方首頁和 FAQ 講:能生成什麼、免費用戶每天 120 積分、列出的 Seedance 與 Seedream 模型,以及和國內即夢怎麼區分。

    其他 AI 工具0
  4. 04

    Kimi K3 Coding Plan 是什麼、怎麼用:Kimi Code 會員、模型 ID、套餐價格和額度規則

    Kimi K3 Coding Plan 是什麼?按 Kimi 官方文檔核對:官方現在叫 Kimi Code,是 Kimi 會員權益裏的編程服務,Plus 及以上才有;講 K3 等模型 ID、國內新套餐價格、三種客戶端、第三方工具接入和額度規則。

    Kimi0
  5. 05

    DeepSeek V4 Pro 和 Flash 的區別與 API 價格:官方價格頁逐項對照(高峰與空閒時段)

    DeepSeek V4 Pro 和 Flash 有什麼區別、API 怎麼收費?按 DeepSeek 官方價格頁(2026-10-19 查詢)列出兩個模型的版本、上下文、圖像理解、並發和每百萬 token 價格,說明高峰與空閒時段的計費差別和舊模型名怎麼處理。

    其他 AI 工具0
  6. 06

    GPT-6 Pro(Astra)怎麼用、哪些套餐有:怎麼選到 Pro 檔、用量限制和 Pro 三檔價格

    GPT-6 Pro(Astra)怎麼用、哪些套餐有?按 OpenAI 幫助中心核對:聊天裏 Pro 檔給 Pro 100、Pro 200、Business 和 Enterprise;Plus 在 Work 和 Codex 裏含 Astra。講怎麼選到、用量上限和官方 Pro 價格。

    ChatGPT0

同產品的其他教學

  1. 01

    Claude Pro 和 Max 的區別:用量、價格、Fable 模型和每月 API 額度怎麼選

    Claude Pro 和 Max 有什麼區別?按官方定價頁和幫助中心核對:Max 有 5x、20x 兩檔用量,Pro 與 Max 在價格、Fable 模型、每月 API 額度和計費週期上的差別,以及什麼情況下 Pro 夠用、什麼情況下該升 Max。

    Claude0
  2. 02

    Claude 登入不了、用不了、打不開怎麼辦:按官方幫助中心逐條排查

    Claude 無法登入、無法使用、無法打開怎麼辦?按官方幫助中心的順序排查:收不到登入電郵、登入報錯、Google 登入出問題、系統繁忙、額度用完、官方故障,以及所在地區是否在官方支持名單裏。

    Claude0
  3. 03

    Claude 怎麼註冊:官方註冊流程、手機驗證要求,以及提示無法註冊時官方怎麼說

    Claude 怎麼註冊?打開 claude.ai,用 Google 或電郵登入連結創建帳號,再用支持地區的手機號收短訊驗證碼。講清官方的註冊條件、手機驗證的限制,以及收不到驗證碼、號碼被用過多次時官方的處理辦法。

    Claude0
  4. 04

    Claude 怎麼用:新手入門,從打開聊天到寫出第一個好問題

    Claude 怎麼用?按官方幫助中心整理的新手路徑:在網頁、桌面版或手機 App 打開聊天,像對同事一樣寫需求,用輸入框的「+」和「/」找功能,點模型名換模型,免費版有每 5 小時重置的上限。

    Claude0
  5. 05

    Claude 怎麼設定成中文:介面語言、回答語言和語音語言分別怎麼設

    Claude 怎麼設定中文?官方幫助中心列出的 11 種介面語言裏目前沒有中文,但 Claude 會用你提問的語言回答,直接用中文問即可;想固定用中文,可在設定的 Instructions for Claude 裏寫一句。語音模式的語言要單獨選。

    Claude0
  6. 06

    MCP Inspector 怎麼用:安裝、啟動命令、調試 MCP 伺服器與 v2 的變化

    MCP Inspector 是什麼、怎麼安裝和使用?按 MCP 官方文檔講清網頁、命令行、終端介面三種模式的啟動命令,怎麼連本地和遠程伺服器、怎麼傳環境變量,密鑰存在哪,以及 v2 相比舊教學在端口、令牌變量名和 Node 版本上的變化。

    Claude其他 AI 工具0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~