Claude 的令牌是什麼,又是怎麼運作的?我們數了 38 億個

令牌是詞的一個片段,Claude 會統計四種令牌:輸入、快取寫入、快取讀取和輸出。我們統計了自己 30 天的 Claude Code 會話,共 38 億令牌:98% 是從快取裡重新讀取的對話,Claude 寫出的只佔 0.3%。每種令牌的成本、為什麼會話每多一輪就更重,以及 5 小時視窗到底在計量什麼。

在 Claude 周圍,這個詞隨處可見:價目表裡、限額提示裡、/usage 裡,以及每一篇教你省錢的文章裡。幾乎沒人說清令牌是什麼,而人們盯著的數字很少是真正重要的那個。Claude 寫回的部分,不到一次編碼會話所計數量的百分之一。

所以我們數了自己的。在一台 Mac 上執行的 30 天 Claude Code 會話,從 2026 年 9 月 10 日到 10 月 9 日:388 個會話,19,668 次模型請求,38 億令牌。下面講令牌是什麼、Claude 統計它的四種方式,以及這些數字在真實工作中的樣子。

令牌是一段文字,而這段文字的大小會變

模型不讀字母,也不讀詞。它讀的是令牌:取自固定詞表的文字片段,有時是完整的短詞,常常是詞的一部分,遇到沒見過的東西時,有時是單個字元或位元組。一切都按這些片段計數:你傳送的、Claude 寫的、它在輪與輪之間儲存的。

一個令牌能裝下多少文字,取決於模型和語言。Anthropic 的術語表給出的是:在 Claude 4.7 之前的模型上,每個令牌約 3.5 個英文字元;Claude 4.7 及之後的模型使用新的分詞器,同樣的文字會多出約 30% 的令牌。精確數字只能透過 令牌計數端點 獲得,並指定你打算用的模型。

我們用自己的文字測了這個比例。我們的代理用法語回答,所以挑出純文字回答:沒有思考、沒有工具呼叫、沒有程式碼塊、至少 80 個詞。共 296 條,分佈在 Opus 5、Opus 5.5、Fable 5.1 和 Sonnet 5.5 上。中位數是每個令牌 2.3 個字元,約合每個詞 2.6 令牌。程式碼、JSON 和非拉丁文字的比例各不相同。重點不在精確數字:令牌比詞小,你也永遠不會手工去數。

每次請求都記在四個計數器上

Claude Code 把每個會話寫進 ~/.claude/projects/ 下的 JSONL 轉錄檔案。模型的每個回答都帶一個 usage 塊。下面是我們轉錄中的真執行個體子,只保留有用的欄位:

"usage": {
  "input_tokens": 2,
  "cache_creation_input_tokens": 51836,
  "cache_read_input_tokens": 24882,
  "output_tokens": 315,
  "output_tokens_details": { "thinking_tokens": 54 },
  "cache_creation": {
    "ephemeral_1h_input_tokens": 51836,
    "ephemeral_5m_input_tokens": 0
  }
}

四個計數器,價格各不相同:

  • input_tokens:提示詞中既沒有寫入快取、也沒有從快取讀取的部分,按基礎輸入價格計費。在 Claude Code 裡它幾乎總是寥寥幾個令牌,因為幾乎一切都走快取。
  • cache_creation_input_tokens:提示詞中存入快取、供下一次請求複用的部分。快取寫入的價格是:5 分鐘快取為輸入價格的 1.25 倍,1 小時快取為 2 倍。在我們的轉錄中,97% 的寫入是 1 小時快取。
  • cache_read_input_tokens:提示詞中從快取裡重放的部分。快取讀取的價格是:大多數模型上為輸入價格的 0.1 倍,Opus 5.5 和 Sonnet 5.5 上為 0.05 倍,Fable 5.1 上為 0.025 倍(Anthropic 的提示詞快取頁面,2026 年 10 月 10 日核對)。
  • output_tokens:Claude 寫出的內容,包括思考。在所有現行模型上,輸出價格都是輸入價格的 5 倍:每百萬令牌 Opus 5.5 為 20 美元,Opus 5 為 25 美元,Fable 5.1 為 50 美元,Sonnet 5.5 為 10 美元。

