-
Notifications
You must be signed in to change notification settings - Fork 551
Open
Description
Feature Request: 借鉴 mem9 设计思路,增强记忆生命周期管理
背景
我们深度使用了 memory-lancedb-pro 作为 OpenClaw 的长期记忆系统,效果很好。最近研究了另一个云端记忆项目 mem9.ai,发现有几个设计思路非常有价值,希望能整合到 memory-lancedb-pro 中。
建议的优化方向
1. 自动注入钩子(高优先级)
现状:当前需要手动调用 memory_recall 才能获取相关记忆。
建议:添加 OpenClaw 插件钩子,在每次 LLM 调用前自动注入相关记忆。
// 伪代码示例
export const hooks = {
before_prompt_build: async (ctx) => {
const query = ctx.last_user_message;
const memories = await memory_search(query, { limit: 5 });
ctx.system_context.push("\n📚 相关记忆:\n" + memories.map(m => m.text).join("\n"));
}
};价值:
- 无需手动 recall,记忆自动出现在上下文中
- 用户体验更流畅,真正"无感"记忆
2. 会话归档钩子(高优先级)
现状:/reset 后会话历史丢失,需要手动保存摘要。
建议:添加 before_reset 钩子,自动保存会话摘要到记忆。
before_reset: async (ctx) => {
const summary = await generate_session_summary(ctx.history);
await memory_store(summary, { tags: ["session-summary"] });
}价值:
- 重启后不丢失重要上下文
- 自动沉淀会话知识
3. 智能检索优化(中优先级)
现状:检索主要依赖向量相似度。
建议:引入多因子加权排序:
score = 0.6 * vector_similarity + 0.3 * time_decay + 0.1 * importance
# 时间衰减:越近的记忆权重越高
time_decay = exp(-days_since_created / 30)
# 重要性加权
importance_weight = {
"decision": 1.0,
"preference": 0.9,
"fact": 0.7,
"other": 0.5
}价值:
- 更智能的排序,优先展示重要、近期的记忆
- 减少无关记忆干扰
4. 记忆生命周期管理(中优先级)
现状:记忆永久存储,没有自动归档/清理机制。
建议:
- 30 天前的
other类记忆 → 自动移到 archive 集合 - 90 天前的所有记忆 → 压缩存储
- 存储前检查相似度 >0.95 → 更新而非创建(去重)
价值:
- 控制数据库大小
- 减少重复记忆
5. 多 Agent 共享支持(低优先级)
现状:记忆绑定单个 agent。
建议:添加 agent_id 和 shared 字段:
{
"text": "用户喜欢直接、不啰嗦的沟通风格",
"category": "preference",
"importance": 0.9,
"agent_id": "main",
"shared": true
}价值:
- 多个 agent 共享同一份用户画像
- 支持团队协作场景
实施建议
Phase 1(最有价值):
- 添加
before_prompt_build钩子(自动注入) - 添加
before_reset钩子(会话归档)
Phase 2:
3. 智能检索优化(时间衰减 + 重要性加权)
4. 记忆去重逻辑
Phase 3:
5. 多 Agent 共享支持
6. 导入导出工具(备份/恢复)
风险与缓解
| 风险 | 缓解措施 |
|---|---|
| 自动注入太多记忆 → 上下文溢出 | 限制最多 5 条,总字符数 <2000 |
| 钩子执行慢 → 影响响应速度 | 异步执行,超时 500ms 跳过 |
| 去重误判 → 丢失信息 | 相似度阈值 0.95(保守) |
| 多 Agent 隐私泄露 | 默认 shared=false,显式标记 |
参考项目
- mem9.ai - 云端记忆项目,有详细的钩子设计文档
期待社区讨论! 如果方向认可,我们可以进一步细化技术方案。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels