Cloudflare 开源 AI 办公系统 Cloudflare OS 深度解析:彻底解决 Agent 可能犯错,幻觉、越权、误操作等问题
- Cloudflare 把全公司用了三个月的 AI 办公平台开源了,每份文档背后都是一个你能随时改代码的独立小应用。
- 最反直觉的一招:Agent 要合并代码,人还没批,系统直接回它「合好了」,再编一个分支给它接着干。
- Jamie Lord 读完全部源码,结论是:这套系统的本质就是彻底不信任 AI。
- 五道机制拆完还剩一笔账:拴住它、让它安全的那根绳,也正是让它拉不动多远车的那根。
cloudflare/cloudflare-os 仓库逐条核对过;性能数字与「AI 不可能引入重大安全漏洞」这类话属于 Cloudflare 官方口径,已在出现处标明。Cloudflare OS 是什么,为什么它默认 AI 一定会犯错
8 月 5 日,Cloudflare 把自家全公司用了三个月的 AI 办公平台 Cloudflare OS 整个开源了,你可以部署到自己的服务器上。
Cloudflare OS 是什么
Cloudflare 内部用了三个月,光最近 30 天就建出四千多个这样的小应用,销售团队估算省下一万多小时。
《Architecting on Cloudflare》的作者、英国 CDS 公司的解决方案架构师 Jamie Lord,对 Cloudflare OS 做了一次源码级的深度剖析。他发现:
Cloudflare OS 的本质是「彻底不信任 AI」。它把 AI 可能犯错(幻觉、越权、误操作)当作必然的前提,并从系统底层架构上彻底封死 AI 破坏系统的可能。
想办法让 AI 更聪明、更少犯错:写更好的 prompt,给它更多权限。
承认 AI 就是会一本正经地胡说八道和搞砸事情。既然无法保证它 100% 正确,那就把平台做成「金丝雀笼子」,让 AI 在里面以为自己有无限权力并高效干活,但真正的控制权(提交权)始终牢牢握在人类手里。
一句话价值:它示范了在大模型还不可靠的当下,如何通过能力模型(Capabilities)、轻量隔离(Isolates)和异步审批(Simulations),构建一套既能放手让 AI 自动化跑流程、又绝不会给企业带来安全灾难的下一代 Agent 操作系统架构。
这套设计的核心理念,可以拆解成下面五个关键机制。
假装成功:人还没点同意,系统先骗 Agent 说已经办好了
这套做法写在给 Gatekeeper 开发者看的接口说明里:
建议看门人对尚未批准的动作做「模拟」,也就是说,
Session这个接口应该表现得就像所有动作都已经执行过了一样。It is suggested that the gatekeeper "simulate" actions that have not been approved yet, that is, thecloudflare/cloudflare-os · gatekeeper.tsSessioninterface should reflect the state of the resource as if all actions had been applied.
有一个细节值得说清楚:模拟并不是强制要求,做不做由各个 Gatekeeper 的作者自己决定。真正不能碰的红线是另外三条,每个操作都必须进审批队列、读取必须先过授权、有副作用的动作在批准之前绝不能真的执行。「假装成功」只是让 Agent 别卡住的一个可选优化。
它相当于把数据库的乐观并发(optimistic concurrency)搬到了现实世界的动作上:先假设不会出问题,让所有人一路往前干,最后提交时统一检查,冲突了整批作废。代价也一样:Agent 有相当一段时间是活在假状态里的,它以为办成的事,可能永远不会真的发生。但这不影响什么,它信什么不重要,最后真正写进系统的那一笔,握在人手里。
沙箱隔离:每份文档关在自己的单间里,代码写烂了也波及不到别人
WHERE 条件里少写一个 tenant_id,B 客户的数据就漏给了 A 客户。也就是说,安不安全全看代码写没写对。一个初级工程师状态不好的那一天,就是一次数据泄露。Cloudflare OS 的主导者、Cloudflare Workers 的作者 Kenton Varda,在发布当天的原话是:沙箱安全到你可以随便折腾,AI 不可能引入重大的安全漏洞;一家公司的安全团队可以放心让不懂技术的同事去 vibe coding,然后晚上睡得着觉。
他们没打算让 AI 写的代码变可信,而是干脆放弃了这个目标。安全从此不靠代码写得对:Agent 写成什么样,压根不再是个安全问题。
这个「每份文档一个隔离实例」的思路,来自 Kenton 十年前的创业公司 Sandstorm,当年没做成。为什么没做成,有两个说法。一是太贵:那时候只能拿容器做隔离,开一个实例的开销远比现在大。二是 Kenton 自己给的原因:世界还没准备好,没有足够多的人有本事或者有耐心去改自己的软件。两个原因凑一起才说得通,技术上终于便宜了,同时也终于有人会用了。
便宜了多少,官方给的数字是这样:
isolate 是 V8 引擎(Chrome 跑网页用的那个)开出来的轻量执行环境。剖析文章里说容器「冷启动要好几秒」,比官方口径夸大了一个数量级,本站按官方数字。
剥夺密钥:Agent 永远拿不到密钥,只能调几个规定好的方法
env.PROJECT 这样一行。listIssues(),但它看不见 token,没法自己把权限放宽,也没法越过手上这几个口子去碰网络。这套「只给方法不给钥匙」的做法有个正经名字,叫对象能力模型(object-capability),是个在安全圈子里研究了几十年的老思路。
追踪数据来源:系统记着 Agent 读过什么,分享前先查对方有没有资格看
极速兜底(锁定模式):有些数据太敏感,现有的规则还没法精细描述该怎么管,那就干脆给它挂一个「禁止一切分享」的标志。gadget 只要读了一次这种数据,立刻掉进锁定模式,还能继续读,但从此不能通过任何一个看门人做任何一个动作,彻底封死泄密通路。代码注释里也承认这是个临时办法,以后要换成更精细的规则。
顺带一提,prompt 注入在这套架构里仍然没有解决。源码的待办清单里还写着两条想做没做的事:判断一次读取里有没有可能藏着注入攻击的自由文本,以及判断哪些人往这些内容里写过东西。
连人类贡献者也不信任:外部提交的代码超过十几行,直接关掉
一份没人审过的贡献就是不可信输入,至于它是一个马虎的人写的还是一个自信的模型写的,几乎不重要。系统对 AI 的不信任,就这样延伸到了对人类贡献者的不信任。
这套设计的代价:管得越死,它能帮你干的活越少
前面五道机制都很聪明。但它们有一个共同的代价:你把 AI 管得越死,它能帮你干的活就越少。具体是两件事。
第一,Agent 永远拿不到密钥,就永远干不了必须拿密钥才能干的活。比如让它自己去续费一个服务、去调一个没人提前给它开过口子的接口,它做不到。系统设计上就不给它这个能力,它只能在你提前圈好的范围里活动。范围之外的事,还是得人来。
第二,写操作永远要人批,等于人永远离不开这个流程。这套设计确实让你不用每一步都盯着,但那一批挂起的动作,最后还是得你来看、你来点。而 Agent 本来要解决的就是「不用人一直盯着」这件事。绕了一圈,人还在流程里,只是从「每一步都在」变成了「最后一步一定在」。
一句话概括这个取舍:拴住它、让它不闯祸的那根绳,也正是让它拉不动多远车的那根。你不可能同时要最大的自主和最大的安全。Cloudflare 选了安全,而且选得很硬。他们赌的是:一个被拴着、但你敢放进公司用的 Agent,比一个自由、但你不敢部署的 Agent 更值钱。
还有一个矛盾:它谁都不信,唯独信自己
这套系统的逻辑是「谁都不能信」:AI 不能信,用户写的代码不能信,外面来的程序员也不能信。
但有一方例外,就是 Cloudflare 自己。
因为用来做隔离、做审批、做记录的那些技术(Workers、Durable Objects 这些),全是 Cloudflare 自家的东西,有几样甚至是专门为这个项目才做出来的,别处根本没有。于是这套「谁都不信」的系统,它自己的地基恰恰是「你必须信 Cloudflare」。
好在它整个开源,跑在同样开源的 workerd 运行时上,理论上你可以搬到自己的服务器,这一点已经比大多数同类产品强。但只要你用它,就得先接受这个前提。
最后:连造它的人都还没想好该怎么定义 Agent
仓库里有一张表,把 Cloudflare OS 的每个部件对应到传统操作系统上:内核对应什么、驱动对应什么、进程对应什么。前面几行都对得上,只有最后一行空着,写着三个问号。
| 传统操作系统 | Cloudflare OS |
|---|---|
| 内核 | workshop-backend |
| 设备驱动 | 各个 Gatekeeper |
| shell(命令行外壳) | workshop-frontend |
| 进程 | gadget |
| 可执行文件 | blueprint(蓝图) |
| 用户 | 用户 |
| 权限清单 | 分享权限 |
| ??? | Agent |
问号那一行的意思是:传统操作系统里,压根没有「AI Agent」这个东西。
它算不上普通用户:用户的权限是提前定好的,而 Agent 得对某个具体的人负责,权限还要随时收放。它也算不上普通程序:程序的代码是提前写死的,而 Agent 是现写现跑。
Cloudflare 给的答案是,这种东西最合适的管法是「你只能干我准许你干的这几件事」(也就是前面说的能力模型),而不是传统那种「你属于哪个组、有哪些权限」的清单。
但他们也没把这一行填上。这是一个新物种,连造它的人都还没想好该怎么定义它。
Cloudflare 开源的 AI 办公系统:人还没点同意,它先骗 Agent 说事办好了
Jamie Lord 把源码从头翻了一遍,这套系统从头到尾按「AI 一定会犯错」来盖,一页带图讲完五道机制
↓ 一页读完 · 有一张会动的图
8 月 5 日,Cloudflare 把自家全公司用了三个月的 AI 办公系统 Cloudflare OS 开源了。每个员工一个 Agent 工作区,你建的每一份幻灯片、每一张表格,背后都是一个能随时张嘴让 Agent 改代码的独立小应用。
《Architecting on Cloudflare》的作者、英国 CDS 公司架构师 Jamie Lord 读完全部源码,给出一个判断:这套系统的设计前提,是把「AI 会犯错」当成必然来防。
Agent 想干一件有后果的事,合并代码、发邮件、往正式系统里写一行数据,必须走一个叫看门人(Gatekeeper)的小服务。人工批准之前,看门人会说谎。
有个限定得说清:模拟并不是强制,做不做由各个看门人的作者自己定。真正不能碰的红线是另一条,有副作用的动作在批准之前绝不能真的执行。
剩下四道机制各管一段,串起来是同一句话的四个推论。跟着小互做一份季度汇报走一遍:
沙箱这招十年前就有人试过,Kenton Varda 的创业公司 Sandstorm,当年只能用容器做隔离,太贵,没做成。现在便宜了这么多:
这三个数字出自 Cloudflare 的 Dynamic Workers 技术博客,第三方尚未复现;剖析文章把容器写成「冷启动好几秒」,差一个数量级,本站不采用。
五道锁全上之后,Agent 手上还剩什么:
✔ 读 issue、写代码、做表格和幻灯片,缺什么功能张嘴让它加
✔ 代码写得再烂也只伤到自己的主人,那个单间里没有第二个人可以泄露给
✘ 不能自己把权限放宽,也不能越过给它的那几个方法碰网络
✘ 没人点头之前,动不到外面世界的任何一样东西
✘ 把读过的敏感数据顺着一次分享带出去这条路,也被堵死
自动批准
是他自己
关掉的
系统当场回话。
没发生,全押
在队列里。
一次全放行,
或者一次全扔
比开一个容器
快约 100 倍,
几毫秒、几 MB
(Cloudflare
自家口径)
手里,一次都
没交出去过
- × 看不见 token,一眼都看不见
- × 自己放宽不了权限
- × 越不过给它的那几个方法去碰网络
看那张表,
整扇门关上。
