Memory Plus Sync
by @lewistouchtech
实现飞书、微信、Telegram 等多渠道消息采集与同步,统一存储到官方 SQLite,支持实时监控、告警及自动恢复。
clawhub install memory-plus-sync📖 About This Skill
Memory Plus - 跨渠道记忆同步技能
版本: 2.0.0 创建: 2026-04-07 升级: 2026-04-17 作者: 伊娃 (Eva) 状态: ✅ 已完成
背景
版本 2.0.0 升级内容 (2026-04-17)
🚀 新功能
1. MCP 服务器集成 - 提供 7 个标准化工具接口 2. 三代理验证机制 - Validator/Scorer/Reviewer 并行验证 3. 智能去重功能 - 基于内容哈希和相似度计算 4. 批量处理支持 - 支持批量存储和验证 5. 版本控制系统 - 完整的记忆版本管理 6. 健康度监控 - 60 秒间隔自动检查 7. 故障自动修复 - 自动重连/客户端重置🔧 技术架构升级
📊 性能指标
🎯 向后兼容性
功能清单
1. MCP 服务器 (7 个标准化工具) ✅
memory_search - 搜索记忆内容memory_store - 存储新记忆memory_get - 获取单个记忆memory_update - 更新记忆内容memory_delete - 删除记忆memory_list - 列出所有记忆health_check - 健康度检查2. 三代理验证机制 ✅
3. 智能去重功能 ✅
4. 批量处理支持 ✅
5. 版本控制系统 ✅
6. 健康度监控 ✅
7. 跨渠道记忆同步 ✅
1. 跨渠道记忆同步 ✅
2. 实时监控官方系统 ✅
3. 异常告警 ✅
4. 自动恢复机制 ✅
文件结构
~/.openclaw/workspace/skills/memory-plus/
├── SKILL.md # 技能文档(本文件)
├── main.py # 主入口脚本
├── memory_plus.py # 核心功能模块
├── monitor.py # 监控守护进程
├── collector.py # 多渠道采集器
└── README.md # 使用说明
使用方法
1. 启动 MCP 服务器
# 直接启动
cd ~/.hermes/skills/openclaw-imports/memory-plus-sync
python mcp_server.py使用兼容层
python main.py mcp指定端口
python mcp_server.py --host 0.0.0.0 --port 8000
2. 使用 MCP 工具
# 搜索记忆
curl -X POST http://localhost:8000/memory/search \
-H "Content-Type: application/json" \
-d '{"query": "项目进度", "limit": 10}'存储新记忆
curl -X POST http://localhost:8000/memory/store \
-H "Content-Type: application/json" \
-d '{"content": "2026-04-17 完成 Memory Plus 2.0 升级", "metadata": {"source": "hermes", "importance": 8}}'健康检查
curl -X GET http://localhost:8000/health
3. 兼容原有功能
# 同步多渠道消息
python main.py sync监控记忆系统
python main.py monitor健康检查
python main.py health运行测试
python main.py test
4. 完整工作流测试
# 运行完整测试
python test_full_workflow.py测试特定功能
python -c "from core.main_integration import MemoryPlusIntegration; mpi = MemoryPlusIntegration(); print(mpi.health_check())"
1. 同步渠道消息
# 同步最近 24 小时的所有渠道消息
cd ~/.openclaw/workspace/skills/memory-plus
python3 main.py sync同步最近 2 小时的飞书和语音消息
python3 main.py sync --channels feishu,voice --hours 2只同步飞书消息
python3 main.py sync --channels feishu --hours 1
2. 监控记忆系统
# 单次检查
python3 main.py monitor --once持续监控(守护进程模式)
python3 main.py monitor
3. 健康检查
# 执行健康检查
python3 main.py health
4. 演示模式
# 运行演示
python3 main.py demo
核心 API
MemoryPlusIntegration 类 (主集成类)
from core.main_integration import MemoryPlusIntegration创建实例
mpi = MemoryPlusIntegration()健康检查
health = mpi.health_check()
print(f"状态: {health['status']}")存储记忆
result = mpi.store_memory(
content="记忆内容",
metadata={"source": "test", "importance": 5}
)搜索记忆
results = mpi.search_memory(
query="搜索关键词",
limit=10,
threshold=0.7
)批量处理
batch_results = mpi.batch_store([
{"content": "记忆1", "metadata": {...}},
{"content": "记忆2", "metadata": {...}}
])
TripleAgentProcessor 类 (三代理验证)
from core.triple_agent_processor import TripleAgentProcessor创建处理器
processor = TripleAgentProcessor()验证记忆
validation_result = processor.validate_memory(
content="待验证的记忆内容",
context="相关上下文信息"
)获取验证详情
details = processor.get_validation_details(validation_result['id'])批量验证
batch_results = processor.batch_validate([
{"content": "记忆1", "context": "上下文1"},
{"content": "记忆2", "context": "上下文2"}
])
DeduplicationProcessor 类 (去重处理)
from dedup_processor import DeduplicationProcessor创建处理器
dedup = DeduplicationProcessor()检查重复
duplicate_check = dedup.check_duplicate(
content="新记忆内容",
existing_contents=["已有记忆1", "已有记忆2"]
)批量去重
dedup_results = dedup.batch_deduplicate([
"记忆内容1",
"记忆内容2",
"记忆内容3"
])获取去重统计
stats = dedup.get_statistics()
MemoryPlus 类
from memory_plus import MemoryPlus创建实例
mp = MemoryPlus()连接数据库
mp.connect()插入记忆块
mp.insert_chunk(
path='memory/feishu/2026-04-07.md',
text='记忆内容',
source='memory',
channel='feishu',
metadata={'sender': '老板', 'timestamp': '2026-04-07 14:30:00'}
)监控官方系统
result = mp.monitor_official_system()
print(result['status']) # normal/warning/critical健康检查
is_healthy = mp.health_check()获取统计
stats = mp.get_stats()关闭连接
mp.close()
MultiChannelCollector 类
from collector import MultiChannelCollector创建采集器
mcc = MultiChannelCollector()采集所有渠道
from datetime import datetime, timedelta
end_time = datetime.now()
start_time = end_time - timedelta(hours=2)messages = mcc.collect_and_merge(
channels=['feishu', 'voice'],
start_time=start_time,
end_time=end_time
)
按渠道分组采集
results = mcc.collect_all(
channels=['feishu', 'wechat'],
start_time=start_time,
end_time=end_time
)
数据库表结构
chunks 表(核心)
| 字段 | 类型 | 说明 | |------|------|------| | id | TEXT | 主键,SHA256 哈希 | | path | TEXT | 记忆文件路径 | | source | TEXT | 来源(memory/channel) | | start_line | INTEGER | 起始行号 | | end_line | INTEGER | 结束行号 | | hash | TEXT | 内容哈希 | | model | TEXT | Embedding 模型 | | text | TEXT | 记忆文本 | | embedding | TEXT | 向量(JSON 数组) | | updated_at | INTEGER | 更新时间戳(毫秒) |
validated_memories 表
| 字段 | 类型 | 说明 | |------|------|------| | id | INTEGER | 自增主键 | | content | TEXT | 记忆内容 | | user_id | TEXT | 用户 ID | | memory_type | TEXT | 记忆类型 | | importance | TEXT | 重要程度 | | tags | TEXT | 标签(JSON 数组) | | metadata | TEXT | 元数据(JSON 对象) | | created_at | TEXT | 创建时间 | | updated_at | TEXT | 更新时间 |
监控指标
正常状态
警戒状态
危险状态
告警日志
告警记录在:~/.openclaw/workspace/logs/memory_plus_alerts.jsonl
格式:
{
"timestamp": "2026-04-07T01:30:00",
"level": "warning",
"message": "⚠️ 记忆系统停滞:65 分钟未写入",
"uptime_seconds": 3600
}
统计日志
统计记录在:~/.openclaw/workspace/logs/memory_plus_stats.json
格式:
{
"last_check": "2026-04-07T01:30:00",
"status": "normal",
"total_chunks": 3000,
"total_files": 50,
"db_size_mb": 273.85,
"uptime_hours": 1.5
}
监控日志
监控日志:~/.openclaw/workspace/logs/memory_plus_monitor.log
集成示例
1. 集成到 OpenClaw 主循环
# 在 OpenClaw 主循环中定期调用
from memory_plus import MemoryPlusmp = MemoryPlus()
if mp.connect():
result = mp.monitor_official_system()
if result['status'] == 'critical':
# 发送告警
send_alert(result['issues'])
mp.close()
2. 集成到飞书消息处理
# 在飞书消息处理后同步
from memory_plus import MemoryPlusmp = MemoryPlus()
if mp.connect():
mp.sync_from_channel('feishu', [message])
mp.close()
3. 定时任务(Cron)
# 每小时健康检查
0 * * * * cd ~/.openclaw/workspace/skills/memory-plus && python3 main.py health >> logs/health_cron.log 2>&1每 5 分钟监控
*/5 * * * * cd ~/.openclaw/workspace/skills/memory-plus && python3 main.py monitor --once >> logs/monitor_cron.log 2>&1每天同步所有渠道
0 2 * * * cd ~/.openclaw/workspace/skills/memory-plus && python3 main.py sync --hours 24 >> logs/sync_cron.log 2>&1
测试验证
测试 1:数据库连接
cd ~/.openclaw/workspace/skills/memory-plus
python3 -c "from memory_plus import MemoryPlus; mp = MemoryPlus(); print('✅ 连接成功' if mp.connect() else '❌ 连接失败'); mp.close()"
测试 2:监控功能
python3 main.py monitor --once
期望输出:
{
"timestamp": "2026-04-07T01:30:00",
"status": "normal",
"total_chunks": 3000,
"total_files": 50,
"db_size_mb": 273.85,
"integrity": "ok"
}
测试 3:同步功能
python3 main.py demo
期望输出:
============================================================
Memory Plus - 跨渠道记忆同步工具演示
============================================================
1️⃣ 监控官方记忆系统状态...
状态:normal
总记忆块:3000
总文件数:50
数据库大小:273.85 MB
...
✅ 同步完成!
测试 4:健康检查
python3 main.py health
期望输出:
🏥 执行健康检查
✅ 记忆系统健康
已知限制
1. 微信集成:框架已就绪,需要集成 WeChatFerry 或其他微信 API
2. Telegram 集成:框架已就绪,需要集成 python-telegram-bot 或 Telethon
3. Embedding:当前使用占位向量,实际部署应调用真实 Embedding API。OpenClaw 实际使用的向量模型:hf:ggml-org/embeddinggemma-300m-qat-q8_0-GGUF/embeddinggemma-300m-qat-Q8_0.gguf,本地提供商。
4. 去重逻辑:基于 hash 去重,可能需要更智能的语义去重
后续优化
短期(1 周内)
中期(1 个月内)
长期(3 个月内)
教训与改进
2026-04-07 经验
问题: mem0 删除后无跨渠道同步机制 根因:防范机制: 1. ✅ 使用官方数据库,不另起炉灶 2. ✅ 实现多渠道采集框架 3. ✅ 实时监控官方系统状态 4. ✅ 异常告警机制 5. ✅ 自动恢复机制
参考文档
/opt/homebrew/lib/node_modules/openclaw/dist/extensions/memory-core/~/.openclaw/memory/main.sqlite~/.openclaw/memory/*.md~/.openclaw/workspace/logs/*此技能文档将作为 OpenClaw 跨渠道记忆同步的标准操作程序* *定期审查和更新以适应新的需求*