第六章:记忆系统
💾 本章详细介绍 MiniClaw 的双层记忆系统和记忆蒸馏机制。
6.1 记忆系统概述
6.1.1 什么是双层记忆系统?
MiniClaw 采用 双层记忆系统,模仿人类的短期记忆和长期记忆机制。
┌─────────────────────────────────────────────────────────────────────┐
│ 双层记忆系统设计 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 人类记忆 MiniClaw 记忆系统 │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ │ │ │ │
│ │ 短期记忆 │ │ 每日日志 │ │
│ │ (工作记忆) │ │ memory/YYYY-MM- │ │
│ │ 容量有限 │ │ DD.md │ │
│ │ 易遗忘 │ │ 原始对话记录 │ │
│ │ │ │ │ │
│ ├───────────────────┤ ├───────────────────┤ │
│ │ │ │ │ │
│ │ 长期记忆 │ │ MEMORY.md │ │
│ │ (永久记忆) │ │ 蒸馏后的高价值 │ │
│ │ 容量大 │ │ 事实和决策 │ │
│ │ 需要巩固 │ │ 跨会话持久 │ │
│ │ │ │ │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
│ 🔄 记忆巩固过程 = 记忆蒸馏 │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.1.2 记忆系统架构
┌─────────────────────────────────────────────────────────────────────┐
│ 记忆系统架构 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ │
│ │ 用户对话 │ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 短期记忆层 │ │
│ │ memory/YYYY-MM-DD.md │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────────────┐ │ │
│ │ │ ## 2026-02-12 │ │ │
│ │ │ │ │ │
│ │ │ ### 09:30 - 项目讨论 │ │ │
│ │ │ - 用户询问 MiniClaw 架构 │ │ │
│ │ │ - 讨论了 ACE 引擎的设计 │ │ │
│ │ │ - 用户偏好:简洁回答 │ │ │
│ │ │ │ │ │
│ │ │ ### 14:00 - 代码审查 │ │ │
│ │ │ - 审查了 PR #42 │ │ │
│ │ │ - 发现性能问题 │ │ │
│ │ └──────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └────────────────────────────┬───────────────────────────────┘ │
│ │ │
│ │ 记忆蒸馏 │
│ │ (miniclaw_growup) │
│ ▼ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 长期记忆层 │ │
│ │ MEMORY.md │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────────────┐ │ │
│ │ │ ## 📝 The Vault │ │ │
│ │ │ │ │ │
│ │ │ ### 用户偏好 │ │ │
│ │ │ - 偏好简洁的回答 │ │ │
│ │ │ - 使用 pnpm 而非 npm │ │ │
│ │ │ │ │ │
│ │ │ ### 项目知识 │ │ │
│ │ │ - MiniClaw 使用 ACE 引擎管理上下文 │ │ │
│ │ │ - Token 预算默认 8000 │ │ │
│ │ │ │ │ │
│ │ │ ### 重要决策 │ │ │
│ │ │ - 2026-02-10: 决定采用微内核架构 │ │ │
│ │ └──────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.2 短期记忆(每日日志)
6.2.1 日志文件结构
┌─────────────────────────────────────────────────────────────────────┐
│ 每日日志文件结构 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 文件路径:~/.miniclaw/memory/YYYY-MM-DD.md │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ # 📅 2026-02-12 - Wednesday │ │
│ │ │ │
│ │ ## 🌅 Morning Session │ │
│ │ **09:30** - 项目讨论 │ │
│ │ - 用户询问 MiniClaw 架构设计 │ │
│ │ - 讨论了 ACE 引擎的时间模式系统 │ │
│ │ - 用户偏好:喜欢简洁的回答 │ │
│ │ │ │
│ │ ## 🌞 Afternoon Session │ │
│ │ **14:00** - 代码审查 │ │
│ │ - 审查了 PR #42 │ │
│ │ - 发现性能问题:缓存未生效 │ │
│ │ - 建议:添加 TTL 检查 │ │
│ │ │ │
│ │ **16:30** - 技术决策 │ │
│ │ - 决定使用 MD5 哈希进行内容差异检测 │ │
│ │ - 用户确认:同意这个方案 │ │
│ │ │ │
│ │ ## 📊 Summary │ │
│ │ - 工具调用:miniclaw_note (3), miniclaw_update (2) │ │
│ │ - 关键实体:ACE引擎, 时间模式, MD5哈希 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.2.2 日志写入机制
┌─────────────────────────────────────────────────────────────────────┐
│ 日志写入机制 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ miniclaw_note 工具 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 触发场景: │ │
│ │ • 用户说"记住这个" │ │
│ │ • 重要事件发生 │ │
│ │ • 用户表达偏好 │ │
│ │ • 发现环境配置 │ │
│ │ │ │
│ │ 写入流程: │ │
│ │ 1. 获取今日日期 │ │
│ │ 2. 构建日志文件路径 │ │
│ │ 3. 追加内容到文件末尾 │ │
│ │ 4. 更新心跳状态 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ 写入格式: │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ### HH:MM - [事件标题] │ │
│ │ - [详细内容] │ │
│ │ - [相关实体] │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.2.3 日志扫描与加载
┌─────────────────────────────────────────────────────────────────────┐
│ 日志扫描机制 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ scanMemory() │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 扫描范围: │ │
│ │ • 今日日志 (YYYY-MM-DD.md) │ │
│ │ • 昨日日志 (YYYY-MM-DD.md) │ │
│ │ • 可选:最近 7 天日志 │ │
│ │ │ │
│ │ 加载策略: │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ morning 模式:加载今日 + 昨日 │ │ │
│ │ │ work 模式:加载今日 + 昨日 │ │ │
│ │ │ break 模式:仅加载今日 │ │ │
│ │ │ evening 模式:加载今日 + 昨日 │ │ │
│ │ │ night 模式:仅加载今日(截断) │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ Token 预算: │ │
│ │ • 日志内容优先级 = 3 │ │
│ │ • 可能被截断以适应预算 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.3 长期记忆(MEMORY.md)
6.3.1 长期记忆结构
┌─────────────────────────────────────────────────────────────────────┐
│ 长期记忆结构 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ MEMORY.md │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ --- │ │
│ │ summary: "Long-term Memory. Stores distilled..." │ │
│ │ read_when: │ │
│ │ - Main session only │ │
│ │ --- │ │
│ │ │ │
│ │ # MEMORY.md - Long Term Memory │ │
│ │ │ │
│ │ ## ⚠️ Security Rules │ │
│ │ - 仅在主会话加载 │ │
│ │ - 不在共享上下文加载 │ │
│ │ │ │
│ │ ## 📝 The Vault │ │
│ │ │ │
│ │ ### 👤 用户偏好 │ │
│ │ - 偏好简洁的回答,不需要过多客套 │ │
│ │ - 使用 pnpm 而非 npm │ │
│ │ - 工作时间:周一至周五 9:00-18:00 │ │
│ │ │ │
│ │ ### 📁 项目知识 │ │
│ │ - MiniClaw 使用 ACE 引擎管理上下文 │ │
│ │ - Token 预算默认 8000,可通过环境变量配置 │ │
│ │ - 时间模式:morning/work/break/evening/night │ │
│ │ │ │
│ │ ### 🎯 重要决策 │ │
│ │ - 2026-02-10: 决定采用微内核架构 │ │
│ │ - 2026-02-11: 选择 MD5 哈希进行差异检测 │ │
│ │ │ │
│ │ ### 🔧 技术栈 │ │
│ │ - 前端:React + TypeScript │ │
│ │ - 后端:Node.js + Express │ │
│ │ - 数据库:PostgreSQL │ │
│ │ │ │
│ │ ### 📌 待办事项 │ │
│ │ - [ ] 完成文档编写 │ │
│ │ - [ ] 优化缓存机制 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.3.2 长期记忆分类
┌─────────────────────────────────────────────────────────────────────┐
│ 长期记忆分类 │
├─────────────────┬───────────────────────────────────────────────────┤
│ 分类 │ 内容示例 │
├─────────────────┼───────────────────────────────────────────────────┤
│ 👤 用户偏好 │ 交互风格、技术偏好、工作时间 │
├─────────────────┼───────────────────────────────────────────────────┤
│ 📁 项目知识 │ 架构决策、技术栈、配置参数 │
├─────────────────┼───────────────────────────────────────────────────┤
│ 🎯 重要决策 │ 里程碑决策、架构选择、重大变更 │
├─────────────────┼───────────────────────────────────────────────────┤
│ 🔧 技术栈 │ 使用的框架、库、工具 │
├─────────────────┼───────────────────────────────────────────────────┤
│ 📌 待办事项 │ 长期任务、提醒事项 │
├─────────────────┼───────────────────────────────────────────────────┤
│ 💡 经验教训 │ 踩过的坑、最佳实践 │
└─────────────────┴───────────────────────────────────────────────────┘
6.3.3 安全规则
┌─────────────────────────────────────────────────────────────────────┐
│ 长期记忆安全规则 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ⚠️ 仅在主会话加载 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ✅ 主会话 (Main Session) │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ • 用户直接与 Agent 聊天 │ │ │
│ │ │ • 加载 MEMORY.md │ │ │
│ │ │ • 可以读取、编辑、更新 MEMORY.md │ │ │
│ │ │ • 包含个人上下文 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ❌ 共享上下文 (Shared Context) │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ • 群聊、与其他人的会话 │ │ │
│ │ │ • 不加载 MEMORY.md │ │ │
│ │ │ • 防止个人信息泄露 │ │ │
│ │ │ • 仅使用公开的上下文 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ 设计目的:保护用户隐私,防止敏感信息泄露 │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.4 记忆蒸馏机制
6.4.1 什么是记忆蒸馏?
记忆蒸馏是将短期记忆(每日日志)中的高价值信息提取并整合到长期记忆(MEMORY.md)的过程。
┌─────────────────────────────────────────────────────────────────────┐
│ 记忆蒸馏流程 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 短期记忆 (原始日志) 长期记忆 (蒸馏结果) │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ │ │ │ │
│ │ 大量对话记录 │ │ 精炼的高价值 │ │
│ │ 包含噪音 │ ──────► │ 事实和决策 │ │
│ │ 冗余信息 │ 蒸馏 │ 结构化存储 │ │
│ │ 临时上下文 │ │ 跨会话持久 │ │
│ │ │ │ │ │
│ │ ~10,000 字符 │ │ ~1,000 字符 │ │
│ │ │ │ │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
│ 压缩比:约 10:1 │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.4.2 蒸馏触发条件
┌─────────────────────────────────────────────────────────────────────┐
│ 蒸馏触发条件 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ evaluateDistillation() │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 触发条件: │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ 1. 今日日志大小 > 5000 字符 │ │ │
│ │ │ 2. 距离上次蒸馏 > 6 小时 │ │ │
│ │ │ 3. 用户明确请求蒸馏 │ │ │
│ │ │ 4. evening 时间模式 + 日志有内容 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ 返回值: │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ { │ │ │
│ │ │ needsDistillation: true, │ │ │
│ │ │ reason: "Daily log exceeds threshold", │ │ │
│ │ │ logSize: 7500, │ │ │
│ │ │ threshold: 5000 │ │ │
│ │ │ } │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.4.3 蒸馏执行流程
┌─────────────────────────────────────────────────────────────────────┐
│ 蒸馏执行流程 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ miniclaw_growup 提示词 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Step 1: 读取日志 │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ • 读取今日日志 memory/YYYY-MM-DD.md │ │ │
│ │ │ • 读取昨日日志(如果存在) │ │ │
│ │ │ • 读取当前 MEMORY.md │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ Step 2: 分析内容 │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ • 识别用户偏好表达 │ │ │
│ │ │ • 提取重要决策 │ │ │
│ │ │ • 发现新实体 │ │ │
│ │ │ • 总结经验教训 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ Step 3: 更新长期记忆 │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ • 使用 miniclaw_update 更新 MEMORY.md │ │ │
│ │ │ • 合并重复信息 │ │ │
│ │ │ • 保持结构化格式 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ Step 4: 归档日志 │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ • 使用 miniclaw_archive 归档日志 │ │ │
│ │ │ • 移动到 memory/archived/ │ │ │
│ │ │ • 清空今日日志文件 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.4.4 蒸馏示例
┌─────────────────────────────────────────────────────────────────────┐
│ 蒸馏示例 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 输入:今日日志 (memory/2026-02-12.md) │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ ## 09:30 - 项目讨论 │ │
│ │ - 用户询问 MiniClaw 架构设计 │ │
│ │ - 讨论了 ACE 引擎的时间模式系统 │ │
│ │ - 用户说:"我喜欢简洁的回答,不需要太多客套" │ │
│ │ - 用户说:"记住,我们项目用 pnpm,不用 npm" │ │
│ │ │ │
│ │ ## 14:00 - 代码审查 │ │
│ │ - 审查了 PR #42 │ │
│ │ - 发现性能问题:缓存未生效 │ │
│ │ - 用户确认:"就用 MD5 哈希做差异检测吧" │ │
│ │ │ │
│ │ ## 16:30 - 技术决策 │ │
│ │ - 决定使用 MD5 哈希进行内容差异检测 │ │
│ │ - 用户确认:同意这个方案 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ 输出:更新后的 MEMORY.md │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ ### 👤 用户偏好 │ │
│ │ - 偏好简洁的回答,不需要过多客套 │ │
│ │ - 使用 pnpm 而非 npm │ │
│ │ │ │
│ │ ### 📁 项目知识 │ │
│ │ - MiniClaw 使用 ACE 引擎管理上下文 │ │
│ │ - 使用 MD5 哈希进行内容差异检测 │ │
│ │ │ │
│ │ ### 🎯 重要决策 │ │
│ │ - 2026-02-12: 决定使用 MD5 哈希进行差异检测 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.5 实体知识图谱
6.5.1 实体类型定义
┌─────────────────────────────────────────────────────────────────────┐
│ 实体类型定义 │
├─────────────────┬───────────────────────────────────────────────────┤
│ 类型 │ 说明 │
├─────────────────┼───────────────────────────────────────────────────┤
│ person │ 人物:用户、同事、客户等 │
├─────────────────┼───────────────────────────────────────────────────┤
│ project │ 项目:正在进行的项目 │
├─────────────────┼───────────────────────────────────────────────────┤
│ tool │ 工具:使用的软件、框架、库 │
├─────────────────┼───────────────────────────────────────────────────┤
│ concept │ 概念:技术概念、方法论 │
├─────────────────┼───────────────────────────────────────────────────┤
│ place │ 地点:工作地点、服务器位置 │
├─────────────────┼───────────────────────────────────────────────────┤
│ other │ 其他:无法归类的实体 │
└─────────────────┴───────────────────────────────────────────────────┘
6.5.2 实体数据结构
┌─────────────────────────────────────────────────────────────────────┐
│ 实体数据结构 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ interface Entity { │
│ name: string; // 实体名称 │
│ type: EntityType; // 实体类型 │
│ attributes: Record<string, string>; // 属性字典 │
│ relations: string[]; // 关联实体列表 │
│ firstMentioned: string; // 首次提及日期 │
│ lastMentioned: string; // 最后提及日期 │
│ mentionCount: number; // 提及次数 │
│ } │
│ │
│ 示例: │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ { │ │
│ │ "name": "ACE引擎", │ │
│ │ "type": "concept", │ │
│ │ "attributes": { │ │
│ │ "description": "自适应上下文引擎", │ │
│ │ "version": "v0.5.0" │ │
│ │ }, │ │
│ │ "relations": ["MiniClaw", "时间模式", "Token预算"], │ │
│ │ "firstMentioned": "2026-02-10", │ │
│ │ "lastMentioned": "2026-02-12", │ │
│ │ "mentionCount": 15 │ │
│ │ } │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.5.3 实体管理工具
┌─────────────────────────────────────────────────────────────────────┐
│ miniclaw_entity 工具 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 操作类型: │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ add - 添加实体 │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ miniclaw_entity add "ACE引擎" concept │ │ │
│ │ │ → 创建新实体或更新已有实体 │ │ │
│ │ │ → 自动更新提及次数和时间 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ remove - 删除实体 │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ miniclaw_entity remove "ACE引擎" │ │ │
│ │ │ → 删除指定实体 │ │ │
│ │ │ → 返回是否成功 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ link - 添加关联 │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ miniclaw_entity link "ACE引擎" "MiniClaw" │ │ │
│ │ │ → 为实体添加关联关系 │ │ │
│ │ │ → 构建知识图谱 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ query - 查询实体 │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ miniclaw_entity query "ACE引擎" │ │ │
│ │ │ → 返回实体详细信息 │ │ │
│ │ │ → 包含属性、关联、提及统计 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ list - 列出实体 │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ miniclaw_entity list concept │ │ │
│ │ │ → 列出所有实体(可按类型筛选) │ │ │
│ │ │ → 按提及次数排序 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.5.4 实体相关性提取
┌─────────────────────────────────────────────────────────────────────┐
│ 实体相关性提取 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ surfaceRelevant(text) │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 功能:从文本中提取相关实体,用于上下文注入 │ │
│ │ │ │
│ │ 算法: │ │
│ │ 1. 遍历所有已知实体 │ │
│ │ 2. 检查实体名称是否出现在文本中 │ │
│ │ 3. 按提及次数排序 │ │
│ │ 4. 返回前 5 个最相关的实体 │ │
│ │ │ │
│ │ 示例: │ │
│ │ 输入:"用户询问 ACE 引擎的时间模式设计" │ │
│ │ 输出:[ │ │
│ │ { name: "ACE引擎", mentionCount: 15 }, │ │
│ │ { name: "时间模式", mentionCount: 8 }, │ │
│ │ { name: "MiniClaw", mentionCount: 20 } │ │
│ │ ] │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ 应用场景: │
│ • 上下文编译时自动注入相关实体 │
│ • 提高对话的上下文相关性 │
│ • 构建知识图谱关联 │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.6 记忆检索
6.6.1 miniclaw_search 工具
┌─────────────────────────────────────────────────────────────────────┐
│ miniclaw_search 工具 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 功能:搜索记忆库内容 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 搜索范围: │ │
│ │ • MEMORY.md (长期记忆) │ │
│ │ • memory/YYYY-MM-DD.md (每日日志) │ │
│ │ • memory/archived/*.md (归档日志) │ │
│ │ │ │
│ │ 搜索方式: │ │
│ │ • 关键词匹配 │ │
│ │ • 大小写不敏感 │ │
│ │ • 返回匹配的上下文片段 │ │
│ │ │ │
│ │ 使用示例: │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ miniclaw_search "ACE引擎" │ │ │
│ │ │ → 返回所有提到 ACE 引擎的记忆片段 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.6.2 miniclaw_recall 提示词
┌─────────────────────────────────────────────────────────────────────┐
│ miniclaw_recall 提示词 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 功能:查看已记住的内容 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 触发场景: │ │
│ │ • 用户问"你记得什么?" │ │
│ │ • 用户想查看记忆内容 │ │
│ │ • 需要回顾历史信息 │ │
│ │ │ │
│ │ 输出内容: │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ ## 📝 长期记忆 │ │ │
│ │ │ [MEMORY.md 内容摘要] │ │ │
│ │ │ │ │ │
│ │ │ ## 📅 最近日志 │ │ │
│ │ │ [最近 3 天日志摘要] │ │ │
│ │ │ │ │ │
│ │ │ ## 🕸️ 实体图谱 │ │ │
│ │ │ [重要实体列表] │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
本章小结
┌─────────────────────────────────────────────────────────────────────┐
│ 第六章 核心要点 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 💾 双层记忆系统 │
│ • 短期记忆:每日日志 (memory/YYYY-MM-DD.md) │
│ • 长期记忆:MEMORY.md │
│ │
│ 🔄 记忆蒸馏机制 │
│ • 将短期记忆压缩为长期记忆 │
│ • 压缩比约 10:1 │
│ • 触发条件:日志大小 > 5000 字符 │
│ │
│ 🕸️ 实体知识图谱 │
│ • 6 种实体类型:person/project/tool/concept/place/other │
│ • 自动提取相关性 │
│ │
│ 🔒 安全规则 │
│ • MEMORY.md 仅在主会话加载 │
│ │
│ 🔍 记忆检索工具 │
│ • miniclaw_search:搜索记忆库 │
│ • miniclaw_recall:查看已记住的内容 │
│ │
└─────────────────────────────────────────────────────────────────────┘
下一章:技能系统 →