Claude Code 輸出樣式怎麼用?設定與自訂指南
Claude Code 輸出樣式會修改 system prompt,影響每次回覆與記錄格式。了解 5 種內建樣式、設定檔位置,以及自訂方法;v2.1.73 淘汰、v2.1.91 移除的 outputStyle 指令也一併說明。
Claude Code 中的輸出樣式
Claude Code 中的輸出樣式是一組指示,Claude Code 會將其附加到系統提示。它會改變 Claude 回答你的方式,包括採用的角色與輸出的格式。它不會教導 Claude 任何程式碼庫相關資訊,也無法授予 Claude 執行任何操作的權限。
Claude Code 內建五種樣式。你的選擇會儲存在一個設定鍵 outputStyle 中,而該設定鍵只會在工作階段啟動時讀取一次。這個特性解釋了此功能大多數的疑惑:你在工作階段中途切換的樣式會先儲存,但在清除前都不會套用。
在 VPS 上,這不只是外觀偏好。你會透過 SSH(secure shell)連線查看工作階段記錄,通常是在 tmux 視窗中進行。因此,Claude 說明的每一行都是你需要等待的內容,也會佔用固定大小的捲動緩衝區。
outputStyle 設定的位置
從 /config 選單的 Output style 下選取樣式。Claude Code 會將選擇寫入目前工作的專案中的 .claude/settings.local.json。
獨立的 /output-style 指令已不存在。該指令在 v2.1.73 中標記為淘汰,並在 v2.1.91 中移除,因此目前版本執行時完全不會產生作用。使用任何較舊指南前,請先確認目前執行的版本。本頁所列版本已於 August 2026 檢查。
claude --version您也可以手動設定此金鑰。共有 4 個設定檔可儲存此值,較狹隘範圍的設定會覆寫較廣泛範圍的設定。
~/.claude/settings.json是使用者設定檔。它會套用至該電腦上的每個專案。.claude/settings.json是專案設定檔。它會提交至 git,因此複製此儲存庫的所有人都會套用這項設定。.claude/settings.local.json是本機專案設定檔。它不會提交,並會覆寫上述兩個檔案。/config選單會寫入此檔案。- 由 IT 團隊從系統路徑部署的受管理設定,例如 Linux 上的
/etc/claude-code/,會覆寫其他所有設定。
此金鑰的值是樣式名稱:
{
"outputStyle": "Concise"
}若只要套用至單一工作階段,請在命令列傳入相同的金鑰。--settings 旗標接受路徑或內嵌 JSON 字串;其值會在該次執行期間覆寫設定檔中的相同金鑰:
claude --settings '{"outputStyle": "Concise"}'這項功能的選單標籤與斜線指令至少都變更過一次。outputStyle 金鑰則未曾變更。當任何指南中的螢幕擷取畫面與您看到的內容不一致時,請直接設定該金鑰,再使用 /status 確認;此指令會列出目前生效的設定來源。
為什麼新的輸出樣式在清除前都不會生效
Claude Code 會在工作階段啟動時建立一次 system prompt,而輸出樣式就是該 system prompt 的一部分。因此,在工作階段執行期間變更設定,只會儲存該值,不會產生可見變化,因為目前的工作階段仍會持續傳送啟動時建立的 prompt。新的樣式會在下一次 /clear 或下次啟動時載入。
/clear
/context/context 會依類別列出目前佔用 context window 的內容,其中包括 system prompt。在每種樣式下分別於新的工作階段執行此指令,system prompt 那一行就是比較時的輸入資料。這也是確認自訂樣式是否成功載入的最快方法。如需瞭解哪些內容會填滿該視窗,請參閱 長時間 Claude Code 工作階段中的 context 如何逐漸填滿。
設定必須等待,而不能即時套用,原因在於 API 會從 prompt cache 提供重複請求,而該快取會比對每個請求開頭的內容;system prompt 正位於最前端。在對話中途重寫它,會使其後的所有內容失效,因此下一輪必須將完整歷史記錄重新作為新輸入處理。在工作階段啟動時固定樣式,可以避免這項成本。切換樣式本身很快,只需要清除即可。
內建輸出樣式如何改變轉錄內容
- Default 是 Claude Code 的一般系統提示,針對軟體工程工作撰寫。
- Concise 會先提供結果。它省略前言與逐步敘述,並在你要求詳細說明前保持回答簡短。背後執行的工程工作不變。它不會縮短錯誤報告或安全警告,也會在執行破壞性動作前完整詢問。此樣式需要 Claude Code v2.1.237 或更新版本。
- Explanatory 會在工作步驟之間加入教學性質的「Insights」,說明採用某項實作方式的原因,以及你的程式碼基礎已使用的模式。轉錄內容會刻意變長。
- Learning 更進一步。Claude 會分享這些 insights,接著要求你自行撰寫少量程式碼,並在檔案中以
TODO(human)註解標示每個位置。 - Proactive 會讓 Claude 直接採取行動,而不是提出詢問。對於例行決策,它會做出合理假設,而不會停下來等待確認。
請仔細閱讀最後一項,因為這是最容易被誤解的一項。Proactive 是系統提示中的操作指引,會改變 Claude 嘗試執行的內容。實際上哪些操作可以在不詢問你的情況下執行,仍由 permission mode 決定;如果伺服器會在無人值守的情況下持續執行,這才是重要設定。詳見auto mode 與 Claude Code 的 permission modes。
輸出樣式與 CLAUDE.md、hook 及 subagent 的差異
這些介面看起來都像是在告訴 Claude 應如何運作,但它們作用於不同層級。
- 輸出樣式會加入 system prompt,套用至主要對話中的每個回應。
- CLAUDE.md會在 system prompt 之後,以 user message 的形式加入。專案慣例與程式碼庫資訊應放在這裡。
--append-system-prompt會在單次 invocation 中將文字附加至 system prompt,不會移除任何內容。這是輸出樣式的一次性版本。- hook 是 Claude Code 在事件觸發時自行執行的 shell command。它由 harness 強制執行,因此無論 Claude 是否會選擇執行,都一定會執行。請參閱 Claude Code hook 能做什麼,以及不能做什麼。
- subagent 會使用自己的 system prompt 與工具集執行。
前兩者可透過一項簡單測試區分。專案相關的事實應放在 CLAUDE.md,因為 Claude 必須知道這些資訊。措辭則應放在輸出樣式,因為這關係到回答的呈現方式。任何無論模型如何決定、每次都必須發生的動作,都應使用 hook。
輸出樣式只套用至主要對話。subagent 不會繼承你的樣式,因為它會以自己的 system prompt 開始新的對話。例外是目前對話的 fork,因為 fork 會完全繼承父對話的 system prompt。如果 subagent 的寫法不符合你的偏好,請編輯該 agent 的檔案,而不是修改你的樣式。同一台主機上的第二個 Claude Code 工作階段也遵循相同界線,會在啟動時自行讀取設定檔。因此,當你 將工作交給與你並行執行的另一個工作階段 時,它的回應會採用該工作階段載入的樣式,而不是你的樣式。
如何撰寫自己的輸出樣式
自訂輸出樣式是包含 frontmatter 的 Markdown 檔案。將檔案儲存在家目錄下,即可在每個專案中使用;或將檔案放在 repository 內,讓它與程式碼一同保存。使用者目錄是 ~/.claude/output-styles/,專案目錄是 .claude/output-styles/。
mkdir -p ~/.claude/output-styles
cat > ~/.claude/output-styles/terse-ops.md <<'EOF'
---
name: Terse ops
description: Command first, explanation after, for SSH sessions
keep-coding-instructions: true
---
Lead with the command or the file change. Put the explanation after it, in two sentences or fewer.
Do not narrate what you are about to do. Report what you did.
When a command can fail, print the one check that proves it worked and say what a healthy result looks like.
EOF啟動工作階段並開啟 /config。你的樣式會以你撰寫的說明出現在 Output style 清單中。若未顯示,表示系統未讀取該檔案:請檢查路徑,並確認 --- frontmatter 區塊是檔案中的第一個內容。除非 frontmatter 設定了 name,否則檔名會成為樣式名稱;因此這個樣式稱為 Terse ops,而不是 terse-ops。
選取它,或將 key 設為完全相同的名稱,然後清除:
{
"outputStyle": "Terse ops"
}其中一個欄位會決定你的檔案是調整內容還是取代內容。keep-coding-instructions 預設為 false,表示自訂樣式會捨棄 Claude Code 內建的軟體工程指示,只依照你的文字執行。這些內建指示會告訴 Claude 如何界定變更範圍,以及如何驗證工作結果。若你要建立的是寫作助理或資料分析工具,且不涉及這些內容,可以省略此欄位。凡是仍會處理程式碼的用途,請將它設為 true;否則你會發現原本謹慎的工程師突然不再檢查自己的工作。如果你真正需要的不是不同的語氣,而是更精確地定義任務應投入多少工作,這應該放在工程指示中,而不是樣式檔案裡:Ponytail skill 是一個實作範例,只有一項規則,會引導代理程式採用能正常運作的最小變更。
description 是 /config 選擇器顯示在名稱旁的文字。請根據你半年後在兩個自訂樣式之間做選擇時的情境來撰寫。
為什麼透過 SSH 時,精簡風格有所不同
在 VPS 上,您是透過本機終端機沒有的多層處理來讀取輸出,而每一層都會讓冗長內容付出代價。
第一個因素是回捲。使用 tmux 時,每個窗格都會保留固定的行數,由 history-limit 設定,預設值為 2000。說明性輸出會更快填滿這個緩衝區,因此工作階段較早的內容會更快被移除,您想回捲查看的輸出也可能消失。若需要更多空間,請提高這個值:
echo 'set -g history-limit 20000' >> ~/.tmux.conf
tmux source-file ~/.tmux.conf之後建立的窗格各自會保留 20000 行,但每個窗格的記憶體用量也會增加。已開啟的窗格仍使用舊限制,因為緩衝區大小會在建立窗格時固定。如果您仍在建立工作階段配置,請參閱在 VPS 的 tmux 中執行 Claude Code。
第二個因素是延遲。回應會在產生時串流到終端機。在往返時間較長的連線上,冗長的前言會讓您花時間等待文字傳輸,答案也會較晚出現。
第三個因素是輸出 token。每一行說明都會計入輸出費用。Explanatory 和 Learning 本來就較長。Concise 則以較短為設計目標,因為它會指示 Claude 預設保持回應簡短。
不要相信任何人提供的百分比,包括本頁所列的數值。差異大小取決於您的提示、使用的模型及要求執行的工作,因此請先自行測量再比較。請在 2 個全新的工作階段中執行相同的實際工作:一個使用 Default,另一個使用 Concise,然後比較結果。狀態列是最簡單的測量方式,因為 Claude Code 會將一個 JSON 物件傳給您在 stdin 上的指令碼,其中已包含風格名稱和 token 計數:
cat > ~/.claude/statusline.sh <<'EOF'
#!/bin/bash
input=$(cat)
style=$(echo "$input" | jq -r '.output_style.name // "default"')
out=$(echo "$input" | jq -r '.context_window.total_output_tokens // 0')
cost=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
echo "style=$style out=$out cost=$cost"
EOF
chmod +x ~/.claude/statusline.sh將 statusLine 設定指向該指令碼:
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh"
}
}現在,工作階段底部的列會在作用中的風格旁顯示已產生的 token 數,這正是您需要的前後比較結果。該指令碼需要 jq,也就是命令列 JSON 剖析器,因此請先使用 sudo apt install -y jq 安裝。如果該列保持空白,請手動執行指令碼並將一些 JSON 透過管線傳入,因為以非零狀態結束的狀態列不會顯示或回報任何內容。自訂 Claude Code 狀態列列出該物件中的其他欄位。若要了解計費方面,而不是工作階段方面,請參閱Claude Code 的 token 實際流向及追蹤 Claude Code 支出的工具。
如何確認實際載入的輸出樣式
請使用以下檢查方式,不要靠猜測。
/status會列出本次工作階段生效的設定來源,包括是否套用了組織管理的設定。/context會在內容視窗摘要中,將已載入的系統提示列為一個類別。claude doctor可在 shell 中執行,無須啟動工作階段。它會列出安裝與設定診斷資訊,並回報無效的設定檔。
樣式未套用時,原因幾乎總是以下兩者之一。第一種是你在工作階段中途變更了樣式,因此請執行 /clear。第二種是優先順序問題:.claude/settings.local.json 會覆寫 .claude/settings.json,而兩者都會覆寫 ~/.claude/settings.json。由於 /config 選擇器會寫入本機檔案,因此團隊提交至 .claude/settings.json 的樣式,會在任何曾有人使用過該選單的電腦上遭到靜默覆寫。/status 可告訴你最後採用的是哪個來源。
JSON 語法錯誤也會產生相同症狀,但修正方式不同。claude doctor 會指出無法剖析的檔案名稱。建議先執行它,再進一步尋找較複雜的原因。
FAQ
為什麼 /output-style 命令停止運作?
它在 v2.1.73 中已標記為棄用,並在 v2.1.91 中移除。因此,在 2026 年中期的建置版本中,這個命令已不存在。執行 claude --version 查看目前版本。前往 /config 的 Output style 選取樣式,或在設定檔中設定 outputStyle 金鑰。這個金鑰的使用壽命比命令更長,因此直接設定金鑰才是值得記錄在個人筆記中的做法。
我變更了輸出樣式,但沒有任何變化。為什麼?
輸出樣式屬於系統提示,而 Claude Code 會在工作階段開始時建立一次系統提示。工作階段中途進行的變更會儲存,但不會套用,因為執行中的工作階段仍會傳送啟動時建立的提示。執行 /clear 或啟動新的工作階段。如果仍未套用,執行 /status 查看哪個設定來源優先,因為 .claude/settings.local.json 會覆寫 .claude/settings.json,而兩者都會覆寫 ~/.claude/settings.json。
Concise 輸出樣式能節省費用嗎?
它會讓輸出 token 數量朝預期方向變化,因為它會指示 Claude 預設使用簡短回應。實際節省幅度取決於提示與所使用的模型,因此任何已發布的百分比都應視為他人工作內容的測量結果。請測量自己的結果:在新的工作階段中,分別使用各種樣式執行 /context,以測量輸入部分;接著在各種樣式下執行相同工作,並比較輸出 token 數量。Concise 不會縮短錯誤報告或安全性警告,因此最需要閱讀的內容仍會完整保留。
輸出樣式會改變我的 subagent 撰寫內容的方式嗎?
不會。輸出樣式只套用於主要對話,因為 subagent 會使用自己的系統提示與工具集,啟動自己的對話。例外是目前對話的分支,因為分支會完整繼承父對話的系統提示。若要變更 subagent 的回應方式,請編輯該 agent 自己的檔案。
輸出樣式能讓 Claude 不經詢問就執行命令嗎?
不能。輸出樣式是系統提示中的文字,因此只能影響 Claude 嘗試執行的動作。Proactive 樣式會讓 Claude 在例行決策中採取假設並直接行動,而仍無法核准命令。權限模式決定哪些操作可在不提示的情況下執行;在伺服器上讓工作階段持續執行前,應先檢查這項設定。