Claude Code 進階 · 模式釐清

claude -p 是什麼?
互動模式差在哪

你大概聽過「Claude Code 可以拿來自動化」,於是有人推 claude -p。 但網路上很多教學講錯(例如「-p 不會載 memory」「-p 不執行 hook」都不對)、 而真正重要的事沒人講:2026-06-15 起 -p 跟訂閱拆開計費了、誤用會貴 12 ~ 150 倍。 這篇直接從 claude --help + 官方公告、修正迷思、講清楚新計費影響、附對照表跟實戰範例。

含三欄對照表 含 5 個實戰範例 給新手 + 進階用戶
📖 讀這篇前你需要知道

不需要會寫程式、但需要對「terminal 打 claude 開始用」這件事有基本概念。如果你連 Claude Code 是什麼都不知道、先去看官方介紹再回來。

適合:已經在用 Claude Code、想知道有沒有更省時間的模式想拿 Claude 跑 cron / 批次 / 自動化看過教學文章但被講錯誤導的人。每個技術名詞首次出現都會白話解釋。

The Gist · 一句話翻轉

核心觀念:-p 不是「閹割版 Claude」、是「同一個 Claude、不開互動視窗」

最重要的一句話

互動模式 claude 跟 print 模式 claude -p能力一樣強、預設下也同樣會載入 CLAUDE.md / memory / 你的 skill / hook。 唯一差別是「會不會開一個讓你邊看邊輸入的 REPL」-p 就是「給我 prompt、做完印結果、退出」。

這個觀念釐清很重要、因為很多 AI 整理的教學會跟你說「-p 不會載 memory」「-p 不執行 hook」「-p 是獨立計費」。這些都不對、稍後會逐一修正。

📖 什麼是 REPL(互動模式)?
REPL = Read–Eval–Print Loop、就是「你打一句、它回一句、你再打一句」這種一直循環的互動視窗。當你直接打 claude 進去那個視窗就是 REPL。 比喻:REPL 是跟人面對面講話、-p 是寄一張紙條給對方、對方寫完回給你就走。同一個人、不同的傳達方式。
Section 1 · 名詞釐清

-p 全名是什麼?跟「Headless」「Non-interactive」是同一個東西嗎?

是同一個東西、官方說法是:

-p, --print     Print response and exit (useful for pipes).

所以三個常見稱呼指的都是這個模式:

  • Print mode:因為 flag 全名叫 --print
  • Headless mode:因為沒有「頭」(沒有互動介面)
  • Non-interactive mode:因為不開互動 REPL

設計目的:讓 Claude Code 可以被腳本呼叫、被 cron 排程、被 pipe 串接。等於把 Claude 變成 Unix 工具鏈裡的一環、可以跟 grepjqcurl 一樣 pipe 串接。

📖 什麼是 pipe(管線)?
Unix / Linux / macOS 終端機把一個程式的輸出、用 | 符號接到下一個程式的輸入。 例如 cat file.txt | claude -p "幫我摘要"、意思是「把 file.txt 的內容餵給 claude、要它摘要」。 比喻:像工廠生產線、A 機器產出半成品、用輸送帶送到 B 機器繼續加工。
Section 2 · 三欄對照表

互動模式 vs -p 預設 vs -p --bare:完整差異

很多教學只比兩欄、漏掉 --bare 這個關鍵第三欄。其實這才是「真正的乾淨環境模式」、cron 跟 CI 應該用它。

面向 互動 claude -p 預設 -p --bare
CLAUDE.md 自動載入
Auto-memory(自動記憶)
Hooks(SessionStart / Stop 等)
Plugin / Skill 自動載 部分 ✓
/skill 仍可叫
MCP servers 需 --mcp-config
多輪對話(Session) 需 -c / -r 需 -c / -r
適合互動修正
適合 cron / 批次 堪用 ✓ 最佳
📖 為什麼有 --bare 這個 flag?
--bare 是「完全乾淨環境」、跳過所有自動載入(hooks / LSP / plugin sync / auto-memory / CLAUDE.md auto-discovery / 背景預載 / keychain)。 但 Skills 還是可以用 /skill-name 明確呼叫。 比喻:互動模式是「全副武裝出門」、-p 是「全副武裝快遞」、--bare 是「只帶任務本身、其他不帶」。CI / cron 環境需要可預測性、用 --bare 最穩。
Section 3 · 修正常見誤解

