Claude Code 子代理成本:一次 $0.17 執行花在哪裡
透過閘道執行一次 Claude Code,依三個代理分別拆解呼叫成本:各代理的首次呼叫合計占總帳單的 72%,整次執行費用為 0.17 美元。換算後,三次首次呼叫約花費 0.1224 美元,其餘呼叫占 28%,約為 0.0476 美元;閘道設定只需兩個環境變數。
我們的推薦
即時價格| 模型 | 結論 | 價格 |
|---|---|---|
| Claude Sonnet 5.5 一次包含兩個子代理、共 11 次呼叫的 Claude Code 執行,在快取未預熱時花費 $0.1728,半分鐘後再次執行則花費 $0.0812。快取寫入占未預熱執行費用的 77%。 | 示範中的模型 | 低至 $2/百萬 |
目錄
Claude Code 會告訴你一次工作階段花了多少錢,卻不會告訴你錢花在哪個部分。團隊開始使用後,也沒人能說清楚帳單該歸到哪個儲存庫或哪位開發者。讓 Claude Code 透過閘道,也就是位於 Claude Code 與模型供應商之間的代理伺服器,就能回答這兩個問題,不需要外掛或包裝程式。閘道原本就看得到每個請求,而 Claude Code 原本就會在請求中附上工作階段 ID 和代理 ID。本文透過 Synthorai 閘道執行一個小任務,再檢視結果:11 個請求共花了 $0.1728,其中三個代理各自的首次呼叫就占了 72%。
TL;DR
- 透過閘道,在 Claude Sonnet 5.5 上執行一次包含兩個子代理的 Claude Code 任務,花費 $0.1728;半分鐘後重跑則是 $0.0812。
- 快取寫入占首次執行成本的 77%,三個代理各自的首次呼叫占 72%。
- 兩個子代理占工作階段成本的 39%。
- 兩個環境變數就能讓 Claude Code 透過閘道,第三個則能標示各子代理的類型。
程式碼位於 github.com/synthorai-io/use-cases 的 coding-agent-spend/ 目錄。需要 Python 3.10 以上版本,以及此模型要求的 claude 指令 2.1.280 以上版本。
git clone https://github.com/synthorai-io/use-cases
cd use-cases
cp .env.example .env # put your API key in it
cd coding-agent-spend
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python run.py --hints --label repo=shipping --label _user=dev_1
腳本會複製一個小型範例儲存庫,其中有一個未通過的測試,再啟動 Claude Code。閘道位址和金鑰只會設在該程序的環境中,並使用空的設定目錄,因此不會讀取或修改你原有的 Claude Code 設定。一次執行約需半分鐘。腳本透過 --max-budget-usd 將單次執行上限設為 $0.60;若再執行一次可能讓累計費用超過 $2,就不會啟動。

