OpenClaw v2026.3.7 ContextEngine 完整指南:從升級到自訂插件開發
你的 OpenClaw Agent 跑到一半突然「失憶」,忘記五分鐘前討論的內容?這不是偶發 bug,而是長對話上下文管理的根本問題。v2026.3.7 帶來的 ContextEngine 可插拔架構,讓你第一次能自己決定上下文怎麼壓縮、怎麼組裝。這篇帶你從升級、設定到寫出第一個自訂插件,順便修掉 ClawJacked 安全漏洞。
TL;DR
- ContextEngine 是 v2026.3.7 最大亮點:可插拔的上下文管理架構,提供 7 個生命週期 Hooks
- 不裝插件 = 零行為變更,向後完全相容,可以安心升級
- lossless-claw 是目前最成熟的 ContextEngine 插件,用 DAG 樹狀結構實現無損上下文壓縮
- ClawJacked 安全漏洞影響舊版,升級到 v2026.3.7 同時修復
- 新增 GPT-5.4 與 Gemini Flash 3.1 模型支援
ContextEngine 解決了什麼問題
如果你用過 OpenClaw 跑長時間任務,應該遇過這個情境:Agent 在第 30 分鐘的回覆完全忽略了第 5 分鐘的討論重點。這不是模型笨,而是上下文壓縮機制在搞鬼。
舊版 OpenClaw 的 context compaction 是硬編碼的「有損壓縮」。當對話達到 token 上限時,系統直接丟棄舊訊息或粗略總結,關鍵的對話細節和時序就這樣消失了。更麻煩的是,這種壓縮邏輯寫死在核心程式碼裡,開發者完全無法客製化。
根據實測,這導致兩個具體問題:
- Agent 漂移:長時間運行後,Agent 開始回應上一條訊息而非當前訊息,對話完全錯位
- 記憶體黑洞:重置後 context 丟失、history 被截斷,之前的工作成果蒸發
ContextEngine 的設計哲學很直接:把上下文管理的決定權從核心程式碼交給開發者。透過可插拔介面,你可以註冊自己的壓縮策略、組裝邏輯,甚至完全取代預設行為。
ContextEngine 架構與生命週期
ContextEngine 採用 Slot-based registry + config-driven resolution 架構。簡單說:你在設定檔指定要用哪個插件,系統就自動把上下文管理工作委派給它。
核心是 7 個生命週期 Hooks,涵蓋上下文從建立到銷毀的完整過程:
| Hook | 觸發時機 | 用途 |
|---|---|---|
bootstrap | 引擎初始化時 | 載入持久化狀態、建立 DB 連線 |
ingest | 新訊息進入時 | 預處理、分類、標記重要性 |
assemble | 組裝 prompt 前 | 決定哪些內容送進最終 prompt |
compact | token 接近上限時 | 壓縮或摘要舊對話 |
afterTurn | 每輪對話結束後 | 後處理、更新統計、清理暫存 |
prepareSubagentSpawn | 子代理啟動前 | 為子代理準備隔離的 context scope |
onSubagentEnded | 子代理結束後 | 回收子代理產出,合併回主 context |
實務建議:大多數場景只需實作前四個核心 Hooks(bootstrap、ingest、assemble、compact)。子代理相關的兩個 Hooks 只在你需要建立隔離記憶區塊時才用到,底層透過 AsyncLocalStorage 實現 scoped subagent runtime。
沒裝插件時,系統自動載入 LegacyContextEngine wrapper,保留舊版所有行為,確保零行為變動。
升級與啟用 ContextEngine 實戰步驟
整個過程大約 5 分鐘。如果你還在用 v2026.2.26 之前的版本,這次升級同時修掉 ClawJacked 安全漏洞,沒有理由不升。
Step 1:備份設定檔
cp -r ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak
cp -r ~/.openclaw/credentials/ ~/.openclaw/credentials.bak/
Step 2:執行升級
推薦用 CLI 內建指令:
openclaw update
指定版本(如果你不想直接跳到最新):
openclaw update --tag 2026.3.7
也可以用 npm:
npm i -g openclaw@2026.3.7
Step 3:健康檢查
openclaw doctor # 自動執行遷移與修復
openclaw health # 確認服務正常
Breaking Change 注意:如果你同時設定了
gateway.auth.token和gateway.auth.password,升級前必須在設定檔中將gateway.auth.mode明確設為token或password,否則會啟動失敗。
Step 4:安裝 ContextEngine 插件
openclaw plugins install lossless-claw
安裝程式會自動將設定檔中的 plugins.slots.contextEngine 指定為 "lossless-claw"。
Step 5:重啟並驗證
openclaw gateway restart
重啟後,lossless-claw 會自動在背景運作。如果你還不確定要不要用插件,跳過 Step 4 即可,系統行為跟舊版完全一樣。
自訂插件開發與 lossless-claw 實戰
lossless-claw 如何運作
lossless-claw 是目前最成熟的 ContextEngine 插件,由 Martian Engineering 開發。它的核心概念:用 DAG(有向無環圖)樹狀結構在背景不斷將舊訊息總結,同時把所有原始訊息保留在 SQLite 資料庫中。
當 AI 代理需要回顧細節時,它可以主動將總結「展開」回原始對話。根據官方文件,啟用後 Context 穩定維持在 3 萬到 10 萬 Token 的安全範圍內,不再有失憶問題。
環境需求:Node.js 22+,以及設定好的 LLM 供應商(OpenAI、Anthropic 等)。
效能微調
lossless-claw 提供幾個關鍵環境變數:
# 在 context 達 75% 時提早觸發壓縮(預設 100%)
LCM_CONTEXT_THRESHOLD=0.75
# 指定壓縮用的模型(預設沿用主系統設定)
LCM_SUMMARY_MODEL=openai/gpt-5.4
# 指定供應商
LCM_SUMMARY_PROVIDER=openai
根據實測,將 threshold 降到 0.75 可以保留更多空間給 AI 生成回覆,減少壓縮過程中的資訊損失。
從 lossless-claw 學習自訂插件
想寫自己的 ContextEngine 插件?從 lossless-claw 原始碼和 GitHub Discussion #22251 開始是最快的路徑。
關鍵步驟:
- 宣告插件類型:在插件設定中加入
kind: "context-engine" - 實作 Hooks:至少實作
bootstrap、ingest、assemble、compact四個核心 Hooks - 註冊插件:透過
plugins.slots.contextEngine設定項指定你的插件名稱
// 插件結構範例(簡化版)
export default {
kind: "context-engine",
hooks: {
bootstrap: async (ctx) => { /* 初始化你的儲存層 */ },
ingest: async (ctx, message) => { /* 處理新訊息 */ },
assemble: async (ctx) => { /* 組裝最終 prompt */ },
compact: async (ctx) => { /* 你的壓縮邏輯 */ },
}
}
安全升級:ClawJacked 漏洞與修復
如果你還在用 v2026.2.26 之前的版本,除了功能升級,安全問題更需要立即處理。
ClawJacked 是由 Oasis Security 發現的高危險性漏洞。攻擊方式:惡意網站透過 JavaScript 開啟連向你本機 localhost 的 WebSocket 連線,利用 Gateway 對 localhost 豁免速率限制的設計缺陷,以每秒數百次的速度暴力破解管理員密碼。
成功後,攻擊者取得完整控制權:
- 竊取 API 金鑰
- 讀取私人訊息(messaging apps、calendars)
- 對連接的裝置執行任意 Shell 指令
整個過程用戶完全無感知。根據 BleepingComputer 報導,攻擊者成功後還會自動註冊為信任設備,無需用戶確認。
修復方式:升級到 v2026.2.26 以上版本。如果你要升級,不如直接跳到 v2026.3.7,功能和安全一次到位。
結論
ContextEngine 讓 OpenClaw 的上下文管理從「被動接受」變成「主動掌控」。不管你是想解決長對話失憶問題、需要為特定場景客製壓縮策略,還是單純想修掉 ClawJacked 安全漏洞,升級到 v2026.3.7 都是現在最該做的事。
如果你是第一次接觸 OpenClaw,可以先看我們的 OpenClaw 完整安裝教學打好基礎。已經在用的開發者,從 openclaw update 開始,裝上 lossless-claw 體驗無損上下文管理,再逐步探索自訂插件開發的可能性。
FAQ
升級到 v2026.3.7 會不會破壞我現有的 Agent?
大致向後相容。未啟用 ContextEngine 插件時,系統自動使用 LegacyContextEngine,行為與舊版完全相同。唯一需注意的 Breaking Change:若你同時設定了 gateway.auth.token 和 gateway.auth.password,升級前須將 gateway.auth.mode 明確設為 token 或 password,否則會啟動失敗。
ContextEngine 支援 GPT-5.4 和 Gemini Flash 3.1,切換模型需要改設定嗎?
v2026.3.7 已自動將預設模型別名指向 openai/gpt-5.4 與 gemini-3.1 預覽版,不需手動修改。如果你安裝了 lossless-claw 等 ContextEngine 插件,它會預設沿用主系統模型設定。只有當你想為背景壓縮任務指定不同模型時,才需設定 LCM_SUMMARY_MODEL 環境變數。
不裝任何 ContextEngine 插件,v2026.3.7 的行為跟舊版完全一樣嗎?
完全一樣。未安裝或配置 ContextEngine 插件時,系統預設使用內建的 LegacyContextEngine 模組,保留舊版原有的上下文組裝與壓縮邏輯,零行為變動。你可以先安心升級,之後再決定要不要啟用插件。



