第五章:ACE 自适应上下文引擎

第五章:ACE 自适应上下文引擎

🧠 本章详细介绍 MiniClaw 的核心创新——ACE(Adaptive Context Engine)自适应上下文引擎。


5.1 ACE 引擎概述

5.1.1 什么是 ACE 引擎?

ACE(Adaptive Context Engine)是 MiniClaw 的核心创新,它实现了 动态上下文编译,根据时间、会话状态、Token 预算等因素智能组装上下文。

┌─────────────────────────────────────────────────────────────────────┐
│                    ACE 引擎设计理念                                  │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│    传统 AI 助手                      MiniClaw ACE 引擎              │
│    ┌───────────────────┐             ┌───────────────────┐         │
│    │                   │             │                   │         │
│    │   静态提示词      │             │   动态上下文编译   │         │
│    │   固定内容        │             │   运行时组装       │         │
│    │   无时间感知      │             │   时间模式感知     │         │
│    │   无预算控制      │             │   Token 预算管理   │         │
│    │                   │             │                   │         │
│    └───────────────────┘             └───────────────────┘         │
│                                                                     │
│    ❌ Token 浪费                     ✅ Token 优化                  │
│    ❌ 无上下文相关性                 ✅ 智能上下文选择              │
│    ❌ 无时间感知                     ✅ 时间模式适配                │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.1.2 ACE 核心能力

┌─────────────────────────────────────────────────────────────────────┐
│                      ACE 核心能力矩阵                                │
├─────────────────┬───────────────────────────────────────────────────┤
│      能力       │                    说明                            │
├─────────────────┼───────────────────────────────────────────────────┤
│  时间模式检测   │  根据当前时间自动选择上下文策略                   │
│                 │  morning/work/break/evening/night                 │
├─────────────────┼───────────────────────────────────────────────────┤
│  会话延续检测   │  检测是否为连续会话,避免重复加载                 │
│                 │  通过内容哈希差异检测                             │
├─────────────────┼───────────────────────────────────────────────────┤
│  Token 预算管理 │  动态分配 Token 预算,优先级截断                  │
│                 │  默认 8000,可通过环境变量配置                    │
├─────────────────┼───────────────────────────────────────────────────┤
│  内容差异检测   │  通过 MD5 哈希检测内容变化                        │
│                 │  只加载变化的部分                                 │
├─────────────────┼───────────────────────────────────────────────────┤
│  工作空间感知   │  自动检测项目类型、Git 状态、技术栈               │
│                 │  提供项目上下文                                   │
└─────────────────┴───────────────────────────────────────────────────┘

5.2 时间模式系统

5.2.1 五种时间模式

┌─────────────────────────────────────────────────────────────────────┐
│                      五种时间模式                                    │
├─────────────┬───────────────┬───────┬───────────────────────────────┤
│    模式     │    时间范围    │ Emoji │            特性               │
├─────────────┼───────────────┼───────┼───────────────────────────────┤
│   morning   │ 06:00 - 09:00 │  ☀️   │ • 早间简报                    │
│             │               │       │ • 新一天开始提示              │
│             │               │       │ • 加载昨日日志                │
├─────────────┼───────────────┼───────┼───────────────────────────────┤
│   work      │ 09:00 - 12:00 │  💼   │ • 标准工作模式                │
│             │ 14:00 - 18:00 │       │ • 完整上下文加载              │
│             │               │       │ • 技能优先级提升              │
├─────────────┼───────────────┼───────┼───────────────────────────────┤
│   break     │ 12:00 - 14:00 │  🍜   │ • 休息时段                    │
│             │               │       │ • 轻量上下文                  │
│             │               │       │ • 减少工作相关内容            │
├─────────────┼───────────────┼───────┼───────────────────────────────┤
│   evening   │ 18:00 - 22:00 │  🌙   │ • 反思建议                    │
│             │               │       │ • 蒸馏提醒                    │
│             │               │       │ • 日志整理提示                │
├─────────────┼───────────────┼───────┼───────────────────────────────┤
│   night     │ 22:00 - 06:00 │  😴   │ • 极简模式                    │
│             │               │       │ • 最小上下文                  │
│             │               │       │ • 仅核心文件                  │
└─────────────┴───────────────┴───────┴───────────────────────────────┘

5.2.2 时间模式检测逻辑

