AI 研发里的 memory,至少有三层

AI 研发里的 memory,至少有三层

最近我在往外讲 hengshi-jarvis,经常会被追问同一类问题。

JARVIS 一直讲 memory。Claude Code、Hermes 这些工具也在讲 memory。mem0、mem9、MemPalace 这一类产品更是直接拿 memory 当主线。

几个 memory 一放在一起,就容易讲糊。

然后问题就会变成:大家都在做记忆,JARVIS 到底多做了什么。

这篇我就只讲这个问题。

我想讲的是 AI 研发系统里的 memory 到底分几层,每层在记什么,为谁服务,最后怎么接到一起。

前面两篇,我一篇写最近一个月 JARVIS 收进了哪些运行规则,一篇写为什么公司最后还是得有自己的 JARVIS。这一篇继续往下走,把 memory 讲透一点。

这一篇先只拆 memory。后面如果继续写,我会再把 runtime、workflow、review、writeback 这些 layer 一层层拆开。


先别把 memory 当成一个词

真进研发现场以后,memory 至少有三层。

  • coding agent 自带的 memory
  • mem0 这一类 memory infrastructure
  • JARVIS 这一类组织执行系统里的 memory

三层都重要,干的不是一件事。

coding agent 的 memory,解决的是单个 agent 别老失忆。

mem0 这类 memory layer,解决的是东西能存住、找得回、还可以多人共用。

JARVIS 这层管得更靠后:这些记忆回来以后,公司默认按什么做,谁来兜底,做到什么算收口,最后怎么写回去。

这三层一拆开,后面就不容易讲乱了。


第一层:coding agent 自己的 memory

Claude Code、Hermes 说自己有 memory,这没啥好争的,agent 本来就得记东西。

它记的通常是这些东西:

  • 这个用户是谁
  • 这台机器是什么环境
  • 这个 repo 最近在干什么
  • 这个人平时怎么写、怎么走流程、怎么说话
  • 上一轮做到哪了,下次怎么少重复
  • 哪些经验可以沉成技能、提示、规则

这层就是解决一件事:别让 agent 每一轮都像新来的。

它先服务 agent 和当前用户这一段协作。工具会越来越懂你,也越来越懂当前环境。

边界也很清楚。

它不天然等于公司的组织记忆,更不天然等于公司的默认执行系统。今天这个 agent 记住了你的偏好,不代表另一个 agent 进来就能自动照着同一套做法干活。它更像 agent 自己的长期上下文。


第二层:mem0 们在做的 memory

mem0、mem9、MemPalace 这类东西,管的已经不是“某个 agent 怎么更懂我”了。它们是把 memory 单独拎出来做。

它们要解决的是:

  • 什么值得记
  • 记下来以后怎么存
  • 记成什么结构
  • 下次怎么搜回来
  • 多个 agent、多个 runtime、多个设备能不能共用
  • 怎么更新、治理、审计

Mem0 这条线,是想把 memory 做成一层通用底座。mem9 更看重多处共用、长期接得上。MemPalace 更看重东西留在本地,原文别被揉坏。

打法不一样,但核心都一样:把“历史别散掉,重要上下文下次能回来”这件事做好。

这层对 AI 研发太重要了。没有它,agent 每轮都要重新捡材料,很多事根本跑不长。

边界也在这。

它能把材料递回来,但通常不会替你定义公司后面按什么规矩继续做。


第三层:JARVIS 这层记的,已经不只是材料了

JARVIS 讲的 memory,已经走到执行这层了。

JARVIS 记的,更多是公司已经跑出来的默认做法:

  • 任务进来先从哪条闭环进
  • 第一跳先看 issue、日志、模块总览,还是先复现
  • 什么情况必须升级给人
  • 哪些 repo 或 module 有禁区
  • 什么证据够了才能算 done
  • 哪些结果要沉到 repo 规则,哪些沉到共享 skill,哪些沉到长期知识

这是组织 memory,而且会直接改执行顺序。

同样一条历史记录,在不同团队里,后面的动作可以完全不一样。有人先补测试再动代码,有人先复现,有人高风险改动一律升级,有人要求所有收获最后回写文档,有人要求沉到技能库。

所以 JARVIS 这一层真正记住的,是“这家公司平时怎么干活”。

它记材料,也记默认动作。材料回来以后,系统下一步怎么走,靠的就是这层。


三层 memory 到底差在哪

可以直接这么看:

  • coding agent memory:记住“我和这个用户、这个环境怎么配合”
  • mem0-types memory:记住“哪些材料要持久化,之后怎么被找回来”
  • jarvis-types memory:记住“这些材料回来以后,公司默认怎么继续干活”

换个说法也一样。

  • 第一层服务单个 agent

  • 第二层服务更长的历史材料,也服务多个 agent 一起用

  • 第三层服务公司自己的研发闭环

  • 第一层让 agent 更懂你

  • 第二层让材料能回来

  • 第三层让默认动作能接着跑

  • agent 可以换

  • memory backend 也可以换

  • 但公司自己的默认执行系统,不能跟着一起丢