本文數據來自 2026 年 10 月 10 日的執行結果,使用 Claude Code 2.1.296 和 Claude Sonnet 5.5。
如何讓 Claude Code 透過閘道?
設定兩個環境變數即可。Claude Code 使用 Anthropic 的 Messages API,閘道則在自己的位址提供相同的 API:
export ANTHROPIC_BASE_URL="https://synthorai.io" # no /v1: Claude Code adds /v1/messages itself
export ANTHROPIC_API_KEY="<your gateway key>"
其他設定都不用改。詳細資訊請見 Claude Code 整合頁面。之後,每個工作階段的所有模型呼叫都會出現在閘道的請求日誌中,主控台也會將它們分組。
不做其他設定,閘道能看到什麼?
閘道能看到工作階段、其中的追蹤、用戶端,以及每個子代理。Claude Code 在每個請求中都會傳送自己的工作階段 ID,因此執行一次 claude,主控台就會出現一個工作階段,頁面上的用戶端名稱為「Claude Code 2.1.296」。請求在主控台中也會顯示追蹤 ID,因此工作階段會列出所屬追蹤:這次執行有兩個,分別包含 6 次和 5 次呼叫。在「此工作階段的代理」表格中,呼叫也已經分成主對話和各子代理,每個子代理各占一列。
子代理是 Claude Code 為了處理部分任務而啟動的另一個代理,有自己的指令和上下文。示範任務要求使用兩個子代理:內建的 Explore 子代理負責找出規則所在位置,自訂的 test-runner 子代理負責執行測試。
預設情況下,子代理會以 a05e467acd14b25e6 這類 ID 顯示。你能知道有兩個子代理,卻不知道哪個是哪個。再加一個變數就能解決:
export CLAUDE_CODE_GATEWAY_HINT_HEADERS=1
| 預設 | 設定提示變數後 | |
|---|---|---|
| 工作階段、追蹤、用戶端與成本 | 有 | 有 |
| 依 ID 分列子代理 | 有 | 有 |
子代理類型(Explore、custom) | 無 | 有 |
| 每次呼叫的種類,以及呼叫前執行的工具 | 無 | 有 |
設定後,表格會按類型標示各子代理。在 Logs 中開啟一筆呼叫,也能看到呼叫種類(subagent:Explore),以及「本次呼叫前的工具」清單,列出各工具的名稱和執行時間,例如 Read 7 ms。閘道保留的是代理類型,不是你替它取的名稱,因此 test-runner 會顯示為 custom。工具名稱和執行時間會保留,工具讀寫的內容則不會。
$0.17 花在哪裡?
費用分布在三個代理上,主要花在各代理的首次呼叫。
| 代理 | 呼叫次數 | 輸入權杖 | 快取命中率 | 成本 |
|---|---|---|---|---|
| 主對話 | 6 | 159k | 78.9% | $0.1053 |
| Explore 子代理 | 3 | 47.5k | 64.7% | $0.0575 |
custom 子代理(test-runner) | 2 | 5,323 | 48.1% | $0.0101 |
| 工作階段 | 11 | 212k | 74.9% | $0.1728 |
兩個子代理共花了 $0.0676,占工作階段的 39%,處理的卻是任務中最小的兩件事:在只有三個原始碼檔案的函式庫裡找出一條規則,以及執行五個測試。實際修正只改了一個字元,把 > 改成 >=。
原因可以從 Claude Code 在執行結束時印出的權杖數看出來:
claude-sonnet-5-5 20 in 158612 cache read 53058 cache write 2425 out $0.1728
依此模型的價格計算,每百萬輸入權杖為 $2、輸出為 $10、快取讀取為 $0.10、快取寫入為 $2.50,這四個數字換算如下:
| 權杖類型 | 權杖數 | 成本 | 占比 |
|---|---|---|---|
| 快取寫入 | 53,058 | $0.1326 | 77% |
| 輸出 | 2,425 | $0.0243 | 14% |
| 快取讀取 | 158,612 | $0.0159 | 9% |
| 未快取的輸入 | 20 | $0.0000 | 0% |
快取寫入占帳單的 77%。首次傳送提示前綴時會寫入快取,費用是輸入價格的 1.25 倍;後續請求在此模型上讀取快取,只需輸入價格的二十分之一。程式開發代理的提示包含系統提示和每個工具的定義,所以你還沒輸入任何內容,提示就已經很長。這也讓代理的首次呼叫成為最昂貴的一次。
每個代理都有自己的起始提示,因此各自都要付一次首次呼叫的費用:
| 首次呼叫所屬代理 | 輸入權杖 | 快取命中率 | 成本 |
|---|---|---|---|
| 主對話 | 30.0k | 0% | $0.0772 |
| Explore 子代理 | 14.9k | 0% | $0.0391 |
| custom 子代理 | 2,562 | 0% | $0.0077 |
這三次呼叫共花了 $0.1240,占整次執行的 72%。之後的呼叫都很便宜:Explore 子代理的第二次和第三次呼叫有 94% 的輸入來自快取,分別只花 $0.0052 和 $0.0132。
如果子代理能把大量閱讀內容留在主對話的上下文之外,冷啟動成本就值得。這正是 Explore 在真實程式碼庫中的用途。若工作只需一兩次呼叫,直接在主對話中完成,就能省下一次快取寫入。這裡只測了一個小型儲存庫,調整工作方式前,先看看你自己工作階段的成本分布。
第二次執行要花多少?
若在快取仍有效時開始,費用約為一半。我們在半分鐘後重跑相同任務,同樣產生 11 次呼叫,輸入的快取讀取比例從首次的 74.9% 提高到 93.1%,成本則從 $0.1728 降至 $0.0812。三個代理的首次呼叫分別有 82%、81% 和 71% 的輸入來自快取,因為前一次執行已經快取了它們的起始提示。
Anthropic 的快取項目預設保留五分鐘,每次讀取都會重新計時。開發者持續在同一個儲存庫中工作,大多支付的是快取已暖機的價格。每小時執行一次的排程工作,則每次都要支付冷快取的價格。
Claude Code 自己顯示的費用和帳單一致嗎?
在 2.1.296 版中一致,精確到小數點後第四位:冷快取時兩邊都是 $0.1728,暖快取時都是 $0.0812。不過,這取決於版本。Claude Code 依自己的價目表計算成本。2.1.278 版在 10 月 8 日仍能執行此模型,當時使用的每百萬輸入與輸出權杖價格是 $5 和 $25,實際帳單卻是 $2 和 $10,因此印出的費用約為實際收費的 2.7 倍。每次執行時,兩邊的權杖數都完全一致。
這會影響一項設定:當 Claude Code 自己計算的金額達到上限時,--max-budget-usd 就會停止執行。舊版曾在自身計算達 $0.60 時停止,但實際收費約只有三分之一。升級後,先到工作階段頁面核對一次金額;真正用來控制支出的上限,應設在計算帳單的地方,也就是 API 金鑰的支出上限。
如何按開發者或儲存庫拆分費用?
在每個請求上加標籤即可。Claude Code 已支援透過環境變數傳送自訂標頭:
export ANTHROPIC_CUSTOM_HEADERS='X-Synthorai-Metadata: {"repo":"shipping","_user":"dev_1"}'
X-Synthorai-Metadata 是閘道用來接收標籤的標頭,內容是最多包含 10 個短字串的扁平 JSON 物件,其中 _user 用來標示請求是為哪位使用者發出的。示範中的 --label 旗標設定的就是這個標頭,上方的工作階段頁面也會將兩個標籤顯示為標記。
在各開發者的 shell 設定檔中設定個人標籤,再透過專案載入環境變數的機制設定儲存庫標籤,就能使用兩種檢視:
- 在 Traces 中,搜尋框接受
metadata.repo = shipping,可列出該儲存庫的工作階段。 - 在 Analytics 的 Breakdown 分頁中,Cost by metadata 卡片會依某個鍵的各個值,彙總請求數和成本。因此
repo可顯示各儲存庫的帳單,_user則可顯示各開發者的帳單。
共用一把金鑰也能這樣做。每位開發者使用獨立金鑰,同樣能拆分帳單,還能各自設定支出上限,代價是要管理更多金鑰。
如何跨工作階段查看代理成本?
使用 Analytics 的 Breakdown 分頁中的 Cost by agent 卡片。工作階段頁面只拆分單一工作階段,這張卡片則會按代理類型,彙總所選時間範圍內的所有工作階段:

