上下文視窗與壓縮
每個模型都有上下文視窗(能看到的最大 token 數)。長時間的聊天會不斷累積訊息和工具結果;一旦視窗空間吃緊,OpenClaw 就會壓縮較舊的歷史記錄,確保不超出限制。
壓縮是什麼
壓縮會將較舊的對話摘要成一個精簡的摘要條目,同時保留近期訊息不動。摘要會存進 session 歷史中,後續請求使用的是:
- 壓縮摘要
- 壓縮點之後的近期訊息
壓縮會持久化到 session 的 JSONL 歷史中。
設定
在 openclaw.json 中使用 agents.defaults.compaction 設定壓縮行為(模式、目標 token 數等)。
壓縮摘要預設會保留不透明的識別碼(identifierPolicy: "strict")。你可以用 identifierPolicy: "off" 關閉,或用 identifierPolicy: "custom" 搭配 identifierInstructions 提供自訂文字。
你也可以透過 agents.defaults.compaction.model 指定不同的模型來產生壓縮摘要。當你的主要模型是本地或小型模型,想讓壓縮摘要由更強的模型生成時,這很有用。此設定接受任何 provider/model-id 字串:
{
"agents": {
"defaults": {
"compaction": {
"model": "openrouter/anthropic/claude-sonnet-4-5"
}
}
}
}
也適用於本地模型,例如專門做摘要的第二個 Ollama 模型,或經過微調的壓縮專用模型:
{
"agents": {
"defaults": {
"compaction": {
"model": "ollama/llama3.1:8b"
}
}
}
}
未設定時,壓縮使用 agent 的主要模型。
自動壓縮(預設開啟)
當 session 接近或超過模型的上下文視窗時,OpenClaw 會觸發自動壓縮,並可能使用壓縮後的上下文重試原始請求。
你會看到:
- verbose 模式下顯示
🧹 Auto-compaction complete /status顯示🧹 Compactions: <count>
在壓縮之前,OpenClaw 可以執行一次靜默記憶刷寫回合,將持久性的筆記寫到磁碟。請參閱 Memory 瞭解細節和設定。
手動壓縮
使用 /compact(可選附帶指示)強制執行一次壓縮:
/compact Focus on decisions and open questions
上下文視窗來源
上下文視窗是模型專屬的。OpenClaw 使用已設定 provider 目錄中的模型定義來決定限制值。
壓縮 vs 修剪
- 壓縮:摘要化並持久化到 JSONL。
- Session 修剪:僅在記憶體中、以每次請求為單位修剪舊的工具結果。
請參閱 /concepts/session-pruning 瞭解修剪細節。
OpenAI 伺服器端壓縮
OpenClaw 也支援 OpenAI Responses 伺服器端壓縮提示,適用於相容的 OpenAI 直連模型。這和 OpenClaw 本地壓縮是分開的,兩者可以並行運作。
- 本地壓縮:OpenClaw 做摘要並持久化到 session JSONL。
- 伺服器端壓縮:當啟用
store+context_management時,OpenAI 在 provider 端壓縮上下文。
請參閱 OpenAI provider 瞭解模型參數與覆寫選項。
使用建議
- 當 session 感覺遲鈍或上下文臃腫時,用
/compact。 - 大型工具輸出已經會被截斷;修剪能進一步減少工具結果的累積。
- 如果需要全新開始,
/new或/reset會啟動一個新的 session。