跳到正文
原文
web-github-trending ·· 9 天前精选AI 评分78

Cloudflare 开源内部 AI 生产力平台 Cloudflare OS

cloudflare / cloudflare-os

AI 导读

Cloudflare 将其内部使用的 AI 生产力环境 Cloudflare OS 开源,供其他公司复制并改造成自己的版本。它提供智能体聊天界面、沙箱化的 Gadget 应用开发和名为 Gatekeepers 的安全框架,后者以能力授权方式管理智能体与外部服务的连接,并支持异步批量审批。

推荐理由

Cloudflare 把内部 AI 生产力平台开源,含智能体聊天、沙箱应用与 Gatekeepers 权限层,可本地跑起来试用。

正文 · AI 翻译

Cloudflare OS:AI 生产力环境

Cloudflare OS 是一个为 AI 生产力打造的“操作系统”,最初是为 Cloudflare 内部使用而开发的。Cloudflare 的大部分员工——从工程到销售以及介于两者之间的所有岗位——每天都在使用 Cloudflare OS 来帮助他们完成工作。

A Q3 planning workspace in Cloudflare OS, with an AI-generated slide deck

这不是传统的计算机操作系统。我们使用“操作系统”一词有两层含义:

  • 一个面向公司的操作系统,以安全的方式利用 AI 提高生产力,让安全团队可以安心入睡。
  • 一个面向 AI 工作负载的操作系统,类似于传统操作系统管理计算工作负载的含义。

Cloudflare OS 特别提供三样东西:

  1. 一个智能体聊天界面,你可以让智能体执行任务,并预装了关于你公司如何运作的知识。
  2. 沙盒化的应用开发,这样你可以让智能体构建“小工具”(小型个人应用),并安全地与他人分享你构建的内容。
  3. 一个名为 Gatekeepers 的安全框架,为智能体和应用都设置了护栏,使得非技术用户也能安全地“放飞自我”,而不会发生任何坏事。

我们正在将 Cloudflare OS 开源,以便其他人可以复制它并为自己公司进行定制。我们的想法不是让你的公司使用 Cloudflare OS,而是让你把它变成“你公司 OS”。

快速开始

要在本地快速运行 Cloudflare OS,请先安装 pnpm,然后执行:

pnpm run-local

然后访问:http://localhost:8787

这会在本地通过 wrangler 和 workerd 运行整个技术栈。这不适用于生产环境,但可以快速了解该产品的功能。

或者,你可以部署到你的 Cloudflare 账户。

(更多选项见本 readme 末尾。)

可以尝试什么

试试这样的提示词:

  • “为我即将与客户的会议制作幻灯片。”(这将使用内置的幻灯片蓝图。)
  • “制作一个协作白板应用。”(这将从零开始创建一个新应用。)
  • “制作一个井字棋游戏。”然后说“我执 X,你执 O。我已经下了第一步。轮到你了。”
  • “为这个 GitHub 仓库制作一个问题看板。”(附加一个仓库;需要配置 GitHub 集成。)
  • “修正这个 Google Doc 中的拼写错误。”(附加一个文档;需要配置 Google 集成。)

警告:早期访问

Cloudflare OS 正处于密集开发阶段。这个仓库实际上是版本 2,是一次完全重写,将我们从版本 1 中学到的经验放在新的基础上。

截至 2026 年 8 月发布,Cloudflare OS v2 功能非常强大,但仍有许多粗糙之处。我们知道,并且正在努力改进。目前,请将其视为“早期访问”版本。

概述:Cloudflare OS 到底是什么?

小工具:一种思考软件的新方式

Cloudflare OS 不仅仅是一个带有连接器的聊天框。该系统围绕一种新的软件方法展开,即每个用户都运行自己使用的生产力应用的副本。

当你在 Cloudflare OS 中创建幻灯片时,你并不是在调用云端运行的某个 SaaS 软件。系统会专门为你创建一个幻灯片软件的私有实例。我们称之为“小工具”。这个实例在与其他人幻灯片不同的沙盒中运行。

这有两个深远的影响:

  1. 幻灯片应用不可能存在将你的幻灯片泄露给攻击者的安全漏洞。Cloudflare OS 沙盒控制着对你私有应用实例的所有访问。
  2. 如果你愿意,可以自由修改代码。如果幻灯片应用缺少你需要的功能,你只需让你的智能体添加即可。而且由于第 1 点,这样做完全安全。