┌─────────────────────────────────────────────────────────────────────┐
│                    时间模式检测流程                                  │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│    ┌─────────────────────────────────────────────────────────────┐ │
│    │                    getTimeMode(hour)                         │ │
│    │                                                             │ │
│    │    输入: 当前小时 (0-23)                                    │ │
│    │    输出: TimeMode 字符串                                    │ │
│    │                                                             │ │
│    └─────────────────────────────────────────────────────────────┘ │
│                               │                                     │
│                               ▼                                     │
│    ┌─────────────────────────────────────────────────────────────┐ │
│    │                                                             │ │
│    │    hour >= 6 && hour < 9    ──────►  "morning"              │ │
│    │                                                             │ │
│    │    hour >= 9 && hour < 12   ─┐                              │ │
│    │    hour >= 14 && hour < 18  ─┼────►  "work"                 │ │
│    │                             │                               │ │
│    │    hour >= 12 && hour < 14  ──────►  "break"                │ │
│    │                                                             │ │
│    │    hour >= 18 && hour < 22  ──────►  "evening"              │ │
│    │                                                             │ │
│    │    hour >= 22 || hour < 6   ──────►  "night"                │ │
│    │                                                             │ │
│    └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.2.3 时间模式对上下文的影响

┌─────────────────────────────────────────────────────────────────────┐
│                  时间模式对上下文的影响                              │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│    ☀️ morning 模式                                                  │
│    ┌─────────────────────────────────────────────────────────────┐ │
│    │  • 添加早间问候                                              │ │
│    │  • 加载昨日日志 (yesterday.md)                               │ │
│    │  • 提示新一天开始                                            │ │
│    │  • 建议查看今日待办                                          │ │
│    └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
│    💼 work 模式                                                     │
│    ┌─────────────────────────────────────────────────────────────┐ │
│    │  • 完整上下文加载                                            │ │
│    │  • 技能优先级提升                                            │ │
│    │  • 工作空间感知增强                                          │ │
│    │  • 工具配置完整加载                                          │ │
│    └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
│    🍜 break 模式                                                    │
│    ┌─────────────────────────────────────────────────────────────┐ │
│    │  • 轻量上下文                                                │ │
│    │  • 减少工作相关内容                                          │ │
│    │  • 更轻松的交互风格                                          │ │
│    └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
│    🌙 evening 模式                                                  │
│    ┌─────────────────────────────────────────────────────────────┐ │
│    │  • 添加反思建议                                              │ │
│    │  • 蒸馏提醒                                                  │ │
│    │  • 日志整理提示                                              │ │
│    │  • 今日总结建议                                              │ │
│    └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
│    😴 night 模式                                                    │
│    ┌─────────────────────────────────────────────────────────────┐ │
│    │  • 极简模式                                                  │ │
│    │  • 最小上下文                                                │ │
│    │  • 仅加载核心文件 (IDENTITY, SOUL, USER)                     │ │
│    │  • 跳过技能和工作空间感知                                    │ │
│    └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.3 Token 预算管理

5.3.1 预算配置

┌─────────────────────────────────────────────────────────────────────┐
│                     Token 预算配置                                   │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  默认配置                                                           │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │  DEFAULT_TOKEN_BUDGET = 8000                                │   │
│  │  CHARS_PER_TOKEN = 4                                        │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
│  环境变量配置                                                       │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │  MINICLAW_TOKEN_BUDGET = 12000  // 自定义预算                │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
│  MCP 配置示例                                                       │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │  {                                                          │   │
│  │    "mcpServers": {                                          │   │
│  │      "miniclaw": {                                          │   │
│  │        "command": "npx",                                    │   │
│  │        "args": ["-y", "github:8421bit/miniclaw"],           │   │
│  │        "env": {                                             │   │
│  │          "MINICLAW_TOKEN_BUDGET": "12000"                   │   │
│  │        }                                                    │   │
│  │      }                                                      │   │
│  │    }                                                        │   │
│  │  }                                                          │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.3.2 预算编译算法

┌─────────────────────────────────────────────────────────────────────┐
│                    预算编译算法                                      │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  compileBudget(sections, tokenBudget)                               │
│                                                                     │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                                                             │   │
│  │  1️⃣ 按优先级排序段落 (从高到低)                              │   │
│  │     sections.sort((a, b) => b.priority - a.priority)        │   │
│  │                                                             │   │
│  │  2️⃣ 计算字符预算                                             │   │
│  │     charBudget = tokenBudget * CHARS_PER_TOKEN              │   │
│  │                                                             │   │
│  │  3️⃣ 逐段添加,直到预算耗尽                                   │   │
│  │     for (section of sections) {                             │   │
│  │       if (currentLength + section.length <= charBudget) {   │   │
│  │         result.push(section)                                │   │
│  │         currentLength += section.length                     │   │
│  │       } else {                                              │   │
│  │         // 预算耗尽,截断                                    │   │
│  │         break                                               │   │
│  │       }                                                     │   │
│  │     }                                                       │   │
│  │                                                             │   │
│  │  4️⃣ 返回编译结果                                             │   │
│  │     return result.join("\n\n---\n\n")                       │   │
│  │                                                             │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.3.3 优先级截断示例

