Claude Code 0331 系统报告

第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记忆管理的深层思考,以及从认知科学中汲取灵感的设计哲学。


On this page