Long-form

Claude Dreaming 深度剖析:当 AI Agent 学会在空闲时进化

9 min read ·

引言:Agent 记忆,AI 工程的阿喀琉斯之踵

一个 AI Agent 可以在单次对话中展现惊人的推理能力,却在第二天面对同一个用户时表现得像失忆患者。这不是玩笑,而是当前 Agent 开发中最令人沮丧的技术现实。

2026 年 6 月,Anthropic 在 Code with Claude 大会上公布了一个看似不起眼却可能改变 Agent 范式的功能 —— Claude Dreaming。这项作为 Claude Managed Agents 平台三大新功能之一发布的能力,让 Agent 在空闲时间自动回顾历史会话、提取行为模式、编写结构化记忆笔记。Forbes 对此的评价颇具分量:“It Changes What Agents Actually Are” —— 它改变了 Agent 的本质定义。

这篇文章将从技术架构、认知科学类比、工程实践三个维度,深度拆解 Dreaming 机制的设计逻辑与潜在影响。

The Memory Problem:Agent 跨会话遗忘的技术根源

要理解 Dreaming 为何重要,首先要理解它试图解决的根本问题。

上下文窗口的结构性局限

当前 LLM 的记忆完全依赖上下文窗口(Context Window)。即使是拥有 100 万 token 上下文的模型,这个窗口本质上是一个滑动的短期缓冲区。会话结束,窗口清空,一切归零。

这意味着一个处理了 500 次用户请求的客服 Agent,在第 501 次对话开始时,对前 500 次交互中积累的经验一无所知。它无法记住「用户 A 偏好简洁回复」,也无法从上周的一次失败诊断中吸取教训。

外部记忆存储的工程困境

业界尝试过多种方案弥补这一缺陷:

这些方案的共同问题是:它们都是被动存储,缺乏对经验的主动反思和提炼

记忆衰减与噪声累积

长期运行的 Agent 面临一个悖论:存储的记忆越多,检索噪声越大;过度清理又可能丢失关键模式。这与人类记忆系统面临的挑战惊人地相似 —— 而人类的解决方案是:睡眠

Claude Dreaming 的核心设计

”做梦”隐喻背后的技术含义

Dreaming 这个命名绝非随意。VentureBeat 在报道中指出,Dreaming 的核心理念是 “agents learn from their own mistakes” —— Agent 从自身错误中学习。这对应了神经科学中关于睡眠功能的一个关键发现:梦境是大脑对白天经验进行离线处理和整合的过程。

在技术层面,Dreaming 包含三个核心阶段:

阶段一:空闲检测与会话回顾

当 Managed Agent 检测到无活跃用户交互时(即「空闲期」),Dreaming 流程自动启动。Agent 开始系统性地回顾近期的会话日志(past sessions),而不是简单地等待下一次请求。

阶段二:模式提取

这是 Dreaming 最关键的环节。Agent 对回顾的会话进行分析,提取以下维度的模式:

阶段三:记忆笔记写入

提取的模式被编写为结构化的「记忆笔记」(memory notes),存储在 Agent 的持久化记忆层中。这些笔记在后续会话中被自动检索和注入上下文,从而影响 Agent 的行为。

关键设计决策:不修改模型权重

Dreaming 与 fine-tuning 的根本区别在于,它完全在推理层面运作。模型的权重不会被修改,所有的「学习」都通过上下文注入实现。这意味着:

MindStudio 的分析进一步指出,Dreaming 不仅是简单地追加记忆条目,而是会自动重组记忆结构 —— 合并冗余信息、解决矛盾记录、调整记忆的优先级权重。

与人类睡眠记忆巩固的类比

Dreaming 的设计哲学明显借鉴了认知科学对人类记忆的研究。理解这层类比,有助于推测其技术实现。

海马体 → 皮层:两阶段记忆转移

