第12章 · DreamTask与自动记忆巩固
第12章 · DreamTask与自动记忆巩固
12.1 Dream任务的生命周期
tasks/DreamTask/DreamTask.ts定义了Dream任务的完整状态模型:
export type DreamPhase = 'starting' | 'updating'
export type DreamTaskState = TaskStateBase & {
type: 'dream'
phase: DreamPhase
sessionsReviewing: number // 正在回顾的会话数
filesTouched: string[] // 被修改的文件列表
turns: DreamTurn[] // 对话轮次记录
abortController?: AbortController
priorMtime: number // 之前的修改时间
}Dream任务的每个"turn"包含文本内容和工具使用次数:
export type DreamTurn = {
text: string
toolUseCount: number
}UI层面,Dream任务最多保留30个turns(MAX_TURNS = 30),超出后滚动丢弃最早的记录。
12.2 AutoDream服务:触发条件
services/autoDream/autoDream.ts实现了Dream的自动触发逻辑。触发需要通过三道"门":
时间门:距离上次记忆巩固至少24小时
// hours since lastConsolidatedAt >= minHours (default: 24)会话门:自上次巩固以来至少有5个新会话
// session count with mtime > lastConsolidatedAt >= minSessions (default: 5)锁定门:没有其他进程正在执行巩固
配置通过GrowthBook特性标志tengu_onyx_plover动态控制,允许Anthropic远程调整触发阈值。
有一个重要的互斥逻辑:
function isGateOpen(): boolean {
if (getKairosActive()) return false // KAIROS使用磁盘技能Dream
if (getIsRemoteMode()) return false
if (!isAutoMemoryEnabled()) return false
return isAutoDreamEnabled()
}当KAIROS处于活跃状态时,AutoDream被禁用——因为KAIROS有自己的记忆巩固机制(通过KAIROS_DREAM标志控制),避免两套系统冲突。
扫描节流设置为10分钟(SESSION_SCAN_INTERVAL_MS = 10 * 60 * 1000),当时间门已通过但会话门尚未满足时,避免频繁扫描文件系统。
12.3 只读子Agent的权限约束
Dream使用runForkedAgent()在隔离环境中执行,严格限制其工具使用:
- Bash白名单仅包含只读命令:
ls,find,grep,cat,stat,wc,head,tail - 可以编辑的仅限记忆目录下的文件
- 跳过transcript持久化(
skipTranscript: true),因为Dream本身是元数据操作 - 共享父级的prompt cache以提高效率
12.4 四阶段巩固周期
services/autoDream/consolidationPrompt.ts定义了Dream的四阶段执行流程:
阶段1 — 定位(Orient) 列出记忆目录结构,阅读索引文件,回顾现有主题。
阶段2 — 采集近期信号(Gather Recent Signal) 扫描日志,发现已漂移的事实,在transcript中搜索特定上下文。
阶段3 — 巩固(Consolidate) 按照系统提示的格式规范,写入或更新记忆文件。
阶段4 — 修剪与索引(Prune and Index) 更新索引文件(保持在25KB、每行约150字符以内),清除过期条目。
12.5 Dream输出
巩固结果写入到用户可配置的记忆目录中,默认为:
~/.claude/projects/<sanitized-git-root>/memory/记忆文件使用结构化的Markdown格式,包含frontmatter元数据(类型、范围、时间戳)。
12.6 与人类睡眠记忆巩固的类比
DreamTask的命名显然借鉴了神经科学中的"睡眠记忆巩固"理论——人类在睡眠期间(尤其是慢波睡眠阶段)会将短期记忆转化为长期记忆,进行信息整理和无关信息的清除。
Claude Code的Dream系统精确地模拟了这一过程:
- 触发条件类似于"睡眠压力"——活动越多(5个会话),时间间隔越长(24小时),巩固的需求越迫切
- 只读约束类似于睡眠中大脑与外界的断连——Dream Agent不能执行修改性操作,只能整理和记录
- 四阶段周期类似于睡眠周期——定位、采集、巩固、修剪,从宏观扫描到微观更新
- 互斥逻辑——KAIROS活跃时Dream被禁用,正如人类在清醒状态下不会进入慢波睡眠
这种命名不仅仅是隐喻——它反映了Anthropic团队对AI记忆管理的深层思考,以及从认知科学中汲取灵感的设计哲学。