新闻详情

新闻详情

首页 / 资讯中心 / 详情

OpenClaw × Mem0 记忆整合机制详解:memory-dream 技能的 Dream 协议、触发门槛与源码实现

发布时间:2026/9/5 20:24:21来源:尧图网络
OpenClaw × Mem0 记忆整合机制详解:memory-dream 技能的 Dream 协议、触发门槛与源码实现
OpenClaw × Mem0 记忆整合机制详解memory-dream 技能的 Dream 协议、触发门槛与源码实现【免费下载链接】embedchainThe Memory Layer for AI Agents - Drop-in memory infrastructure for AI agents and apps. Context that persists. Built for production.项目地址: https://gitcode.com/GitHub_Trending/em/embedchain在 Mem0 为 OpenClaw 智能体提供的长期记忆插件mem0/openclaw-mem0中memory-dream是 skills 模式的三大协议技能之一负责记忆库的周期性巩固consolidation审查全部已存记忆、合并重复、清除噪声与凭据、重写低质条目并执行 TTL 过期策略。阅读本文后你将完整掌握这份 Dream 协议的四阶段流程与质量标准并能从 dream-gate.ts、skill-loader.ts、index.ts 等源码中理解自动触发的三门槛时间/会话/记忆数设计、文件锁防并发机制以及openclaw mem0 dream手动触发命令的工作原理。1. memory-dream 在记忆生命周期中的定位OpenClaw 插件默认运行在 skills 模式下智能体通过三个技能掌控记忆的写入、召回与清理Triagememory-triage——从对话中提取值得长期保留的事实Recall——每轮响应前检索相关记忆并注入上下文Dreammemory-dream——周期性记忆整合合并重复项、消解冲突、修剪过期条目。从 skill-loader.ts 的loadDreamPrompt()可以看到dream 技能与 triage 不同领域叠加层domain overlay对它有生效路径但自定义提取规则customRules明确标注为仅适用于 triage因为提取规则不适用于 recall/dream源码注释。也就是说SKILL.md 正文就是 dream 会话的完整协议插件只会在其上追加用户配置的门槛参数。该技能的 frontmatter 声明了关键元信息SKILL.mduser-invocable: true用户可直接要求智能体执行记忆清理、整合或审查description中还说明它在足够活动量后也会自动触发可配置Also triggers automatically after sufficient activity (configurable)metadata.openclaw.requires.env要求MEM0_API_KEY、OPENAI_API_KEY、ANTHROPIC_API_KEY三类环境变量之一可用即整合操作依赖已配置好的 Mem0 后端与 LLM。Dream 协议的核心隐喻写在正文开头把原始观察raw observations压缩为干净、可长期保留的知识。整个流程被强制划分为四个阶段按顺序执行不得跳过Follow these four phases in order. Do not skip phases。2. 协议可用的八个记忆工具Dream 会话中智能体只能使用插件注册的八个记忆工具与 README 中 Agent Tools 表格一致。SKILL.md 对每个工具给出了精确的参数契约工具用途关键参数memory_search跨全部已存记忆的语义搜索query必填、limit、userId/agentId范围覆盖、scopeall默认 /session/long-term、categories类别数组过滤memory_add向长期记忆写入新事实facts必填数组同批次必须同一 category、category8 类之一、importance0.0–1.0memory_get按 ID 取回单条记忆memoryId必填memory_list列出某用户/智能体的全部记忆userId、agentId、scopeall默认memory_update原地更新记忆文本原子操作且保留编辑历史memoryId必填、text必填整体替换旧文本memory_delete按 ID、按查询或批量删除memoryId、all需confirm: true、userId、agentIdmemory_event_list列出最近的后台处理事件仅平台模式—memory_event_status查询指定后台事件的状态event_id必填两个值得注意的契约细节类别即保留策略。memory_add的category参数决定 TTL 与不可变性。从 skill-loader.ts 的DEFAULT_CATEGORIES可看到默认策略identity0.95永久immutable、configuration0.95、rule0.9、preference0.85、decision/technical0.8、relationship0.75、project0.75ttl: 90d、operational0.6ttl: 7d——这直接对应后文 3a 阶段的两条删除时限。memory_update优先于删了再加。SKILL.md 明确指出prefermemory_updateover forget-then-store because it is atomic and preserves edit history。插件的oss.historyDbPath配置项见 types.ts即为开源模式下 SQLite 编辑历史库~/.mem0/history.db。3. 四阶段协议从盘点到报告Phase 1: Orient定向盘点改动之前先摸清记忆现状调用memory_list加载全部已存记忆按 category 计数并记录总数通过时间戳找出最旧与最新的记忆记录列表中直接可见的问题重复项、过短条目、缺少时间锚点temporal anchor的条目。本阶段禁止任何修改。目标是理解你正在处理的是什么。Phase 2: Gather Targets圈定目标用工具调查并识别需要处置的记忆。协议要求先用memory_search配合created_at过滤条件找出自上次整合以来新增的记忆——这些是最可能需要合并或清理的对象。随后把每个目标分类为三种动作之一DELETE包含凭据、已过 TTL、纯噪声、原始工具输出、孤立时间戳MERGE两条及以上记忆用不同措辞表达同一事实或一系列记忆在追踪同一实体的增量变化REWRITE表述模糊、缺少时间锚点、用第一人称而非第三人称、类别错误、过于冗长。Phase 3: Consolidate执行整合按以下优先级顺序执行 Phase 2 圈定的动作。3a. 删除危险与过期条目——立即用memory_delete删除凭据、API key、token、密码、secret匹配插件在运行时注入的已知凭据前缀与认证模式无上下文的纯时间戳被存为记忆的原始工具输出心跳heartbeat或 cron 执行记录被存为记忆的泛化确认语ok、got it超过7 天的 operational 记忆超过90 天的 project 记忆。这里运行时注入的凭据模式有源码实证skill-loader.ts 中定义了DEFAULT_CREDENTIAL_PATTERNSconst DEFAULT_CREDENTIAL_PATTERNS [ sk-, m0-, ghp_, AKIA, ak_, Bearer , bot\\d:AA, password, token, secret, ];并且 skill-loader.ts 中loadSkill()对memory-dream与memory-triage都会调用renderTriageKnobs()把skills.triage.credentialPatterns用户可覆盖上述默认值渲染为 Credential patterns to scan: … 段落追加到 dream 协议文本末尾。这解释了 SKILL.md 中matching known credential prefixes and auth patterns injected by the plugin at runtime的确切含义凭据匹配清单不是写死在技能文件里的而是每次加载时按用户配置动态拼接。两条 TTL 时限operational 7 天 / project 90 天则与DEFAULT_CATEGORIES的ttl: 7d/ttl: 90d一一对应ttlToExpirationDate()skill-loader.ts会把7d这类 TTL 换算成具体到期日供 triage 写入时打上过期标记dream 再据此清理。3b. 合并重复项——当两条及以上记忆表达同一事实时选信息最完整的版本作为基底对最佳版本调用memory_update把其他版本的缺失细节吸收进来对冗余条目调用memory_delete。合并时须遵守四条规则保留用户对观点与偏好的原话保留两个版本中的时间锚点合并结果不超过 50 词合并后的记忆必须自包含在其余条目被删除后依然可独立理解。3c. 重写低质条目——当记忆需要改进但不属于重复时调用memory_update提交改进后的文本。触发重写的五种情形使用第一人称I prefer而非第三人称User prefers时效敏感信息缺少时间锚点表述模糊且可具体化likes python → User prefers Python for backend development类别归属错误超过 50 词且可在不损失信息的前提下压缩。Phase 4: Report报告全部操作完成后按固定模板输出总结Consolidation complete. - Reviewed: [total count] - Deleted (credentials/secrets): [count] - Deleted (expired/stale): [count] - Merged: [count] groups into [count] memories - Rewritten: [count] - Final count: [total remaining] - Issues found: [any notable problems or observations]4. 质量目标Quality Targets整合完成后记忆库应达到以下六项验收标准含凭据或 secret 的记忆数为0重复记忆同一事实的不同措辞数为0所有 project 与 operational 记忆带时间锚点As of YYYY-MM-DD所有记忆使用第三人称表述所有记忆类别正确每条记忆 15–50 词、自包含、原子化一条记忆只陈述一个事实。5. 自动触发Dream Gate 三门槛与文件锁SKILL.md 声明activity 足够后自动触发可配置其实现完全在 dream-gate.ts 中状态持久化在插件的 stateDir 下README 持久化表中对应pluginStateDir/dream-state.json可跨网关重启存活。5.1 状态结构与默认门槛interface DreamState { lastConsolidatedAt: number; // 毫秒时间戳0 从未整合 sessionsSince: number; // 上次整合以来的交互会话数 lastSessionId: string | null; } const DEFAULTS: DreamGateConfig { minHours: 24, // 距上次整合至少 24 小时 minSessions: 5, // 至少 5 个交互会话 minMemories: 20, // 记忆总数至少 20 条 };dream-gate.ts这三个门槛在 types.ts 的SkillsConfig.dream中全部可配插件 README 的配置参考表还暴露了skills.dream.enabled与skills.dream.auto两个开关auto默认true控制是否按活动门槛自动触发。5.2 廉价门槛先行避免无谓 API 调用门槛检查刻意分为两级checkCheapGates()dream-gate.ts只做本地文件读取——时间门槛hoursSince minHours则拒绝与会话门槛sessionsSince minSessions则拒绝都从同一个dream-state.json读出只有廉价门槛通过后才调用provider.getAll()拉取记忆总数交由checkMemoryGate()dream-gate.ts做昂贵的计数检查。index.ts 中的before_prompt_build钩子按此顺序执行Check CHEAP gates first (local file reads only). Only hit the API for memory count if time session gates pass.5.3 锁与完成记录获取锁acquireDreamLock()dream-gate.ts以wx排他标志原子创建dream.lock内含 pid 与 startedAt两个进程竞争时只有一个成功超过1 小时LOCK_STALE_MS的陈旧锁会被先清除再竞争防止崩溃后永久死锁会话计数incrementSessionCount()在每次交互回合结束时调用按 sessionId 去重同一会话内的多轮不会重复计数完成记录recordDreamCompletion()把lastConsolidatedAt置为当前时间并把sessionsSince清零重置整个计数周期。5.4 注入、验证与失败回滚在 index.ts 中当三门槛与锁全部通过插件把loadDreamPrompt()生成的完整协议文本包进auto-dream标签通过prependContext注入当轮上下文Before responding to the user, run a memory consolidation pass. Follow the protocol below, then respond normally.agent_end钩子index.ts随后做了两件事仅放行触发会话dreamSessionId是会话级的防止其他会话误报完成Prevents cross-session false completion验证真实写入扫描最后一条 assistant 消息中的工具调用只有出现memory_add、memory_update、memory_delete三者之一才认定整合成功memory_list/memory_search等只读操作不算然后释放锁并recordDreamCompletion()。若本轮失败、或注入了 dream 但模型没执行任何写操作则只释放锁、不记录完成——下一个符合门槛的回合会重新触发。整套门控逻辑由 tests/dream-gate.test.ts 覆盖时间门槛过近拒绝、会话数不足拒绝、双门槛通过、minMemories计数边界、新锁获取含wx标志断言、1 小时内新锁拒绝、2 小时陈旧锁回收以及recordDreamCompletion的计数器重置。6. 手动触发openclaw mem0 dream除自动触发外README 提供了 CLI 手动入口cli/commands.ts 中注册# 只查看记忆盘点不做任何修改 openclaw mem0 dream --dry-run # 生成完整整合提示词 openclaw mem0 dream实现细节值得注意--dry-run会先调用provider.getAll({ user_id, source: OPENCLAW })拉取全量记忆按metadata.category回退到categories[0]再无则记为uncategorized分类计数并打印清单然后停止Dry run — no changes made.非 dry-run 时命令并不直接改写记忆而是把loadDreamPrompt()的输出包在dream-protocol中、再把全部记忆以all-memories countN useruid清单形式拼接在每条记忆前标注[id] (category, importance, created)最后追加Begin consolidation…指令整段提示词写到 stdout并提示Paste it into an OpenClaw session to run consolidation——即把协议与数据交给一个带工具调用能力的智能体会话去真正执行 Phase 1–4所有命令支持--json输出如openclaw mem0 dream --dry-run --json返回{ ok, count, categories }便于脚本或上层 agent 消费。7. 配置参考skills.dream 与相关开关dream 相关的配置面types.ts、README 配置参考配置键类型默认值说明skills.dream.enabledbooleantrue是否启用记忆整合技能skills.dream.autobooleantrue是否按活动门槛自动触发skills.dream.minHoursnumber24两次整合之间的最小间隔小时skills.dream.minSessionsnumber5触发前所需的最小交互会话数skills.dream.minMemoriesnumber20记忆总数低于此值则不值得整合skills.triage.credentialPatternsstring[]内置 10 种模式覆盖凭据扫描模式会注入 dream 与 triage 协议文本skills.categoriesRecord9 个默认类别覆盖各 category 的 importance / ttl / immutable典型openclaw.json配置摘自 README{ plugins: { slots: { memory: openclaw-mem0 }, entries: { openclaw-mem0: { enabled: true, config: { apiKey: ${MEM0_API_KEY}, userId: alice, skills: { triage: { enabled: true }, recall: { enabled: true }, dream: { enabled: true } } } } } } }从源码结构看dream 的自动触发还有一条隐含约束index.ts 中触发条件包含!isSubagent即子智能体回合不参与自动 dream会话计数同样只在交互触发非 heartbeat/cron 等非交互 trigger时递增——这与协议 3a 阶段要求删除heartbeat or cron execution records相呼应系统既避免把后台任务产生的噪声写入记忆也避免它们消耗整合名额。8. 小结memory-dream展示了 Mem0 OpenClaw 插件以协议文件驱动 agent 行为的设计范式SKILL.md 本身是完整的四阶段操作手册Orient → Gather Targets → Consolidate → Report定义了凭据零容忍、TTL 时限operational 7 天 / project 90 天、合并规则≤50 词、第三人称、自包含与量化报告模板而 dream-gate.ts 用廉价门槛先行 文件锁 写操作验证三件套让这份协议可以安全地自动运行——不频繁、不并发、不虚报完成。对运维者而言需要关注的落盘文件是dream-state.json整合状态与dream.lock并发锁需要关注的可观测信号是日志中的auto-dream triggered / completed / will retry事件对开发者而言扩展清理规则的正确方式是编辑 SKILL.md 的 Phase 规则或经skills.triage.credentialPatterns、skills.categories注入覆盖项而不是修改门控代码。【免费下载链接】embedchainThe Memory Layer for AI Agents - Drop-in memory infrastructure for AI agents and apps. Context that persists. Built for production.项目地址: https://gitcode.com/GitHub_Trending/em/embedchain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