前三個相加,就是模型這次請求讀取的上下文。第四個是回答。

我們 30 天的會話是什麼樣子

對 19,668 次請求,每次請求只計一次(一次 API 呼叫可能佔據轉錄中的多行):

計數器令牌佔令牌的比例按 API 標價佔成本的比例
輸入(未快取)114,4110.003%0.04%
快取寫入74,834,0702.0%37.4%
快取讀取3,710,054,70997.7%45.7%
輸出12,727,1930.34%16.8%
合計3,797,730,383100%2,563 美元

成本一列按每次請求自己的模型和快取時長計價。我們並沒有付這筆錢:這些會話跑在訂閱上。它是每個計數器的權重,和 AgentsRoom 在專案之間分攤套餐百分比時用的權重相同。

三點解讀。

幾乎每個令牌都是被重新讀取的對話。 97.7% 的令牌是快取讀取。99.2% 的請求都從快取裡讀了些東西。有人說一個會話「用了 5,000 萬令牌」時,看的就是這個。

Claude 寫出的內容在令牌上很少,在成本上並不少。 佔令牌的 0.34%,佔帳單的 16.8%,因為輸出是最貴的令牌。其中 29% 是思考。

快取寫入是代價高昂的意外。 佔令牌的 2%,佔成本的 37%。我們原以為它們來自快取過期,但 19,668 次請求中只有 16 次不得不重寫冷掉的上下文,其中七次是在一小時以上沒有動靜之後。79% 的寫入只是每條新訊息和每個工具結果各儲存一次,價格是輸入的兩倍,之後每一輪都被重新讀取。其餘 20% 是每個會話的第一次請求。

為什麼會話每多一輪就更重

模型在兩次請求之間什麼都不保留。Claude Code 每次都重新傳送一切:系統提示詞、工具定義、CLAUDE.md、每條訊息、讀過的每個檔案、每條命令輸出。快取讓重複部分的每令牌價格變低,但不免費,也不變小。

按會話中的位置,每次請求讀取的上下文中位數:

會話中的第幾次請求請求數上下文中位數
第 1 次38852,000 令牌
第 2 至 10 次3,21093,000 令牌
第 11 至 50 次8,546161,000 令牌
第 51 至 200 次6,414237,000 令牌
第 200 次之後1,110342,000 令牌

中位數請求為了寫出 290 令牌的回答,讀取了 179,000 令牌的上下文。這個比例就是編碼代理裡令牌的全部故事:回答短,讀取長,而且讀取隨會話增長。

我們的第一次請求很重,沒人輸入任何東西就已有 52,000 令牌,因為我們的代理啟動時帶著一份很長的角色說明,以及四個工具定義都放在提示詞裡的 MCP 伺服器。在空資料夾裡啟動的裸 Claude Code 會話,起點低得多。/context 會顯示你的會話在第一條訊息之前帶著什麼。

一個會話用掉多少

在 380 個至少有三次請求的會話中:

  • 中位數 33 次請求,中間一半為 16 到 61 次。
  • 中位數 27,000 輸出令牌,12,000 到 48,000。
  • 中位數 處理 540 萬令牌,中間一半為 150 萬到 1,070 萬,其中 510 萬是快取讀取。
  • 中位數 181,000 令牌 寫入快取或以未快取方式傳送:真正新增的部分。
  • 按 API 標價中位數 4.55 美元,中間一半為 1.81 到 9.25 美元。

所以,「一次編碼會話用掉多少令牌」的誠實答案是大約一百萬到一千萬,幾乎全是同一段上下文被反覆讀取。整個下午跑一個長任務的會話處在頂端;修好一個 bug 就停下的會話處在底端。

5 小時視窗和每週視窗實際計量的是什麼

在 Pro 或 Max 套餐上,你永遠看不到令牌餘額。Anthropic 幫助中心說,兩種套餐都有五小時會話限制和每週限制,這些限制由 Claude 和 Claude Code(含 IDE)共享,Max 套餐對 Fable 另有單獨的每週限制。它沒有為任何一項公布令牌數字。/usage 顯示每個視窗的百分比和重置時間。

