Moltworker 发布:无需 Mac mini,在 Cloudflare 上自托管个人 AI 助手
编者注:截至 2026 年 1 月 30 日,Moltbot 已更名为 OpenClaw。
本周,互联网上掀起了一股购买 Mac mini 来运行 Moltbot(原名 Clawdbot)的热潮。Moltbot 是一款开源、自托管的 AI 助手,旨在充当个人助理。它在用户自己的硬件上后台运行,拥有大量且不断增长的聊天应用、AI 模型和其他流行工具的集成列表,并且可以远程控制。Moltbot 可以帮助你管理财务、社交媒体、安排日程——所有这些都通过你最喜欢的消息应用完成。
但是,如果你不想购买新的专用硬件呢?如果你仍然可以在线高效、安全地运行你的 Moltbot 呢?
介绍 Moltworker
欢迎了解 Moltworker,这是一个中间件 Worker 和适配脚本,允许在 Cloudflare 的 Sandbox SDK 和我们的开发者平台 API 上运行 Moltbot。一个在 Cloudflare 上的个人助理——这是如何工作的?
Cloudflare Workers 与 Node.js 的兼容性从未像现在这样好。过去,我们必须模拟 API 才能让一些包运行,现在这些 API 已由 Workers Runtime 原生支持。这改变了我们可以在 Cloudflare Workers 上构建工具的方式。
当我们首次实现 Playwright(一个流行的基于浏览器渲染的 Web 测试和自动化框架)时,我们不得不依赖 memfs。这很糟糕,因为 memfs 不仅是一个 hack 和外部依赖,而且还迫使我们偏离了官方的 Playwright 代码库。值得庆幸的是,随着 Node.js 兼容性的提高,我们能够开始原生使用 node:fs,降低了复杂性和维护成本,这使得升级到最新版本的 Playwright 变得容易。
我们原生支持的 Node.js API 列表不断增长。博客文章 “Cloudflare Workers 中 Node.js 兼容性改进的一年” 概述了我们目前的进展和正在做的事情。我们也衡量这一进展。我们最近进行了一项实验,选取了 1,000 个最受欢迎的 NPM 包,安装并让 AI 尝试在 Cloudflare Workers 中运行它们(以 Ralph Wiggum 的“软件工程师”风格),结果出奇地好。排除那些是构建工具、CLI 工具或仅限浏览器且不适用的包,只有 15 个包真正无法运行。这仅占 1.5%。
以下是我们 Node.js API 支持随时间变化的图表:
我们整理了一个页面,展示了我们内部关于 npm 包支持实验的结果,你可以在这里自行查看。
Moltbot 不一定需要大量的 Workers Node.js 兼容性,因为大部分代码无论如何都在容器中运行,但我们认为强调我们通过原生 API 支持了多少包是很重要的。这是因为从头开始一个新的 AI 助手应用时,我们实际上可以在 Workers 中运行大量逻辑,更接近用户。
故事的另一个重要部分是,我们开发者平台上的产品和 API 列表已经增长到任何人都可以在 Cloudflare 上构建和运行任何类型的应用——即使是最复杂和要求最高的应用。而且一旦启动,在我们开发者平台上运行的每个应用都能立即受益于我们安全且可扩展的全球网络。
这些产品和服务为我们提供了开始所需的要素。
首先,我们现在有了 Sandboxes,你可以在隔离环境中安全地运行不受信任的代码,为运行服务提供了场所。
其次,我们现在有了 Browser Rendering,你可以通过编程方式控制和与无头浏览器实例交互。
最后,R2,你可以持久存储对象。
有了这些可用的构建模块,我们就可以开始着手适配 Moltbot。
我们如何将 Moltbot 适配到我们的平台上运行
Workers 上的 Moltbot,即 Moltworker,是一个入口点 Worker 的组合,它充当 API 路由器和我们 API 与隔离环境之间的代理,两者都受 Cloudflare Access 保护。它还提供了一个管理 UI,并连接到运行标准 Moltbot Gateway 运行时及其集成的 Sandbox 容器,使用 R2 进行持久存储。
Moltworker 的高级架构图。
让我们深入探讨。
AI Gateway
Cloudflare AI Gateway 充当你的 AI 应用与任何流行 AI 提供商之间的代理,并为我们的客户提供对通过请求的集中可见性和控制。最近我们宣布支持 Bring Your Own Key (BYOK),即我们为你集中管理密钥,而不是在每次请求中以明文传递你的提供商密钥,并可以在你的网关配置中使用它们。一个更好的选择是使用 Unified Billing,你完全不必端到端管理 AI 提供商的密钥。在这种情况下,你为账户充值积分,并直接与任何支持的提供商一起使用 AI Gateway,Cloudflare 会被收费,我们将从你的账户中扣除积分。
为了让 Moltbot 使用 AI Gateway,首先我们创建一个新的网关实例,然后为其启用 Anthropic 提供商,接着我们添加我们的 Claude 密钥或购买积分以使用 Unified Billing,然后我们需要做的就是设置 ANTHROPIC_BASE_URL 环境变量,以便 Moltbot 使用 AI Gateway 端点。就这样,无需更改代码。
一旦 Moltbot 开始使用 AI Gateway,你将完全了解成本,并可以访问日志和分析,帮助你了解你的 AI 助手如何使用 AI 提供商。
请注意,Anthropic 只是一个选项;Moltbot 支持其他 AI 提供商,AI Gateway 也是如此。使用 AI Gateway 的优势在于,如果任何提供商推出了更好的模型,你不必在 AI 助手配置中交换密钥并重新部署——你只需在网关配置中切换模型。此外,你可以指定模型或提供商的回退来处理请求失败并确保可靠性。
Sandboxes
去年,我们预见到 AI 助手在隔离环境中安全运行不受信任代码的需求日益增长,并宣布了 Sandbox SDK。这个 SDK 建立在 Cloudflare Containers 之上,但它提供了一个简单的 API,用于执行命令、管理文件、运行后台进程和暴露服务——所有这些都来自你的 Workers 应用。简而言之,Sandbox SDK 为你提供了开发者友好的 API 用于安全代码执行,并处理容器生命周期、网络、文件系统和进程管理的复杂性,让你只需几行 TypeScript 代码就能专注于构建应用逻辑。
以下是一个示例:- import { getSandbox } from '@cloudflare/sandbox';
- export { Sandbox } from '@cloudflare/sandbox';
- export default {
- async fetch(request: Request, env: Env): Promise<Response> {
- const sandbox = getSandbox(env.Sandbox, 'user-123');
- // 创建项目结构
- await sandbox.mkdir('/workspace/project/src', { recursive: true });
- // 检查 node 版本
- const version = await sandbox.exec('node -v');
- // 运行一些 python 代码
- const ctx = await sandbox.createCodeContext({ language: 'python' });
- await sandbox.runCode('import math; radius = 5', { context: ctx });
- const result = await sandbox.runCode('math.pi * radius ** 2', { context: ctx });
- return Response.json({ version, result });
- }
- };
复制代码
这非常适合 Moltbot。我们不是在本地 Mac mini 上运行 Docker,而是在 Containers 上运行 Docker,使用 Sandbox SDK 向隔离环境发出命令,并使用回调到我们的入口点 Worker,从而有效地在两个系统之间建立双向通信通道。
R2 用于持久存储
在本地计算机或 VPS 上运行的好处是你可以免费获得持久存储。然而,容器本质上是临时的,意味着其中生成的数据在删除时会丢失。不过别担心——Sandbox SDK 提供了 sandbox.mountBucket(),你可以在容器启动时使用它自动将你的 R2 存储桶挂载为文件系统分区。
一旦我们有了一个保证能在容器生命周期中存活的本地目录,我们就可以用它来让 Moltbot 存储会话内存文件、对话和其他需要持久化的资产。
Browser Rendering 用于浏览器自动化
AI 助手严重依赖浏览有时结构不佳的网页。Moltbot 利用专用的 Chromium 实例来执行操作、浏览网页、填写表单、截图和处理需要 Web 浏览器的任务。当然,我们也可以在 Sandboxes 上运行 Chromium,但如果我们能简化并使用 API 呢?
借助 Cloudflare 的 Browser Rendering,你可以通过编程方式控制和与在我们边缘网络中大规模运行的无头浏览器实例交互。我们支持 Puppeteer、Stagehand、Playwright 和其他流行的包,以便开发者只需最少的代码更改即可上手。我们甚至支持用于 AI 的 MCP。
为了让 Browser Rendering 与 Moltbot 协同工作,我们做了两件事:
- 首先,我们从 Sandbox 容器创建一个薄薄的 CDP 代理(CDP 是允许检测基于 Chromium 的浏览器的协议)到 Moltbot Worker,再使用 Puppeteer API 回到 Browser Rendering。
- 然后,当 Sandbox 启动时,我们向运行时注入一个 Browser Rendering 技能。
从 Moltbot 运行时的角度来看,它有一个可以连接的本地 CDP 端口来执行浏览器任务。
Zero Trust Access 用于身份验证策略
接下来,我们希望保护我们的 API 和管理 UI 免受未经授权的访问。从头开始做身份验证很困难,而且通常是你不想重新发明或不得不处理的那种轮子。Zero Trust Access 通过为端点定义特定的策略和登录方法,使得保护你的应用变得异常容易。
Moltworker 应用的 Zero Trust Access 登录方法配置。
一旦端点受到保护,Cloudflare 将为你处理身份验证,并自动在每个请求中包含一个 JWT 令牌到你的源端点。然后你可以验证该 JWT 以提供额外保护,确保请求来自 Access 而不是恶意的第三方。
与 AI Gateway 类似,一旦你的所有 API 都在 Access 后面,你就可以很好地观察用户是谁以及他们用你的 Moltbot 实例在做什么。
Moltworker 实战演示
演示时间。我们设置了一个 Slack 实例,可以在其中使用我们自己的 Workers 上的 Moltbot 实例。以下是我们用它做的一些有趣的事情。
我们讨厌坏消息。
这是一个聊天会话,我们要求 Moltbot 使用 Google Maps 找到伦敦 Cloudflare 和里斯本 Cloudflare 之间的最短路线,并在 Slack 频道中截图。它通过一系列步骤使用 Browser Rendering 导航 Google Maps,并且做得相当不错。另外,当我们第二次问他时,看看 Moltbot 的内存是如何工作的。
我们今天想吃点亚洲菜,让 Moltbot 帮忙。
我们也用眼睛吃饭。
让我们更有创意一点,要求 Moltbot 创建一个视频,浏览我们的开发者文档。如你所见,它下载并运行 ffmpeg,从它在浏览器中捕获的帧生成视频。
运行你自己的 Moltworker
我们开源了我们的实现,并在 https://github.com/cloudflare/moltworker 上提供,因此你今天就可以在 Workers 上部署和运行你自己的 Moltbot。README 会指导你完成设置所需的所有步骤。
你需要一个 Cloudflare 账户和至少 5 美元的 Workers 付费计划订阅才能使用 Sandbox Containers,但所有其他产品要么免费使用,如 AI Gateway,要么有慷慨的免费层级,你可以用来开始并在合理的限制下运行任意长时间。
请注意,Moltworker 是一个概念验证,不是 Cloudflare 产品。我们的目标是展示我们开发者平台的一些最令人兴奋的功能,这些功能可用于高效、安全地运行 AI 助手和不受监督的代码,并在利用我们全球网络的同时获得出色的可观察性。
欢迎贡献或分叉我们的 GitHub 仓库;我们会关注一段时间以提供支持。我们也考虑同时向上游官方项目贡献 Cloudflare 技能。
结论
我们希望你喜欢这个实验,并且我们能够说服你 Cloudflare 是运行你的 AI 应用和助手的完美场所。我们一直在不懈努力,试图预见未来并发布功能,如 Agents SDK,你可以用它几分钟内构建你的第一个助手;Sandboxes,你可以在隔离环境中运行任意代码,而无需处理容器的生命周期复杂性;以及 AI Search,Cloudflare 的托管基于向量的搜索服务,仅举几例。
Cloudflare 现在提供了一套完整的 AI 开发工具包:推理、存储 API、数据库、用于有状态工作流的持久执行以及内置的 AI 功能。这些构建模块共同使得在我们全球边缘网络上构建和运行即使是最苛刻的 AI 应用成为可能。
如果你对 AI 感到兴奋,并想帮助我们构建下一代产品和 API,我们正在招聘。
原文链接:Introducing Moltworker: a self-hosted personal AI agent, minus the minis |