Cloudflare首席工程师Jeremy Morrell有一份“私人定制清单”:他收藏的长篇内容,能自动推送到他的阅读器上;每周翻阅arXiv后,与他研究方向相关的论文会被筛选出来并贴上标签;他常访问的网站如果抓取后出现乱码,就单独编写一个解析器来处理。
然而,他正在使用的阅读App,连一条这样的需求都无法实现。他真正想要的是:说完这几句话后,就有一个机器人自动生成对应的零散代码,挂载到软件预设的扩展接口上,然后自行运行起来。完成之后还能方便地分享出去,谁需要谁就能拿去用。
这,才是他心目中理想的软件形态:可扩展软件(Extensible Software)。
Morrell认为,如今我们使用的大多数Web软件,本质上都是静态的。这里的“静态”并非指网页技术,而是指用户无法改动其逻辑。功能在发布那天就定型了,只能使用,无法修改。
AI的出现,彻底改变了这一切。每个人都能定制自己的App,不再是一个遥不可及的梦想。
用户说“添加一个我想要的功能”,电脑立刻就能实现,用户只需回复一句“nice”。Morrell表示,这就是他想要的软件。
为什么你心心念念的那些功能,永远没人开发?
因为,全世界可能只有你一个人需要它。开发者的时间和精力有限,因此他们只专注于服务最大用户群体的功能。有时,即使他们想全部实现,也做不到。
界面复杂度存在上限,每增加一个功能,都可能给不需要它的人带来困扰。如果这个功能只服务于几百人,反而会让剩下的几百万用户觉得产品更难用了。
这两条限制,就是过去二十年产品经理一直难以解开的死结。
地图软件的用户需求分布图显示:左侧是所有人都需要的导航问题,右侧则是每个人各不相同的长尾冷门需求。你在某个App里想要的那个小功能,并非无法实现,而是做起来不划算。
过去一年,自从用户掌握了“vibe coding”(意境编程)能力之后,一切都发生了改变。开发一个只服务于一个人的工具,成本已经低到可以忽略不计。Y Combinator的Pete Koomen将这类东西称为“小软件”(Small Software)。
Y Combinator在讨论小软件时指出:这类工具往往只服务于一个人,或者一小群人。会计、医生、律师,以及另外几千种职业,都可以拥有自己趁手的“小软件”。
显然,想让更多人用上智能体,不能指望把他们都变成工程师。需要改变的是软件本身。
编写扩展的成本已经归零,但容纳扩展的地方还没有
代码好写了,新的问题也随之而来:写完之后放在哪里?如今,许多Web产品留给用户的接口是webhook,门槛高得离谱:用户需要自己运行一整套独立服务,还得应对投递过程中出现的各种问题。
要让陌生代码真正在你的系统里运行起来,Morrell认为需要跨过五道难关。
第一关,成本。假设有一百万个用户,每个人都挂载着自己那几行代码。如果给每个人开一个容器,这笔账立刻就算不下去了。Morrell设定的标准是:代码没有被调用时,成本几乎为零;调用一次,价格压到几分之一美分。再加上编译、存储文件、收集日志,最后单台机器能容纳多少用户,完全取决于内存开销这一个指标。
第二关,冷启动。用户代码位于响应请求的关键路径上,等不了一分钟去启动容器,理想值是个位数毫秒。只运行定时任务或事件回调的,可以放宽要求。
第三关,限额。你永远无法预测用户会写出什么东西。Morrell讲了一个他在Heroku听到的真实故事:当年有一份很受欢迎的入门教程,手把手教新手把自己的第一个程序部署到网上。教程里的程序只有两行:一个死循环,不停地打印“hello world”。结果,一个应用凭空出现,出生第一秒就开始每秒吐出几百万行日志,永不停止。而跟着教程操作的新手毫不知情,还在那里调出实时日志,指望屏幕上滚出点正常内容。因此,CPU使用量、内存占用、能向外发送几个网络请求、每个请求的大小、返回多少内容、一秒钟能写多少条日志,每一项都必须设定严格的上限。
第四关,隔离,有两层含义。崩溃、死循环、疯狂申请内存等情况,不能影响到任何其他用户。恶意代码不能逃逸,也不能窥探其他租户,还需要防范Spectre这类推测执行攻击。
第五关,代码必须真正能做事。什么数据都碰不到的代码,毫无用处。
从给钥匙,到给一扇能推开的门
如何让不可信的代码干活,又不把家底全部交出?Morrell拆解了业内的三代解决方案。
第一代,直接提供API密钥。Morrell认为这种灵活性很危险。拿到密钥的代码,转手就能POST给第三方;即使它不偷窃,你的基础设施也可能随时被用来发起DoS攻击。
第二代,增加一个中转层(proxy)。用户手上拿到的是一个不透明令牌,只对代理有意义;代理验证后,换成真实凭据再转发出去,同时进行白名单和限流处理。这确实比裸奔强,但代价在于维护。如果你想将权限精确到只允许一部分操作,就需要在代理里编写过滤逻辑,并且随着上游API的演进不断修改。Morrell在文中贴了一段示例代码,仅仅是“读取一封已批准的邮件”这一个操作,代码就已经又长又难以测试。而且这类逻辑几乎不可能考虑周全,因为你猜不到用户会做什么。
第三代,才是关键:能力(capability)。不给钥匙,也不给地址,直接递过去一个现成的函数。比如“把那封已批准的邮件取回来”,就这一个动作,别的什么也做不了。用户的代码手上只有这几个函数。凭据从头到尾没有进入它的地盘,即使拿到了数据,也没有通道可以送出去。
前两行是平台自己的代码,钥匙握在这里。下面的函数是用户写的代码,它连钥匙长什么样都没见过。还有一个附带好处:将一份TypeScript编写的能力定义丢给大模型,比丢一堆OpenAPI格式的JSON既节省token又更准确。
所以,真正的门槛,不是让AI写出代码,而是决定这段代码能接触到什么。
四条路,没有一条是免费的
能不能写扩展,二十年前就有答案了。大模型改变的是谁能写。Morrell列出了四条路径:
最轻量的一级是嵌入式解释器:比如Lua、QuickJS这类,或者干脆自己造一个。再往上是V8 Isolates。Google在V8的安全加固上投入了海量的资金和人力,直接使用就可以省去自己造轮子的麻烦。这条路径上有Cloudflare的Dynamic Workers、Node的isolated-vm、Rivet的secure-exec。
第三级是MicroVM。它把完整虚拟机中那些USB、显卡、磁盘的模拟全部砍掉,只保留骨架,隔离效果最硬,能运行二进制文件,拥有完整的POSIX,但代价是开销明显更大。Firecracker、libkrun都属于这一级。
第四级是WASM加WASI。WebAssembly一开始就是一张白纸,连发送HTTP请求、读取环境变量的模块都没有,权限完全依赖于宿主显式授予。从安全角度看,这是最漂亮的起点,但代价是工具链复杂得多。
这四条路径并非互相替代。WASM可以运行在V8 Isolates里,也可以运行在MicroVM里。即使你使用V8 Isolates或WASM作为隔离边界,MicroVM在编译打包、测试扩展等环节仍然有用。
为了验证这套东西是否可行,Morrell自己先尝试了一把。他将自己的静态博客改造成一个Demo,自嘲为“世界上最小的vibe coding平台”。本质上,这是一个可定制的抓取器:给定一个URL,它抓取回内容,连同几个预先授予的工具一起交给用户代码,用户可以直接修改源码然后运行。
10年前赌输的想法,被AI救活了
十年前,现为Cloudflare Workers技术负责人的Kenton Varda曾做过一个名为Sandstorm.io的创业项目。它的主张在当时听起来有点奇怪:你打开的每一份文档,都运行在属于它自己的沙箱实例里;程序拿不到任何你没有亲手递过去的东西。不发钥匙,只发能力。这个项目最终没有做起来。Varda后来复盘失败原因:没有人有那个耐心,把软件一个一个手工打包成那副样子。
十年过去。2026年8月5日,Cloudflare把这套东西以Apache 2.0协议重新开源,名字叫Cloudflare OS。
Cloudflare OS,2026年8月5日以Apache 2.0协议开源。Sandstorm.io十年前赌的那件事,换了个壳回来了。Varda当天在X上写道:这差不多是我那个秘密十年大计的集大成。当年他缺的那份耐心,AI补上了。
软件真的要变软了
OpenAI在《Codex as a Platform》里开源了Codex的智能体框架,讲的几乎是同一件事:
与其让每个团队都把活儿搬进一个通用编码助手,不如把智能体嵌进他们本来就在用的软件里。工程流程、运维仪表盘、安全调查、客服控制台,每一样都能装。分工也划得清楚:界面、业务上下文、工具和审批边界归应用方,智能体循环和沙箱执行归框架。他们做的示例应用Relay,把一个智能体放在货运仪表盘旁边,接上应用自己的MCP工具,改签之前必须人工批准。
如今,不少公司在鼓励员工自己通过vibe coding做工具,方向是对的,但麻烦在后面。几百上千个这样的应用,谁来维护?如何保证它只拿到该拿的那部分数据?访问令牌的权限范围由谁定,谁来轮转?会不会顺手把客户信息写进第三方日志?GDPR怎么办?
Morrell给出的答案是:给他们一个根本没有令牌可以泄露的地方去部署,数据访问交给平台团队统一兜住合规。
这件事真要成功,产品经理的活儿就变了。你不必覆盖所有长尾需求,但你必须设计稳定的扩展点、能力接口,还有对兼容性的长期承诺。厂商不主动开这个口子,用户一点也扩不动。
Morrell在平台这行干了快十年,他没有把话说得很轻松:平台难设计,难运维,难调试。对外暴露API,意味着大量的前期思考和长期支持。但他还是那两个字:值得。
因为你会被用户的创造力吓一跳,他们做出来的东西,是你从没设想过、甚至以为不可能的。
以后判断一个App好不好,可能要多问一句:它允许你改多少。
参考资料: https://jeremymorrell.dev/blog/extensible-software-in-the-age-of-llms/ https://github.com/cloudflare/cloudflare-os https://developers.openai.com/blog/codex-as-a-platform 本文来自微信公众号“新智元”,作者:ASI启示录;编辑:元宇,36氪经授权发布。