按 Anthropic 自己的列表,讓這個百分比變化的因素是:訊息長度、附件大小、當前對話長度、工具使用、模型選擇、推理強度,以及多步驟任務。結合上面的表格,主導編碼會話的是「當前對話長度」:每次請求讀取的上下文在五十次請求內從 52,000 令牌增長到 237,000 個。幫助中心還說,專案中快取的內容複用時對限額消耗更少,這和快取讀取的價格是同一思路。

我們不知道 Anthropic 如何把令牌換算成視窗百分比,也不會編造換算方式。資料能說明的是:同一個問題,長會話後期的一次請求,計數是早期請求的好幾倍。

實際中改變計數的因素

四個槓桿,按它們在我們資料中的影響排序:

  • 在不相關的任務之間用 /clear。 Anthropic 稱它為「對品質和成本都最有效的單一槓杆」。在舊會話裡做新任務,每次請求都要為舊任務的上下文買單。
  • 繼續一個長會話時用 /compact。 它把歷史換成簡短摘要,後續請求讀得更少。
  • 留意進入上下文的內容。 一次 20,000 令牌的檔案讀取或命令輸出,會以兩倍輸入價格寫入一次,然後在會話結束前的每次請求中被重新讀取。唯讀需要的那幾行而非整個檔案,能省兩次。
  • 模型和推理強度。 思考佔我們輸出的 29%,而輸出是最貴的令牌。日常工作降低推理強度可減少輸出,換用更便宜的模型則讓所有價格一起下降。

在我們資料中沒影響的:讓會話閒置。在我們轉錄中 Claude Code 使用的 1 小時快取下,30 天裡冷重寫只發生了 16 次。

想了解更多省錢方法,請看 如何降低 Claude Code 的令牌成本。

數一數你自己的

上面的表格來自一個無依賴的腳本。它讀取本機所有 Claude Code 轉錄,每次請求只計一次,列印四個計數器和每個會話的中位數。想限定時間範圍,就在 o["timestamp"] 上加個過濾條件。

import json, glob, os, statistics as st
from collections import defaultdict

FIELDS = ("input_tokens", "cache_creation_input_tokens",
          "cache_read_input_tokens", "output_tokens")
totals, sessions = defaultdict(int), []
for path in glob.glob(os.path.expanduser("~/.claude/projects/*/*.jsonl")):
    seen, session = set(), defaultdict(int)
    with open(path, errors="ignore") as fh:
        for line in fh:
            try: o = json.loads(line)
            except ValueError: continue
            msg = o.get("message") or {}
            usage = msg.get("usage") if isinstance(msg, dict) else None
            if o.get("type") != "assistant" or not usage: continue
            rid = o.get("requestId") or o.get("uuid")
            if rid in seen: continue   # one API call can span several lines
            seen.add(rid)
            session["requests"] += 1
            for f in FIELDS:
                n = usage.get(f) or 0
                totals[f] += n
                session[f] += n
    if session["requests"] >= 3: sessions.append(session)

grand = sum(totals[f] for f in FIELDS)
for f in FIELDS:
    print(f"{f:30s} {totals[f]:>15,} {100 * totals[f] / grand:6.2f}%")
for key in ("requests", "output_tokens", "cache_read_input_tokens"):
    print(f"median per session, {key}: {st.median(s[key] for s in sessions):,.0f}")

把你的比例和我們的比一比。快取讀取那行是被重新讀取的對話,快取寫入那行是新增的內容:這兩行比輸出那行更能說明你的帳單。

AgentsRoom 在哪裡顯示這些

腳本給你的是一個月的資料。你工作時,AgentsRoom 按代理顯示同樣的計數器:每個會話輸入框裡的令牌徽章,會話變重時會變紅;會話監視器,顯示輸入、輸出、快取寫入、快取讀取和快取命中率;以及會話追蹤,逐輪重放會話,指出是哪次檔案讀取或哪個工具結果填滿了上下文。用量面板把套餐報告的百分比分攤到你的專案和代理上,按每個會話的 API 價格成本加權,和上表權重相同。