2 個常見迷思 + 1 個你必須知道的計費變動

前兩個是網路教學常講錯的點、第三個是 Anthropic 2026-05-14 官方公告的計費政策、影響所有 -p 用戶。

迷思 1

-p 不會載入你的 memory 跟 CLAUDE.md」

"用 claude -p 跑的話、你累積的 memory 全部不會載入、要從零開始講背景。"

✓ 真相 預設 -p 跟互動模式完全一樣會載 CLAUDE.md 跟 auto-memory。只有加上 --bare 才會跳過。所以你日常用 claude -p "整理今天的諮詢"、它一樣知道你是誰、知道你的工作流。
迷思 2

-p 不會執行 hooks(SessionStart / PostToolUse 等)」

"-p 是 headless 模式、它跳過所有 hook、所以你的 SessionStart 通知不會發。"

✓ 真相 預設 -p 會執行 hooks、跟互動模式一樣。只有 --bare 才跳過。 所以你如果有寫「每次開 session 都發 Discord 通知」的 hook、claude -p 也會發。
⚠️ 重要計費變動

2026-06-15 起、-p 跟訂閱拆開計費

Anthropic 2026-05-14 公告:6/15 起 Claude Agent SDK / claude -p / Claude Code GitHub Actions / 第三方 agents 從訂閱額度池移出、改成獨立的「Agent SDK Credit」池、按 API list price 計費。

⚠️ 影響 互動模式(你直接打 claude 那個)跟 Claude.ai chat 完全不變、繼續吃訂閱額度。 但只要你用 claude -p(不管是 cron、batch、pipe 都算)、6/15 之後就會吃 Agent SDK Credit 池

Credit 額度依方案:Pro $20 / Max 5x $100 / Max 20x $200/月、燒完按 API 全價繼續算(如果你有開 usage credits)、不 rollover。 獨立分析估算重度 -p 用戶等同漲價 12 ~ 150 倍

給你的具體建議:能用互動模式跑的、就不要改 -p cron。下一節會講替代方案。
Section 4 · 獨家 flag

-p 才有的 flag(互動模式用不了)

這些 flag 設計給「腳本 / 批次」場景、互動模式用不上、所以不會出現在你的日常。

--output-format json

結果用 JSON 格式輸出、含 cost、token、duration、session_id。用 jq 解析後可以做成本追蹤儀表板。

--output-format stream-json

結果串流輸出、可以即時用 jq 解析每段。長任務不用等到結束才看到東西。

--max-budget-usd 1.0

單次任務的成本上限。超過會中斷、避免不小心燒爆。批次處理一定要設。

--fallback-model sonnet

主 model(例如 Opus)overload 時自動 fallback 到指定備援。批次跑很久時很實用。

--no-session-persistence

不存 session 紀錄到磁碟、跑完就忘。CI / 短暫查詢用。

--json-schema '<schema>'

強制 Claude 輸出符合 JSON Schema 的 structured output。例如要求「必須輸出 {name, score}」、Claude 會嚴格按 schema。

--input-format stream-json

串流 stdin 輸入、可以邊餵資料邊處理。長 input 不用一次塞完。

Section 5 · 判斷指引

什麼時候用 -p、什麼時候繼續用互動?

繼續用互動 claude

當你需要邊看邊改

  • 寫文章、寫程式:要看草稿、改、再看、再改
  • 探索性查詢:不確定第一個問題、根據答案決定下一個問
  • 開發階段:在還沒固定流程時、用互動最快
  • Skill 設計:邊測 prompt、邊看哪裡卡住
  • 跟 Claude 一起腦力激盪、不只是「拿結果」
改用 -p

