@evermind-ai/openclaw-plugin
v2.1.0
Published
EverOS OpenClaw Plugin — persistent memory through natural conversation
Maintainers
Readme
EverOS OpenClaw Plugin
通过自然语言对话为 OpenClaw / 龙虾 提供持久记忆能力。
这个插件保留当前 OpenClaw 的 context-engine 架构,并连接到自托管的 EverOS backend。其后端能力由 EverOS 提供。
它能做什么
- 在每次回复前通过
assemble()自动回忆相关记忆 - 在每轮对话后通过
afterTurn()自动保存新内容 - 用户只需要正常聊天
- 不需要手动调用
memory_store或memory_search
重要说明:
- 这是一个
context-engine插件 - 它不是
memoryslot 插件 - 为避免冲突,安装时会把
plugins.slots.memory设置为none
快速开始
推荐安装方式:
npx --yes --package @evermind-ai/openclaw-plugin everos-install安装器会:
- 复用已有的
~/.openclaw/openclaw.json - 把插件路径写入
plugins.load.paths - 把
evermind-ai-everos写入plugins.allow - 设置
plugins.slots.contextEngine = "evermind-ai-everos" - 设置
plugins.slots.memory = "none" - 为插件创建或补齐默认配置
安装完成后:
openclaw gateway restart然后用自然语言验证:
记住:我喜欢意式浓缩。
我喜欢什么咖啡?后端
默认后端地址:
http://localhost:1995健康检查:
curl http://localhost:1995/health如果你还没有启动 EverOS backend:
git clone https://github.com/EverMind-AI/EverOS.git
cd EverOS
docker compose up -d
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
cp env.template .env
# 编辑 .env
uv run python src/run.py自然语言记忆是如何工作的
运行时流程:
- 用户发送一条普通消息。
assemble()去 EverOS backend 搜索相关记忆。- 命中的记忆被注入为上下文。
- OpenClaw 正常回复。
afterTurn()把这一轮的新内容写回 EverOS backend。
所以用户看到的体验是:
- “记住:我偏好深色模式”
- 之后再问:“我偏好什么 UI 风格?”
整个过程不需要显式调用记忆工具。
OpenClaw 配置示例
期望的配置结构如下:
{
"plugins": {
"allow": ["evermind-ai-everos"],
"slots": {
"memory": "none",
"contextEngine": "evermind-ai-everos"
},
"entries": {
"evermind-ai-everos": {
"enabled": true,
"config": {
"baseUrl": "http://localhost:1995",
"userId": "everos-user",
"groupId": "everos-group",
"topK": 5,
"memoryTypes": ["episodic_memory"],
"retrieveMethod": "hybrid",
"apiVersion": "auto",
"agentMode": false
}
}
}
}
}配置项
| 字段 | 默认值 | 说明 |
| ---------------- | ----------------------- | --------------------------------------------------------------------------- |
| baseUrl | http://localhost:1995 | EverOS backend 地址 |
| userId | everos-user | 记忆归属的用户标识 |
| groupId | everos-group | 共享记忆命名空间 |
| topK | 5 | 最多检索条目数 |
| memoryTypes | ["episodic_memory"] | 要搜索的记忆类型;开启 agentMode 时会自动加入 agent_memory |
| retrieveMethod | hybrid | 检索模式(keyword / vector / hybrid / agentic;rrf 已弃用) |
| apiVersion | auto | 后端 API 版本;auto 会在启动时探测一次,v1 / legacy 强制锁定 |
| agentMode | false | 是否捕获完整的工具调用轨迹 — 见下方 Agent Memory 章节 |
Agent Memory
当后端是 V1 EverMemOS(自动探测)时,把 agentMode 设成 true 可以开启更丰富的记忆链路 —— 不只存 user / assistant 文本,而是捕获 agent 的完整工具调用轨迹:
"config": {
...
"agentMode": true
}开启后会发生什么
- 写路径从
POST /api/v1/memories(仅文本)切到POST /api/v1/memories/agent—— 整轮包括 assistant 的tool_calls和按tool_call_id串联起来的 tool result 都会发给后端。 - 检索路径自动把
agent_memory加进搜索请求,会同时召回:agent_case—— 具体的过往轨迹(任务意图、agent 实际采用的方法、关键决策洞察、质量分)agent_skill—— 由多个 case 聚类抽出的可复用模式(名字、描述、模式正文、置信度、成熟度)
- Prompt 注入在原本的
<episodic>前面增加<skills>和<cases>块 —— 高置信度的可复用模式优先注入。
为什么值得 opt in
实测一个工具密集任务(4 天京都旅行规划,调用 web_search + doc_create + 飞书 API 自定义脚本):
- 第一次跑:agent 用了 18 条消息的工具链(搜索、构造 blocks JSON、写 Python 脚本调用飞书 API 追加内容)才完成任务。
- 一次类似的后续问题("再做一个 7 天的札幌旅行规划"):上一轮抽出的 skill
Multi-Part Travel Planning with Document Automation被注入 prompt,agent 直接复用模式,只用 2 条消息就给出答案,完全跳过了探索性的工具调用。
需要知道的成本:
| 成本 | 说明 |
| ------ | ----------------------------------------------------------------------------------- |
| 每轮写入更大 | 轨迹 POST 是纯文本的 5-10 倍 |
| 后端 LLM 成本 | 每条 trajectory 在后端会触发一次 agent_case 抽取的 LLM 调用(约 7 秒,后端异步执行) |
| 抽取延迟 | case 在对话边界(或 flush)触发时抽出;单轮短 DM 可能要等到累积够内容才会产出 case |
| 后端版本要求 | 必须 V1 EverMemOS;老后端上插件会一次性 warn 并自动降级到纯文本写入 |
如果你不开 agentMode,插件行为和 2.0 完全一致(纯文本写入,只有 episodic memory)。在 V1 后端上,插件会在启动时打一条一次性提示,温和地建议你启用:
[evermind-ai-everos] tip: backend supports V1 agent memory.
Set "agentMode": true in the plugin config to enable agent_case / agent_skill retrieval.手动安装
npm install -g @evermind-ai/openclaw-plugin
everos-install故障排查
| 问题 | 解决方式 |
| --------- | --------------------------------------------------------------------- |
| 插件未加载 | 检查 plugins.allow、plugins.load.paths、plugins.slots.contextEngine |
| 后端连接失败 | 检查 baseUrl,并执行 curl <baseUrl>/health |
| 没有回忆出记忆 | 检查后端数据,并尝试更具体的问题 |
| 没有保存记忆 | 检查 EverOS backend 写入接口是否正常 |
| 与其他记忆插件冲突 | 确认 plugins.slots.memory = "none" |
相关文件
index.js:插件入口(注册)src/engine.js:ContextEngine 生命周期实现src/convert.js:OpenClaw 消息转 EverOS 格式src/api.js:EverOS backend REST API 客户端src/messages.js:消息归一化与轮次收集src/prompt.js:记忆搜索结果解析与 prompt 构建src/subagent-assembler.js:记忆上下文组装bin/install.js:安装器与配置引导openclaw.plugin.json:插件元数据与配置结构
许可证
Apache-2.0