┌─────────────────────────────────────────────────────────────────────┐
│                    优先级截断示例                                    │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  假设 Token 预算 = 8000,字符预算 = 32000                           │
│                                                                     │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │  Priority 10: IDENTITY.md + ACE Time Mode  (500 chars)      │   │
│  │  ✅ 已添加,剩余 31500 chars                                 │   │
│  ├─────────────────────────────────────────────────────────────┤   │
│  │  Priority 9:  SOUL.md + AGENTS.md          (2000 chars)     │   │
│  │  ✅ 已添加,剩余 29500 chars                                 │   │
│  ├─────────────────────────────────────────────────────────────┤   │
│  │  Priority 8:  USER.md                       (500 chars)     │   │
│  │  ✅ 已添加,剩余 29000 chars                                 │   │
│  ├─────────────────────────────────────────────────────────────┤   │
│  │  Priority 7:  MEMORY.md                     (3000 chars)    │   │
│  │  ✅ 已添加,剩余 26000 chars                                 │   │
│  ├─────────────────────────────────────────────────────────────┤   │
│  │  Priority 6:  Workspace + TOOLS.md          (2000 chars)    │   │
│  │  ✅ 已添加,剩余 24000 chars                                 │   │
│  ├─────────────────────────────────────────────────────────────┤   │
│  │  Priority 5:  Skills + Entities + Runtime   (10000 chars)   │   │
│  │  ✅ 已添加,剩余 14000 chars                                 │   │
│  ├─────────────────────────────────────────────────────────────┤   │
│  │  Priority 4:  HEARTBEAT.md                  (500 chars)     │   │
│  │  ✅ 已添加,剩余 13500 chars                                 │   │
│  ├─────────────────────────────────────────────────────────────┤   │
│  │  Priority 3:  Daily log                     (15000 chars)   │   │
│  │  ⚠️ 预算不足,截断                                           │   │
│  │  仅添加 13500 chars,剩余 0 chars                            │   │
│  ├─────────────────────────────────────────────────────────────┤   │
│  │  Priority 2:  BOOTSTRAP.md                  (跳过)          │   │
│  │  ❌ 预算耗尽,跳过                                           │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
│  结果:高优先级内容完整保留,低优先级内容被截断                      │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.4 会话延续检测

5.4.1 延续检测机制

┌─────────────────────────────────────────────────────────────────────┐
│                    会话延续检测机制                                  │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  detectContinuation(todayContent)                                   │
│                                                                     │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                                                             │   │
│  │  检测条件:                                                  │   │
│  │  ┌─────────────────────────────────────────────────────┐   │   │
│  │  │  1. 今日日志文件存在                                  │   │   │
│  │  │  2. 今日日志内容 > 100 字符                           │   │   │
│  │  │  3. 最后修改时间在 30 分钟内                          │   │   │
│  │  └─────────────────────────────────────────────────────┘   │   │
│  │                                                             │   │
│  │  如果满足条件:                                              │   │
│  │  ┌─────────────────────────────────────────────────────┐   │   │
│  │  │  return {                                            │   │   │
│  │  │    isContinuation: true,                             │   │   │
│  │  │    lastActivity: "5 minutes ago",                    │   │   │
│  │  │    hint: "Session continuation detected"             │   │   │
│  │  │  }                                                   │   │   │
│  │  └─────────────────────────────────────────────────────┘   │   │
│  │                                                             │   │
│  │  否则:                                                      │   │
│  │  ┌─────────────────────────────────────────────────────┐   │   │
│  │  │  return {                                            │   │   │
│  │  │    isContinuation: false,                            │   │   │
│  │  │    hint: "Fresh session start"                       │   │   │
│  │  │  }                                                   │   │   │
│  │  └─────────────────────────────────────────────────────┘   │   │
│  │                                                             │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.4.2 延续检测对上下文的影响

┌─────────────────────────────────────────────────────────────────────┐
│                延续检测对上下文的影响                                │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│    🔄 连续会话 (isContinuation = true)                              │
│    ┌─────────────────────────────────────────────────────────────┐ │
│    │  • 减少重复的初始化内容                                      │ │
│    │  • 跳过"新会话"提示                                          │ │
│    │  • 保持上下文连贯性                                          │ │
│    │  • 显示上次活动时间                                          │ │
│    └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
│    🆕 新会话 (isContinuation = false)                               │
│    ┌─────────────────────────────────────────────────────────────┐ │
│    │  • 完整上下文加载                                            │ │
│    │  • 添加"新会话"提示                                          │ │
│    │  • 执行首次运行检查                                          │ │
│    │  • 加载 BOOTSTRAP.md(如果存在)                             │ │
│    └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.5 内容差异检测

