
主讲人 Kevin(Anthropic 工程师),属 Code with Claude 大会 workshop 系列,主题"怎么构建有记忆的 agent"。痛点:今天 agent 的 base case 是"相互隔离的,这在很多真实工作流里限制了它们的实用性"。议程四段式:①base case,看 agent 隔离的局限;②新发布的 memory store——"一个实时的 memory store,可以在多个会话之间读写";③dreaming——"让这些 memory store 随时间不断变好";④把这一切和 CLI、"超棒的控制台界面"串联演示。脚手架:之前 workshop 已讲过 CMA 的 agent environment + session 两个原语,本场就在其上"再加两个概念"——memory store 和 dream。→ 详细 → 详细 → 详细
现状:CMA 上"大多数情况下你一次只创建一个 session,而这些 session 都是相互隔离的",后果是 agent"不会记住过去的信息,也不会把信息传递给未来的会话"。Kevin 建第一个 session 取名 "write test with no memory"(用 bootstrap 的 agent + environment ID),console 里状态是 idle(空闲)。第一条消息发"昨天那场 CMA 演讲"的信息,塞了关键词 multi-agent orchestration 加一个 URL;agent 用 Sonnet。实际模型回:"好的,谢谢你告诉我这些信息。"——礼貌收下、无事可做。→ 详细 → 详细 → 详细
第二步建一个"重新测试"(retest)的全新 session("这几步我会走得快一点"),去问上一个会话刚学到的东西。结果与预期一致:新 session 答"嗯,我其实没有访问这些信息的权限(I don't really have access to this information),我可以从这几个方面帮你"。Kevin 切回幻灯片小结:"我们告诉了它一些东西,过会儿在另一个 session 里问它这件事,结果两个 session 之间没有任何信息传递(No information is transferred between the sessions)。" 赤裸裸的 base case——失忆。→ 详细 → 详细
创建 memory store 的主要参数就一个——名字。Kevin 现场命名为 CWC memory,可"给它加一段简短的描述(description)";他预告"这里其实还有另外两个可以设置的参数",留到挂载 session 时讲(见第七节 prompt 与 access)。创建后在 console 的 managed agents → memory stores 下能看到它处于 active(激活)状态,"你可以点进去,看到一个文件系统查看器(file system viewer)","当然现在里面什么都没有"。除了让 agent 自动写,平台也支持手动添加记忆:"你可以在某个指定路径下创建一个文件,加上一些内容"——人类可预先往库里塞背景知识,不必全靠 agent 积累。→ 详细 → 详细 → 详细

Kevin 重复那个写测试,但这次 session 附带 memory store,发同样文本,"希望这次我们能观察到一个不一样的行为"。点进详情,关键差异立现:模型不再被动收下,而是"先去看 memory,看看'好,这次对话里有没有什么是我需要记住的'"——主动检索记忆库、判断该不该存档。因为库当前是空的,它"把我刚才告诉它的内容直接存进那个 memory store。它把内容存到了这个 sessions.mmd 文件里,而且很贴心地告诉我它做了什么"(sessions.mmd 即 sessions.md 口误,模型自行命名)。因果链值得注意:模型自己决定文件名、自己选择写入、还主动汇报——记忆是 agent 自驱的,不是人手动塞的。→ 详细 → 详细
用同一个 memory store 新建另一个 session,问它"从 CMA 那场演讲里找到了什么、学到了什么"——正是第四节"失忆"测试的翻版,唯一变量是这次有了共享记忆库。在 console UI 里能看到召回过程:模型"先去看它的 memory store 里有没有相关信息。它现在用 grep 来查找关键词,它在找 CMA",结果"找到了一大堆我们在上一个 session 里刚告诉它的信息,现在它就能回答我的问题了"。Kevin 给出本场第一个金句式总结:"这很好地展示了 memory 的威力(the power of memory),而这在以前其实是挺难做到的。" 一个空库 → 写入 → 换会话 grep 召回的最小闭环就此跑通。→ 详细 → 详细

