前几天 DeepSeek 的 Harness 团队发了一篇关于 Super-agent 的设计文章，还开源了一个[原型](https://github.com/deepseek-ai/dsh-superagent-prototype)。它的主从架构把入口和干活分开，解决了一个我们做了很久、却一直没解决好的问题，也释放了智能体被压住的潜能。顺着它往下想，我得出一个判断：释放出来的这部分潜能，最终要靠入口的记忆来兑现；入口记得多好，智能体就能走多远。而今天的压缩，撑不起这件事。

这篇文章讲这个判断是怎么来的，以及我们打算怎么做。为了说得具体，我会一直用同一个例子：王总开一家做出口的小公司，他有一个自己的智能体，公司里还有一个销售智能体和一个客服智能体；他的大客户是海外的李总。先从我们以前踩过的坑说起。

## 我们以前想让一个会话做完所有的事

在做现在这个平台之前，我们做过一个叫 Society 的产品，背后是开源项目 [RoleX](https://github.com/Deepractice/RoleX)。RoleX 想做的事情是让智能体像人一样生活在一个社会里：有持久的身份，有组织和岗位，能从经历里积累出原则和技能，目标和知识不会随着一次对话结束而消失。

我们在记忆上花了很多心思，甚至做到了由系统主动把记忆推送进上下文。可放到真实的使用里，效果总是差一口气。还是拿王总来说。他的智能体记得几条很重要的关系：李总偏好月结，上一版报价因为汇率没成，合同 v3 还卡在法务那里。这几条我们推送进了上下文。接着王总说：「给李总再出一版报价。」智能体开始干活：读三份历史报价单，翻法务发来的长邮件，打开一张几百行的订单表，再来回改了几轮表格。所有这些细节，都进了同一个上下文。

几万字的细节涌进来以后，那几条关系还在，却被淹没了：它们只占上下文里很小的一块，模型的注意力被铺天盖地的表格和邮件分走。再往后，上下文满了，系统只好压缩，好不容易建立起来的人设和关系又被压掉一半。下一次王总再提起李总，智能体已经记不清为什么不能用美元报价了。

![王总的智能体在一个会话里做完所有事：几条关键的关系被几万字的工作细节淹没，压缩时又丢掉一半](media:media_e91d3beb7ad04d76b677e5fc2bd62326)

那时候我们以为，是记忆做得还不够好。直到读了 DeepSeek 的设计，我才发现问题不在记忆本身，而在结构：我们把几种完全不同的记忆，塞进了同一个地方。

## 人的记忆是分层的，智能体却全塞在一个窗口里

人的记忆不是一个仓库，而是几套各干各的系统。瞬时记忆接住刚看到、刚听到的东西，几秒钟就过去了。工作记忆处理手头这件事，一次只放得下几样。长期记忆存着人、事和它们之间的来龙去脉，用到的时候自己浮现出来。

这几层之间，大脑一直在替我们做取舍：细节在工作记忆里用完就淡了，留进长期记忆的，主要是要点和关系。王总开完一天的会，晚上记得的不是每一句原话，而是「合同交给法务了，因为金额超过了审批线」「李总这次不满意，是因为汇率」。他一次只能干一件事，可他的脑子不会被塞满。

智能体没有这几层。它的上下文窗口同时是瞬时记忆、工作记忆和长期记忆，而且它不会自己遗忘：读过的每一行表格都留在那里，直到窗口满了被强行压缩。重要的关系只能和琐碎的细节挤在一起，谁也不让谁。我们当年推送进去的记忆，就是这样被冲淡的。

DeepSeek 的 Super-agent，恰好在结构上把这几层拆开了。

## Super-agent 把记忆拆成了几层

Super-agent 的结构很经典：一个常驻的入口会话负责接待和分发，它自己不干活；每件具体的事交给一个独立的工作会话去做，工作会话有干净的上下文和完整的工具，做完把结果交回入口。人只和入口说话。

从记忆的角度看，这个结构正好对上了人的几层记忆。工作会话里那些读过就扔的原始信息，相当于瞬时记忆；工作会话的上下文，相当于做这件事时的工作记忆，事情做完，会话结束，细节也跟着一起结束，只有结果交回入口。入口自己不干活，它的上下文里就不再有任务细节，留下来的，只有「谁、什么事、为什么、做到哪了」：这正是长期记忆该装的东西。

![人的三层记忆与主从结构的对照：工作会话承担瞬时记忆和工作记忆，用完即弃；主会话只保留长期记忆里浮现出来的那部分](media:media_9ac482b32c2b4f37853be78c51d76373)

我们把这个结构放进了自己的设计：每个智能体有一个主会话（main），对它服务的每个人各一个；其余的会话都是主会话派出去的工作会话（worker）。王总说「给李总再出一版报价」，主会话不再自己去翻表格和邮件，而是派一个工作会话去做；在产品上，打开智能体就是在和它对话，工作会话以任务的形式出现。

![王总对他的智能体说话：主会话接待，派出工作会话去出报价、跟进合同、整理订单；主会话的连续性来自下面的关系图](media:media_145b8d3c429445c0975719ee114fd4bb)

这里一定有人会问：以前也有子代理，主代理把活派给子代理，不也是分开了吗？为什么换成会话就不一样？

## 为什么是会话，而不是子代理：委托和管理

区别在于两者和主会话的关系不同：子代理是委托，工作会话是管理。

找一个外部代理办事，叫委托：你把活交出去，拿回结果，这段关系就结束了。多数设计里的子代理就是这样。王总说「给李总再出一版报价」，主代理调用一个子代理，等它做完；子代理读表格、翻邮件、改报价，返回一段结果，然后就结束了，它看过的细节也跟着没了。结果整段回到主代理的上下文里。第二天王总说「报价里的运费再改一下」，那个子代理已经不在了，主代理只能自己接住：要么自己动手，要么把报价单、上次怎么算的、李总有什么要求，重新交代给一个新的子代理。要交代得出来，这些细节就得一直留在主代理的上下文里。

让自己的下属干活，叫管理：他一直在，归你管，你知道谁在做什么、做到哪了，有后续的事直接找他。工作会话就是这样。主会话把出报价这件事交给一个工作会话，自己不用等，继续接待别的事；报价单、计算过程、改过几轮，都留在那个工作会话里。第二天王总说要改运费，这句话直接交给原来那个工作会话，它手里有全部细节。主会话只需要记住一条关系：给李总的报价，交给了谁，现在在等运费的修改。

![委托与管理：子代理做完就消失，细节回到主代理；工作会话一直在，后续的话直接交给它，主会话只记一条关系](media:media_ad2e9c6c39d4418f8e76367a1b783368)

还有一个容易被忽略的区别：委托是可选的。DeepSeek 在文章里做过一组初步实验，用模拟的工作负载对比了几种做法（我们读到的是 [AgentsPulse 对原文的解读](https://agentspulse.github.io/tutorials/deepseek-super-agent-architecture/)）。Super-agent 完成一批任务的中位时间是 12.4 分钟。换成「一个会话加一个子代理工具」，在中性的提示下，模型 5 次里一次都没调用子代理，所有活都留在自己手里，被新消息不断打断，中位时间 20.4 分钟；提示它优先委派以后，5 次里有 4 次委派了，可还有 1 次它觉得活不大，自己做了，最慢的那几次仍然拖到将近 30 分钟。

这说明，靠模型自觉去委托，分工是不稳定的；而在主从结构里，主会话本来就不干活，活天然交给下属，分工由结构保证。也只有管理关系，才能让细节一直留在下属那里，而不是流回主会话。

所以，Super-agent 拆开的不只是任务，而是一种管理关系：细节归下属，关系归主会话。拆开以后，主会话的处境完全变了。

## 拆开以后，主会话第一次可以专心记事

首先，推送进主会话的记忆不会再被冲淡了。三份报价单、法务邮件和订单表都留在了工作会话里，主会话的上下文里只有王总和李总的来龙去脉。我们在 RoleX 里一直想做到、却总被工作细节冲掉的那件事，第一次有了干净的位置。

其次，工作会话越多，主会话要记的关系就越多。王总同时让智能体出报价、跟进合同、整理订单，三份结果回来，主会话要知道哪份结果对应哪个请求，和李总、和合同 v3 有什么关系，两份结果之间有没有冲突。这些都只能靠关系来整合。用得越久、并行的事越多，关系就越多，也越重要。

最后，也是最关键的一点：记忆从「和工作抢地方」，变成了主会话唯一的工作。以前记忆做得再好，也只是锦上添花，因为卡住智能体的是被塞满的窗口；现在窗口不会被塞满了，主会话记得好不好，就直接决定了这个智能体能走多远。这就是我说的，主会话的记忆决定了智能体的上限。

说实话，关系型的记忆、本体和现象，这些想法我们在做 RoleX 时就有了，也实现过一版。当年它们没能发挥出来，不是想法错了，而是被「所有记忆挤在一个窗口里」这个结构问题卡住了。DeepSeek 的设计解决的正是这个卡点。卡点一去掉，后面的事就顺理成章：把关系单独存下来，按视角推送给主会话，在合适的时候整理它。这些我们早就想做、也做过一部分的东西，终于有了真正的用武之地。

DeepSeek 的设计把重点放在入口怎么接待、怎么调度上；入口自己怎么在几个月里一直记得事情，是我们接下来要做的。第一个问题是：主会话自己的窗口也是有限的，迟早要压缩，压缩能不能做到？

## 现在的压缩，撑不起一直聊下去

模型的上下文窗口总是有限的，所以主会话确实要压缩：把已经发生的事变短，腾出位置给新的事。今天常见的做法，是把一段对话写成一段摘要。

摘要能保住「发生了什么」，却很难保住「这些事之间是什么关系」：这份报价为什么用美元，这位客户上次为什么不满意，这个结论是在哪次讨论里得出的。摘要和摘要之间没有连接，压缩一次就模糊一次，越往后越像一个反复失忆的人。

我们不可能把所有信息都留下来，只能抽象。想来想去，我们觉得抽象最该保住的，是关系。文字可以丢，因为文字本来就保存在产生它的地方：文件在文件里，工单在工单里，对话在会话里。关系一旦丢了，就再也找不回来了。

那么，关系该存在哪里、存成什么样？

## 我们打算怎么存关系：一张图

为了把关系存下来，我们用回了 RoleX 当年的思路，借用哲学里本体和现象这一对概念。在康德那里，本体是事物本身，人永远只能看到它呈现出来的现象。我们借用的是这个区分：有一个所有智能体共享的世界，每个智能体只看得到从自己的位置出发的那一部分。不同的是，我们的本体是平台记下来的，可以读，也可以写。这两个词还是很抽象，我用王总的公司来解释。

本体是世界本身的样子。在王总的公司里，王总、李总、法务是人，王总的智能体、销售智能体、客服智能体是智能体，报价单和合同 v3 是文件，合同审批是一张工单，每一次对话是一个会话。它们之间有关系：王总负责李总这个客户，报价单是在某次会话里做出来的，合同 v3 引用了这份报价，法务在审合同 v3。把这些人和事、以及它们之间的关系画出来，就是这家公司的本体。

落到我们的设计里，它就是一张图，没什么特别的¹。一个组织只有一个本体，组织里所有的人、智能体和会话都在同一张图里。图里的节点只是引用：报价单的内容还在文件里，合同审批还在工单里，图里只记着「这里有一份报价单」。信息都写在边上：这层关系是什么类型，为什么成立，是从哪次对话里知道的，从什么时候开始成立，有多可信。比如「李总偏好月结」这条，会记着它来自第三次通话。新的事实和旧的冲突时，旧的那条被标记为失效，而不是被删掉，所以永远查得到「当时是怎么认为的」。

像「李总偏好月结」这种在平台上找不到对应实体的东西，就作为一条通用的「记忆」挂进图里。

但一张所有人共用的图，马上带来另一个问题：王总的智能体、销售智能体、客服智能体，都看到整张图吗？

## 难的是另一半：每个智能体该看见什么

不能。如果每个智能体看到的都是整张图，那既不安全，也不像记忆。人不是这样记事的。

我常拿自己和乔布斯举例。我们身处同一个世界，但从我出发，乔布斯是做出 iPhone 的那个人，我看过他的发布会，读过他的传记；从他出发，我大概根本不在他的世界里。同一个世界，起点不同，看到的就不同。「我了解他」和「他了解我」也是两回事，不能互相替代。

这就是现象：从某个位置看到的世界。在王总的公司里，王总的智能体站在王总的位置，它看得到李总、报价单、合同 v3，还有「李总偏好月结」这条记忆。销售智能体站在销售流程的位置，它看得到合同 v3、合同审批和法务。两者在合同 v3 上相遇，所以合同的进展双方都知道；但王总的智能体不需要看到法务审批里的每个细节，销售智能体也不会看到王总和李总私下聊过什么。

每个智能体看到什么，由几条规则决定：从自己的位置出发，沿着关系走，一步很强，两步就弱了，一般不超过三步；一个东西连着的事越多，每条关系分到的注意力越少；关系会随时间慢慢变淡，每被用到一次又会加强一点；一次只看清楚少数几件事，其余的逐渐模糊。这些规则我们没有拍脑袋定，而是去翻了认知心理学对人类记忆的研究：语义联想怎么扩散，遗忘曲线长什么样，人一次大约能清楚地把握几件事。现在它们只是默认值，后面要拿真实的数据去调。

走不到的，就看不到，所以现象天然带着边界。有一种节点要特别小心：枢纽。王总公司的客服智能体同时服务很多客户，如果允许从客户甲经过它走到客户乙，客户甲就能看到客户乙的事。所以枢纽是停止点：可以走到，不能穿过。

![王总公司的本体：王总的智能体和销售智能体从各自的位置出发，看到不同的部分，在合同 v3 上相遇；客服智能体是枢纽，客户甲看不到客户乙](media:media_ef15d7f42ac541c8a0e2331cc8322d64)

到这里，存什么、看什么都有了答案。剩下的问题是：这些关系什么时候整理，又在什么时候交给智能体？

## 落到智能体上，我们打算让它像人一样记事

我们照着人记事的方式，把它拆成了几个动作。

先是睡觉。人的记忆在睡眠里整理：白天的经历先被快速记下，夜里重放、提炼，接到已有的知识上。智能体最像睡觉的时刻，就是上下文快满、必须压缩的时候。所以我们把关系的整理放在压缩时：把这段对话里的人和事抽出来，和图里已有的对上号，该新增的新增，该失效的失效，每条关系都留着它从哪儿来。能接上已有结构的事实先合并，很久没用到的关系慢慢变淡。

![会话进行，上下文将满时压缩；整理在后台把关系写进本体；下一轮由系统把现象推送回来](media:media_9f74f7797f5a4bed88c66948bc34f538)

然后是自然想起来。人走进会议室，相关的人和事会自己浮现在脑子里，不需要先决定「我要回忆一下」。智能体也一样：从它的视角看出去的那部分世界，由系统直接放进上下文，它不需要自己去查。

再就是有的清楚、有的模糊。和眼前的事越相关、越新、越重要，就记得越清楚：最重要的几件给全文，其次给要点，再往后只记得一个名字和它的关系，再往后只知道「还有好多条」，更远的就暂时想不起来。想不起来不等于删掉，痕迹还在。

真要深想，就自己去找。需要的时候，智能体可以像人一样「再想深一点」：顺着一条线索多走一步，把门槛放低。被想起来的东西，会因此记得更牢。

![五档清晰度：全文、要点、标记、计数、遗忘；加强回忆可以把模糊的东西重新拉清楚](media:media_a9d7e63a4e37471aba6f60c3c51736fa)

这几个动作加在一起，再回头看王总的那句话，就能看出它对产品意味着什么。

## 对产品来说，这意味着什么

回到王总那句「给李总再出一版报价」。主会话接住这句话，从它的视角想起李总、上一版报价、卡在法务的合同 v3 和月结的偏好，再派一个工作会话去出报价。它之所以记得这些，不是因为保存了几个月的聊天记录，而是因为它有一个以关系为核心的本体，和一个从它自己的位置看出去的现象。主会话负责接待、工作会话负责干活，在工程上，这就是 Super-agent 的入口；在我们的产品里，这就是个人智能体。

落到用的人身上，我们希望带来几个变化。你不用再管一堆会话，也不用记哪件事在哪儿聊过，只有一个入口，打开就能接着说。你不用每次都把背景重讲一遍，它记得的不只是你说过什么，还有这些事之间的来龙去脉。它说「上一版给李总的报价是因为汇率没成」时，你可以顺着这条关系看到它是从哪次对话里知道的，记错了也能改。这些是我们觉得一个智能体能被长期托付的前提。

我们正在把本体做成一个独立的服务，先把接口和一组原子操作定清楚，再接到智能体的压缩和上下文组装上。服务智能体也会用到它，只是看到的范围更窄：标准化的岗位只需要看见自己职责里的那一小块世界。

---

¹ 工程上，「本体」（ontology）指对一个领域里有哪些对象、对象之间有哪些关系的统一定义。Palantir Foundry 的 Ontology 是常被提到的例子：它把组织里的数据映射成对象和对象之间的关联，作为业务在软件里的数字孪生。我们的本体是同一类东西，不同之处有两点：我们的节点不保存属性内容，只引用各个服务里的实体；关系上多记了解释、来源、时间和可信度，因为它是给智能体当记忆用的。