iT邦幫忙

2026 iThome 鐵人賽

DAY 5
0

Day 5|把 CLI 當 runtime 要付多少過路費

https://ithelp.ithome.com.tw/upload/images/20260821/20183634hh8DvCH3m5.png

我開了一個空資料夾,裡面什麼都沒有,然後叫 Claude Code 回我兩個字。

$ mkdir empty && cd empty
$ claude -p "回覆 OK" --output-format json

它回了 OK。這次呼叫的帳單是 0.335 美元

四個字的輸出,三毛三美金。今天就是要把這三毛三拆開,看錢花到哪裡去了。


先學會怎麼看帳

--output-format json 會把 usage 一起吐出來,這是你唯一的儀表板。

claude -p "回覆 OK" --output-format json | jq '.usage, .total_cost_usd'

我那次的實際輸出:

{
  "input_tokens": 2,
  "cache_creation_input_tokens": 32575,
  "cache_read_input_tokens": 19096,
  "output_tokens": 4
}
0.335408

四個欄位要分清楚,記錯了會算錯成本:

欄位 意思 計價
input_tokens 沒有被快取的新輸入 基準價
cache_creation_input_tokens 這次寫進快取的部分 1.25 倍基準價
cache_read_input_tokens 命中快取讀回來的部分 0.1 倍基準價
output_tokens 模型產出 通常 5 倍基準價

我那次的總輸入是 2 + 32,575 + 19,096 = 51,673 個 token。

在一個空資料夾裡,說一句「回覆 OK」,模型要先讀 51,673 個 token 才開始工作。你的 prompt 佔其中 2 個。

這五萬個 token 是什麼

拆開來大致是三塊。

第一塊,系統提示。 Claude Code 的行為規則、輸出格式約定、安全守則、工作流程說明。這塊是固定的,你動不了。

第二塊,工具 schema。 這是最大的一塊,也是最有壓縮空間的一塊。每一個內建工具都要把名稱、說明、參數的 JSON Schema 完整送進去,模型才知道怎麼呼叫。Read、Write、Edit、Bash、Grep、Glob、WebFetch、WebSearch、Task、TodoWrite……十幾個工具,每個幾百到一兩千 token。

如果你還掛了 MCP server,這塊會爆炸。我自己的平台有 200 個以上的 MCP 工具,全部送進去的話光工具宣告就是好幾萬 token。

第三塊,環境資訊。 工作目錄、git 狀態、平台、日期、以及專案裡的 CLAUDE.md。你的 CLAUDE.md 寫得越詳細,這塊越貴。我自己那份寫到後來有一萬多字,等於每次 spawn 都先付一次那份文件的錢。

https://ithelp.ithome.com.tw/upload/images/20260821/20183634WqqabeFLm2.jpg

右邊那條細到幾乎看不見的,是你真正想問的那句話。

一天一百次的帳

現在把這個數字放進「自動化」的情境裡算。

假設你的 agent 每 15 分鐘醒來一次巡檢,一天 96 次。取整數算 100 次:

項目 計算 結果
每次固定開銷 51,673 token
一天 × 100 5.17 M token
一個月 × 30 155 M token

一億五千五百萬個 token,全部花在「還沒開始工作」這件事上。

這就是為什麼很多人做 agent 做到一半放棄。他們以為問題出在模型不夠聰明,實際上是他們每小時付四次入場費,卻只讓模型在裡面待三秒。

快取讓帳單好看一點,但沒有你以為的多

有人會說:有 prompt cache 啊,第二次以後就便宜了。

對,但要看清楚兩件事。

第一,快取要先付建立費。 cache_creation 的單價是基準價的 1.25 倍。你第一次呼叫其實比沒有快取還貴一點,要跑到第二次、第三次才開始回本。

第二,快取有存活時間。 預設 5 分鐘,有些方案可以設到 1 小時。如果你的 agent 每 15 分鐘醒一次,預設設定下每次都是全新建立,你永遠在付那個 1.25 倍,一次快取都沒命中。

這是很多人沒注意到的陷阱:你的排程間隔如果大於快取存活時間,prompt cache 對你完全沒有幫助,還會讓你多付 25%。

我自己的排程有一段時間是 30 分鐘一次,就是這個狀態。後來改成兩層:高頻的輕量檢查用 3 分鐘間隔,讓快取一直是熱的;重量級的分析改成事件觸發,需要才跑。

中文的 token 比你估的多

順帶講一個會讓你算錯預算的細節。

很多人估中文 token 用「字數 ÷ 1.5」。我原本也這樣估,後來實測發現低估了大約 22%。

比較接近的估法是按碼位分類:

def estimate_tokens(text: str) -> int:
    """粗估 token 數,CJK 與 ASCII 分開算。"""
    cjk = ascii_ = other = 0
    for ch in text:
        o = ord(ch)
        if 0x4E00 <= o <= 0x9FFF or 0x3040 <= o <= 0x30FF:   # 漢字、假名
            cjk += 1
        elif o < 128:
            ascii_ += 1
        else:
            other += 1
    # 中文約每字 1 個 token,英文約每 4 字元 1 個
    return cjk + ascii_ // 4 + other // 2

這仍然是估算,真實值要看 tokenizer。但用這個公式做預算,我不會再算出「應該還有 30% 額度」然後隔天收到超額通知。

怎麼實際量你自己的環境

不要相信我的數字,量你自己的。三步:

# 1. 空目錄 baseline:這是你環境的地板
mkdir /tmp/probe && cd /tmp/probe
claude -p "OK" --output-format json | jq '[.usage.input_tokens,
  .usage.cache_creation_input_tokens, .usage.cache_read_input_tokens] | add'

# 2. 你的專案目錄:差額就是 CLAUDE.md + MCP + git 狀態的成本
cd /path/to/your/project
claude -p "OK" --output-format json | jq '[.usage.input_tokens,
  .usage.cache_creation_input_tokens, .usage.cache_read_input_tokens] | add'

# 3. 關掉 MCP 再量一次:跟第 2 步的差額就是 MCP 工具 schema 的成本
claude -p "OK" --output-format json --strict-mcp-config | jq '...'

三個數字拿到手,你就知道自己該砍哪裡。多數人的結論會是:MCP 工具是最大宗,CLAUDE.md 第二。

代價

先講一個反面意見,免得明天的優化被誤用。

固定開銷高,本身不是罪。那五萬個 token 買到的是一個什麼都會的通用 agent,它能讀檔、能搜尋、能執行、能上網。如果你的任務真的需要這些能力,這筆錢花得值。

會出問題的是任務跟能力不匹配:一個只需要讀日誌然後回三行摘要的 agent,你給它一整套開發工具鏈。這就像請水電工來換燈泡,他把整車工具搬進你家,換完再搬出去,你付的是搬運費。

明天講怎麼只帶那顆燈泡進門。我實測把這 51,673 砍到 6,171,token 省下 88%,成本從 0.335 美元降到 0.035 美元。

砍法只有兩行參數,但其中有一個坑,踩下去會順手關掉你的安全防護。


上一篇
它醒來了,但不記得昨天
下一篇
砍掉 88% 的固定開銷,但不能砍掉那個 hook
系列文
Claude Code 下班之後:30 天把 CLI 工具養成會自己交差的 AI 員工7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言