看到 context length exceeded 怎麼辦
想像你正在做一件事做到一半。你的 agent(就是這個會幫你做事的 AI 助手)讀了幾個檔案、幫你跑了幾個小工具、你們一來一往聊了二十幾輪。然後它突然冒出一句:
context length exceeded
這句話的意思是:「這次對話塞的東西太多,超過我一次能記住的量了。」
於是對話卡住。你不想從頭再來一次。別急,下面一步一步帶你處理。
先講一個名詞。token(權且叫它「文字塊」)是 AI 計算「一段文字有多長」的單位。大概幾個字母或一個字就是一個 token。AI 一次對話能吃下的 token 有上限,這個上限就叫 context length(對話容量)。你聊得越久、貼的東西越多,就越接近上限。塞爆了,就會看到上面那句錯誤。
第一步:先救火,把現在的對話壓縮一下
在對話框裡,直接打這個指令然後送出:
/compress
「指令」就是你打給 agent 的一句特殊命令,通常用斜線 / 開頭。
這一步會做什麼?它會把你們前面聊過的內容,整理成一份比較短的摘要,騰出空間讓對話繼續下去1。就像把桌上一堆散亂的紙,重點抄在一張便利貼上,其他的先收起來。
怎麼確認成功? 你能繼續打字聊天,不再跳出 context 的錯誤,就成功了。
要注意:摘要會保留大方向,但一些細節可能被壓掉。如果後面發現 agent「忘了」某件事,你再講一次就好,不是壞掉了。
第二步:看看你到底用掉多少
打這個指令送出:
/usage
它會告訴你,現在這次對話用掉了多少 token1。
看到數字,你就能判斷:是真的快滿了,還是其實離上限還很遠?
如果離上限還遠、卻還是報錯,那八成不是「聊太多」的問題,而是下面要講的設定沒填對。
第三步:改設定檔,從根本解決
這一步,對用本地模型、或自己架伺服器的人特別重要。
先解釋一下。「本地模型」是指這個 AI 不是跑在別人的雲端上,而是跑在你自己的電腦或你自己架的伺服器上。「自架 endpoint」的 endpoint(連線點,就是你的程式去要答案的那個網路位置)也是類似的意思,你自己準備了一個地方讓 Hermes 去問問題。
問題出在哪?Hermes 會自己猜「你的模型一次能吃多少 token」。但接到自架服務時,它常常猜不準。它可能以為你的模型只有 8K(八千個 token)的容量,實際上有 128K(十二萬八千個),結果它太早就緊張、提早報錯。
解法是:你直接告訴它正確的數字,別讓它自己猜。
用文字編輯器打開這個檔案。Hermes 官方 Configuration 將 ~/.hermes/config.yaml 定義為非機密設定的存放位置2:
~/.hermes/config.yaml
小提醒:~ 代表你的個人使用者資料夾;.hermes 開頭那個點,表示它是隱藏資料夾。.yaml 是一種設定檔的格式,用「名稱: 值」一行一行寫,靠縮排(每行前面空幾格)來分層,所以縮排不能亂改。
在裡面填上這幾行:
model:
default: your-model-name
context_length: 131072
這裡的 context_length,要填你的伺服器實際撐得住的數字,不是模型「理論上最大」的那個數字1。
- 填太大:真的超過時會直接失敗。
- 填太小:白白浪費了容量。
那我怎麼知道該填多少?去看你的推論服務(inference service,就是實際在跑這個 AI 模型的那個程式,例如 Ollama、vLLM 等)啟動時設定的容量是多少。以 Ollama 為例,那個數字寫在模型的 Modelfile(Ollama 描述模型的設定檔)裡,叫 num_ctx。
📝 待補:各家本地推論服務要怎麼查自己的 context 上限,我們還沒整理好。 你如果跑過 Ollama / vLLM / LM Studio, 幫我們補上這一段。
長期習慣:別讓對話無限長下去
/compress 是緊急急救,不是天天靠它。想少撞牆,養成幾個習慣:
一件事做完,就開一個新對話。 你可能會擔心:開新的,之前的東西不就都忘光了?不會。Hermes 有一套記憶系統,會把重要資訊跨對話保存下來。所以開新對話不等於從零開始,它還記得你是誰、你的專案長什麼樣子。反過來,一直窩在同一個對話裡疊加,等於把一大堆早就處理完、用不到的細節,一路拖著走,越拖越重。
別把大檔案整份貼進去。 讓 agent 自己用工具去讀它需要的那一小段,比你把整份檔案貼上去有效率得多。
留意工具吐出來的東西。 有些指令一跑就會噴出一大片內容,例如 ls -R(列出一個資料夾底下所有東西,連子資料夾一層層全列)或一份完整的 log(執行紀錄)。這些一下就吃掉一堆 token,而且那些內容大多看完就沒用了。
常見問題
為什麼有時候對話才剛開始就報錯?
多半是你設定的 context_length 填得比伺服器實際能力還大,於是第一次送出請求就超過了。把設定值改小一點再試。
換成容量更大的模型,能解決嗎?
能拖久一點,但不能根治。對話夠長,終究還是會撞牆。搭配 /compress、加上適時開新對話,才是穩定的做法。
壓縮之後,agent 好像忘記事情了,怎麼辦?
這很正常,摘要一定會犧牲一些細節。把關鍵資訊再講一次就好。真正重要、你希望它一直記得的東西,應該讓它寫進記憶系統,而不是留在這次對話裡。
下一步
- 設定模型跟本地 endpoint → 模型供應商與 API key 設定
- 遇到別的錯誤 → 疑難排解總覽
Footnotes
-
Nous Research, FAQ:https://hermes-agent.nousresearch.com/docs/reference/faq (2026-07-23 存取) ↩ ↩2 ↩3
-
Nous Research, Configuration: https://hermes-agent.nousresearch.com/docs/user-guide/configuration (2026-08-30 存取)。 ↩