當你要外部腳本 / pipe / CI 串接

  • 單次查詢腳本化echo "$URL" | claude -p "抓 OG"
  • 批次處理 N 個項目:for loop 跑 100 個 Notion 頁
  • CI / GitHub Actions:版本控制提交後自動 review
  • Pipe 串接其他工具:跟 grep / jq / curl
  • 外部 cron 任務:但 6/15 後吃 Agent SDK Credit、見下一節替代方案
⚠️ 6/15 計費變動的省錢竅門

每天排程跑、用「互動模式 + 自我喚醒」省訂閱額度

如果你的需求是「每天 / 每週固定跑某個任務」、6/15 之後不要用 crontab + claude -p、會吃 Agent SDK Credit、燒得很快。

替代方案:開一個長駐的互動 session、用 ScheduleWakeup / loop 機制讓 Claude 自己排下次醒來的時間。從 Claude Code 的視角這還是「使用者開了一個互動 session 沒關」、所以繼續吃訂閱額度池、不會被新政策影響。

適合:每日營運巡檢、每週報表、固定提醒、定期掃信箱等。下一節 Section 7 講具體做法。

何時加 --bare

當你在意「環境可預測性」、不希望被 ~/.claude/ 累積的雜訊污染。例如:

  • CI 環境:跑在乾淨容器、沒有 user-level CLAUDE.md
  • 真的非用外部 cron 不可的任務:明確只想用某幾個 skill、其他不載
  • 給別人用的腳本:怕你的 memory 帶來不一致行為
Section 6 · 實戰範例

五個直接複製就能跑的範例

範例 1:單次任務 + JSON 拿成本資訊

claude -p "整理今天 Discord #line-mirror 未回覆訊息" \
  --output-format json | jq '{result: .result, cost_usd: .total_cost_usd}'

範例 2:從 stdin pipe(Unix 工具鏈)

# 把諮詢逐字稿摘要成 3 段
cat consultation.txt | claude -p "整理諮詢逐字稿成 3 段摘要"

# 抓網頁標題
curl -s https://example.com | claude -p "幫我抽出 og:title 跟 description"

範例 3:批次處理 N 個項目(for loop)

# 批改 5 篇 BRAND 作業、設成本上限避免燒爆
for url in $(cat homework_urls.txt); do
  echo "處理 $url"
  claude -p "用 /brand-grade 批改這個學員作業:$url" \
    --max-budget-usd 0.5 \
    --output-format json >> grading_results.jsonl
done

範例 4:Cron 夜間批次(⚠️ 6/15 後會吃 Agent SDK Credit)

# 在 crontab 加一行、每天早上 7 點跑
# 注意:6/15 起這種寫法吃 Agent SDK Credit、不是訂閱額度
0 7 * * * cd /Users/kevinhuang/Developer/claude-workspace && \
  claude -p --bare \
    --add-dir . \
    --mcp-config ./mcp-config.json \
    --append-system-prompt-file ./skills/daily-ops.md \
    --max-budget-usd 0.5 \
    "執行 daily-ops 並寄結果到 Gmail"

更省錢的做法:開一個長駐的互動 claude session、用 ScheduleWakeup 機制讓 Claude 自己每天 7am 醒來跑任務。這樣計費走訂閱額度池、不吃 Agent SDK Credit。見 Section 7。

範例 5:接續上次對話(不開新 session)

# 用 -c 接續最近的 session
claude -p "剛剛那篇文章再加一段結論" --continue

# 用 -r <session-id> 指定 session
claude -p "繼續剛剛的話題" --resume abc-123-def
Section 7 · 排程任務的省錢做法

用「對話模式 + 自我喚醒」取代外部 -p cron

這是 6/15 計費變動後最大的省錢竅門、值得單獨講。

核心觀念:Claude Code 計費分兩個池、看你的 session 是「互動模式」還是「-p 模式」、不是看「有沒有人坐在電腦前」。