这与过去 25 年的云架构和“软件即服务”模式大相径庭,但我们认为 AI 已经改变了这个等式。当任何用户都能通过提示智能体来添加他们所需的功能时,集中式的软件模式就不再合理了。

守门人:基于能力的安全层

守门人就像是增强版的 MCP 服务器。

当你将智能体或小工具引入外部资源时,就会创建一个守门人来管理该访问。守门人是针对每个外部服务的专用软件,负责调节小工具与该服务的连接。它:

  • 向服务提供简洁的 Cap'n Web API(封装服务原生提供的任何 API)。
  • 处理授权(例如通过 OAuth)。
  • 强制仅访问用户所意图的特定资源,实施窄范围访问。
  • 记录小工具(或智能体)执行的每一个操作,供你审查。
  • 对于任何有副作用的操作,为人类用户提供批准或拒绝该操作的机会(“人在回路”)。

关于最后一点,守门人实现了当前技术水平的重大进步。传统上,人在回路的设置要求人类同步批准操作。当智能体想要做某事时,它必须停下并等待批准才能继续。这很烦人:你给智能体一个任务,然后走开去喝杯咖啡,回来却发现智能体在第一步就卡在审批上,毫无进展。结果,人们常常妥协,将智能体设置为“自动批准”,或者--dangerously-skip-permissions,这显然不安全。

守门人提供了更好的方式:当智能体(或小工具)执行需要批准的操作时,守门人会在本地模拟结果,允许智能体继续并排队更多操作。守门人告诉智能体操作已完成,如果智能体尝试读取结果,守门人会给出模拟结果。一旦智能体完成,用户可以批量或逐个批准或拒绝这些操作,但无论哪种方式,他们都可以在方便的时候稍后进行。

在实现上,每个守门人都作为一个独立的 Worker 部署。未来,我们设想守门人服务将独立于操作系统实例进行部署和维护,但细节尚未确定。目前,我们在本仓库中提供了一些有趣的守门人,你可以将它们与你自己的操作系统实例一起部署。

把它想象成办公套件

Cloudflare OS 的基本用户体验类似于在线办公套件,如 Google Docs 或 MS Office。但是,想象一下,不是固定的一组文件类型(文档、电子表格、幻灯片),而是每个文件——或“小工具”——都可能是它自己的自定义应用,由 AI 编写,完全满足你的需求。

就像办公文档一样,每个小工具默认是私有的,但可以安全地共享,以便与你的团队或朋友协作。

就像办公文档一样,你可以拥有成千上万个。你可以随心所欲地创建它们。

就像办公文档一样,你可以从“模板”——称为“蓝图”——开始。但办公模板只是一些内容,而蓝图指定了整个应用。

就像办公文档一样,你可以从自己的文档(Gadgets)创建新模板(blueprints)并与他人分享。但这样做时,你分享的是整个应用的代码。

它有点像是一个操作系统

操作系统这个术语并不完全是营销。Cloudflare OS 在技术层面上实际上类似于一个操作系统。

普通操作系统 Cloudflare OS
内核 packages/workshop-backend
设备驱动 packages/gatekeeper-*
shell packages/workshop-frontend
进程 gadgets
可执行文件 blueprints
用户 用户
ACL 共享权限
??? agents

我们的“内核”位于 workshop-backend 包中。后端确实做了很多类似真实操作系统内核的事情:它将用户连接到程序和设备(我们称之为 Gadgets 和 Gatekeepers),同时通过沙箱化应用和实施访问控制来实现安全。

在这个类比中,Gatekeepers——将用户和 agents 连接到外部服务——就像驱动程序——将用户和程序连接到外部设备。

有一件事传统操作系统今天并没有真正管理,但 Cloudflare OS 做到了:AI agents。仔细想想,这确实是传统操作系统缺失的一个功能。我们认为 AI agents 不能简单地被当作用户来对待。它们必须对一个人类用户负责,同时拥有自己受限的权限。Agents 通过编写代码片段并即时执行来工作。这一切的理想安全模型是基于能力的安全,而不是访问控制列表。明白我的意思了吗?也许传统操作系统也应该给 AI agents 特殊待遇。

由 Workers 团队构建,运行在 Workers 之上

