OpenClaw 的 DAG 式對話壓縮插件 — 讓 AI 記住一切,不再遺忘。
當對話超過模型的上下文窗口時,傳統做法是截斷舊訊息。lossless-claw 改用 DAG(有向無環圖)式摘要系統:
lossless-claw 支援主模型與摘要模型分離:
| 角色 | 模型範例 | 說明 |
|---|---|---|
| 主模型 | Claude Opus / Sonnet | 處理對話 |
| LCM 摘要 | MiniMax M2.7 HS | 生成摘要,節省成本 |
| LCM 展開 | MiniMax M2.7 HS | 展開摘要細節 |
# 安裝
openclaw plugins install lossless-claw
# 啟用
openclaw plugins enable lossless-claw
# 設為上下文引擎
# 在 openclaw.json 中加入:
# "plugins": { "slots": { "contextEngine": "lossless-claw" } }
{
"plugins": {
"slots": {
"contextEngine": "lossless-claw"
},
"entries": {
"lossless-claw": {
"config": {
"summaryModel": "minimax/MiniMax-M2.7-highspeed",
"summaryProvider": "minimax",
"expansionModel": "minimax/MiniMax-M2.7-highspeed",
"expansionProvider": "minimax",
"contextThreshold": 0.75
}
}
}
}
}
runtime.llm.completeLCM 摘要現在透過 OpenClaw host-owned runtime.llm.complete 執行。lossless-claw 只提出摘要模型 override 請求;provider dispatch、憑證解析、OAuth refresh、usage attribution 都由 OpenClaw runtime 負責。
如果設定 summaryModel、largeFileSummaryModel 或 fallbackProviders,需要在 plugins.entries.lossless-claw.llm 中允許對應的 model override。
stripAuthErrors() 假陽性修復分支: fix/summarize-strip-auth-false-positive
問題:壓縮包含 "401"/"authentication_error" 等字眼的對話時,pickAuthInspectionValue() 會將對話內容誤判為真正的 auth error,產生假的 [lcm] compaction failed: provider auth error 日誌。
根因:summarize.ts 第 390 行,當 regex 沒匹配到 auth-related key 時,fallback 回原始 value,導致下游 extractProviderAuthFailure() 從對話內容中誤偵測到 auth 失敗。
修復:改為回傳空物件 {},避免假陽性。
| 機器 | 主模型 | LCM 模型 | Summaries | 漂移 | Errors |
|---|---|---|---|---|---|
| Scott#4 | Claude Opus | M2.7 HS | 200+ | 零 | 零 |
| Scott#2 | Claude Opus | M2.7 HS | 40+ | 零 | 零 |
| 倉庫 | 說明 |
|---|---|
| Martian-Engineering/lossless-claw | 上游原始倉庫 |
| openclaw/openclaw | OpenClaw 主專案 |
| catgodtwno4/openclaw-five-layer-memory-nas | 五層記憶棧 NAS 部署指南 |
| catgodtwno4/openclaw-dashboard | OpenClaw Dashboard |
MIT
$ claude mcp add lossless-claw \
-- python -m otcore.mcp_server <graph>