所以这事不能再拿一个笼统的 memory 概念糊过去。

层一分开,位置就清楚了。


它们怎么融合

真到现场里,这三层是套在一起干活的。

真实研发里,链路大概是这样:

  1. 任务进来,JARVIS 先判断它属于哪条闭环,该去哪个 repo 或 workspace,先读什么,第一跳先找什么证据。
  2. 执行这件事的 agent 带着自己的 memory 进场。它知道当前用户偏好、机器环境、repo 现状,少走重复路。
  3. 如果需要长期资料、跨会话经验、共享上下文,就从 mem0 这一类 memory layer 里把材料召回来。
  4. agent 在 JARVIS 设好的默认规则里继续干活:什么时候升级、什么时候补测试、什么时候停手、什么时候收口。
  5. 任务结束后,新的东西再分层回写:有些写回 agent 自己的 memory,有些写回 memory layer,有些直接升级成 JARVIS 里的规则、skill、workflow、writeback judgment。

放到这条链路里看,关系就清楚了。

  • agent memory 负责让执行者别失忆
  • memory infrastructure 负责让材料别散
  • JARVIS 负责让整个系统别乱

少一层也能凑合跑,跑不远。


最近一个月我在 hengshi-jarvis 里往前推的,基本都落在第三层

所以我最近一个月在 hengshi-jarvis 里真正往前推的,很多已经不是把资料记住再找回来这么简单了。

canonical runtime root、per-task clones、workspace preflight、repo routing、completion rules,这些管的都不是“什么值得存”,也不是“某个 agent 怎么更懂我”。

它们写进去的,就是第三层:组织默认动作。

它们在回答的是另一组问题:

  • agent 应该从哪条闭环进去
  • agent 应该在哪个 workspace 里干活
  • 开工前哪些知识必须先读
  • 什么证据出来以后才算 done
  • 哪些变化需要 durable writeback

所以我最近这一轮往前推,重点已经落到“怎么让组织经验变成默认动作”了。

所以 JARVIS 和 mem0 们不是一层。

mem0 们先把材料留住。JARVIS 再把这些材料接进执行闭环。


那两篇中文文章,刚好把问题推到这里

最近我看的两篇中文文章,一篇在讲模型会变,软件工程会留下;另一篇在讲软件工程的功底在智能时代会更关键。

这两个判断我基本都同意。

因为 AI 真进研发以后,最后拼的就是工程基本功、测试习惯、review 纪律、边界意识、历史经验。

但再往下问一步,就会碰到一个更具体的问题。

这些东西最后留在哪?

是只留在几个人脑子里。
是只留在某个 agent 自己的长期上下文里。
还是留在一套可以跨 agent、跨会话、跨团队继续生效的系统里。

前两层都要有,最后还得落到第三层。

不然软件工程确实会留下,但留下的方式还是口头经验、个人习惯和临场判断。agent 只能偶尔碰对,碰不成稳定系统。


为什么这一层最后还是得公司自己做

再往下走一步,就会碰到真正麻烦的地方。

因为每家公司默认怎么干活,差别都很大。

同样一条记忆,在不同团队里,后面的动作可能完全不一样。

有人默认先看 issue,再碰代码。有人默认先复现,再决定要不要补测试。有人要求高风险改动一律升级。有人把某些模块当禁区,agent 只能读不能改。有人要求经验最后沉到 repo 文档。有人要求沉到共享 skill。

这些东西没有标准答案。

所以 memory product 再强,也不会天然知道你们团队这套默认做法。

它不会替你规定:

  • 哪些历史判断以后默认生效
  • 哪些例外情况以后默认升级
  • 哪些闭环必须补证据
  • 哪些结果这次必须写回系统

这些事最后还是得公司自己做。

所以我一直把 JARVIS 当成组织能力。它不是一个装上去就能直接通用的标准产品。

外面的 memory layer、agent harness、workflow system、review system 都很重要,也都可以直接拿来用。但公司自己的收口层,还是只能从自己的研发过程里长出来。


结语

所以今天再看 Claude Code、Hermes 的 memory,mem0-types 的 memory,还有 jarvis-types 的 memory,我会直接把它们拆成三层。

第一层,让 agent 记住自己怎么和人协作。

第二层,让资料稳稳留下来,之后还能被找回来。

第三层,把这些资料、规则和历史判断压成公司自己的默认动作。

三层都在,系统才真的立得住。

JARVIS 和 mem0 们本来就该接在一起。前面的 agent 怎么换,后面的 memory 怎么换,它都得接得住。

它最后要守住的是公司自己的研发闭环。工具换不换,没那么重要。

这一篇先把 memory 讲到这里。

后面如果继续写,我会再把 runtime、workflow、review、writeback 这些 layer 一层层拆开。

这些层不讲开,JARVIS 在 AI 研发系统里的位置就还是会糊。