第六章:记忆系统

第六章:记忆系统

💾 本章详细介绍 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:查看已记住的内容                             │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

下一章:技能系统 →

← 返回目录