乐于分享
好东西不私藏

两个 AI 助手怎么共用一份长期记忆?我的最小实践方案

两个 AI 助手怎么共用一份长期记忆?我的最小实践方案

同时用 OpenClaw 和 Hermes 两个 AI 助手,最大的问题是什么?它们各记各的,互相不知道对方学了什么。于是我搭了一套共享记忆系统,让两个 AI 读同一份资料、写同一个文件,还不会互相覆盖。

📑 目录

1️⃣ 为什么需要共享记忆
2️⃣ 整体架构设计
3️⃣ 目录结构
4️⃣ merge.sh 核心脚本
5️⃣ Cron 自动合并
6️⃣ 敏感内容过滤
7️⃣ 验证结果
8️⃣ 踩坑总结
9️⃣ 你可以直接抄的方案

01

为什么需要共享记忆?

我在同一台 VPS 上跑着两个 AI 助手:

🦞

OpenClaw

大龙虾 / 猪玉

🐴

Hermes

爱马仕 / 卡妮妮

两个助手都接入同一个 工作群,各自有独立的会话记忆。但问题是:服务器信息、域名列表、项目资料这些长期数据,不能各存一份。否则更新一个忘改另一个,很快就乱了。

02

整体架构设计

💡 核心思路:三个关键词

inbox 中转 → 各写各的,互不干扰
merge 合并 → 只追加,不覆盖
flock 文件锁 → 防并发写乱

两个 AI 不直接改共享文件,而是各自把新内容写到自己的 inbox 目录。一个定时脚本每 5 分钟跑一次,用 flock 加锁后把 inbox 里的内容追加到共享 MEMORY.md。

03

目录结构

# /root/ai-shared/ 目录结构

ai-shared/
├── memory/          # 合并后的共享记忆
│   └── MEMORY.md
├── inbox/
│   ├── openclaw/    # OpenClaw 只写这里
│   └── hermes/      # Hermes 只写这里
├── secrets/         # 敏感配置(权限 700)
├── rejected/        # 被过滤的敏感内容
├── backups/         # 自动备份
├── logs/            # 合并日志
└── bin/
   └── merge.sh     # 核心合并脚本

⚠️ 关键规则

▪ OpenClaw 只写 inbox/openclaw/,不碰 hermes/
▪ Hermes 只写 inbox/hermes/,不碰 openclaw/
▪ secrets 权限 700,密钥不进普通 memory
▪ 合并只追加,不覆盖

04

merge.sh 核心脚本

#!/bin/bash

# flock 防并发
exec 200>locks/.merge.lock
flock -n 200 || exit 1

# 合并前备份
cp memory/MEMORY.md backups/MEMORY.md.$(date +%s)

# 敏感词扫描
SENSITIVE="(token|api.?key|secret|password)"

# 只追加,不覆盖
for file in inbox/$1/*.md; do
 if grep -qiE "$SENSITIVE" "$file"; then
   mv "$file" rejected/
 else
   cat "$file" >> memory/MEMORY.md
   mv "$file" inbox/$1/.done/
 fi
done

05

Cron 自动合并

⏰ 每 5 分钟自动执行一次

*/5 * * * * /root/ai-shared/bin/merge.sh openclaw
*/5 * * * * /root/ai-shared/bin/merge.sh hermes

写入 inbox → 等 5 分钟 → 自动合并到 memory → 完成

06

敏感内容过滤

merge.sh 会自动扫描关键词:token、api key、secret、password、cookie、private key...

命中的文件不会进入 MEMORY.md,而是移到 rejected/ 目录,并记录日志。

07

验证结果

✅ OpenClaw 写入测试 → cron 合并 → Hermes 读到
✅ Hermes 写入测试 → cron 合并 → OpenClaw 读到
✅ 两条记录都在同一文件,有来源标记和时间戳
✅ 敏感词文件被正确拦截到 rejected/
✅ flock 无并发冲突

08

踩坑总结

⚠️ 坑1:直接用 > 覆盖会丢数据 → 必须用 >> 追加
⚠️ 坑2:两个脚本同时写会交叉 → 必须 flock
⚠️ 坑3:规则文档提到 token 字段名也会被过滤 → 后续优化关键词匹配
⚠️ 坑4:Bot 之间看不到对方消息 → 文件共享是唯一可靠方案

📌 方案总结

inbox 中转 + flock 锁 + 只追加 + 敏感过滤
= 简单、稳定、不乱

不需要数据库,不需要消息队列,不需要 Redis。
一个目录 + 一个脚本 + 一条 cron,搞定。

—— END ——

👆 觉得有用?点个「关注」让更多人看到
有问题欢迎留言讨论 💬