这几天大家都在聊 DeepSeek 的 V4 Pro 翻车事件。还有DSH发布以后疯狂涨星和褒贬不一的评价。
但很少有人注意到,在同一个深夜,DeepSeek 还做了一件特别"学术"的事——和北京大学合发了一篇论文,标题叫《A Programming Paradigm for Spatiotemporal Composability》(时空可组合性编程范式)。
88页,全是数学公式,发在 GitHub 上。
外行看一眼就想关掉。但这篇论文,才是 DeepSeek Harness(DSH)真正的地基。
昨天我们聊 DSH 的"一切皆插件"理念,很多人觉得是营销话术。这篇论文证明:不是。DeepSeek 是认真的,认真的程度到了——先建一套数学理论,再写代码。
而且,这篇论文想解决的问题,恰恰是未来 AI 最大的那个坎:怎么让一个 AI 系统,安全地、持续地、几乎无人监督地——自己升级自己。
别急,我用人话给你拆清楚。
一、先搞清楚:为什么"拆插件"这么难?
你可能觉得,装软件、卸软件不是再正常不过的事吗?点个卸载按钮不就行了?
但"卸载一个功能"和"干干净净卸载一个功能"是两回事。
举个最日常的例子——你电脑上的 VSCode(程序员最常用的编辑器之一)。它支持装扩展,也就是插件。但当你卸载一个插件的时候,真相是:它根本没被真正"拆掉",只是隐藏了,得等你重启整个软件才真正清干净。
论文里有个扎心的数据:VSCode 最热门的 100 个扩展里,87 个都带着可执行代码,卸载都得重启整个编辑器论文 1.2.1。
为什么这么难?
因为一个插件装进去之后,会到处"动手脚"——注册一些快捷键、改动一些设置、占用一些内存、监听一些事件。它就像在墙上钉了一堆钉子、贴了一堆胶带。
"卸载"要做的,是把每一个钉子拔下来、每一张胶带撕干净,恢复到它来之前的原样。
可问题是:程序自己记不住自己都动过哪些钉子。所以只能偷懒——重启整个屋子,一次性全清空。
重启,就是软件世界最粗暴的"卸载"。
二、DeepSeek 的论文在解决什么?
论文上来就点破了本质:动态组合(dynamic composition)这件事,有两个互不相关的维度,都很难。
第一个维度叫"时间可组合性"。
翻译成人话:一个组件被拆掉的时候,它对周围环境做过的所有修改,能不能完全、干净、可逆地复原?
装的时候容易,拆的时候能不能做到"挥一挥衣袖,不带走一片云彩"?不留下脏数据、不占用内存、不残留事件监听?
第二个维度叫"空间可组合性"。
翻译成人话:组件之间互相依赖的时候,能不能自动发现、自动协调、自动响应?
比如 A 插件需要数据库服务,B 插件提供数据库服务。B 被拆了,A 怎么办?A 应该被自动提醒"你的依赖没了",然后优雅地进入待机,等 B 回来再自动恢复。
这就像乐队里:吉他手请假了,键盘手不能傻愣着,得知道自己要顶上去;吉他手回来了,还得自动换回来。依赖关系一变,整个系统要自己反应过来。
这两个维度,就是这篇论文的"题眼"。
创新点一:给副作用装上"撤销键"
先说第一个创新:可逆效应(Revertible Effects)。
学计算机的都知道一个概念叫"副作用"(side effect)——程序运行时会改变外部环境:改文件、占内存、发网络请求、注册事件……这些都是副作用。
传统程序里,副作用是不可逆的。你写一个文件,没有自带"撤销"功能;你注册一个事件,没人替你记录"我注册过这个"。
这篇论文干的什么事?
它提出:每一个副作用,都应该随身携带一个"撤销指令"(inverse)。你做了一件事,就要同时告诉系统"如果我被移除,怎么把这件事件撤销掉"。
然后,运行时(runtime)把这些撤销指令一个个存起来,按顺序串成一条链。当组件要被卸载时,系统就顺着这条链倒着把每一个副作用都撤销干净——就像解开一串项链,一颗一颗地摘。
论文里管这叫"扭结组合"(twisted composition),数学上还证明了:不管你怎么叠加副作用,撤销的顺序永远是对的、完整的。
最妙的是,连"撤销"本身也是一种可逆效应——你撤销了,如果发现撤销错了,还能再撤销回来。层层嵌套,永不出错。
这等于给整个软件世界装了一个全局的"后悔药"。
创新点二:让依赖关系学会"自动响应"
第二个创新:响应式共效应(Reactive Coeffects)。
"共效应"(coeffect)是计算机科学里一个跟"副作用"相对的概念。副作用是"我对世界做了什么",共效应是"我需要世界给我什么"。
一个组件在运行前,要先声明:"我需要这些依赖,没有它们我不开工。"
论文的创新在于,把这个声明从"装一次就完事"变成了"持续监听":
- 依赖齐了 → 组件自动激活;
- 依赖少了 → 组件自动停摆,但不报错、不死机,只是安静地等着;
- 依赖换了 → 组件自动重新适配新的依赖。
而且,一个组件换掉另一个组件提供的服务时,系统能靠一个"唯一身份编号"识别出来——哪怕两个服务给的是同样的东西,系统也知道"它俩不是同一个",该重启的依赖一个都跑不掉。
这种机制,论文里还有个特别高级的玩法叫"隔离"(isolation)和"拦截"(interception):
隔离= 同一个"插座",在不同场景下可以接不同的"插头"。同一个数据库接口,测试环境用假数据、生产环境用真数据,系统自动识别、互不干扰。
拦截= 不用改组件本身,就能给它"套个壳"加权限、加日志、加监控。像给电饭煲插了个智能插座,电饭煲啥都不知道,但你能远程统计它用了多少电。
最狠的地方:把"效果"和"依赖"统一成一个东西
这两个创新,单拎出来任何一个都是好主意。但这篇论文真正的野心,在第三步——把"副作用"和"依赖"统一成一个东西,叫"上下文类型"(Context Type)。
用大白话说:以前程序的世界分两本账,一本记"我改了什么",一本记"我需要什么"。DeepSeek 说,别分两本了,合成一本,所有的状态都记录在同一个"账本"里。
这个统一的价值在于:你既能知道"我对世界做了什么",又能知道"世界对我做了什么",还能自动保证两者协调一致。装和拆、给和取,全部在一套逻辑里闭环。
论文把这个统一体,称为一种"编程范式"(programming paradigm)——意思是,它不只是一个技巧,而是一整套思考软件的方式,就像"面向对象编程""函数式编程"那样,是一个完整的世界观。
然后论文做了一件更狠的事:给这套世界观写了一套严格的数学证明,证明了它永远成立——不会死锁、不会冲突、无论怎么拆装都能回到干净状态。
这才是"地基"该有的样子:不是"我觉得这样应该行",而是"我证明了这样一定行"。
三、为什么这对 AI Agent 至关重要?
你可能要问了:这论文再牛,跟 AI 有什么关系?
关系太大了。论文的引言里,专门留了一节讲"自进化智能体"(Self-Evolving Agent Harnesses)。
想象一个场景:未来的 AI Agent 不是现在这样"出厂一个样、升级靠人类发新版",而是——
Agent 一边干活,一边自己写新的插件、自己装新的工具、自己替换自己的某个模块,然后继续干活,全程几乎不需要人盯着。
这就是"自进化"。听起来很酷,但有个致命问题:万一它升级升级着,把自己搞崩了呢?
- 没有"时间可组合性":Agent 每次自我修改都得整个重启,攒了一上午的工作缓存全没了;更糟的是,如果它改坏了自己的恢复系统,那就永远起不来了。
- 没有"空间可组合性":Agent 替换了某个模块,依赖它的其他模块根本不知道,还在用旧接口,一调用就崩。
DeepSeek 这篇论文,就是给"自进化"上的一道保险栓:你随便改,随便换,系统保证——改坏了能撤销,依赖变了能感知,永远不会把自己锁死。
论文结尾的展望部分,白纸黑字写着:未来要做的事,就是"让 AI 持续生成并替换自己的组件,同时验证这套理论能不能兜住"。 论文 8. Conclusion
也就是说——这篇论文不是写给过去看的,是写给"Agent 能自己进化"那个未来看的。
三、不是纸上谈兵:它已经在一个4000插件的系统里跑起来了
最难得的是,这篇论文不是空想,它有一个跑了四年的真实战场:Koishi,一个开源的聊天机器人框架,基于 Cordis(论文里实现的那套框架)构建,积累了超过 4000 个社区插件论文 5.3。
论文里说,在 Koishi 里:
- 管理员在控制台禁用一个插件,它的所有副作用当场就被干净地撤掉,不用重启,其他插件毫发无伤;
- 开发的时候,改代码保存,插件热替换,正在进行的连接、缓存全保留;
- 依赖被切换(比如换个数据库),只有真正受影响的插件会自动重启,其他插件纹丝不动。
更重要的是:这些插件的作者是几千个互不认识的人,他们唯一的约定就是"我声明我需要什么"。系统自动保证他们之间不打架、不冲突。
一篇理论论文,底下垫着一个 4000 插件规模的实战系统——这在中国学术界,太罕见了。
四、写在最后:DeepSeek 的野心,比模型大得多
回头看看 DeepSeek 这盘棋:
V4 Pro 翻车,是它在模型层的失误;
DSH 开源,是它在 Agent 工具层的布局;
而这篇论文,是它在理论层的深挖。
三层叠起来,你会发现 DeepSeek 想要的不只是"便宜的模型",而是——整个 Agent 时代的地基。
模型的竞争是暂时的,一代不如一代就被淘汰。但"动态组合"这个底层问题,是所有做 Agent 的人都绕不过去的:插件系统要、操作系统要、未来能自我进化的 AI 更要。
谁先给这个难题打下一个被验证的理论地基,谁就站在了下一代软件工程的入口。
R1 让推理变便宜,DSH 让 Agent 外壳变开源,这篇论文想让整个动态软件世界——更安全、更自由。
模型会换代,但地基不会。
我是词元,下期我们聊聊:V4 Pro 翻车和 Harness 开源在同一天发生,DeepSeek 这波操作到底是"手忙脚乱",还是"故意声东击西"?