跳到內容

搞懂 OpenClaw 的 Context:為什麼你的模型會「斷片」?

你有沒有遇過這種情況?正當你跟 AI 討論到關鍵細節時,它突然忘了前幾秒才說過的內容,或是直接噴出 Token 超限的錯誤。這通常不是模型變笨了,而是 Context 管理出了問題。開發時最頭痛的就是如何讓模型在有限的「視窗」內,既能記住重要規則,又不浪費空間。

在 OpenClaw 中,Context 指的是每一次執行(Run)時發送給模型的所有內容。它受限於模型的 Context Window(Token 限制)。你可以把它想像成模型的「短期記憶」,一旦滿了,舊的資訊就得讓位。

  • 一個運行中的 OpenClaw 環境
  • 至少一個已開啟的 Session
  • 對基礎 Slash commands 的操作權限

Quick Start: 5 分鐘掌握 Context 狀態

Section titled “Quick Start: 5 分鐘掌握 Context 狀態”

想知道你的 Context 現在是什麼狀況?直接在對話框輸入以下指令:

  1. 檢查容量:輸入 /status 快速查看視窗佔用比例與 Session 設定。
  2. 查看清單:輸入 /context list 查看哪些檔案被注入了,以及它們的大致大小。
  3. 深度解析:輸入 /context detail 查看更細緻的拆解,包含每個 Tool 的 Schema 大小和 System Prompt 的佔比。
  4. 自動顯示:輸入 /usage tokens,之後每次回覆下方都會附帶 Token 使用統計。

如果你發現視窗快滿了,可以輸入 /compact。這會將舊的對話歷史壓縮成簡短摘要,騰出空間給新的對話。

當你執行指令時,你會看到類似這樣的結構:

🧠 Context breakdown
Workspace: <workspaceDir>
Bootstrap max/file: 20,000 chars
Sandbox: mode=non-main sandboxed=false
System prompt (run): 38,412 chars (~9,603 tok) (Project Context 23,901 chars (~5,976 tok))
Injected workspace files:
- AGENTS.md: OK | raw 1,742 chars (~436 tok) | injected 1,742 chars (~436 tok)
- SOUL.md: OK | raw 912 chars (~228 tok) | injected 912 chars (~228 tok)
- TOOLS.md: TRUNCATED | raw 54,210 chars (~13,553 tok) | injected 20,962 chars (~5,241 tok)
- IDENTITY.md: OK | raw 211 chars (~53 tok) | injected 211 chars (~53 tok)
- USER.md: OK | raw 388 chars (~97 tok) | injected 388 chars (~97 tok)
- HEARTBEAT.md: MISSING | raw 0 | injected 0
- BOOTSTRAP.md: OK | raw 0 chars (~0 tok) | injected 0 chars (~0 tok)
Skills list (system prompt text): 2,184 chars (~546 tok) (12 skills)
Tools: read, edit, write, exec, process, browser, message, sessions_send, …
Tool list (system prompt text): 1,032 chars (~258 tok)
Tool schemas (JSON): 31,988 chars (~7,997 tok) (counts toward context; not shown as text)
Tools: (same as above)
Session tokens (cached): 14,250 total / ctx=32,000

OpenClaw 每次都會重新構建 System Prompt。這包含:

  • Project Context:自動注入的 Workspace 檔案(如 AGENTS.md, SOUL.md, TOOLS.md 等)。
  • 對話歷史:你與 Assistant 之前的來回訊息。
  • Tool 資訊:包含 Tool 的文字描述,以及模型呼叫 API 時需要的 JSON Schema(這部分通常佔用很大空間)。
  • Skills 清單:僅包含名稱與描述。模型只有在需要時才會透過 read 指令去讀取具體的 SKILL.md 內容。

需要注意的是,大型檔案會被截斷。預設上限是由 agents.defaults.bootstrapMaxChars 設定(通常是 20,000 字元)。你可以透過 /context list 檢查檔案狀態是 OK、TRUNCATED(已截斷)還是 MISSING(遺失)。

如果你在 /context list 看到檔案標示為 TRUNCATED,代表檔案超過了字元限制。

  • 解決方案:檢查你的 agents.defaults.bootstrapMaxChars 設定,或精簡該 Markdown 檔案的內容。

有時候模型看得到工具名稱,卻無法正確呼叫。

  • 解決方案:使用 /context detail 檢查 Tool schemas (JSON)。雖然這些內容在一般對話中看不到,但它們會佔用 Token。如果 Schema 太過複雜或被截斷,模型就無法正確解析 API 格式。

有時候你輸入指令,模型卻把它當成對話的一部分。

  • 解決方案:確保指令格式正確。Standalone commands(如 /status)必須單獨一行發送。如果是 Directives(如 /think, /model),Gateway 會在發送給模型前將其移除,不佔用 Context。

想要更自動化的設定建議嗎?試試我們的 AI Setup Assistant。

OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。