搞懂 OpenClaw 的 Context:為什麼你的模型會「斷片」?
你有沒有遇過這種情況?正當你跟 AI 討論到關鍵細節時,它突然忘了前幾秒才說過的內容,或是直接噴出 Token 超限的錯誤。這通常不是模型變笨了,而是 Context 管理出了問題。開發時最頭痛的就是如何讓模型在有限的「視窗」內,既能記住重要規則,又不浪費空間。
在 OpenClaw 中,Context 指的是每一次執行(Run)時發送給模型的所有內容。它受限於模型的 Context Window(Token 限制)。你可以把它想像成模型的「短期記憶」,一旦滿了,舊的資訊就得讓位。
需要準備的東西
Section titled “需要準備的東西”- 一個運行中的 OpenClaw 環境
- 至少一個已開啟的 Session
- 對基礎 Slash commands 的操作權限
Quick Start: 5 分鐘掌握 Context 狀態
Section titled “Quick Start: 5 分鐘掌握 Context 狀態”想知道你的 Context 現在是什麼狀況?直接在對話框輸入以下指令:
- 檢查容量:輸入
/status快速查看視窗佔用比例與 Session 設定。 - 查看清單:輸入
/context list查看哪些檔案被注入了,以及它們的大致大小。 - 深度解析:輸入
/context detail查看更細緻的拆解,包含每個 Tool 的 Schema 大小和 System Prompt 的佔比。 - 自動顯示:輸入
/usage tokens,之後每次回覆下方都會附帶 Token 使用統計。
如果你發現視窗快滿了,可以輸入 /compact。這會將舊的對話歷史壓縮成簡短摘要,騰出空間給新的對話。
範例輸出:/context list
Section titled “範例輸出:/context list”當你執行指令時,你會看到類似這樣的結構:
🧠 Context breakdownWorkspace: <workspaceDir>Bootstrap max/file: 20,000 charsSandbox: mode=non-main sandboxed=falseSystem 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,000Context 裡面到底裝了什麼?
Section titled “Context 裡面到底裝了什麼?”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(遺失)。
檔案內容不完整或被截斷
Section titled “檔案內容不完整或被截斷”如果你在 /context list 看到檔案標示為 TRUNCATED,代表檔案超過了字元限制。
- 解決方案:檢查你的
agents.defaults.bootstrapMaxChars設定,或精簡該 Markdown 檔案的內容。
模型不知道如何使用某個工具
Section titled “模型不知道如何使用某個工具”有時候模型看得到工具名稱,卻無法正確呼叫。
- 解決方案:使用
/context detail檢查 Tool schemas (JSON)。雖然這些內容在一般對話中看不到,但它們會佔用 Token。如果 Schema 太過複雜或被截斷,模型就無法正確解析 API 格式。
指令被模型「看見」了
Section titled “指令被模型「看見」了”有時候你輸入指令,模型卻把它當成對話的一部分。
- 解決方案:確保指令格式正確。
Standalone commands(如/status)必須單獨一行發送。如果是Directives(如/think,/model),Gateway 會在發送給模型前將其移除,不佔用 Context。
想要更自動化的設定建議嗎?試試我們的 AI Setup Assistant。
OpenClaw Expert
還是卡住了?
如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。