learn-claude-code s04 Hooks:把扩展逻辑挂在 Agent 循环上,而不是写进循环里 2026/9/5 21:09:34

learn-claude-code s04 Hooks:把扩展逻辑挂在 Agent 循环上,而不是写进循环里

learn-claude-code s04 Hooks:把扩展逻辑挂在 Agent 循环上,而不是写进循环里 【免费下载链接】learn-claude-code Bash is all you need - A nano claude code–like 「agent harness」, built from 0 to 1 项目地址: https://gitcode.com/GitHub_Tre…

阅读更多 →
Wand-Enhancer 完整教程:免费解除 2 小时限制,手机扫码控制 Wand 2026/9/5 21:09:33

Wand-Enhancer 完整教程:免费解除 2 小时限制,手机扫码控制 Wand

Wand-Enhancer 完整教程:免费解除 2 小时限制,手机扫码控制 Wand 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer Wand&…

阅读更多 →
快速上手微信数据备份工具:从微信聊天记录导出到年度聊天报告的完整指南 2026/9/5 21:09:33

快速上手微信数据备份工具:从微信聊天记录导出到年度聊天报告的完整指南

快速上手微信数据备份工具:从微信聊天记录导出到年度聊天报告的完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_…

阅读更多 →
Redux 核心机制详解:State、Actions 与 Reducers 的设计、编写与 combineReducers 原理 2026/9/5 21:09:33

