OpenClaw lossless-claw 插件依赖问题解决
条评论最近在折腾 OpenClaw 时遇到了一个插件加载问题。系统启动时总是提示 “Context engine ‘lossless-claw’ is not registered. Available engines: legacy.”,导致上下文引擎只能回退到 legacy 模式。虽然基本功能不受影响,但 lossless-claw 提供的 DAG-based 对话摘要、增量压缩等高级功能无法使用。研究了一番,发现是 peer dependency 问题,记录一下解决过程。
问题诊断
首先检查系统状态,执行 /model status 发现上下文引擎配置为 lossless-claw,但系统提示未注册。查看配置文件 openclaw.json,plugins 部分配置如下:
1 | "plugins": { |
配置没问题,那问题出在哪里?进入插件目录检查依赖情况:
1 | cd "C:\Program Files\QClaw\resources\openclaw\config\extensions\lossless-claw" |
输出结果发现了问题:
1 | @martian-engineering/lossless-claw@0.3.0 |
原来是 openclaw 包这个 peer dependency 没有满足。peer dependency 是 npm 的一种依赖类型,要求宿主环境提供这个包,而不是由插件自己安装。lossless-claw 需要主程序提供 openclaw 包,但插件目录的 node_modules 里没有找到。
解决方案
方案一:在系统目录创建符号链接(失败)
首先想到的是在系统目录创建符号链接。OpenClaw 主包存在于:
1 | C:\Program Files\QClaw\resources\openclaw\node_modules\openclaw |
尝试创建符号链接:
1 | $src = "C:\Program Files\QClaw\resources\openclaw\node_modules\openclaw" |
结果提示权限不足。C:\Program Files 目录需要管理员权限,而 QClaw 的安全策略拦截了提权操作。
方案二:复制插件到用户目录(成功)
既然系统目录无法写入,那就把插件复制到用户目录。用户目录有完全的读写权限,可以自由管理。
第一步:创建用户插件目录并复制文件
1 | $srcPath = "C:\Program Files\QClaw\resources\openclaw\config\extensions\lossless-claw" |
第二步:安装依赖
1 | cd "C:\Users\hao\.qclaw\extensions\lossless-claw" |
等待安装完成,输出:
1 | added 621 packages, changed 21 packages, and audited 796 packages in 29s |
第三步:验证依赖
1 | cd "C:\Users\hao\.qclaw\extensions\lossless-claw" |
输出结果:
1 | @martian-engineering/lossless-claw@0.3.0 |
所有依赖都已满足!可以看到 openclaw@2026.4.15 已经成功安装。
更新配置
依赖问题解决了,接下来需要告诉 OpenClaw 去用户目录加载插件。修改 C:\Users\hao\.qclaw\openclaw.json:
1 | "plugins": { |
主要修改了两处:
plugins.load.paths新增了用户插件目录plugins.slots.contextEngine恢复为lossless-claw
保存配置后重启 OpenClaw:
1 | openclaw gateway restart |
重启完成后执行 /model status,一切正常,不再有错误提示。
验证结果
对比修复前后:
| 项目 | 修复前 | 修复后 |
|---|---|---|
| 上下文引擎 | ❌ 未注册,回退到 legacy | ✅ lossless-claw 正常运行 |
| 插件位置 | 系统目录(无写权限) | 用户目录(完全控制) |
| 依赖状态 | ❌ 缺少 openclaw 包 | ✅ 所有依赖已满足 |
| 高级功能 | ❌ 不可用 | ✅ DAG 摘要、增量压缩可用 |
lossless-claw 的优势
相比 legacy 引擎,lossless-claw 提供了更强大的上下文管理能力:
- DAG-based 对话摘要:基于有向无环图的历史管理,保留对话结构
- 增量压缩:渐进式上下文压缩,减少信息丢失
- 更好的记忆连续性:长对话中保持关键信息
- 优化的 token 利用率:更高效地使用上下文窗口
总结
这次问题解决了,主要经验是:
- 遇到 npm 依赖问题,先用
npm list诊断 - 系统目录权限受限时,考虑迁移到用户目录
- peer dependency 需要宿主环境提供,可以用
npm install安装到本地 - 修改配置后记得重启服务
另外,用户目录 ~/.qclaw/extensions/ 是一个很好的插件管理位置,有完全的写入权限,方便后续更新和维护。