Cloudflare OS 构建在 Cloudflare Workers 之上,大量使用了 Durable Objects、Dynamic Workers,尤其是 Facets。每个工作区都是自己的 Durable Object,每个 Gadget 运行在 Dynamic Worker Facet 中,Gatekeepers 也会向每个工作区安装 facets 以管理对远程服务的访问。

事实上,Cloudflare OS 正是由构建 Workers 的人构建的。它使用了 Workers Runtime 的前沿功能——实际上,Dynamic Workers、Facets 以及其他几项功能是专门为支持 Cloudflare OS 而添加到运行时中的,未来还会有更多。研究 Cloudflare OS 源代码是了解 Workers Runtime 团队认为 Workers 应如何被使用的好方法。

构建在 Workers 之上并不意味着 Cloudflare OS 只能在 Cloudflare 上运行。事实上,workerd,即 Cloudflare Workers Runtime,本身就是开源的,Cloudflare OS 可以完全运行在你自己的服务器上的它之上。

功能

通用多用途 agent

Cloudflare OS 的编码 agent 实际上是一个完全多用途的 agent,可以执行任意任务;像其他流行的编码 agent 一样,你不必用它来编码。你可以用它来构建 Gadgets,但也可以跳过 Gadget,直接让 agent 执行任务。Cloudflare OS 的 agent 是一个 Code Mode agent——它通过编写并立即执行代码片段来完成任务。它可以使用 Gatekeepers(如 MCP——见下文)连接到外部资源。

用 AI 构建应用

虽然如果你愿意,可以手动编写 Gadget 的代码,但预期是 AI 为你编写代码。Cloudflare OS 内置了一个编码 agent,它会构建你要求的任何东西,为你测试,并调试错误。

你可以选择你的 LLM。Cloudflare OS 可与众多主流 AI 模型提供商以及自托管模型配合使用,并且还在不断添加更多提供商。

由于该平台高度集成且简化的特性,即使使用相同的底层 AI 模型,Cloudflare OS 编码代理通常也比通用编码代理表现更好、更快,且使用的 token 更少。

与 AI 协作

每个用 Cloudflare OS 构建的应用都自动拥有一个对代理友好的 API。这意味着,在你让 AI 构建应用之后,你还可以让 AI 在应用内部与你协作。无需构建 MCP 服务器,也无需集成自定义代理循环。它默认就存在。

这之所以可行,是因为 Gadget 的客户端和服务器部分必须通过 Cap'n Web RPC 进行通信。这是双赢的:

  1. Cap'n Web 的样板代码极少,这让代理很容易使用。你基本上只需在服务器上定义一个方法,然后从客户端调用它,就像调用本地方法一样。
  2. 同时,这意味着服务器必然会暴露一个易于理解的 API,代理可以直接调用它。AI Agent 工具链使用 Code Mode 进行工具调用,从而可以轻松地直接暴露 Gadget 的 API 供代理调用。

实时多人协作

你可以像在典型的在线办公套件中共享文档一样共享你的 Gadget。你可以授予特定用户访问权限,也可以创建一个共享链接,让任何打开它的人都能访问。而且就像那些在线办公套件一样,你能够实时看到协作者的操作。

这之所以可行,是因为每个 Gadget 都由一个 Durable Object 支持,这是 Cloudflare 的有状态无服务器原语,让实时多人协作变得简单。它简单到编码代理无需被要求就会默认实现它。

蓝图:分享你的代码

如果你创建了一个可能对他人有用的 Gadget,但你不想分享 Gadget 本身,你可以改为分享一个蓝图,让其他人可以创建他们自己的 Gadget 副本。蓝图本质上就是代码的副本。

这听起来可能很简单,但蓝图是对云软件传统的一次重大改变。传统上,如果你创建了一个想与其他用户分享的 Web 应用,你会把应用托管在自己的服务器上,用户连接到该服务器。蓝图更像移动应用和传统 PC 应用:每个用户运行自己的软件副本。

在 AI 时代,这一变化至关重要。一方面,AI 让个人开发者能够构建比以往更多的东西,但个人开发者仍然很难维护一项在线服务;这消除了这种需求。另一方面——甚至更重要的是——允许每个用户运行自己的软件副本,使用户能够借助 AI 修改软件以满足自己的需求。无需提交功能请求,无需恳求开发者优先处理。最终用户可以解决自己的问题。

默认沙箱化且安全

