Memory-Palace-Openclaw 解读
Memory Palace Openclaw 解读 一句话:这不是给 OpenClaw 随便补一个 MEMORY.md 的小插件,而是一个“TypeScript 插件 + Python/FastAPI 后端 + React Dashboard + SQLite 检索/写入守卫/审查回滚”的完整记忆子系统。来源:README.md:8, extensions/memory palace/packag…
Memory-Palace-Openclaw 解读
一句话:这不是给 OpenClaw 随便补一个 MEMORY.md 的小插件,而是一个“TypeScript 插件 + Python/FastAPI 后端 + React Dashboard + SQLite 检索/写入守卫/审查回滚”的完整记忆子系统。来源:README.md:8, extensions/memory-palace/package.json:2,7,48-52, backend/main.py:600-620, frontend/package.json:2,7,12,25,30
这项目到底是什么
- README 直接把项目定义为 “OpenClaw memory plugin + bundled skills for durable memory”。来源:README.md:8
- Quickstart 和 chat-first onboarding 明确表明它面向真实安装与接入,而不是只供阅读的 demo。来源:README.md:40,61,75,84,214-216
- 阮一峰周刊 issue 9651 把它包装成 “OpenClaw 的更强长期记忆系统”;这个判断大体成立,但要区分“仓库已证实能力”和“issue 宣传语”。来源:https://github.com/ruanyf/weekly/issues/9651
已确认的主架构
1) OpenClaw 插件层
- 插件包名是
@openclaw/memory-palace。来源:extensions/memory-palace/package.json:2 - Node 入口是
./dist/index.js。来源:extensions/memory-palace/package.json:7 - 发布包暴露了
memory-palace-openclaw启动入口。来源:extensions/memory-palace/package.json:48-49 peerDependencies要求openclaw >=2026.3.2。来源:extensions/memory-palace/package.json:51-52
2) Python 后端
- 后端主入口直接创建
FastAPI应用。来源:backend/main.py:600-605 - 同一入口注册 review / browse / maintenance 三组路由,说明后端不只是单一 MCP 转发层。来源:backend/main.py:617-620
- 存储依赖包含 SQLAlchemy 与 aiosqlite。来源:backend/requirements.txt:11-12
3) Dashboard 前端
- 前端包名是
memory-palace-dashboard。来源:frontend/package.json:2 - 使用 Vite。来源:frontend/package.json:7
- 使用 React 18。来源:frontend/package.json:30
- 引入
diff包,且 E2E 使用 Playwright。来源:frontend/package.json:12,25 - 官方 Dashboard 指南明确写它是插件的 “companion operations surface”,并覆盖 setup / memory / review / maintenance / observability 五页。来源:docs/openclaw-doc/16-DASHBOARD_GUIDE.en.md:11,16,114-128,138,254
- E2E 测试名也直接写了五页覆盖。来源:frontend/e2e/dashboard-five-pages.spec.ts:22
已确认的核心能力
1) 视觉记忆:不是空宣传,但“全网唯一”没法仅靠本仓库证明
visual-memory.ts会把 enrichment 输出解析成summary / ocr / scene / whyRelevant / entities / sourceChannel / observedAt / confidence等字段。来源:extensions/memory-palace/src/visual-memory.ts:151-162- 调用 provider 时会把
mediaRef / summary / ocr / scene / whyRelevant / entities / sourceChannel打包送入 enrichment。来源:extensions/memory-palace/src/visual-memory.ts:190-210 - merge 阶段会把
ocr / scene / entities / whyRelevant等字段写回 resolved input。来源:extensions/memory-palace/src/visual-memory.ts:329-367 - 当 OCR provider 启用且字段缺失时,会真正调用 OCR enrichment。来源:extensions/memory-palace/src/visual-memory.ts:370-387
- 所以“视觉记忆/视觉增强”在源码里是有实装证据的;但 issue 里的“全网唯一”“11 个竞品都没有”属于营销比较,本轮未逐个竞品验证。来源:https://github.com/ruanyf/weekly/issues/9651
2) 自动回忆(Auto-Recall)
auto-recall.ts定义了完整依赖接口,包括 query variant 构造、shouldRecall 判定、scoped search、host bridge recall 等。来源:extensions/memory-palace/src/auto-recall.ts:61-120- Durable memory recall 会先搜主 query,没命中再尝试 query variants。来源:extensions/memory-palace/src/auto-recall.ts:194-214
- 还存在 reflection recall lane。来源:extensions/memory-palace/src/auto-recall.ts:239-259
- 如果 durable recall 不够,会尝试 host workspace bridge recall。来源:extensions/memory-palace/src/auto-recall.ts:262-280
3) 自动捕获(Auto-Capture)
auto-capture.ts定义了自动分析、生成 capture content、生成 durable synthesis content/uri 的完整依赖接口。来源:extensions/memory-palace/src/auto-capture.ts:48-80- 实际写入时会调用
createOrMergeMemoryRecord(...),并按 category 设置 priority/disclosure/lane。来源:extensions/memory-palace/src/auto-capture.ts:353-373 - Capture 成功后还会尝试把内容 upsert 到 profile memory block。来源:extensions/memory-palace/src/auto-capture.ts:378-399
- 最终 trace 会记录
candidates与stored。来源:extensions/memory-palace/src/auto-capture.ts:495-503
4) 写入守卫(Write Guard)
- MCP 写入链路明确调用
await client.write_guard(...)。来源:backend/mcp_tool_write.py:136-145 - 还专门有
_guard_target_differs(...)检查守卫目标 URI 与请求 URI 是否不一致。来源:backend/mcp_tool_write.py:31-39 - SQLite 客户端里存在真正的
async def write_guard(...)实现。来源:backend/db/sqlite_client.py:6558-6582 - 前端
MemoryBrowser也会根据guard_action / guard_reason / guard_target_uri构造反馈。来源:frontend/src/features/memory/MemoryBrowser.jsx:53-76
5) 检索与重排
- 搜索链路显式维护
degraded_reasons。来源:backend/mcp_tool_search.py:687 - 搜索响应里显式暴露
search_api_kind与semantic_search_unavailable。来源:backend/mcp_tool_search.py:1054-1058 - SQLite retrieval mixin 中存在 candidate score 计算、MMR rerank、redundancy ratio。来源:backend/db/sqlite_client_retrieval.py:88-105,194-217,840-864
- 这说明它不是单纯关键词搜索,而是带多因素打分与去冗余重排。
6) Review / Diff / Rollback
- Review API 文件头直接写着 “Selective Rollback for Database Changes (SQLite Backend)”。来源:backend/api/review.py:1-14
- 同模块导入了
difflib。来源:backend/api/review.py:18 - 提供
/sessions会话审查接口。来源:backend/api/review.py:98-105 - 前端存在
DiffViewer,用diffLines渲染文本差异。来源:frontend/src/components/DiffViewer.jsx:1-10,20-30
7) Profile A/B/C/D + 对话式 Onboarding
- Dashboard 文档明确给出 Profile B/C/D 的分层定位。来源:docs/openclaw-doc/16-DASHBOARD_GUIDE.en.md:114-128
- Onboarding 文档明确要求流程是
memory_onboarding_status -> memory_onboarding_probe -> memory_onboarding_apply。来源:docs/openclaw-doc/18-CONVERSATIONAL_ONBOARDING.en.md:40,88-90,121,220 - 同文档要求 apply/setup 后必须执行
openclaw memory-palace verify / doctor / smoke。来源:docs/openclaw-doc/18-CONVERSATIONAL_ONBOARDING.en.md:41,203,209 onboarding-tools.ts里也有这三个工具常量。来源:extensions/memory-palace/src/onboarding-tools.ts:35-37- 评测文档则把 A/B/C/D 各档 setup/probe/apply/sign-off 列成明确验证项。来源:docs/EVALUATION.en.md:19-29
对 weekly issue 的结论校正
可以直接认定基本成立的
- “这是 OpenClaw 长期记忆增强版” —— 成立。来源:README.md:8, backend/main.py:600-620, docs/openclaw-doc/16-DASHBOARD_GUIDE.en.md:11,16
- “有 Dashboard” —— 成立。来源:docs/openclaw-doc/16-DASHBOARD_GUIDE.en.md:16, frontend/e2e/dashboard-five-pages.spec.ts:22
- “有写入守卫、自动回忆、自动捕获、review/rollback” —— 成立。来源:backend/mcp_tool_write.py:136-145, extensions/memory-palace/src/auto-recall.ts:194-280, extensions/memory-palace/src/auto-capture.ts:353-399, backend/api/review.py:1-18
- “有 Profile 化部署与 chat-first onboarding” —— 成立。来源:docs/openclaw-doc/18-CONVERSATIONAL_ONBOARDING.en.md:40-41,203, docs/EVALUATION.en.md:19-29
需要保守处理的
- “全网唯一”“11 个竞品都没有” —— 本轮未做竞品逐仓复核,只能视为作者宣传。来源:https://github.com/ruanyf/weekly/issues/9651
- “Precision 1.000 / 0.940 / 0.950”等具体分数 —— 仓库存在 benchmark 体系与文档,但本轮没有复跑 benchmark,因此不能把这些数字当作我已独立验证的事实。来源:docs/EVALUATION.en.md:19-29, https://github.com/ruanyf/weekly/issues/9651
我的判断
如果你问“mempalace 的加强版来了”这句话靠不靠谱:靠谱,而且不是小修小补,是明显的工程化升级版。
但更精确的说法应是:
- 架构层面,它已经是一个完整记忆子系统;
- 功能层面,视觉增强、自动回忆、自动捕获、写入守卫、检索重排、审查回滚、Profile、Onboarding 都有源码/文档证据;
- 宣传层面,“全网唯一”“竞品碾压”“具体 benchmark 分数”还不能在本轮直接照单全收。
相关链接
- Weekly issue: https://github.com/ruanyf/weekly/issues/9651
- 仓库: https://github.com/AGI-is-going-to-arrive/Memory-Palace-Openclaw
- README: https://github.com/AGI-is-going-to-arrive/Memory-Palace-Openclaw/blob/main/README.md
- Dashboard 指南: https://github.com/AGI-is-going-to-arrive/Memory-Palace-Openclaw/blob/main/docs/openclaw-doc/16-DASHBOARD_GUIDE.en.md
- Onboarding 文档: https://github.com/AGI-is-going-to-arrive/Memory-Palace-Openclaw/blob/main/docs/openclaw-doc/18-CONVERSATIONAL_ONBOARDING.en.md
- Evaluation 文档: https://github.com/AGI-is-going-to-arrive/Memory-Palace-Openclaw/blob/main/docs/EVALUATION.en.md