平台提供额外接口"手动检查 store 本身",三件:其一,CLI 可"列出 memory store 里所有的 memory 文件"(相当于 ls)。其二是版本管理(versioning):每个 memory 文件"都是有版本管理的,每次你对一个文件做改动,都会生成一个新版本"——改坏了能回溯。其三是人工直接编辑:UI 里能看到 Claude 建的子目录结构,且"你其实可以直接编辑这些 memory 文件……要是 Claude 写错了什么,或者你只是想补充更多信息,你都可以这么做"。Kevin 收束:"具体哪些 session 用 memory、哪些不用,完全由你来决定。"→ 详细 → 详细 → 详细

创建后返回 dream ID,在 managed agents → dreams 下查看,一开始 pending(等待),"很快就会开始运行";状态在 console 和 API 两边都能看,console 显示"输入的 memory store,以及一个 token 计数"。耗时取决于 transcript 大小/数量,"可能从几分钟到几个小时不等(a couple minutes to hours)"——这正是异步的好处,"这不是那种你想在 agent 工作的时候实时去做的事"。一个很酷的设计点是 dogfooding:"dreaming 其实是直接构建在 CMA 的原语之上的(built directly on top of CMA primitives)"——它为 dream 任务本身建了一个 session,点进去能看它在干什么、看到给它的 prompt,提供"相当不错的可观测性(observability)"、甚至能诊断问题。即 dreaming 不是黑箱,本身就是一个普通 CMA session。→ 详细 → 详细 → 详细

用之前的 dream ID 取回资源、拿到 JSON 里的 output memory store ID,新建 session 挂上它。验证提问:"我参加了哪些 session、我有哪些资源的链接、以及我标记了哪些需要跟进的事项(what follow-ups I flag)。" console 里检索行为变了——这次它能看到 Dreaming 做的所有东西(索引 + event 后勤安排),且是先开始读索引(reading the index first),正兑现第十六节的设计意图。效果对比是全场高潮证据:"这一次信息多了不少。它给了我一个回顾,把所有我参加过的 session 都列了出来,还加上了时间戳(timestamps),告诉我第二天的 session 和对应资源链接。" 结论金句:"这又一次很好地展示了 dreaming 是怎么真正丰富那些在 session 之间传递的信息的。"→ 详细 → 详细 → 详细
可选的最后一步是清理:"在最后,如果你对这里的输出 memory store 真的很满意,你可以去把旧的 memory store 退役掉(retire the old memory store)。" 安全说明:"这不会影响你之前的那些 session,只是能把你组织里 memory store 的数量控制在一个合理的水平。" 即退役只是把旧库标记下线、瘦身管理,不会回溯破坏历史会话。→ 详细
Kevin 给留场的人收尾复盘。先回顾问题:"我们讲了如今大多数 agent 面临的问题,也就是:怎么在多个 session 之间记住信息?我觉得这现在已经是一个相当公认的问题了(a pretty well-established problem now)。" 再回顾解法与副作用:"memory 是解决这个问题的第一步(the first step),你给 agent 一个地方,让它可以把信息倒进去、再从里面读出来。但我们也看到这又带来了一个问题:memory store 会随着时间无限增长。它们会变得杂乱无章,信息会过期。" 最后回到 dreaming 并致谢:"我们再启用一组 agent,它们唯一的任务就是改进那个 memory store,供将来使用(their entire job is to improve that memory store for future use)。" 结束语:"我要感谢大家来参加今天的 workshop。希望对你们有帮助,也希望到最后你们能学会怎么把 memory 集成到你们自己的使用场景里(integrate memory into your own use cases)。"→ 详细 → 详细 → 详细
本场为单人 workshop 演讲,无 lightning round(闪电问答)环节。演讲过程中主讲人 Kevin 复述了一个现场观众的提问并作答,已并入正文「二十二、观众提问」:
(本场为单人演讲,主讲人 Kevin 未在演讲中给出个人联系方式。出品方:Anthropic,Code with Claude 大会。)