每个 Gadget 都在一个安全沙箱中运行,未经你的明确同意,它完全无法与互联网通信。具体来说:

  • 服务器运行在一个 Dynamic Worker 中,其互联网访问已被禁用。它只能通过 Workers Bindings 与你明确指定的特定外部资源通信。
  • 客户端代码运行在沙盒化的 iframe 中。该 iframe 只能通过父框架提供的、基于 postMessage() 的 Cap'n Web RPC 会话与其服务器通信。除此之外,该 iframe 被禁止访问互联网(在浏览器允许的最大范围内,通过 Content-Security-Policy 和 iframe 沙盒设置实现)。

基于能力的访问控制

每个 agent 和每个 Gadget 默认没有任何访问权限。即使你已为 Gadget Workshop 配置了对外部账户的访问权限,agent 和 Gadget 也不会自动获得使用它们的权限。

相反,你必须将每个 agent(或 Gadget)引见给你希望它访问的特定资源。例如,你可以通过粘贴链接或点击“添加资源”并在 UI 中选择来引见一个 GitHub 仓库。agent 也可以请求引见它认为自己需要的资源,然后你可以批准或拒绝。

这与大多数 agent 框架不同,在那些框架中,MCP 服务器是预先配置好的,使得对所有服务的广泛访问在每个聊天中都对 agent 环境可用。基于能力的引见机制让每个 agent 仅被限制在手头任务实际需要的访问权限内。

开始使用

部署到你的 Cloudflare 账户

我们构建了一个在线流程,帮助你部署到自己的 Cloudflare 账户:

https://os.cloudflare.app/deploy

或者,对于更复杂的部署(涉及你的 gatekeeper 以及可能的代码更改),请查看我们的部署起始仓库:

https://github.com/cloudflare/cloudflare-os-starter

本地运行

要在本地快速运行 Cloudflare OS,请先安装 pnpm,然后执行:

pnpm run-local

然后访问:http://localhost:8787

这会使用 wrangler(Workers 开发者工具 CLI)运行 Cloudflare OS。这不是在生产服务器上运行该 OS 的正确方式,但在本地机器上试用完全没问题。

你的数据将存储在名为 .wrangler 的子目录中。

使用 workerd 部署到你自己的服务器

即将推出

Cloudflare OS 可以完全运行在 workerd 上,这是 Cloudflare 面向 Workers 的开源运行时。事实上,上面的“本地运行”说明在底层使用的就是 workerd。我们仍在编写文档和工具,以帮助你顺利地将该 OS 部署在你自己的服务器上的 workerd 之上。如果你喜欢冒险,可以阅读 workerd 配置的底层文档(或让你的 agent 去读),然后试一试。

配置外部服务

许多 Gatekeeper 需要配置才能连接到第三方服务,包括为每个服务获取 OAuth 客户端凭据。遗憾的是,许多服务提供商故意不把这变得简单,因为 OAuth 的目标受众是开发者。

每个 gatekeeper 包都包含如何设置它的说明:

开发

开发时,你会希望在两个终端中以两个单独的命令分别运行前端和后端:

pnpm dev-server
pnpm dev-client

然后访问:http://localhost:3000

贡献

目前,我们不寻求外部贡献。

AI 让编写代码变得容易。如今,困难的部分不是写代码,而是审查代码、确保质量保持在高水平,并让产品保持连贯一致。从这个角度看,不幸的是,外部的代码贡献是在“捐赠”工作中容易的那部分,同时制造了更多困难的工作。

话虽如此,我们乐于接受那些修复问题、易于验证的小型 PR。但是,我们请求你不要提交低价值的 PR(例如拼写错误修复)或超过十几行左右的 PR。此类 PR 将被关闭,并附上本准则的引用。

如果你有一个大想法希望我们考虑,欢迎发起讨论。

随着项目成熟,此政策未来可能会改变。在那之前,感谢你的理解。

致谢

Cloudflare OS 有太多开源依赖,无法在此一一列出。但我们想特别强调几个承担了特别繁重工作的项目:

  • Pi(具体来说是 pi-agent-core),它让用一个 API 支持所有 LLM 提供商变得容易。
  • CodeMirror 提供了我们的代码编辑器 UI 以及用于同步实时编辑的操作变换实现。
  • isomorphic-git 用于实现 Gadget 代码的后端存储以及与外部 git 服务器的集成。
  • Vite,它让开发循环变得如此愉快。

来源:web-github-trending · github.com