一扇锁着的门,是什么感觉

一扇锁着的门,是什么感觉

AI 让自制工具的成本几乎降到零,也悄悄改变了那场关于“什么应该开放”的老争论。

阅读时长: 20 分钟

屏幕角落里的一个数字

先讲一件很小、也有点荒唐的事。

我的大部分工作时间,都在和一个会写代码的 AI 助手打交道。有天下午,我突然希望它能知道一件关于自己的事:它的记忆空间还剩多少。

这里稍微解释一下。AI 助手一次能记住的内容是有限的。你可以把它想象成一张固定大小的办公桌:文件越堆越多,桌面放不下时,后面的纸就会悄悄滑下去。所以,让 AI 知道自己的“桌面”快满了,其实很有用,就像开车时最好知道油箱快见底,而不是等车趴窝后再深刻反思人生。

那个数字明明存在。

它就显示在屏幕底部的一条细细的状态栏里,专门给看。问题是,AI 助手自己却没有任何办法读取它。

于是,我写了一个小程序:从状态栏里把数字读出来,存进旁边的小数据库,再让 AI 自己去查询。

程序运行得很好,也确实解决了问题。但整件事依旧荒诞得很——就像一个人看不到胸前的工牌,我只好举起一面镜子,让他确认自己叫什么。

不过,这还不是重点。

重点是:类似的事,我大概已经遇到第五十次了。

欲望的边界,是怎么被悄悄画出来的

这些时刻都不算戏剧性。

没人会因为状态栏读不到,就愤怒地合上笔记本,宣布与科技文明恩断义绝。

事情通常安静得多:你想实现一个功能,发现做不到,于是绕条小路,搭个临时方案,然后继续工作。一个月后,又碰到一次。次数多了,那些绕路不再像绕路,反而渐渐变成了工具本身的形状。

更微妙的是——这也是我后来才意识到的——慢慢地,你甚至不会再产生某些想法。

既然早就知道那里够不着,又何必费心去想呢?

这正是优秀封闭工具最隐蔽的成本。你不会把那堵墙感受到为“墙”,而会误以为它只是自己想象力的边界。

想象一间设计精美的酒店客房:触手可及之处都安排得妥妥当当,没有碍眼的东西,灯光也恰到好处。住一晚,简直完美。

可如果住上一年,你可能会发现一件怪事:自己已经不再琢磨怎么挪家具了。

不是因为房间真的无可挑剔,而是因为书桌被钉死在地板上。久而久之,你也悄悄不再是那个会挪书桌的人。

然后,有人把建筑图纸公开了

今年八月,中国 AI 实验室 DeepSeek 发布了一套他们称为 harness 的系统。

大多数人可能没听过这个词。简单来说,AI 模型像发动机,负责真正的“思考”;harness 则是包裹在发动机之外的整套运行框架——AI 能看见什么、能操作什么,以及从你提出要求到它交付答案之间,究竟会发生哪些事。

圈外人很少讨论 harness,但 AI 工具里大部分让人抓狂的问题,偏偏都藏在这里。

DeepSeek 给这套系统配了一句四个单词的口号——Everything is a Plugin,还附带了一篇长达 88 页、标题叫作 A Programming Paradigm for Spatiotemporal Composability 的预印本论文。

我很想说,自己第一眼就被深深吸引了。

可惜并没有。

我的真实反应是翻了个白眼:这不就是个很老的想法,只不过给它穿上了一身由最长英文单词缝出来的礼服吗?

后来我发现自己错了。

而且,比起“一开始就看对了”,弄清自己究竟错在哪里,反倒有意思得多。

那 88 页里到底写了什么

所谓老想法,就是插件,而且它确实很老。

插件是一块可以装进程序、又不必拆开程序核心的功能模块。浏览器里的广告拦截器是插件,相机上可以拧下来的镜头也有点像插件。软件行业从 20 世纪 90 年代起就一直这么干,谁也不能认真宣称自己发明了它。

DeepSeek 也没有这么宣称。

论文真正的主张,比宣传口号小得多,却也扎实得多。

在绝大多数插件系统里,一个模块被移除时,理论上应该把自己留下的东西清理干净。这更像是一种礼貌约定:房子退租时,请恢复原样。