5.5.1 哈希差异检测

┌─────────────────────────────────────────────────────────────────────┐
│                    内容差异检测机制                                  │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  computeDelta(currentHashes, previousHashes)                        │
│                                                                     │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                                                             │   │
│  │  1️⃣ 计算每个文件的 MD5 哈希                                   │   │
│  │     hashString(content) → "a1b2c3d4"                        │   │
│  │                                                             │   │
│  │  2️⃣ 对比当前哈希与上次哈希                                    │   │
│  │     for (file of files) {                                   │   │
│  │       if (currentHashes[file] !== previousHashes[file]) {   │   │
│  │         changedFiles.push(file)                             │   │
│  │       }                                                     │   │
│  │     }                                                       │   │
│  │                                                             │   │
│  │  3️⃣ 返回变化报告                                              │   │
│  │     return {                                                │   │
│  │       changed: changedFiles,                                │   │
│  │       added: newFiles,                                      │   │
│  │       removed: deletedFiles                                 │   │
│  │     }                                                       │   │
│  │                                                             │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.5.2 差异检测应用场景

┌─────────────────────────────────────────────────────────────────────┐
│                   差异检测应用场景                                   │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  📝 文件变化检测                                                    │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │  • SOUL.md 被修改 → 提示"性格已进化"                          │   │
│  │  • USER.md 被修改 → 提示"用户偏好已更新"                      │   │
│  │  • MEMORY.md 被修改 → 提示"长期记忆已更新"                    │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
│  🔧 技能变化检测                                                    │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │  • 新技能添加 → 自动发现并加载                                │   │
│  │  • 技能删除 → 从缓存中移除                                    │   │
│  │  • 技能更新 → 刷新缓存                                        │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
│  📊 日志变化检测                                                    │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │  • 今日日志新增 → 触发实体提取                                │   │
│  │  • 日志大小超限 → 触发蒸馏评估                                │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.6 工作空间感知

5.6.1 工作空间检测

┌─────────────────────────────────────────────────────────────────────┐
│                    工作空间感知机制                                  │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  detectWorkspace()                                                  │
│                                                                     │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                                                             │   │
│  │  检测项目类型:                                              │   │
│  │  ┌─────────────────────────────────────────────────────┐   │   │
│  │  │  package.json    → Node.js / JavaScript 项目         │   │   │
│  │  │  pyproject.toml  → Python 项目                       │   │   │
│  │  │  Cargo.toml      → Rust 项目                         │   │   │
│  │  │  go.mod          → Go 项目                           │   │   │
│  │  │  pom.xml         → Java 项目                         │   │   │
│  │  │  .git/           → Git 仓库                          │   │   │
│  │  └─────────────────────────────────────────────────────┘   │   │
│  │                                                             │   │
│  │  检测 Git 状态:                                             │   │
│  │  ┌─────────────────────────────────────────────────────┐   │   │
│  │  │  git branch       → 当前分支                          │   │   │
│  │  │  git status       → 文件状态                          │   │   │
│  │  │  git remote       → 远程仓库                          │   │   │
│  │  └─────────────────────────────────────────────────────┘   │   │
│  │                                                             │   │
│  │  检测技术栈:                                                │   │
│  │  ┌─────────────────────────────────────────────────────┐   │   │
│  │  │  dependencies    → 依赖列表                           │   │   │
│  │  │  scripts         → 可用脚本                           │   │   │
│  │  │  frameworks      → 框架检测                           │   │   │
│  │  └─────────────────────────────────────────────────────┘   │   │
│  │                                                             │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.6.2 工作空间信息注入

┌─────────────────────────────────────────────────────────────────────┐
│                   工作空间信息注入示例                               │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ## 📁 Workspace Context                                            │
│                                                                     │
│  ```                                                                │
│  Project: MiniClaw                                                  │
│  Type: Node.js / TypeScript                                         │
│  Branch: main                                                       │
│  Status: clean (no uncommitted changes)                             │
│  Remote: https://github.com/8421bit/miniclaw                        │
│                                                                     │
│  Dependencies:                                                      │
│  - @modelcontextprotocol/sdk: ^1.0.0                               │
│  - node-cron: ^3.0.0                                               │
│  - zod: ^3.22.0                                                    │
│                                                                     │
│  Scripts:                                                           │
│  - npm run build    → TypeScript 编译                              │
│  - npm run start    → 启动 MCP 服务器                              │
│  ```                                                                │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.7 ACE 引擎完整流程

