Cloudflare OS:面向 agent、应用与工作的开放平台
文章摘要
Cloudflare 在 2026 年 8 月 5 日开源了 Cloudflare OS,作者是 Phillip Jones 和 Dan Carter。它的出发点是:过去两年里,agent 已经能靠「代码要么跑得起来、要么跑不起来」这个反馈回路为开发者产出可用的代码,但组织里其余所有人并没有享受到同等杠杆。要把这份杠杆带给非工程岗位,agent 必须理解公司的上下文并且能够触达员工日常使用的系统。
Cloudflare 今年五月就给全公司每个人开通了第一版 Cloudflare OS。数千名跨职能员工(很多不在工程部门)每天用它写文档和幻灯片、把可重复的任务自动化、构建可视化数据的小应用。它同时提供了一个共享的上下文与技能库——把公司的术语、流程和处理重复工作的最佳已知方式,写成 agent 能遵循的指令;一个人琢磨出更好的做法,所有人都能直接用上。
第一版暴露的问题。 第一版围绕「个人在私有工作区里与 agent 协作」展开,应用是静态的而非连接内部系统的活软件,而且即便是确定性很强的任务,也仍然要重跑一次 agent skill、再烧一遍 token。真正根本的挑战出现在协作上:能访问某个 MCP server 只告诉了我们 agent 可以调用哪些工具,却没告诉我们 agent 实际观察到了哪些底层资源。一旦人们开始共享工作区、应用和产出,就必须保证协作不会泄露某人无权看到的信息。于是他们在新地基上重建了整个系统,核心判断是:安全必须是平台的一部分,而不是每个写应用、用 agent 的人都得自己正确实现一遍的东西。
Cloudflare OS 的三个组成部分: ① 一个以公司精选的上下文与技能为基础的 agent 工作区,附带一个 agent 可以写代码并运行代码的隔离运行时;② 一套用于安全访问内部数据与服务的新安全与治理框架;③ 一个供人构建、共享、并持续修改的个人化应用平台。一段对话可以变成一份文档、一个应用,或一条持续替你干活的工作流。
工作区面向公司里的每个人,在浏览器里使用,不需要你是开发者、也不需要会用终端。它把 agent 会话、持久状态、产出与文件、资源访问权以及隔离运行时组合在一起,并预装了团队或公司积累的上下文与技能。具体能做的事包括:做研究与提问(agent 会写代码去搜索、过滤、连接、分析信息,而不是把整个数据集塞进模型的上下文窗口);生成文档、幻灯片和表格(这些产出不必是静态文件,可以保持与实时数据的连接、随源变化而更新,也能导出到 Google Drive 等熟悉的格式与服务);为团队构建协作式的、连接内部资源的应用;运行确定性工作流——很多任务只是一串已知步骤加上一两个需要判断的地方,工作区可以把它们变成以代码承担可预测部分、只在真正有价值处调用模型的准确定性工作流,支持按需、定时或由外部系统事件触发。
安全模型是这次的重头戏。 文章指出,员工开始在工作中尝试 AI 时最先提的要求往往是「给我公司系统的 API key」——这可以理解,但分发 API key 既危险又无法规模化:密钥往往权限过宽、生命周期过长、难以约束、难以安全共享、难以审计。MCP 提供了一条更好的路(由 MCP server 持有凭据、只暴露一组定义好的工具),但控制 agent 能调用哪些工具只是第一步:MCP 并不告诉你 agent 观察到了哪些底层资源;agent 可以跨系统组合信息、把它送到限制更少的地方,或者通过应用和产出暴露给无权查看原始资源的人。授权必须考虑数据接下来会流向哪里。
于是他们的设计是:agent 从零权限开始。Cloudflare Access 控制谁能进入 Cloudflare OS;进入之后,每个 agent 和应用对任何东西都没有访问权。agent 可以申请访问某个具体资源,由你批准或拒绝。生成的代码以带类型的 binding 形式拿到该资源(例如 env.PROJECT 就是一个代表「在特定策略下使用特定资源」的能力,凭据对 agent 和生成代码完全隔离)。服务端代码跑在关闭了全局出站网络的 Dynamic Worker 里,客户端代码跑在浏览器的沙箱 frame 里,两者除了你显式提供的能力之外都无法触达互联网。
Gatekeeper 是介于 Cloudflare OS 与外部服务之间、针对具体服务的 Worker。它理解该服务的 API、资源和可执行操作。把整个 GitHub 账号给 agent 显然太宽,而 Gatekeeper 可以只给它一个仓库、允许读 issue 但不能读源码、屏蔽特定字段、施加速率限制、并在合并 PR 前要求审批。agent 和它的应用看到的只是一小段 TypeScript API,Gatekeeper 负责 OAuth、持有凭据、执行策略、记录读取了什么、并居中处理一切有外部可见副作用的动作。
最关键的一环是策略跟随 agent 已经看到的东西:只控制首次读取是不够的。假设 agent 读了数据仓库里的敏感表并据此生成了一个实时仪表盘,那么分享这个仪表盘就不能变成把原表分享出去的途径。Cloudflare OS 记录 agent 观察到的每一个资源,这些观察记录会附着在 agent 及其产物上;当另一个人试图打开该工作区、与 agent 交互或查看其产出时,Gatekeeper 会验证此人对这些被观察资源的访问权。同一份观察日志也用于决定 agent 何时可以发起外部请求——一次对敏感数据的读取,可以阻止 agent 之后向某些目标写入数据、邀请新协作者、把工作移交给另一个 agent,或发出出站请求。
应用平台:每个「文件」都是一个应用。 大多数生产力套件给你一组固定应用(文档、表格、演示),而在 Cloudflare OS 里,每个「文件」都可以是它自己的应用,由 agent 为某一个人、某一个项目或某一个团队而写。这些不是需要导出再部署到别处的原型,而是带客户端代码、服务端代码、API 和持久状态的全栈应用,默认私有,但可以像文档一样分享。服务端按需以 Dynamic Worker 载入,并实例化为 Durable Object Facet(两者都是为这个项目新建的能力),facet 给应用自己的 SQLite 数据库,与管理它的 Cloudflare OS 运行时分开;Dynamic Workers 用轻量 V8 isolate,所以每个应用都能有自己的隔离运行时,而不需要常驻的服务器或容器。浏览器客户端通过 Cap’n Web(Cloudflare 开源的对象能力 RPC 系统)与服务端通信,服务端方法可以像普通 JavaScript 函数一样从客户端调用——而特别之处在于 agent 也能调用同一个方法:如果你能造一个工具替自己干活,那么当你不在时 agent 也能用你的工具干这活。
共享有两种方式:分享应用本身,让别人以同一份状态实时协作;分享应用的蓝图(blueprint),让别人创建自己的副本——副本包含原应用的代码,但不含它的 SQLite 数据、对话历史、凭据或已连接资源,每个新应用从独立的状态和资源开始。这意味着你把应用分享给团队后,他们可以自己用 AI 修改它,而不是给你提一个需求单。
模型与成本: Cloudflare OS 可搭配任意模型,所有推理调用都经过 Cloudflare AI Gateway,让组织有一个统一位置来决定哪些模型可用、哪个任务该用哪个模型(「你大概不想每天早上用最贵的前沿模型来总结未读邮件」)。每个请求都归因到发起的人、团队或工作区,管理员可以看到推理开销的去向、设定预算与限速、并决定触及上限时如何处理。
开源与合作伙伴: 项目已在 GitHub 上开源,可以部署到自己的 Cloudflare 账号,使用自己的 Access 策略、AI Gateway 配置、数据与集成。他们释出了两个仓库:Cloudflare OS 核心,以及一个基于内部实际用法的示例部署——部署仓库不打补丁地消费核心,专门用来放配置、定制 UI、内部集成、分析与部署流水线。Cloudflare 的战略合作伙伴 Presidio 和 Happy Cog 会帮客户围绕自身运作方式做定制与全员推广。后续路线包括把 Cloudflare OS 做成 Cloudflare 控制台里的全托管产品、为开发工作流加入容器支持,以及把工作区带进 Slack 等聊天工具。
HN 评论精华
这条帖子拿到 665 分、328 条评论。讨论几乎被两条主线占满:对「OS」这个命名的集体反感,以及 Cloudflare Workers 团队负责人 Kenton Varda 亲自下场解释这其实是 Sandstorm 的十年后重制。后者极大改变了整条讨论的走向。
- kentonv(Cap’n Proto 作者、Sandstorm 创始人、Cloudflare Workers 负责人)转述自己推文的那段,被 rozenmd 贴出来后成了全场最重要的一条:「今天我们发布 Cloudflare OS,一个带连接器的聊天机器人,跟其他每一家科技公司在做的一样。只不过其实不一样。这是我十年前的创业公司 Sandstorm.io 的重制版,这次建在我过去九年一直在做的 Cloudflare Workers 上,并深度利用了 AI。这多多少少是我十年秘密总体规划的顶点。」他解释了机制:「Gadget」等同于 Sandstorm 的「Grain」——细粒度的应用实例,比如一个文档编辑器应用,每个文档都是该应用的一个独立实例、跑在独立沙箱里。这带来两件他认为都是大事的事:① 平台可以通过控制「谁能访问这个 Gadget」来接管全部访问控制,Gadget 不可能把自己泄露给攻击者,哪怕攻击者拥有基于同一应用的其他 Gadget;② 既然每个人都跑自己那份代码,每个人都可以自由修改自己那份代码。他强调第二点:「如果你想给正在用的软件加个功能,你可以直接让 agent 加上去,会怎么样?在 SaaS 模式下这行不通,因为你跑的不是你自己的那份。Sandstorm 十年前想改变这一点,但世界还没准备好,因为没有足够多的人有能力或耐心去真的改自己的软件。AI 改变了这一点。」
- 关于命名的争论是评论区的第一条主线,thehamkercat 开场就问「为什么公司都在往产品名上贴 OS?这很蠢」。radlad 试图为「agent 操作系统」这个概念辩护,随后与 alt227 展开了整串最长的一场拉锯,双方反复交换 Wikipedia 的 OS 定义。arandomhuman 的评价是「这真的在逼近 AI 精神病的巅峰」,clhodapp 的观察最一针见血:营销人员最近开始用「操作系统」替换「平台」,因为这个词让他们觉得大胆又新鲜;而把整个产品命名为 OS,就能让每个谈论这个产品的人替他们把这套说辞再卖一遍。 sixdimensional 提出了一套「marketecture 话术」分析:非技术人群听到 OS 未必想到计算机操作系统,有时更像是「标准作业流程」;而在技术侧,自称 OS 就是把自己和 Windows、Mac、Linux 摆到一起。
- 结果 kentonv 亲自出面把这套分析拆了:「你想太多了。我们在 Cloudflare 起名字并不聪明。」 他举了个证据:Workers 的本地开发工具 Wrangler 之所以叫这个名字,是因为创造它的人说「我起了个蠢到我们绝对不会拿它发布、之后一定会想个更好名字的名字」——后来他们再也没想出更好的。「Cloudflare OS 差不多是一回事。上周我们头脑风暴想换个更好的名字,但没人能达成一致,于是就以内部一直叫的 Cloudflare OS 发出去了,没什么特别好的理由。」他还补了个更能解释一切的设计意图:**「本意是 Cloudflare OS 是 Cloudflare 自己的实例,而当你为自己公司部署时,你会把它叫做『<你的公司> OS』。产品名和 logo 在管理设置里是可配置的。是有点俗气,抱歉。」** 另有一条早前的调侃回复也来自他本人:「主要是为了让喷子转发和抱怨,换免费广告。挺管用的。;)」你的公司>
- 第二条主线是厂商锁定。yomismoaqui 的问题代表了很多人:「每次读到 Cloudflare 的新东西都觉得很酷,但我总是甩不掉对锁定的担心,是我太多疑了吗?」kentonv 的回应是反复而具体的:这是 100% 开源且可自托管的,跑在开源的 workerd 运行时上,「你想的话可以在家里跑,甚至有一个 Home Assistant 的 Gatekeeper。」 当 mosura 追问「能完全离开公网、不带任何对 Cloudflare 或 Slack 的隐性依赖吗?功能一样吗?给够硬件性能一样吗?」,他回答:是;它甚至支持 ollama,配合某些本地 LLM 效果不错;老实说在本地跑还更快。 至于为什么公告里没写清楚——「我们想说的东西太多了,很难都塞进一个故事里。博客文章面向企业读者,我的推文串面向黑客读者。」 更细的技术承认也很坦率:workerd 就是同一份代码,唯一不含的是全球调度与编排(「你在本地其实并不想要那个,而且说实话那玩意儿是头野兽」);Durable Objects 在 workerd 上完全支持,但目前不带全局调度就无法很好地横向扩展——单用户跑没问题,全公司实例可能吃力;他正在做的 PR 会修好这一点,设计上刻意选了运维简单的方案(「基本上就是:把所有节点连到 NFSv4」),可惜没赶上发布。他还澄清了另一处误解:wrangler 是开发工具、你不会想在生产跑 dev 模式,但 workerd 可以不经 wrangler 直接使用,这种形态是可用于生产的——只是发布前没来得及准备示例配置(「我很希望能推迟发布,但那不由我决定」)。
- 安全模型的质疑同样密集。layer8:「沙箱安全到你可以随便乱来、AI 不可能引入重大安全漏洞——这只有在应用完全无法影响沙箱之外任何东西时才成立,而那会大幅限制应用的用处。」kentonv 的答复是 Gatekeeper 那一整套,并补充了一个关键的产品细节:当某个动作需要审批时,agent 不必停下来等——Gatekeeper 会模拟结果,让 agent 继续跑、继续排队更多工作,你可以在最后批量批准。「希望这意味着你不再觉得非开自动批准不可。」 shostack 追问怎么模拟审批结果(比如要读文档的权限,怎么模拟文档内容),kentonv 的回答是:读不需要审批,只有写需要;读被限制在你显式挂载的资源上;而由于 agent 和 gadget 跑在几乎没有对外通路的沙箱里,除非你事后批准了某次写操作,否则它基本不可能把见过的秘密泄露出去;系统还会追踪 agent/gadget 观察过的一切来判断它是否「被污染」,据此把后续动作标记为危险(提示注入或可能泄密)。他也诚实地加了限定:这一切建立在你信任 LLM 提供商本身不从你的 prompt 里偷秘密之上——多数厂商提供零数据保留选项,若不信任则可以用本地 LLM。edaemon 问了个很实际的问题:非技术用户通过 prompt 给 Notion 集成加功能时,会不会不小心把一堆内部专有数据发到 Notion?kentonv:Gatekeeper 可以标注数据的敏感级别,甚至可以把一次读操作标记为敏感到「此后 agent 禁止向任何其他地方写入」——正是这一点让他们敢把 Cloudflare OS 接到含客户数据、营收信息的内部敏感数据源上。他同时承认「目前的策略还比较粗,可能过于严格」。
- 也有人不买账。techpression:「但这就是问题所在。我有权访问某些高度机密的东西,我跑了一个 gadget,它读了那个然后发给做这个 gadget 的人。」kentonv 解释 gadget 不会自动拿到你的数据、只拿到你显式授予的东西,techpression 仍坚持类比钓鱼网站:「我可能过于谨慎,但这门槛这么低,听起来就是数据泄露的配方。」nolist_policy 抛出了最有杀伤力的技术反驳——他直接引用 workerd 仓库的警告:「workerd 不是加固沙箱……在用 workerd 运行可能是恶意的代码时,你必须把它放在合适的安全沙箱(如虚拟机)里运行。Cloudflare Workers 托管服务本身使用了许多额外的纵深防御层。」 他的结论是:「Sandstorm 之所以伟大,是因为它做了真正的沙箱化。相比之下这个相当弱。」 nullpoint420 也追问:如果 agent 攻破了运行时怎么办,拿到的是整个容器、VM 还是节点?为什么我该选它而不是 MicroVM?chinathrow 和 ThePowerOfFuet 则各用一句「著名的临终遗言」和「呵呵」回应了「AI 不可能引入重大安全漏洞」这句话。
- tinco(自己在做类似产品,基础设施层用 Kubernetes)问了一个 Sandstorm 时代就存在的存在主义问题:在 Linux 容器的语境下,Sandstorm grain 相对 docker 式容器的真实优势是什么? 他还举了个反证:OpenAI 尽管有各种宣称,最终还是从容器切到了 MicroVM,因为受测 agent 仍然逃了出来。kentonv 的回答很关键:Sandstorm 用容器只是手段,真正的创新是细粒度实例——每个文档一个容器,没有别的容器平台这么做。但它其实效果不好,因为冷启动时间和内存占用:服务器启动要几秒已经很糟,如果你打开的每个文档都要长时间启动、还要吃掉几百 MB 内存,那就非常痛苦。Cloudflare OS 不用容器,它用 Dynamic Workers,效率高 100 倍。 abdullahkhalids 从另一个角度补了一刀:Linux 容器是给有相当软件工程能力的人用的;Sandstorm 的设计是一旦别人替你装好,奶奶也能用。
- 对博客文章本身的批评意外地成了一个热门分支。fny:「这才应该是公告的内容。发出来的那篇把重点埋了——Cloudflare OS 读起来和其他任何 AI 知识库没两样,直到中途引入应用,然后又突然技术到扔出一段代码。」kentonv 承认:「我们真的很纠结怎么同时面向多个受众来呈现这个东西。我的推文串和 GitHub README 才是给 HN 人群准备的呈现方式,博客文章面向另一群人。」 philistine 反问:「哪一群人?字面意义上的没有人?我完全看不懂那篇博客在说什么,含糊到毫无意义。我看到的每一份解释 Cloudflare OS 的文字都是清楚的,除了那篇博客。」QuantumNoodle 的观察引出了原因追溯:他曾经定期读 Cloudflare 博客因为里面有大量有趣的技术细节,最近这类内容变少了,他已经把它从 RSS 里删掉。jtwocents 给出了那个答案——他贴出 John Graham-Cumming 卸任 CTO 加入董事会的告别文,并总结:「jgc 不再编辑博客了,AI 水文接管了。」 richjdsmith:「感觉像是 Cloudflare 的文案们接到了『为更广泛的受众写作』的军令,而那意味着为没有人写作。」kentonv 后来补贴了一个替代入口——他上个月在 AI Engineer World’s Fair 上做的演讲与演示视频(当时品牌还没定,产品叫「Gadgets」)。
- 有一条串很打动人。losvedir 贴出自己 11 年前评价 Sandstorm 的旧评论,那时他的诉求是:「我是 Web 开发者,但没法用我的技能提供一个我想要的开源 Web 应用……我总不能要求别人去找一个能跑 Rails 的主机、或者去开 Heroku 账号。唯一的替代方案是我自己运营服务,可那样我就在保管别人的数据、要操心扩容和用户账号。」他说 Sandstorm 曾漂亮地穿过了「个人自托管」与「云端 SaaS」之间的针眼,而他一直认为「联邦式」软件是甜蜜点,因为它让人们能以家庭、社区这类更自然的组织单位掌控软件。他对新东西的评价则很克制:「Cloudflare OS 的功能可能受 Sandstorm 启发,但我觉得它没有它的灵魂。十年真是不一样啊!」 ocdtrekkie(仍在维护 Sandstorm 的社区成员)回复说他们也快要发布 Sandstorm 的更新版了,而且他会继续在家里跑 Sandstorm;但他也说 Cloudflare OS 里有些东西让他非常兴奋,远超 Sandstorm 短期内能做到的范围——「Kenton 拿 Gatekeeper 做的事情酷得离谱。」
- echelon 那条串则是全场最有人味的一段。他劝 kentonv 出去自己创业:「我肯定愿意从一家小公司买这个,就是不愿意从 Google、AWS、Cloudflare 买。如果这是家 YC 创业公司,我的信用卡信息早就给你了……别把所有上行空间都给 Cloudflare。」kentonv 的回答值得整段引用:「我试过一次创业,所以我知道那是什么样子。那是大量时间花在到处求钱上(向投资人、向客户),而不是在做技术。Workers 是我在 Cloudflare 内部的创业公司。它不会让我成为亿万富翁,但它已经让我赚到了多到我不知道该怎么花的钱,同时我可以把我不喜欢做的所有事情委托给公司里本来就做得很好的部门。我在这里有很大影响力,CEO 和 CTO 会听我的——比如我主张这东西必须开源、必须可自托管,他们热情地同意了。我不认为我作为一家独立公司能把它做得更好。」 echelon 的回复:「谢谢你如此周到的回答,这大大改善了我对它的观感和态度。我会去看看的。」
- 若干值得记下的短评:rvz 引用 Cloudflare OS 的定位语后断言「几十万家所谓的『AI 创业公司』被消灭了」,vehemenz 反驳说它们大可以转到 Cloudflare OS 上来、把领域数据留在自己手里,「钱本来就在那儿」。alansaber 一句话概括了怀疑者的立场:「所以,一个面向安全的云端 agent 框架?还是叫它 OS 吧。」 bearjaws 提出了一个更有意思的框架:2008 年他就爱说「问题一直在沙箱」——Chrome 和 Firefox 解决的问题是沙箱,让你能浏览网上的随机代码而不用担心被黑;今天同一个问题以 AI agent 的形式重新出现,AI 领域的大赢家很可能就取决于谁能造出最好的方式来关住 agent、并安全地把 AI 的价值暴露出去。 hobofan 的批评则代表了另一极:「它是开源的,但和他们的平台绑得如此之深,以至于没有厂商可移植性——这让他们 Workers 之后的几乎每个产品发布都显得平平。」csomar 把这条批评说得更狠:「如果你的方案需要价值 200 万美元的算力或运维时间才能跑起来,开源就是个营销词。」kentonv 的回应简短有力:「跑一个 Cloudflare OS 实例并不需要 200 万美元的算力。我就在我地下室的一台随便什么服务器上跑着它。」