大多数租客通常都还算自觉。但偶尔会有人在墙上留下一颗钉子,没人注意;过些年,房间里就会布满历任租客留下的钉子。任何见过某个程序用着用着突然越来越慢的人,基本都和这些“钉子”打过交道。

DeepSeek 的设计,不再把清理工作寄托于插件开发者的自觉,而是把它变成系统结构的一部分:每一次修改都会连同“如何撤销这次修改”一起被记录下来。移除模块时,系统只需把记录倒着执行,就能逐步恢复现场。

然后,论文用绝大多数篇幅去证明这件事:无论模块以什么顺序加入或移除,无论操作多少次,最终都能回到那个“仿佛什么都没动过”的房间。

当然,如果某个模块绕开框架,偷偷从后窗翻进去搞事情,那仍然是它自己的责任。这项保证只覆盖所有从正门进入的操作。

真正的成果,正是这份证明。只不过,这部分显然不适合印在宣传横幅上——总不能把形式化证明挂在展台前,指望路过的人热泪盈眶。(如果你更关心论文具体主张了什么,以及它谨慎地没有主张什么,可以看我另外写的这篇短文。)

这也解释了我一开始为什么对它不感兴趣:我看完了海报,就以为自己已经看完了成果。

但作者其实并没有犯下我脑补出来的那些错误。他们在论文里明确列出了前人的系统,也直截了当地说明,这部分思想并不新鲜。夸张的是封面,不是正文。

甚至连“他们”是谁,也比我原先想象得更复杂、更有人情味。

这并不是某家实验室凭空变出的一套设计。这个想法早已在一个开源聊天机器人框架里默默运行多年。某位开发者独自把它做出来,又持续维护了四年;在此期间,社区贡献了四千多个插件,而其中绝大多数人压根没听说过这篇论文。

那位开发者后来成了论文的共同作者。

一个先把东西做成的人,坐下来和一群想弄明白“它为什么真的能工作”的人一起,把经验变成了理论。

一个四十年前的想法,为什么突然合身了

这才是最让我反复琢磨的部分。

把所有东西都设计成可拆卸模块,听起来一直很美好,却也一直有点不切实际。原因非常朴素:模块总得有人做。

这就像买成衣和量体裁衣。定制当然更合身,可定制也意味着大量时间和金钱。所以,大多数人最终还是买现成衣服,然后努力把自己塞进它的版型里。

现在,这项成本突然坍塌了。

过去需要花掉一个周末的功能,如今可能只要花 20 分钟向 AI 描述需求。今年我做的小型定制工具,比过去五年加起来还多,而且没有一个让我觉得自己“正式启动了一个项目”。

它们更像临时拧了个螺丝、加了个抽屉,而不是召开立项会、画甘特图,再郑重宣布下季度交付。

于是,一种假设“用户会不断构建自有模块”的架构,突然不再显得过度设计,反而显得理所当然。

不是这个想法进步了。

是世界在它脚下移动,终于移动到了一个刚好合身的位置。

这也让我重新理解之前那五十次绕路。

我遇到阻碍,并不是因为问题有多难。事实上,大部分问题都不难。我真正受限的地方在于:所有开口都由别人预先决定。无论别人给了你多少扇门,总有一天,你还是会想再开一扇。

如果整个系统本来就是由模块组成的,这种挫败感就会消失。

不用绕过去。

自己做一块就行。

我能直接读到代码

就在这个过程中,某种感受发生了变化。

我脑海里冒出来的那句话,与证明无关,也与插件无关。

而是:我可以读它的代码。

不是“文档写得很全面”,也不是“产品经理在 FAQ 里解释得很亲切”。

真正决定系统下一步如何运行的部分——那颗仍在跳动的心脏——就放在一个我能打开的文件里。

如果我不同意它的做法,这种不同意不只是情绪,而是可以转化为行动。我可以修改它,甚至可以按照自己的方式犯错,后果也由自己承担。

我这才发现,自己有多渴望这种感觉。

而这种突如其来的触动,往往只会在你长期缺少某样东西、却一直没能说出它名字时出现。

接着,我又意识到一件有些尴尬的事:我并不想换工具。

我现在仍在使用那套封闭系统。对于每天要做的工作来说,它依旧更好用。

所以,无论刚才那种感觉是什么,它都不是最终判决。

感受不是判决书

这里必须谨慎一点。

开源在情感上极具吸引力,尤其对于程序员,更尤其对于那些小时候就爱上计算机的人。

