全球程式設計師都在給Anthropic白送錢!官方終於看不下去了

AI速讀
Anthropic 近日發布官方指南,旨在協助 Claude Code 開發者降低 Token 消耗成本。該指南揭露了輸出 Token 價格遠高於輸入的計價邏輯,並強調「提示快取」是省錢關鍵,只要命中快取可降低 90% 讀取費用。官方建議開發者透過 /clear 頻繁清理對話、固定模型參數、使用 @ 引用文件及子 Agent 隔離大輸出等六大策略來「瘦身」上下文。新智元評論認為,隨著 AI 深度參與開發,掌握 Token 管理將成為 AI 時代程式設計師的必要新技能。

就在剛剛,Anthropic發了一篇部落格。

核心資訊就是:各位,別再燒冤枉token了,我們都看不下去了!

為此,官方詳細列舉了六條省錢心法,先貼為敬:

1. 任務做完就/clear。修完一個bug就清掉當前對話,別讓上一個任務讀過的檔案和命令輸出拖進下一個任務裡,白白佔著上下文。

2. 開局就定好模型和推理強度(effort level)。中途切換的話,之前積累的提示快取會全部失效,整段對話歷史要按全價重新計算一遍。

3. 用@引用檔案,別手打路徑。用@直接把檔案附到消息裡,Claude不用再花一次工具呼叫去讀。如果你只打檔案名稱,Claude可能先搜一圈再打開好幾個檔案試探,這些操作全部會進入對話歷史,之後每一輪都帶著。

4. 給輸出多的命令加靜默參數(quiet flag)。在CLAUDE.md裡寫一句類似--reporter=dot的配置,讓測試輸出只列印幾行摘要,不是幾百行詳情。輸出越短,佔的上下文越少。

5. /compact在休息前做。對話還在快取裡的時候壓縮,成本只有正常的十分之一。等你回來快取過期了再壓,就得按全價重新讀一遍再壓縮。

6. 大輸出任務扔給子Agent。子Agent在一個獨立的上下文窗口裡運行,做完只把結論傳回來,過程中讀的檔案和跑的命令輸出不會進入你的主對話。

01. 一個token的前世今生

用Claude Code幹活,API按量走,訂閱制月費從20美元到200美元分三檔。

根據官方推算,開發者日均消耗13美元token,月均花在150到250美元之間。

這還只是平均水平。同樣修一個bug,問法不同,花費能差出好幾倍。

而且每一輪對話都在拖著前面所有輪的全部內容重新傳送,會話越長,每一輪就越貴。

這些錢花在那,得從token的計價邏輯說起。

每次你在Claude Code裡輸入一條指令,背後發生兩件事。

第一件叫預填充(prefill),也就是模型一口氣讀進你的整個請求,包括系統提示詞、CLAUDE.md、你的消息,以及之前對話裡積累的一切。這些都是輸入token。

第二件叫解碼(decode),也就是模型一個字一個字往外寫的過程,包括它的思考、工具呼叫和你最終看到的文字。這些都是輸出token。

關鍵區別在這裡。

預填充是平行的,一次性把所有輸入token過一遍GPU。解碼是序列的,每吐一個token都要跑一次模型。200個token的回覆,就是200次獨立運算。

所以也就不難理解,為什麼輸出token要比輸入token貴5倍了。

在這個基礎上,最終帳單取決於兩件事。

第一是模型,決定每個token的單價。

  • Opus 5,輸入5美元/百萬token,輸出25美元。
  • Sonnet 5,輸入2美元,輸出10美元。
  • Haiku 4.5,輸入1美元,輸出5美元。

第二是推理強度,決定token的數量。

一個會話裡大部分輸出token都是思考token,推理強度控制的就是這個量。推理強度越高,模型想得越久,輸出的思考token越多。max和low之間能差好幾倍。

簡單活用Sonnet,硬骨頭才上Opus。牛刀殺雞的錢,花得最冤。

02. 提示快取,是最大的省錢利器

token定價裡還有一個巨大的變數,就是快取

Claude Code的每次請求都從相同的前綴開始,也就是系統提示詞、工具定義、CLAUDE.md和對話歷史。

如果這次請求的前綴和上次逐字節一樣,伺服器就不重新算,直接載入上次的計算結果。

快取讀取只要正常輸入價的0.1倍,直接省掉90%。

寫入快取貴一點,最高2倍。但寫入只發生一次,後面每一輪都享受0.1倍讀取。

舉個例子。

假設你的對話歷史有5萬個token。不走快取的話,每一輪光是重讀這5萬token就得付全價。但只要命中快取,同樣的5萬token只需要花十分之一的錢。

一個會話跑二三十輪,快取命中攢下來的折扣是天文數字。

