token 是什麼,我怎麼知道我用了多少?
Token 是語言模型處理文字的最小單位,不是字也不是字元,而是介於兩者之間的東西。英文大概 4 個字母是 1 個 token,一個常見單字通常是 1-2 個 token。中文大概 1-2 個漢字對應 1 個 token。一頁 A4 英文約 400-600 tokens,中文因為字元密度高,同樣內容可能只要 200-400 tokens。
要知道你用了多少,最直接的方式是用 Anthropic 的官方 tokenizer 工具估算,或是在 API 回應裡看 usage 欄位(有 input_tokens 和 output_tokens 的數字)。一般使用者用 Claude.ai 聊天不會直接看到 token 數,但只要記住「長文件 = 大量 token = 佔掉很多空間」這個概念就夠用了。
我貼了一份很長的文件,結果 Claude 好像沒有讀完整份,這是為什麼?
可能有兩個原因。第一個是 context window 被塞滿了:如果你貼的文件加上前面的對話已經超過上限,後面進不去的部分會被截掉,Claude 只能讀到它能讀到的範圍。第二個原因比較微妙:即使文件在 context 上限以內,Claude 的注意力在很長的輸入上並不是均勻分佈的——有研究顯示它對文件的開頭和結尾注意力比較高,中間的部分可能被低估。
實務上的解法:如果你的問題只跟文件的某一部分有關,只貼那一部分。如果你需要 Claude 綜合整份文件,可以先把文件分段,分別讓 Claude 總結,最後再合併摘要,這比一次全部丟進去更可靠。
Claude Pro 和免費版的 context window 大小有差嗎?
有,但具體數字會隨版本更新。一般來說,Pro 版能使用的模型版本更新、context window 也可能更大;免費版可能被限制在舊版本或更小的 context 上限。目前 Claude 最新的旗艦模型支援的 context window 可以達到幾十萬 token,但具體上限要看 Anthropic 的當前官方說明。
更實際的問題是:對於一般使用者的日常對話,就算是舊版本提供的 context window 也已經非常大,絕大多數情況下不會遇到限制。真正容易撞到上限的情境是:你在做程式 review 並貼了大量程式碼、你在分析長報告、或者你有一個跑了幾十輪的長對話。在這些情況下,Pro 版提供更大的空間確實有實際意義。
進階:系統提示詞也佔 context window 嗎?這對開發者有什麼影響?
是的,系統提示詞(system prompt)也佔 context window 的空間,而且佔的是「固定成本」——每一次對話都要扣掉那些 token,不管你的系統提示詞是 100 個 token 還是 5000 個 token。
對開發者的實際影響:如果你在做 API 整合,系統提示詞越長,留給對話歷史和用戶輸入的空間就越少,同時每次 API 呼叫的成本也更高。這也是為什麼寫系統提示詞是一門需要精簡的藝術——把最關鍵的指令和規則留下,刪掉冗餘的說明。一個 5000-token 的系統提示詞和一個 500-token 的系統提示詞在效果上可能差不多,但前者會讓你的 API 成本顯著提高。Anthropic 的 prompt caching(提示詞快取)功能可以減少系統提示詞的重複計費,但那是另一個話題了。
如果你用 Claude 一段時間後,有沒有發現過這樣的情況:對話進行到後來,Claude 開始「忘記」你在前面說的事、給出和之前矛盾的答案、或者突然感覺品質下滑了?這幾乎都和一個東西有關:context window,也就是 Claude 的「工作記憶」。
這篇文章的目標是讓你真的搞懂 context window 是什麼、它裡面裝了什麼、裝滿了會發生什麼事,以及幾個讓你用得更聰明的實用技巧。
最直觀的比喻是:context window 就像你和 Claude 共用的一張便條紙,大小是固定的(以 token 計算,Claude 的上限在幾十萬到兩百萬 token 之間,依版本而定)。你說的每一句話、Claude 的每一個回應、你貼進去的每一份文件,都會佔用這張便條紙的空間。
Token 是語言模型處理文字的基本單位,不完全等於字。英文大概每 4 個字母是 1 個 token,一個完整的英文單字通常是 1-2 個 token;中文大概 1-2 個漢字對應 1 個 token。粗略估算:一頁 A4 的文字大概是 400-600 個 token。
每次你送出一個訊息,Claude 看到的不只是那一句話,而是整個便條紙上的所有內容,包括:系統提示詞(如果有的話,也就是設定 Claude 角色和規則的那段文字)、這次對話從頭到尾的所有訊息(你說的和 Claude 說的)、你貼進來的文件或上傳的檔案、以及你的這次新訊息。
這就是為什麼 Claude 能「記住」你之前說的事——它不是真的記憶,而是每次都重新讀一遍便條紙上的所有內容。重要推論:Claude 沒有跨對話的記憶。每次你開一個新的對話,便條紙就是空白的。
當對話內容加上你貼的文件超過 context window 的上限,不會有明顯的錯誤訊息。通常發生的是:最早的對話記錄被靜默地捨棄,讓新的內容能放進來。你可能不會立刻察覺,直到 Claude 給出一個「明明我之前說過了它卻忘了」的回應。
這就是為什麼長對話後期的回答品質常常下滑——不是 Claude 變笨了,而是它「看不到」對話早期你說的那些重要前提了。
第一,長對話要適時開新視窗。不要讓同一個對話無限延伸。當你感覺 Claude 開始「忘事」,或者主題已經轉換,開一個新對話,用幾句話摘要帶入必要的背景,比繼續撐著舊對話更有效。
第二,貼文件要注意大小。你貼進去的每一份文件都佔 context 空間。如果你有一份 50 頁的報告但只想問其中一節,只貼那一節就好,不要整份丟進去。或者先讓 Claude 幫你把長文件摘要,再用摘要繼續對話。
第三,把重要的事放在「近的地方」。Context window 裡不是所有內容等權重——一般來說,越靠近對話末尾的內容,Claude 越容易注意到。如果你有一個非常重要的限制或要求,在每次需要的地方都重複提一下,而不是只在對話開頭說一次就不管了。
理解 context window,你就知道 Claude 的「遺忘」不是 bug,是它運作方式的基本特性。這讓你可以主動管理對話品質,而不是被動地遇到問題後才困惑。最簡單的記住方式:Claude 每次回答都在重讀整張便條紙;你的工作是確保那張便條紙上有它需要的東西,而不是把便條紙塞得太滿。