做法 長相 計費
外部 cron + claude -p crontab 排「每天 7am 跑 claude -p ...」 ⚠️ Agent SDK Credit
(按 API 全價)
長駐互動 session + 自我喚醒 開著 claude 互動視窗、用 ScheduleWakeup / loop 讓 Claude 自己排下次醒來 ✓ 訂閱額度池
(不額外計費)
📖 什麼是 ScheduleWakeup / 自我喚醒?
Claude Code 內建一個機制、讓 Claude 在互動 session 內、自己決定下次什麼時候醒來繼續工作。 你只需要一台電腦(或 VPS)長駐開著 claude 視窗、給它一個排程任務、它就會睡到指定時間、自動醒來跑、跑完繼續睡。 比喻:外部 cron + -p 像「找快遞每天跑一趟、按距離收費」、長駐互動是「自己車停在停車場、自己開出去、月費吃到飽」。

實作流程(不需要寫程式)

  1. 找一台可以長時間開著的電腦或 VPS(不用很強、Mac mini / 舊筆電 / 月費 VPS 都行)
  2. 登入後直接打 claude 開互動視窗(不是 -p
  3. 告訴 Claude 你要的排程:例如「每天早上 7 點幫我跑 /daily-ops、寄結果到 Gmail」
  4. Claude 會用 ScheduleWakeup 工具排下次醒來、你不用做任何事
  5. 視窗開著就好、Claude 會自己照排程跑、跑完繼續排下一次

這就是「對話模式跑 cron」的真實長相:不是外部 cron 呼叫 Claude、是 Claude 自己排自己。所以從 Claude Code 計費系統的視角這就是一個普通的長駐互動 session、繼續吃訂閱額度。

什麼時候還是該用 -p

  • 真的需要 pipe 串接 Unix 工具echo url | claude -p ... 這種、長駐 session 做不到
  • CI / GitHub Actions:每次觸發都是全新環境、沒有「長駐」可言
  • 批次處理 N 個項目跑完就走:for loop 100 次、長駐 session 反而不好控
  • 嵌入別人的 SaaS / 自動化流程:用 Agent SDK 整合進別的產品

其他「定期 / 重複 / 排程」需求、優先考慮長駐互動 + 自我喚醒

給新手的建議

先別急著改 cron、99% 的時候互動模式就夠了

除非你有明確的「每天 / 每週固定跑」需求、否則繼續用互動模式就好。把 -p 想成「當你已經有一個穩定流程、要嵌入別的腳本 / pipe / CI」才需要切過去。

反過來、所有「探索性 / 修正性」工作都不適合 -p。寫文章、debug、設計新流程、跟 Claude 討論策略、全部繼續用 claude 進互動模式。

"

-p 不是「閹割版 Claude」、是給已經知道自己要什麼的人用的捷徑。如果你還在探索、繼續開互動視窗。

Take Away · 四句帶走

記住這四件事、不會被網路教學誤導、也不會被新計費燒到

1

預設 -p 跟互動模式能力一樣、會載 CLAUDE.md、會跑 hook、會用你的 skill。差別只在「有沒有開互動視窗」。

2

--bare 才是真正的「乾淨環境」、CI 才適合用。會跳過 hooks、auto-memory、CLAUDE.md auto-discovery、需要你明確 --add-dir / --mcp-config

⚠️

2026-06-15 起 -p 跟訂閱拆計費:Agent SDK / -p / Claude Code GitHub Actions 移出訂閱額度池、改吃 Agent SDK Credit(按 API 全價)。互動模式不變、繼續吃訂閱。

3

排程任務改用「長駐互動 + 自我喚醒」:一台電腦長駐開 claude 互動視窗、用 ScheduleWakeup 讓它自己排下次醒來。計費走訂閱、不吃 Agent SDK Credit。

延伸閱讀

同主題的其他文章

為什麼用 AI Agent 之後反而越來越忙?

三個觀察 + 四份研究:Jevons Paradox、Atlassian 89% vs 6%、MIT Cognitive Debt。

Workflow 跟 Skill 差在哪?

Skill 有官方規範(agentskills.io)、Workflow 是描述用詞。一張表 + 兩個生活情境秒懂。

跨專案的 Skill 系統

Skill / Memory / CLAUDE.md 三層架構、怎麼讓 AI 累積知識、不用每次重講一遍。

參考來源

看完這篇?回首頁瀏覽更多實驗筆記

← 回 老K 的 AI 實驗筆記