Redux 核心机制详解:State、Actions 与 Reducers 的设计、编写与 combineReducers 原理

Redux 核心机制详解:State、Actions 与 Reducers 的设计、编写与 combineReducers 原理 【免费下载链接】redux A JS library for predictable global state management 项目地址: https://gitcode.com/gh_mirrors/re/redux 本文基于 Redux 官方教程 Fundame…

阅读更多 →
用DW新闻视频练德语听力:四遍精听法实操指南 2026/9/5 21:09:33

用DW新闻视频练德语听力:四遍精听法实操指南

想用真实德语内容练听力,把“DW Deutsch lernen mit Videos 看新闻学德语”这套模式用好,比单纯刷单词和语法题要更有效。先说结论:这类新闻视频不是拿来看热闹的,它的核心价值在于持续更新、语速真实、结构相对固定,又…

阅读更多 →
蓝牙音箱项目设计全流程:从系统架构到量产调试的关键要点 2026/9/5 21:06:32

蓝牙音箱项目设计全流程:从系统架构到量产调试的关键要点

蓝牙音箱的设计如果只看最终产品,会觉得元件不多:一块蓝牙主控、一颗功放、一个喇叭、一块锂电池,再加按键和充电接口。真正动手做过一轮就会明白,这个项目的难点从来不在某一颗芯片能不能工作,而在于音频、射频、电源…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