HermesAgent
GitHub ↗

看到 context length exceeded 怎麼辦

📅 2026年7月23日 適用版本 >=2026.5 ✅ 最後驗證 2026年7月4日 ✍️ HermesAgent.download Contributors

想像你正在做一件事做到一半。你的 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 好像忘記事情了,怎麼辦?

這很正常,摘要一定會犧牲一些細節。把關鍵資訊再講一次就好。真正重要、你希望它一直記得的東西,應該讓它寫進記憶系統,而不是留在這次對話裡。

下一步

Footnotes

  1. Nous Research, FAQ:https://hermes-agent.nousresearch.com/docs/reference/faq (2026-07-23 存取) 2 3

  2. Nous Research, Configuration: https://hermes-agent.nousresearch.com/docs/user-guide/configuration (2026-08-30 存取)。

官方來源