基于记忆存储服务实现OpenClaw和Hermes Agent记忆互通

更新时间:
复制为 MD 格式

通过记忆存储服务,配合OpenClawHermes Agent各自的官方插件,将两侧记忆统一写入同一个Tablestore实例。同一租户下,任意Agent写入的记忆均可被其他Agent检索召回,跨Agent切换无需重复自我介绍。

工作原理

OpenClawHermes Agent各自维护独立的本地记忆体系,在两类场景下会带来困扰:从一个Agent切换到另一个Agent时,过往沉淀的偏好、技术栈、项目背景等记忆无法继承;同时使用多个Agent协作时,需要反复向每个Agent重复同样的自我介绍。

记忆存储服务为AI Agent提供云端持久化的语义记忆能力,并为两侧分别提供官方插件(OpenClaw侧的@tablestore/openclaw-tablestore-memoryHermes Agent侧的hermes-tablestore-memory),让两侧将记忆统一写入同一个Tablestore实例。两侧采用同一套Scope模型组织记忆,通过写入时精确归属、检索时通配展开的机制实现互通。

Scope字段

写入行为

检索行为

app_id / tenant_id / memory_store_name

精确(双侧必须一致)

精确(决定共享范围)

agentId

精确(由各Agentruntime决定,区分记忆来源)

通配 *

runId

精确(由当前会话决定)

通配 *

只要双侧使用同一个Tablestore实例,且app_idtenant_idmemory_store_name三项配置严格一致,即可在同一租户下实现记忆互通。agentId由各自Agentruntime决定,无需手动配置,自然区分记忆来源。

Hermes Agent插件还提供两项透明的自动化能力:每轮对话结束后自动将对话要点同步到记忆存储,下一轮对话前自动检索相关记忆并注入上下文。整个过程对用户透明,Agent的回复会自然引用跨Agent沉淀的记忆。

前提条件

配置共享记忆库

实现跨Agent互通的核心是双侧配置严格对齐。两侧必须指向同一Tablestore实例,并使用相同的app_idtenant_idmemory_store_name

检查关键配置一致性

配置项

OpenClaw字段

Hermes Agent字段

一致性要求

Tablestore Endpoint

endpoint

endpoint

必须一致

Tablestore实例名

otsInstanceName

instance_name

必须一致

AccessKey

accessKeyId / accessKeySecret

TABLESTORE_MEMORY_AK / TABLESTORE_MEMORY_SK

必须一致

应用标识

appId

app_id

必须一致

租户标识

tenantId

tenant_id

必须一致

记忆库名称

memoryStoreName

memory_store_name

必须一致

Agent标识

agentId(由runtime决定,无需配置)

agentId(由runtime决定,无需配置)

各自独立,区分来源

OpenClaw侧配置

执行以下命令安装@tablestore/openclaw-tablestore-memory插件,详细说明详见Tablestore记忆存储在OpenClaw中的实现

openclaw plugins install @tablestore/openclaw-tablestore-memory

编辑~/.openclaw/openclaw.json,在plugins.entries中加入tablestore-mem配置块,并将plugins.slots.memory指向tablestore-mem

{
  "plugins": {
    "slots": {
      "memory": "tablestore-mem"
    },
    "entries": {
      "tablestore-mem": {
        "enabled": true,
        "config": {
          "endpoint": "https://<your-instance>.cn-beijing.ots.aliyuncs.com",
          "otsInstanceName": "<your-instance>",
          "accessKeyId": "<your-access-key-id>",
          "accessKeySecret": "<your-access-key-secret>",
          "appId": "shared-agents",
          "tenantId": "default-tenant",
          "memoryStoreName": "shared_memory",
          "autoCreateMemoryStore": true,
          "minQueryLength": 0
        },
        "hooks": {
          "allowConversationAccess": true
        }
      }
    }
  }
}

重启OpenClaw网关使配置生效,并执行诊断命令验证连接。

openclaw gateway restart
openclaw tablestore-mem doctor

输出中ok字段为truememoryStore.oktrue,即表示OpenClaw侧已正确接入Tablestore。

