OpenClaw 插件
OpenClaw 插件
相关源文件
本章引用的主要源码文件:
docs/changelog/openclaw.mdxdocs/integrations/openclaw.mdxopenclaw/Makefileopenclaw/README.mdopenclaw/backend/platform.tsopenclaw/cli/commands.tsopenclaw/cli/config-file.tsopenclaw/config.tsopenclaw/dream-gate.tsopenclaw/index.tsopenclaw/openclaw.plugin.jsonopenclaw/package.jsonopenclaw/providers.tsopenclaw/recall.tsopenclaw/scripts/configure.pyopenclaw/skill-loader.tsopenclaw/skills/memory-dream/SKILL.mdopenclaw/skills/memory-triage/SKILL.mdopenclaw/sqlite-resilience.test.tsopenclaw/telemetry.tsopenclaw/tests/cli-commands.test.tsopenclaw/tests/config-file.test.tsopenclaw/tests/config.test.tsopenclaw/tests/providers.test.tsopenclaw/tests/telemetry.test.tsopenclaw/tests/tools.test.tsopenclaw/tsup.config.tsopenclaw/types.tsopenclaw/vitest.config.ts
本文档介绍 @mem0/openclaw-mem0 插件,该插件为 OpenClaw 智能体提供长期记忆能力。该插件将 Mem0 的记忆层集成到 OpenClaw 的智能体框架中,支持跨对话会话的自动记忆捕获和召回。
该插件同时支持 Mem0 平台(云端)和开源(自托管)两种模式。它为智能体提供了八个专用工具、自动上下文注入(自动召回)以及自动事实提取(自动捕获)。
来源: openclaw/index.ts:1-17, openclaw/README.md:1-6, openclaw/package.json:2-5
架构总览
OpenClaw 插件充当 OpenClaw 智能体运行时与 Mem0 记忆后端之间的桥梁。它注册到 OpenClaw 的插件系统中,并提供自动记忆管理(通过生命周期钩子)以及智能体可以调用的显式记忆工具。
系统组件与数据流
下图将记忆管理的自然语言概念与 openclaw/ 目录中的具体代码实体联系起来。
来源: openclaw/index.ts:94-110, openclaw/providers.ts:257-273, openclaw/README.md:179-189, openclaw/config.ts:241-260
提供者与后端系统
该插件使用双层抽象来封装部署模式:提供者(用于高层操作)和后端(用于底层 SDK 交互)。
提供者抽象
Mem0Provider 接口定义了记忆操作的契约,由 PlatformProvider 和 OSSProvider 实现。
| 类 | 角色 | 文件 |
|---|---|---|
PlatformProvider | 封装 MemoryClient 用于云端 API 交互。 | openclaw/providers.ts:78-210 |
OSSProvider | 封装 Memory 类用于本地嵌入向量和存储。 | openclaw/providers.ts:215-255 |
PlatformBackend | 平台模式下 Backend 接口的实现。 | openclaw/backend/platform.ts:1-20 |
实现逻辑
该插件根据 openclaw.json 中的 mode 字段初始化相应的后端。如果 mode 为 "platform",则实例化 PlatformBackend。如果为 "open-source",则使用 providerToBackend 将 OSS 提供者适配为后端接口。
来源: openclaw/index.ts:161-170, openclaw/providers.ts:78-85, openclaw/types.ts:137-159
记忆工具
该插件注册了八个智能体可以调用的工具。这些工具在插件清单中声明,并在插件的 register 生命周期中注册。
工具描述
| 工具名称 | 用途 | 实现文件 |
|---|---|---|
memory_search | 支持 scope(会话/长期)的语义搜索。 | openclaw/skills/memory-triage/SKILL.md:23-30 |
memory_add | 存储事实,支持分类和重要性。 | openclaw/skills/memory-triage/SKILL.md:32-40 |
memory_get | 按 ID 检索特定记忆。 | openclaw/skills/memory-triage/SKILL.md:42-44 |
memory_list | 列出记忆,支持分页和作用域。 | openclaw/skills/memory-triage/SKILL.md:46-49 |
memory_update | 原地更新现有记忆的文本内容。 | openclaw/skills/memory-triage/SKILL.md:51-54 |
memory_delete | 按 ID、查询或批量删除记忆。 | openclaw/skills/memory-triage/SKILL.md:56-62 |
memory_event_list | 列出最近的后台处理事件(平台模式)。 | openclaw/skills/memory-triage/SKILL.md:64-65 |
memory_event_status | 获取特定后台事件的状态(平台模式)。 | openclaw/skills/memory-triage/SKILL.md:67-69 |
来源: openclaw/openclaw.plugin.json:14-19, openclaw/index.ts:58-59, openclaw/types.ts:35-56
自动召回与自动捕获
该插件的核心功能依赖于两个在智能体回合生命周期中触发的自动机制。
自动召回(上下文注入)
在智能体响应之前,插件会搜索 Mem0 中的相关记忆并将其注入到上下文中。
- 逻辑:使用用户的最新消息执行语义搜索。
- 作用域:同时搜索全局
user_id命名空间和特定的run_id(会话)命名空间。 - 清理:在搜索之前对查询进行清理以去除噪声。
来源: openclaw/index.ts:11-12, openclaw/recall.ts:14-40, openclaw/README.md:185-185
自动捕获(事实提取)
在智能体响应之后,插件从对话中提取持久化事实。
- 噪声过滤:使用
filterMessagesForExtraction去除通用的助手闲聊和瞬时状态。 - 时间锚定:提取提示(通过
DEFAULT_CUSTOM_INSTRUCTIONS)要求为时间敏感的事实包含日期。 - 去重:系统会检查是否存在相似的现有事实,如果找到匹配项,则执行
UPDATE而不是新的ADD。
来源: openclaw/index.ts:12-13, openclaw/filtering.ts:148-160, openclaw/config.ts:28-115
按智能体隔离
该插件通过将记忆路由到特定智能体的命名空间,自动处理多智能体环境。这可以防止为同一用户工作的不同智能体之间发生"记忆泄漏"。
- 逻辑:
effectiveUserId函数接收基础userId(例如"alice")和sessionKey。 - 模式:如果会话属于某个智能体(例如"researcher"),则用于 Mem0 调用的最终
userId变为alice:agent:researcher。 - 回退:单智能体设置或非智能体会话默认回退到基础
userId。
来源: openclaw/isolation.ts:47-56, openclaw/index.ts:178-182, openclaw/README.md:196-198
配置与设置
部署模式
该插件支持在 openclaw.json 中配置的两种模式:
- 平台模式:
- 需要
apiKey。 - 使用 Mem0 云基础设施(
api.mem0.ai)。 - 支持
customInstructions和customCategories。
- 需要
- 开源模式:
- 自托管。
- 可配置的
llm、embedder和vectorStore提供者(例如 OpenAI、Ollama、Qdrant、PGVector)。 - 默认在 SQLite 中本地存储数据。
来源: openclaw/config.ts:147-154, openclaw/types.ts:5-33, openclaw/README.md:69-73
CLI 命令
该插件向 OpenClaw CLI 添加了 mem0 命令,用于管理和调试。
| 命令 | 描述 |
|---|---|
openclaw mem0 init | 用于配置平台或开源模式的引导向导。 |
openclaw mem0 login | 通过 OTP 向 Mem0 平台进行认证。 |
openclaw mem0 search | 执行手动语义搜索。 |
openclaw mem0 status | 检查连接和配置状态。 |
来源: openclaw/cli/commands.ts:1-30, openclaw/index.ts:15-16, openclaw/openclaw.plugin.json:8-13
记忆技能(智能体记忆)
当 skills 模式激活时,插件从自动后台处理切换到智能体控制的记忆管理。
记忆-triage
智能体会逐轮评估对话,基于四个关卡决定是否值得存储某个事实:未来效用、新颖性、事实性和安全性(凭证扫描)。 来源: openclaw/skills/memory-triage/SKILL.md:73-96
记忆-dream
一种后台整合协议,会审查整个记忆存储,合并重复项、删除过期条目(TTL)并重写模糊的记忆以提高清晰度。 来源: openclaw/skills/memory-dream/SKILL.md:13-40
梦境关卡
dream-gate.ts 模块管理整合的触发器,在获取 dreamLock 以开始整合之前,会检查"廉价关卡"(如会话计数)和"记忆关卡"(总记忆量)。 来源: openclaw/dream-gate.ts:48-53, openclaw/index.ts:47-53