自由、慷慨,以及由一群可能永远不会见面的陌生人共同建成的公共空间——这是一个很美的故事,而且很多时候,它也确实是真的。

但这套漂亮外衣,谁都能穿。

开放源代码可以是一份真诚的礼物,也可以是一场招聘活动、一条营销渠道,甚至是一种商业策略:把竞争对手昂贵的产品,变成人人都能免费获得的普通商品。

与此同时,许多封闭产品也出自真正用心的人之手。他们只是相信:用户不必看见墙里的电线,也能舒舒服服地住进房间。

开放不等于善良,封闭也不等于邪恶。

它们都是选择。

我撞上的每一堵墙,背后都有某个人要发工资,有竞争对手随时准备冲进来抢跑,也有一种真实的信念——而且经常是正确的——对大多数人而言,在合理的位置开一扇门,通常比在地板上留个洞更好。

如果我花了很多年,还投入自己的钱,才造出某样东西,我也不能诚实地保证,自己一定会把全套图纸交出来。

我当然愿意相信自己会。

但大多数人都是这么想的,直到那些图纸真的属于自己。

它究竟是汽车,还是道路?

当构建自定义模块的成本大幅下降,这件事影响的就不再只是我个人那点小烦恼了。

如果做一个模块需要牺牲整个周末,绝大多数人根本不会动手。工具仍然只是一个产品,使用它的人只是客户。

可如果只需要 20 分钟,人们就真的会开始构建。

当足够多的人开始在某样东西之上继续搭建时,它就不再只是产品,而逐渐变成了地面、平台,甚至基础设施。

没有人需要正式宣布这场变化。它会在脚下悄悄发生。等某天大家回过神来,游戏规则已经变了。

因为我们衡量“产品”和“基础设施”时,使用的是完全不同的标准。

一辆汽车可以是封闭的、专有的、漂亮的,也可以带着非常鲜明的设计主张。几乎没人要求查看汽车的全部内部结构。你只希望它足够好用,而且需要的时候能顺利下车。

道路就不同了。

协议、标准、文件格式,以及所有人的工作都必须经过的接口——一旦这些东西被某个主体完全拥有,我们就会感到不安。

这种不安并不是多愁善感。

你不能要求全世界把生活建立在某样东西之上,同时又禁止大家查看它。这样的信任很难长期维持。

所以,AI harness 到底是一辆汽车,还是一条道路?

我认为,这才是真正的分歧,而且它大部分时候并没有被人看见。

我每天使用的工具,回答的是这样一个问题:“怎样优雅地帮助一个人写好代码?”

这是汽车,而且是一辆非常出色的汽车。

DeepSeek 回答的则是另一个问题:“所有 AI agent,最终应该运行在什么之上?”

这是道路。

双方其实未必在争论。他们只是站在不同的高度,看着不同的风景。

但网上大量争论,却像是有人一手举着汽车,一手举着公路,非要大家当场评判哪个更优秀。这个问题多少有点像比较筷子和餐桌谁更适合吃饭——听起来势均力敌,实际上根本没在同一个层面。

现在还没有人知道,AI harness 最终会成为哪一种东西。我猜,就连正在构建这些系统的人,也未必知道。

如果 harness 最终成为其他一切所依赖的地面,那么封闭会开始显得不对劲,就像一条完全由私人控制、规则又不透明的高速公路会让人不安。

但如果它始终只是众多工具中的一种,那么封闭完全没有问题。

世界还没有作出决定。

我总会想起那个小程序:它从屏幕底部读取一个数字,好让 AI 助手知道关于自己的一件事。

这是个很荒唐的软件。

它之所以存在,是因为门开错了位置,而我又没有权限移动那扇门;也是因为自己造一扇不那么好的门,如今已经便宜到值得动手。

几年前,我大概不会折腾。

我会耸耸肩,然后学着适应,就像适应一张被钉死在地板上的书桌。

真正改变的,其实不是软件架构,也不是那场延续多年的开放与封闭之争。

改变的是:想要一点不一样的东西,如今已经不再那么昂贵。

所以,问题或许并不是谁应该把门打开。

真正值得问的是:当越来越多的人发现,自己也能造门时,接下来会发生什么?


声明:本文由人类撰写,并在适当环节使用 AI 加以改进。