這些介面都不給你令牌餘額,因為你的套餐根本沒有餘額。關於這個問題,請看 我在 Claude 裡還剩多少令牌。關於這些輸出令牌到達的速度,請看 Claude Code 每秒令牌數實測。

常見問題

Claude 裡的令牌是什麼?

Claude 讀寫文字的單位:詞的一個片段,有時是一個完整的短詞,有時是單個字元或一個位元組。Anthropic 表示,令牌的大小取決於模型和語言:在 Claude 4.7 之前的模型上,一個令牌約等於 3.5 個英文字元,Claude 4.7 及之後的模型使用新的分詞器,同樣的文字會多出約 30% 的令牌。Claude 做的一切都按令牌計量:你傳送的內容、它寫回的內容,以及它在輪與輪之間儲存在快取裡的內容。

一個 Claude 令牌等於多少字元或多少個詞?

取決於語言和文字。Anthropic 給出的數字是:在 Claude 4.7 之前的模型上每個令牌約 3.5 個英文字元,在 Claude 4.7 及之後的模型上,同樣的文字令牌數多出約 30%。在我們的代理於 2026 年 9 月和 10 月用法語寫的 296 條純文字回答中,一個令牌是 2.3 個字元,約合每個詞 2.6 令牌。程式碼、JSON 和非拉丁文字的比例各不相同。要得到精確數字,可以把文字和模型交給 Anthropic 的令牌計數端點。

為什麼 Claude Code 會消耗這麼多令牌?

因為每次請求都會把整個對話重新傳送一遍:系統提示詞、工具定義、CLAUDE.md、迄今為止的每條訊息和每個工具結果。在我們的 19,668 次請求中,中位數請求為了寫出 290 令牌的回答,攜帶了 179,000 令牌的上下文;上下文從會話第一次請求時的 52,000 令牌,增長到五十次請求之後的 237,000 個。快取讓這種重複讀取的每令牌價格很低,但它仍然會被計數。

一個典型的 Claude Code 會話會用掉多少令牌?

在我們 2026 年 9 月 10 日至 10 月 9 日記錄的 380 個至少有三次請求的會話中:中位數為 33 次請求、27,000 個輸出令牌、總共處理 540 萬令牌,其中 510 萬個是快取讀取。一半的會話落在 150 萬到 1,070 萬令牌之間。按 API 標價計算,這個中位數會話大約要花 4.55 美元;在 Pro 或 Max 套餐上,同樣的工作則改為計入 5 小時視窗和每週視窗。

思考令牌算不算?

算。在每個 usage 塊裡,思考令牌都是 output_tokens 的一部分,另有一個 thinking_tokens 欄位說明輸出中有多少是思考。在 API 上它們按輸出價格計費,Anthropic 也把推理強度列為讓套餐用量限制消耗更快的因素之一。在我們的語料中,思考佔模型寫出的全部內容的 29%。

快取寫入令牌和快取讀取令牌有什麼區別?

快取寫入是把提示詞的一部分存起來,供下一次請求複用,它比普通輸入更貴:5 分鐘快取為輸入價格的 1.25 倍,1 小時快取為 2 倍。快取讀取是複用這部分已儲存的內容,便宜得多:大多數模型上為輸入價格的 0.1 倍,Opus 5.5 和 Sonnet 5.5 上為 0.05 倍,Fable 5.1 上為 0.025 倍。在我們的會話中,快取讀取佔令牌的 98%、按標價計算的成本的 46%;快取寫入佔令牌的 2%、成本的 37%。

下載 AgentsRoom

在一個視窗中執行你所有專案的所有 AI 代理。

免費下載 AgentsRoom

配套應用:隨時隨地監控你的 Agent

使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。

獲取擴充功能
Chrome Web Store

把 Bug 和需求直接傳送到您的公開待辦清單。

多專案管理
多供應商
多代理執行
即時狀態
檔案差異與提交
行動應用
即時預覽
代理團隊
瀏覽器自動化
Backlog 驅動開發
提示詞庫
技能庫
檢視所有功能

繼續閱讀