Explore × 2 和 custom × 2 就是上面冷快取與暖快取的兩次執行,依代理類型跨兩個工作階段加總。Share 欄位顯示每列占該時間範圍總支出的比例,範圍內也包含其他工作階段。若沒有設定提示變數,執行中的子代理就不會回報類型,而會合併到名為「子代理」的一列。如果你自己寫的程式中有代理自行設定 X-Agent-Id,例如追蹤 LLM 代理中的做法,就會以它傳送的名稱顯示一列。
查看團隊一週的工作階段,就能用這個檢視判斷子代理占帳單的比例高不高,以及主要是哪種類型。
這套設定無法提供什麼?
它不會提供 span ID、自訂代理名稱、簡便的隔離方式,也看不到實際工作內容。
- 沒有 span ID。Claude Code 2.1.296 的請求會顯示工作階段 ID 和追蹤 ID,但沒有 span ID,因此呼叫的 span 欄位會顯示「未傳送」。可用來分析的單位是工作階段、所屬追蹤和代理。
- 沒有自訂代理名稱。所有自訂子代理都顯示為
custom。如果你執行多種類型,且需要區分它們,唯一可用的識別資訊是工作階段頁面上的代理 ID。 - 沒有簡便的隔離方式。
--bare看起來可以讓 Claude Code 不載入你自己的外掛和設定,但它也會停用子代理,讓工作階段只剩一個代理,無法拆分。示範改用空的CLAUDE_CONFIG_DIR來隔離執行環境。 - 看不到實際工作內容。閘道會記錄模型呼叫、工具名稱和執行時間,不會記錄檔案內容、差異或指令輸出。
常見問題
一個 Claude Code 工作階段要花多少錢?
取決於模型、儲存庫大小、參與的代理數,以及快取是否已暖機。本文使用 Claude Sonnet 5.5,由兩個子代理協助修正一個字元的錯誤,共發出 11 個請求。冷快取時花費 $0.1728,半分鐘後重跑則是 $0.0812。
如何追蹤團隊的 Claude Code 成本?
透過 ANTHROPIC_BASE_URL 將每位開發者的 Claude Code 指向閘道,再透過 ANTHROPIC_CUSTOM_HEADERS 加上開發者和儲存庫標籤。閘道就能按工作階段、標籤值和代理類型彙總成本,不必在 Claude Code 中安裝任何東西。
Claude Code 子代理會增加成本嗎?
每個子代理都有自己的起始提示,也要各自支付快取寫入費用。在使用 Claude Sonnet 5.5 的示範中,Explore 子代理首次呼叫花了 $0.0391,後兩次分別是 $0.0052 和 $0.0132;兩個子代理合計占工作階段的 39%。這筆費用換來獨立的上下文,對大範圍探索有價值,對只需一次呼叫的工作則不划算。
Claude Code 印出的費用準確嗎?
每個版本都應核對一次。Claude Code 2.1.296 印出的 $0.1728 與實際帳單相同。Claude Code 2.1.278 對 Claude Sonnet 5.5 採用的每百萬權杖價格是 $5 和 $25,實際帳單則是 $2 和 $10,因此印出的費用約為帳單的 2.7 倍。兩個版本的權杖數都與帳單一致。
CLAUDE_CODE_GATEWAY_HINT_HEADERS 有什麼作用?
它會讓 Claude Code 在每個請求中多傳送三項資訊:代理類型、呼叫種類,以及呼叫前執行的工具名稱和執行時間。即使沒有設定,閘道仍看得到工作階段和各子代理,但只能透過 ID 識別。
延伸閱讀
- 追蹤 LLM 代理:將相同的主控台檢視用在你自己撰寫的代理上。
- 為什麼我的 LLM 代理這麼貴?:重現並修正快取未命中、上下文持續增長和重試迴圈的問題。
- 為什麼我的 LLM 代理這麼慢?與偵錯 LLM 代理:使用相同的檢視分析延遲和失敗。
- 向 Claude 詢問你的 LLM 日誌:透過閘道的 MCP 伺服器,回答這類工作階段的相關問題。
- 讓代理使用日誌工具:由你自己的程式讀取相同日誌,以及模型權杖的成本。
- Claude Code 整合:兩個環境變數與模型名稱。
- 請求標頭參考:閘道會讀取 Claude Code 和其他代理的哪些標頭。