上下文
「上下文」就是 OpenClaw 在一次執行中送給模型的所有內容。它受到模型上下文視窗(token 上限)的限制。
初學者的心智模型:
- 系統提示詞(OpenClaw 建構):規則、工具、skills 清單、時間/執行環境資訊,以及注入的工作區檔案。
- 對話歷史:你的訊息 + 助理在這個 session 中的訊息。
- 工具呼叫/結果 + 附件:指令輸出、檔案讀取、圖片/音訊等。
上下文_不等於_「記憶」:記憶可以存到磁碟並在之後重新載入;上下文是模型目前視窗裡的東西。
快速入門(檢視上下文)
/status→ 快速查看「我的視窗用了多少?」以及 session 設定。/context list→ 已注入的內容 + 大概大小(每個檔案 + 總計)。/context detail→ 更深入的分析:每個檔案、每個工具 schema 大小、每個 skill 項目大小、系統提示詞大小。/usage tokens→ 在正常回覆後附加每次回覆的用量。/compact→ 將較舊的歷史摘要成壓縮條目,釋放視窗空間。
另請參閱:Slash commands、Token use & costs、Compaction。
範例輸出
實際數值會因模型、provider、工具原則和工作區內容而異。
/context list
🧠 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
/context detail
🧠 Context breakdown (detailed)
…
Top skills (prompt entry size):
- frontend-design: 412 chars (~103 tok)
- oracle: 401 chars (~101 tok)
… (+10 more skills)
Top tools (schema size):
- browser: 9,812 chars (~2,453 tok)
- exec: 6,240 chars (~1,560 tok)
… (+N more tools)
哪些東西計入上下文視窗
模型收到的所有內容都計入,包括:
- 系統提示詞(所有區段)。
- 對話歷史。
- 工具呼叫 + 工具結果。
- 附件/轉錄(圖片/音訊/檔案)。
- 壓縮摘要和修剪產物。
- Provider 的「包裝」或隱藏標頭(看不到但仍然計數)。
OpenClaw 如何建構系統提示詞
系統提示詞由 OpenClaw 掌控,每次執行時重新建構。包含:
- 工具清單 + 簡短說明。
- Skills 清單(僅中繼資料,見下方說明)。
- 工作區位置。
- 時間(UTC + 使用者設定時區的轉換值)。
- 執行環境中繼資料(主機/作業系統/模型/thinking)。
- 在 Project Context 下注入的工作區引導檔案。
完整說明:System Prompt。
注入的工作區檔案(Project Context)
OpenClaw 預設會注入一組固定的工作區檔案(如果存在的話):
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(僅首次執行)
大型檔案會按照 agents.defaults.bootstrapMaxChars(預設 20000 字元)逐檔截斷。OpenClaw 也透過 agents.defaults.bootstrapTotalMaxChars(預設 150000 字元)對所有檔案的總注入量設上限。/context 會顯示原始 vs 注入的大小,以及是否發生了截斷。
截斷發生時,執行環境可以在 Project Context 下注入一個提示詞內警告區塊。透過 agents.defaults.bootstrapPromptTruncationWarning 設定(off、once、always;預設 once)。
Skills:注入的 vs 按需載入的
系統提示詞包含一份精簡的 skills 清單(名稱 + 說明 + 位置)。這份清單有實際的開銷。
Skill 的指令預設_不會_包含。模型應該只在需要時才 read skill 的 SKILL.md。
工具:兩種成本
工具以兩種方式影響上下文:
- 系統提示詞中的工具清單文字(你看到的「Tooling」部分)。
- 工具 schema(JSON)。這些會送給模型讓它能呼叫工具。它們計入上下文,即使你看不到純文字形式。
/context detail 會列出最大的工具 schema,讓你看到是什麼佔了最多空間。
指令、指示詞與「行內快捷方式」
斜線指令由 Gateway 處理。有幾種不同的行為:
- 獨立指令:整則訊息只有
/...時,作為指令執行。 - 指示詞:
/think、/verbose、/reasoning、/elevated、/model、/queue在模型看到訊息前會被剝除。- 純指示詞的訊息會持久化 session 設定。
- 在正常訊息中的行內指示詞會作為單次訊息的提示。
- 行內快捷方式(僅限授權發送者):正常訊息中的某些
/...token 可以立即執行(例如:「hey /status」),執行後從訊息中剝除,剩餘文字才送給模型。
細節:Slash commands。
Sessions、壓縮與修剪(什麼會持久化)
跨訊息持久化的內容取決於機制:
- 正常歷史持久化在 session 對話記錄中,直到被壓縮/修剪原則處理。
- 壓縮將摘要持久化到對話記錄中,保留近期訊息完整。
- 修剪從某次執行的_記憶體中_提示詞移除舊的工具結果,但不會改寫對話記錄。
文件:Session、Compaction、Session pruning。
OpenClaw 預設使用內建的 legacy 上下文引擎進行組裝和壓縮。如果你安裝了提供 kind: "context-engine" 的外掛並透過 plugins.slots.contextEngine 選取它,OpenClaw 會將上下文組裝、/compact 和相關子 agent 上下文生命週期 hook 委派給該引擎。
/context 實際回報的是什麼
/context 偏好使用最新的執行時建構系統提示詞報告(如果有的話):
System prompt (run)= 從最後一次嵌入式(有工具能力的)執行中擷取,並持久化在 session 儲存區。System prompt (estimate)= 當沒有執行報告存在時即時計算(或使用不會產生報告的 CLI 後端時)。
無論哪種方式,都會回報大小和主要貢獻者;它不會傾印完整的系統提示詞或工具 schema。