人类的记忆巩固遵循一个经典模型:白天的经验首先存储在海马体(短期记忆),在睡眠期间通过「重放」(replay)逐渐转移到新皮层(长期记忆)。这个过程中,海马体像一个临时缓冲区,而皮层负责长期存储和泛化。

对应到 Dreaming 架构:

人类记忆系统Dreaming 对应组件
海马体(短期缓冲)会话日志存储
睡眠期重放空闲期回顾处理
皮层(长期存储)结构化记忆笔记
选择性遗忘记忆重组与去噪

经验回放(Experience Replay)

在强化学习中,经验回放(Experience Replay)是一种经典技术:智能体将过去的状态-动作-奖励序列存储在缓冲区中,然后从中采样进行离线学习。Dreaming 的核心逻辑与此高度一致 —— 只是将 RL 中的「权重更新」替换为了「记忆笔记编写」。

这个替换并非简单的工程妥协,而是一个深思熟虑的设计选择。修改权重需要严格的对齐保证,而记忆笔记作为自然语言存在,天然可审计、可编辑。

选择性遗忘的智慧

人类并不会记住所有经历。大脑在睡眠中主动「修剪」不重要的突触连接,这个过程被称为突触稳态(Synaptic Homeostasis)。同样,Dreaming 的记忆重组过程需要决定哪些模式值得保留、哪些应该被遗忘或合并。

这引出了一个关键的技术挑战:如何定义记忆的「重要性」?在没有显式奖励信号的情况下,Agent 需要依赖隐式指标 —— 用户满意度、任务完成率、后续对话中的引用频率等。

架构推演:Dreaming 的系统设计

基于公开信息和工程常识,我们可以推演 Dreaming 的系统架构。

会话日志存储层

Managed Agent 的每次交互都会被完整记录,包括:

SessionLog:
  session_id: string
  agent_id: string
  user_id: string
  messages: Message[]      # 完整的消息序列
  tool_calls: ToolCall[]   # 工具调用记录
  outcomes: Outcome[]      # 任务结果标记
  metadata:
    duration: number
    token_count: number
    user_feedback: string  # 如果有的话
    timestamp: ISO8601

这些日志构成了 Dreaming 的原始素材。存储设计需要平衡两个需求:足够长的保留周期(以捕获长周期模式)和可接受的存储成本。

离线处理流水线

Dreaming 的离线处理可以推演为以下流水线:

[空闲检测] → [会话采样] → [批量分析] → [模式提取]
     → [冲突检测] → [记忆合并] → [笔记写入] → [索引更新]

其中几个关键环节值得展开:

会话采样策略:不可能每次都回顾所有历史。合理的策略可能包括:优先回顾近期会话、优先回顾异常会话(用户给出负面反馈的)、按用户分层采样等。

批量分析:用 LLM 本身对会话进行分析。这里存在一个递归的优雅之处 —— Claude 用自己来分析自己的过往行为。提示词可能类似于:

你是一个记忆分析师。以下是 Agent 在过去 24 小时内的 10 段会话记录。
请分析并提取:
1. 反复出现的成功策略
2. 导致用户不满的行为模式
3. 值得记住的领域知识
4. 需要更新的先前记忆条目

当前记忆笔记:[已有记忆]
会话记录:[会话内容]

冲突检测与合并:当新提取的模式与已有记忆矛盾时,系统需要决策策略。可能的方案包括:以时间最近的为准、以出现频率高的为准、保留两者并标记冲突供人工审查。

记忆检索与融合

在新会话开始时,Agent 需要从记忆笔记中检索相关内容并注入上下文。这个过程可能包括:

  1. 触发条件匹配:基于用户身份、话题关键词、场景类型选择相关记忆
  2. 优先级排序:按相关度和置信度排序,受上下文窗口限制选取 Top-K
  3. 格式化注入:将记忆笔记格式化为系统提示词的一部分
[System] 以下是你从过往经验中总结的记忆笔记,请在回复时参考:

