跨对话记忆
一句话总结:MyClaws 把长期记忆按 user / claw / project 三个 owner 存一份,通过 clue 线索树导航式 recall;后台 dream 服务定期治理与去重。
为什么需要跨对话记忆
- 同一项目里反复开新对话,不想每次重新解释背景。
- 跨设备/跨 Claw 继承用户偏好。
- 让 Agent 主动记下重要决策、约束、外部资源。
让 Agent 写下并读回一条记忆
- 在任意对话中让 Agent 调
memory_write记下值得保留的事实。 - 下次开新对话时,Agent 会在执行前看到 owner / clue 树索引总览(≤ 5k tokens)。
- Agent 通过
memory_recall导航到具体 clue / item / 全文搜索。
四种记忆类型
user:用户画像(你是什么角色、偏好、知识背景)feedback:行为纠正/确认("以后别这样做"、"这种做法是对的")project:项目背景事实(架构、约束、决策、历史)reference:外部信息指针(链接、文档、issue 编号)
三层 Owner(scope)
user_global:跨 Claw、跨项目,全用户共享。claw_{clawId}:限定一台 Claw。project_{projectSlug}:限定一个项目。
内置 memory 工具一览
memory_recall():默认返回 clue 树总览。memory_recall({ clue }):进入某条 clue 查看成员。memory_recall({ item }):读取单条 item 全文。memory_recall({ query }):全文搜索(支持中文 trigram)。memory_write({ type, scope, content }):写入新记忆。memory_update({ id, content }):覆盖现有 item。
自动沉淀与 _raw 原材料
会话静默 30 分钟或自动压缩时,系统会把新增内容沉淀到 _raw/ 原材料,再由 Admin dream 服务整理为正式记忆。
你不需要手工 /new 或重置即可触发沉淀。
Dream 治理服务
后台按 cron 或阈值触发:
- Item 层治理:去重、合并、纠错、淘汰。
- Clue 层治理:编织 clue 关系、维护成员、消费用户引子。
每次 dream 都会留下日志,可在 Bernard 分析快照中查看。
Memory 管理 Tab(Client / Bernard)
桌面端设置页提供「Memory 管理」入口:
- 浏览 clue 树和正式记忆。
- 浏览
_raw原材料。 - 手工执行只读
memory_recall调试。
数据通过 Admin 用户级 REST API 按 JWT userId 强隔离。
写记忆时要避开的坑
不要在 system prompt 中重复记忆内容
Memory 会自动注入,prompt 中再塞同样信息会浪费 token。
不要把凭据塞进 memory
Memory 会被 dream 服务读取并合并;机密信息应走 LLM Connection 或环境变量。
Bernard 不会直接改正式记忆
Bernard 默认只输出诊断报告与修复建议;任何修正都要用户确认。
删除是不可逆的
用户级 API 支持删除单条 item 或清理某 scope 的 _raw,会写审计但无法回收。