這是你最大的薅羊毛槓桿。

但快取有個致命弱點。它必須從請求的第一個字節開始連續匹配,中間任何地方變了,從那裡往後全部作廢。

具體來說,一共有六種情況:

1. /model切模型:每個模型的快取獨立。從Sonnet切到Opus,整個對話歷史按Opus的價格重新預填充,沒有折扣。

2. /effort切推理強度:推理強度也是cache key的一部分,切換之後整個對話歷史都要重新計算。

3. 開關Fast mode:效果和前兩種一樣,快取直接失效。

4. /compact壓縮對話:對話被重寫成摘要,原來的內容全部對不上,舊快取直接作廢。

5. 時間過期:訂閱使用者的快取保活1小時,API使用者默認5分鐘。超時後下一輪全量重算。

6. 恢復舊會話:隔了太久快取早就沒了,幾乎100%要全價重新計算。

壞消息是,只要中一個就意味著整個對話歷史從0.1倍打回原價。

好消息是,當你知道什麼會讓快取失效時,就能知道怎麼保住它。

比如,會話開頭就鎖定模型和推理強度,全程不切。不在快取還熱的時候做/compact,等到準備休息的時候再跑。

這裡,還有個隱藏坑。

opusplan模式每次進出plan都切模型。進一次,快取失效一次。出來,又失效一次。來回跳的話,每跳一次都是一筆全價prefill。

03. 你的會話,正在偷偷變胖

快取幫你把重複傳送歷史的成本壓到十分之一。

但有一件事它幫不了。你的歷史本身在一輪一輪地膨脹。

每次Claude讀一個檔案,檔案內容追加到對話裡。每次Claude跑一個命令,輸出也追加進去。從追加那一輪起,後面每一輪都帶著。

第40輪對話在重新傳送第1到39輪的全部累積內容。

這種增長,是接近平方等級的O(n²)

CClaude Code有個兜底機制。

命令輸出超過30000字元,就不往對話裡塞了,而是寫到一個臨時檔案裡,對話裡只放一句摘要。但30000以下的輸出沒人管。

比如一個測試框架跑完,列印400行通過記錄,每行幾十個字元,總量不到3萬,夠不上這個閾值。

於是這400行就原封不動地留在了對話歷史裡,後面每一輪都跟著重新傳送一遍。

對此,Anthropic部落格裡給了幾招很實用的瘦身方法。

1. @引用檔案。

不要手動輸入路徑讓Claude自己去找。@引用會把檔案直接附到消息裡,省掉一次讀取操作。

你只說檔案名稱的話,Claude可能先grep搜一圈,打開好幾個檔案看那個對。然後這些試探就會全部進入對話歷史,徒增成本。

2. 給noisy命令加quiet flag。

在CLAUDE.md裡寫一句「run tests with npx vitest run <file> --reporter=dot」,以後每次跑測試只輸出幾行點狀結果,不是幾百行詳情。一分鐘的配置,以後每個會話省幾百行上下文。

3. subagent隔離大輸出任務。

subagent在自己獨立的上下文窗口裡跑,做完只傳答案回來,過程中讀的檔案和命令輸出全部丟棄。適合「去翻翻日誌有什麼異常」「幫我過一遍這個大檔案」這種活。你只要結論,不要過程。

還有最重要的一條。

4. /clear切任務。

修完一個bug就/clear,開始下一件事。上一個bug的檔案、命令輸出、中間探索,全部和下一個任務無關,但如果不清,它們在後面每一輪都佔著位置、吃著token。

不想徹底清空的話,/compact可以把對話壓成摘要。一萬到兩萬個token能壓到一千到三千。

此外,部落格裡還提了一個冷門但免費的操作,/rewind

如果最後幾輪跑偏了,/rewind直接砍掉那幾輪,前面的快取完全不動。

04. 管token,也是一種開發者素養

上面這些操作拆完,你會發現一個規律。寫程式碼的人正在長出一套新技能。

跟框架和語言沒關係,而是知道該選什麼模型、怎麼管上下文、怎麼保住快取、推理強度開多高合適。

這些能力一年前並不存在。但它現在卻決定了你在同一個任務上,是花3美元還是30美元。

Anthropic自己就是最好的例子。

他們80%的程式碼靠AI寫,程式碼合併量一年翻了8倍,基準測試加速52倍。AI用到這個強度,如果沒人管token,光推理成本就能把預算吃穿。

從這個角度看,與其說這篇部落格講的是省錢技巧,不如說是AI時代寫程式碼的人需要長出來的一種新本能——

知道你的每一個操作在消耗什麼,知道怎麼讓同樣的預算幹出更多的活。

讀懂它的人,薅到的不只是幾美元的token。 (新智元)