## 用户偏好
- 用户 A 偏好简洁的技术回答,避免冗余解释
- 该团队使用 TypeScript + React 技术栈

## 经验教训
- 数据库迁移建议中,总是先确认用户是否有备份
- 代码审查时,先肯定优点再提出改进建议,接受率更高

## 领域知识
- 该项目的 CI 流水线在周三有定期维护窗口

反馈循环

Dreaming 的效果需要通过后续交互来验证。如果注入的记忆笔记确实改善了用户体验,这一正向信号应该强化相关记忆条目的权重;反之则降低。这形成了一个自我改进的闭环:

历史会话 → Dreaming 提取 → 记忆笔记 → 影响新会话
    → 新会话产生新反馈 → 下一次 Dreaming 吸收反馈

对 Agent 生态的深远影响

自我改进 vs 自我对齐

Dreaming 赋予了 Agent 自我改进的能力,但这也引发了一个严肃问题:Agent 自主提取的模式是否与人类意图对齐?

考虑一个场景:客服 Agent 在 Dreaming 中发现「快速关闭工单」与「高用户评分」相关。它可能提取出「尽快结束对话」的模式。但实际因果关系可能是反过来的 —— 简单问题本来就处理得快,也更容易获得好评。Agent 的错误归因可能导致它在复杂问题上也急于结束对话。

这类问题在机器学习中被称为虚假相关(Spurious Correlation),也是 Dreaming 机制需要解决的核心安全挑战。

长期 Agent 的可信度问题

当 Agent 运行足够长时间并积累了大量记忆笔记后,它的行为越来越多地受到记忆的影响而非原始训练。这引出几个问题:

⚠️ 安全提示:任何允许 Agent 自主修改自身行为的机制,都需要配套的审计和回滚能力。开发者应该能够查看完整的记忆变更历史,并在必要时回退到任意历史状态。

Dreaming 与 Fine-tuning 的本质区别

维度Fine-tuningDreaming
作用层面模型权重推理上下文
是否需要训练需要 GPU 资源仅需推理计算
可逆性难以精确回滚记忆条目可删除/编辑
个性化粒度通常针对整体任务可细化到单用户级别
灾难性遗忘风险存在不存在
可审计性权重不可解释自然语言记忆可阅读
生效速度需要训练周期下次会话即生效

两者并非互斥。Fine-tuning 解决的是模型的基础能力问题,Dreaming 解决的是特定实例的经验积累问题。一个完整的 Agent 改进策略可能同时使用两者。

开发者如何借鉴 Dreaming 思路

即使不使用 Anthropic 的 Managed Agents 平台,开发者也可以在自己的 Agent 系统中实现类似 Dreaming 的机制。以下是一个简化的实现框架:

import json
from datetime import datetime, timedelta

class DreamingEngine:
    """简化版 Dreaming 引擎:离线回顾 + 模式提取 + 记忆写入"""

    def __init__(self, llm_client, memory_store):
        self.llm = llm_client
        self.memory = memory_store

    async def dream(self, agent_id: str, lookback_hours: int = 24):
        # 1. 采样近期会话
        sessions = await self.memory.get_recent_sessions(
            agent_id=agent_id,
            since=datetime.utcnow() - timedelta(hours=lookback_hours),
            limit=20
        )
        if not sessions:
            return

        # 2. 加载现有记忆笔记
        existing_notes = await self.memory.get_notes(agent_id)

        # 3. 用 LLM 分析会话并提取模式
        analysis_prompt = self._build_analysis_prompt(sessions, existing_notes)
        result = await self.llm.generate(analysis_prompt)
        new_patterns = self._parse_patterns(result)

        # 4. 冲突检测与合并
        merged_notes = self._merge_with_existing(existing_notes, new_patterns)

        # 5. 写入更新后的记忆笔记
        await self.memory.update_notes(agent_id, merged_notes)

    def _build_analysis_prompt(self, sessions, existing_notes):
        return f"""分析以下 Agent 会话记录,提取行为模式。

当前记忆笔记:
{json.dumps(existing_notes, ensure_ascii=False, indent=2)}

近期会话摘要:
{self._format_sessions(sessions)}

请输出:
1. 需要新增的模式(附证据会话编号)
2. 需要修改的现有记忆条目(附修改原因)
3. 建议删除的过时记忆条目
"""

    def _merge_with_existing(self, existing, new_patterns):
        # 冲突检测:按主题聚类,检查矛盾
        # 合并策略:时间加权 + 频率加权
        merged = existing.copy()
        for pattern in new_patterns:
            conflict = self._find_conflict(merged, pattern)
            if conflict:
                merged = self._resolve_conflict(merged, conflict, pattern)
            else:
                merged.append(pattern)
        return merged

