1. AutoDream 系统概述
AutoDream 是 Claude Code 中一个精妙的跨会话记忆整合引擎,它像一位不知疲倦的图书管理员,在每轮对话结束后默默工作,整理、压缩和更新 AI 的记忆库。这个系统解决了大型语言模型在长期对话中面临的核心挑战:如何有效管理不断增长的上下文信息,同时保持记忆的准确性和相关性。
1.1 核心功能解析
AutoDream 的核心工作机制可以概括为:
- 静默触发:在每轮对话结束时自动检查是否需要进行记忆整合
- 独立处理:通过 fork 出的子代理(subagent)执行实际整理工作
- 智能压缩:合并重复信息,剔除过时内容,保留有价值的知识
- 安全更新:将整理后的记忆写入专门的 memory/目录
这种设计使得 Claude 能够:
- 避免上下文窗口的无限膨胀
- 保持长期记忆的准确性和一致性
- 减少重复信息的干扰
- 提高后续对话的响应质量
1.2 系统类比理解
为了更好地理解 AutoDream 的作用,可以用日常生活中的两个场景来类比:
-
日常笔记(extractMemories):
- 相当于我们平时随手做的零散记录
- 特点是即时、片段化、未经整理
- 当轮对话触发,记录当前对话中的重要信息
-
周末整理(autoDream):
- 相当于定期对笔记进行系统化整理
- 将零散信息归类、合并、去重
- 跨会话触发,需要积累足够新材料才启动
这种两级记忆处理机制既保证了信息的及时捕获,又确保了长期记忆的组织有序。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构深度解析
2.1 整体工作流程
AutoDream 的执行流程经过精心设计,确保高效且可靠:
- 触发时机:每轮对话结束时(stopHooks.ts)
- 前置检查:执行一系列门控条件判断
- 子代理启动:通过 runForkedAgent 运行记忆整理任务
- 结果处理:成功则更新系统消息,失败则回滚
关键设计特点:
- 完全异步:不影响主对话流程
- 资源感知:检查条件按成本递增排列
- 进程隔离:使用独立子代理避免干扰主进程
2.2 核心组件交互
系统主要包含以下几个关键组件:
- autoDream.ts:主逻辑入口,协调整个流程
- consolidationLock.ts:实现精妙的文件锁机制
- consolidationPrompt.ts:构建记忆整理的具体指令
- config.ts:管理系统配置和参数
这些组件协同工作,形成了一个完整的记忆处理流水线。特别值得注意的是,系统通过巧妙的工程设计,将多个功能整合在少量代码中,体现了高度的代码复用和模块化思想。
3. 五层门控机制详解
AutoDream 最精妙的设计之一是其五层递进式门控机制,这些检查按执行成本从低到高排列,确保系统不会在不必要时消耗宝贵资源。
3.1 第一层:环境前置检查
这是最轻量级的检查,完全不涉及I/O操作:
typescript复制function isGateOpen(): boolean {
if (getKairosActive()) return false // KAIROS模式使用不同的记忆处理方式
if (getIsRemoteMode()) return false // 远程模式下不触发
if (!isAutoMemoryEnabled()) return false // 用户是否启用了自动记忆
return isAutoDreamEnabled() // 配置/功能开关
}
这一层的设计考量:
- 快速短路:在最早期排除明显不需要执行的情况
- 无副作用:纯内存操作,执行成本极低
- 配置灵活:支持多级开关控制
3.2 第二层:时间门控
通过文件系统的mtime属性实现高效的时间
