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

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

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

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

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

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

王总的智能体在一个会话里做完所有事:几条关键的关系被几万字的工作细节淹没,压缩时又丢掉一半

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

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

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

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

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

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

Super-agent 把记忆拆成了几层

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

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

人的三层记忆与主从结构的对照:工作会话承担瞬时记忆和工作记忆,用完即弃;主会话只保留长期记忆里浮现出来的那部分

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

王总对他的智能体说话:主会话接待,派出工作会话去出报价、跟进合同、整理订单;主会话的连续性来自下面的关系图

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

为什么是会话,而不是子代理:委托和管理

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

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

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

委托与管理:子代理做完就消失,细节回到主代理;工作会话一直在,后续的话直接交给它,主会话只记一条关系

还有一个容易被忽略的区别:委托是可选的。DeepSeek 在文章里做过一组初步实验,用模拟的工作负载对比了几种做法(我们读到的是 AgentsPulse 对原文的解读)。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 上相遇;客服智能体是枢纽,客户甲看不到客户乙

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

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

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

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

会话进行,上下文将满时压缩;整理在后台把关系写进本体;下一轮由系统把现象推送回来

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

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

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

五档清晰度:全文、要点、标记、计数、遗忘;加强回忆可以把模糊的东西重新拉清楚

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

对产品来说,这意味着什么

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

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

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


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

开始构建你的服务智能体
Sean

Praxis 知行云创始人。