┌─────────────────────────────────────────────────────────────────────┐
│                    ACE 引擎完整流程                                  │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│    用户请求上下文                                                   │
│         │                                                            │
│         ▼                                                            │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  1️⃣ 初始化环境                                               │  │
│    │     • ensureDirs()                                          │  │
│    │     • loadState()                                           │  │
│    │     • entityStore.load()                                    │  │
│    └─────────────────────────────────────────────────────────────┘  │
│         │                                                            │
│         ▼                                                            │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  2️⃣ 检测上下文模式                                           │  │
│    │     • minimal 模式 → 返回子代理上下文                        │  │
│    │     • full 模式 → 继续                                       │  │
│    └─────────────────────────────────────────────────────────────┘  │
│         │                                                            │
│         ▼                                                            │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  3️⃣ ACE 时间模式检测                                         │  │
│    │     • getTimeMode(hour)                                      │  │
│    │     • morning/work/break/evening/night                       │  │
│    └─────────────────────────────────────────────────────────────┘  │
│         │                                                            │
│         ▼                                                            │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  4️⃣ 并行 I/O 扫描                                            │  │
│    │     • skillCache.getAll()                                    │  │
│    │     • scanMemory()                                           │  │
│    │     • loadTemplates()                                        │  │
│    │     • detectWorkspace()                                      │  │
│    └─────────────────────────────────────────────────────────────┘  │
│         │                                                            │
│         ▼                                                            │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  5️⃣ 会话延续检测                                             │  │
│    │     • detectContinuation(todayContent)                       │  │
│    └─────────────────────────────────────────────────────────────┘  │
│         │                                                            │
│         ▼                                                            │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  6️⃣ 实体相关性提取                                           │  │
│    │     • entityStore.surfaceRelevant(todayContent)              │  │
│    └─────────────────────────────────────────────────────────────┘  │
│         │                                                            │
│         ▼                                                            │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  7️⃣ 上下文段落组装(按优先级)                               │  │
│    │     • Priority 10: Identity core, ACE Time Mode              │  │
│    │     • Priority 9: SOUL.md, AGENTS.md                         │  │
│    │     • Priority 8: USER.md                                    │  │
│    │     • Priority 7: MEMORY.md                                  │  │
│    │     • Priority 6: Workspace, TOOLS.md                        │  │
│    │     • Priority 5: Skills, Entities, Runtime                  │  │
│    │     • Priority 4: HEARTBEAT.md                               │  │
│    │     • Priority 3: Daily log                                  │  │
│    │     • Priority 2: BOOTSTRAP.md                               │  │
│    └─────────────────────────────────────────────────────────────┘  │
│         │                                                            │
│         ▼                                                            │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  8️⃣ 预算编译                                                 │  │
│    │     • compileBudget(sections, tokenBudget)                   │  │
│    └─────────────────────────────────────────────────────────────┘  │
│         │                                                            │
│         ▼                                                            │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  9️⃣ 内容哈希差异检测                                         │  │
│    │     • computeDelta(currentHashes, previousHashes)            │  │
│    └─────────────────────────────────────────────────────────────┘  │
│         │                                                            │
│         ▼                                                            │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  🔟 文件健康检查                                             │  │
│    │     • checkFileHealth()                                      │  │
│    └─────────────────────────────────────────────────────────────┘  │
│         │                                                            │
│         ▼                                                            │
│    返回编译后的上下文                                               │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

本章小结

┌─────────────────────────────────────────────────────────────────────┐
│                     第五章 核心要点                                  │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  🧠 ACE 引擎是 MiniClaw 的核心创新                                  │
│     • 动态上下文编译,运行时组装                                    │
│                                                                     │
│  ⏰ 五种时间模式                                                    │
│     • morning/work/break/evening/night                             │
│     • 每种模式有不同的上下文策略                                    │
│                                                                     │
│  💰 Token 预算管理                                                  │
│     • 默认 8000,可配置                                             │
│     • 优先级截断,保证核心内容                                      │
│                                                                     │
│  🔄 会话延续检测                                                    │
│     • 检测连续会话,避免重复加载                                    │
│                                                                     │
│  📊 内容差异检测                                                    │
│     • MD5 哈希检测内容变化                                          │
│                                                                     │
│  📁 工作空间感知                                                    │
│     • 自动检测项目类型、Git 状态、技术栈                            │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

下一章:记忆系统 →

← 返回目录