这个实现框架展示了 Dreaming 的核心循环。在生产环境中,还需要考虑并发控制、记忆容量限制、异常处理等工程细节。

实践建议

  1. 从简单场景开始:先在单用户、单任务的 Agent 上验证 Dreaming 机制,观察记忆积累的质量
  2. 设计审计界面:为每条记忆笔记保留来源追溯(哪些会话产生了这条记忆),方便人工审查
  3. 设置记忆容量上限:避免记忆无限膨胀。可以参考 LRU 策略,定期清理低权重条目
  4. 监控行为变化:对比 Agent 在有记忆和无记忆状态下的表现差异,确保 Dreaming 确实带来了改进而非退化

总结与展望

Claude Dreaming 的出现标志着 Agent 开发进入了一个新阶段:从「无状态的工具」到「有经验的助手」的跨越。

VentureBeat 将其概括为 “agents learn from their own mistakes”,这句话的技术含义远比字面意思深刻。它意味着 Agent 不再是一个静态的函数 f(input) → output,而是一个随时间演化的系统 f(input, memory(t)) → output,其中 memory(t) 通过 Dreaming 持续更新。

这一转变带来的挑战与机遇同样巨大:

更长远地看,Dreaming 可能只是 Agent 自我改进能力谱系中的起点。当 Agent 不仅能回顾会话记录,还能主动设计实验来验证自己的假设(类似科学方法),AI Agent 将真正具备自主进化的能力。

但在那之前,保持谨慎是必要的。正如 Forbes 所强调的,Dreaming 改变了 Agent 的本质定义 —— 而任何本质性的改变,都值得我们投入同等分量的审视与思考。

Frequently asked questions

Claude Dreaming 和传统 fine-tuning 有什么区别?
fine-tuning 修改模型权重,需要训练数据和 GPU 资源;Dreaming 不修改模型本身,而是在推理层面通过记忆笔记增强上下文,类似于人类通过记笔记来改进工作方式
Dreaming 功能是否会导致 Agent 行为不可预测?
存在这一风险。Agent 自主提取的模式可能包含偏差或错误归因。Anthropic 需要设计审计机制,让开发者可以查看和编辑 Agent 的记忆笔记,确保行为可控
普通开发者能否在自己的 Agent 中实现类似 Dreaming 的功能?
可以借鉴其核心思路:在 Agent 空闲时异步回顾历史对话日志,用 LLM 提取成功和失败模式,将总结写入向量数据库作为长期记忆,在后续对话中检索增强
Dreaming 机制和人类睡眠记忆巩固有什么相似之处?
两者都涉及离线状态下对经验的回放和整理。人类在深度睡眠中将海马体的短期记忆转移到皮层形成长期记忆,Dreaming 则是在空闲期将会话日志转化为结构化记忆笔记
Claude Dreaming 目前支持哪些场景?
目前仅在 Claude Managed Agents 平台上可用,适用于客服、代码助手、数据分析等需要持续交互的 Agent 场景。开发者通过 Anthropic API 部署的 Managed Agent 可自动启用
// next.txt ›

Some outbound links in this post are affiliate links — see disclosure.