Hermes Agent侧配置

执行以下命令安装hermes-tablestore-memory插件,详细说明(含SDK依赖安装与国内网络下的镜像配置)详见Tablestore记忆存储在hermes-agent中的实现

hermes plugins install --enable https://github.com/aliyun/hermes-tablestore-memory

AccessKey写入~/.hermes/.env

echo 'TABLESTORE_MEMORY_AK=<your-access-key-id>' >> ~/.hermes/.env
echo 'TABLESTORE_MEMORY_SK=<your-access-key-secret>' >> ~/.hermes/.env

将插件参数写入~/.hermes/tablestore_memory.json,确保app_idtenant_idmemory_store_nameOpenClaw侧完全一致。

{
  "endpoint": "https://<your-instance>.cn-beijing.ots.aliyuncs.com",
  "instance_name": "<your-instance>",
  "memory_store_name": "shared_memory",
  "app_id": "shared-agents",
  "tenant_id": "default-tenant",
  "enable_rerank": true,
  "auto_create_store": true,
  "timeout": 30.0
}

激活tablestore-mem为记忆Provider,并执行诊断命令验证连接。

hermes config set memory.provider tablestore-mem
hermes tablestore-mem doctor

输出中ok字段为truechecks.initialize.okchecks.describe_memory_store.okchecks.list_memories.ok均为true,即表示Hermes Agent侧已正确接入Tablestore。

Agent记忆互通验证

通过双向写入与召回验证两侧确实共享同一份记忆。

说明

tablestore-mem add默认异步写入,向量化与索引建立通常需要数十秒。验证写入效果时建议使用--sync参数(Hermes Agent侧)等待索引完成;若刚写入立即检索为空,请稍等30秒后再试。

场景1:OpenClaw写入,Hermes Agent召回

OpenClaw中写入项目偏好类记忆。

openclaw tablestore-mem add "我负责订单服务模块的开发,使用Java、Spring Boot与MySQL技术栈"

切换到Hermes Agent发起新会话,提问与该记忆语义强相关的问题。Hermes Agent会在queue_prefetch()阶段自动召回跨Agent的记忆并注入上下文。

hermes -z "我负责什么模块?技术栈是什么?"

预期回复中包含"订单服务模块"与"Java/Spring Boot/MySQL"等事实,证明Hermes Agent成功召回了OpenClaw写入的记忆。

场景2:Hermes Agent写入,OpenClaw召回

Hermes Agent中写入团队事实类记忆。

hermes tablestore-mem add --sync "我们团队的发布窗口是每周二下午14:00"

切换到OpenClaw发起新会话,提问与该事实相关的问题,OpenClaw会自动召回跨Agent的记忆。

openclaw agent --agent main --message "我们的发布窗口是什么时候?"

预期回复中包含“每周二”与“14:00”等事实,证明OpenClaw成功召回了Hermes Agent写入的记忆。

场景3:CLI命令交叉检索

使用任意一侧的CLI命令均可检索两侧写入的全部记忆。

openclaw tablestore-mem search "发布窗口"
hermes tablestore-mem search "订单服务"

返回结果中scope.agentId字段会显示原始写入方(如openclawhermesmain等),便于追溯记忆来源。

常见问题

双侧的app_idtenant_idmemory_store_name不一致还能互通吗?

不能。共享检索基于Scope匹配(app_id + tenant_id + memory_store_name),三项任一不一致即视为不同的记忆作用域,不会被对方召回。

OpenClaw迁移到Hermes Agent后,OpenClaw还能继续使用吗?

可以。hermes claw migrate是复制操作而非剪切,OpenClaw原有的配置与本地数据不受影响,可双侧同时运行。完整迁移流程详见Hermes Agent官方迁移指南

安装Hermes Agent或下载依赖时网络失败怎么办?

国内网络环境下从GitHubPyPI直连可能不稳定。建议配置阿里云PyPI镜像加速依赖下载,详见Tablestore记忆存储在hermes-agent中的实现中的“安装时git clone失败或PyPI下载缓慢”小节。

相关文档