Hotdry.
ai-systems

在 Cloudflare Workers 上部署 Moltworker 零信任 AI 代理运行时

剖析 Moltworker 如何在 Cloudflare Workers 零信任环境中部署跨平台 AI 代理,涵盖 Sandbox SDK 隔离执行、R2 持久化存储、Browser Rendering 自动化与 Zero Trust Access 认证策略。

近期,开源项目 Moltbot 引发了一波个人自托管 AI 助手热潮,不少用户甚至专门购买 Mac mini 来运行这个能够通过即时通讯应用远程控制的代理助手。然而,硬件采购与运维成本并非所有用户都能接受。Cloudflare 团队基于此需求,开发了 Moltworker—— 一个允许在 Cloudflare 开发者平台上运行 Moltbot 的中间件 Worker 方案。本文将从工程实现角度,深入剖析 Moltworker 的架构设计、关键组件集成以及在 Serverless 边缘环境中部署 AI 代理的实践经验。

从本地运行到边缘部署的架构迁移

Moltbot 原本设计运行在用户本地硬件上,其架构包含核心运行时、网关层以及与各类外部服务的集成模块。当需要将其迁移到 Cloudflare Workers 环境时,团队面临的首要挑战是解决 Serverless 环境与本地容器化运行时的兼容性问题。传统的 Workers 环境是短生命周期的无状态计算单元,而 Moltbot 的运行依赖持续的后台进程、有状态的文件系统以及与外部服务的持久连接。Moltworker 的解决方案是构建一个分层的架构,将不同职责拆解到合适的 Cloudflare 产品中。

整体架构由四个核心层次组成:入口层负责 API 路由与认证、隔离层通过 Sandbox SDK 运行核心运行时、持久层利用 R2 存储会话状态与文件、渲染层通过 Browser Rendering 提供网页自动化能力。这种分层设计使得每一层都能充分利用对应产品的最佳特性,同时保持层间的清晰边界与松耦合关系。入口 Worker 通过 Cloudflare Access 进行零信任认证,确保只有授权用户才能访问代理服务;隔离层在容器中运行完整的 Moltbot 网关运行时,通过 SDK 与入口层建立双向通信通道;持久层使用 R2 存储对话历史、用户配置与临时文件,并通过 mountBucket 机制挂载为容器内的文件系统;渲染层则通过 CDP 代理将浏览器自动化请求转发到 Cloudflare 的 Browser Rendering 服务。

AI Gateway 集成与模型无关的请求路由

Moltbot 支持多种 AI 模型提供商,包括 Anthropic Claude、OpenAI GPT 系列以及其他兼容 OpenAI API 格式的模型。在传统部署中,用户需要在配置文件中管理不同提供商的 API 密钥,并在需要切换模型时修改配置并重启服务。Moltworker 通过集成 Cloudflare AI Gateway,实现了模型无关的请求路由与统一的密钥管理。

AI Gateway 作为反向代理,位于 Moltbot 与各 AI 提供商之间,接收来自代理运行时的请求,并根据配置将其转发给对应的模型端点。这种设计的优势在于集中化管理:用户只需在 AI Gateway 配置中设置一次 API 密钥,即可被所有通过网关的请求使用。Cloudflare 近期推出的 Bring Your Own Key 功能允许用户将密钥安全存储在平台的密钥库中,避免在每次请求中明文传输敏感凭证。更进一步,统一计费模式允许用户预先充值账户余额,所有 AI 请求的费用直接从账户扣除,无需分别管理各提供商的账单。对于 Moltworker 的部署者而言,配置过程仅需三步:创建 AI Gateway 实例、启用目标提供商、设置 ANTHROPIC_BASE_URL 环境变量指向网关端点,代理运行时无需任何代码修改即可切换到新的路由架构。

从运维角度而言,AI Gateway 提供的可视化仪表板能够展示请求量、响应延迟、错误率以及各模型的调用成本分布。这些指标对于理解 AI 代理的行为模式、识别异常请求以及优化资源使用具有重要参考价值。当某个模型出现响应异常时,网关的降级策略可以自动将请求路由到备用模型,确保代理服务的连续性。

Sandbox SDK 与容器隔离执行环境

在 Serverless 环境中运行第三方代码(如用户自定义的代理技能或外部集成模块)需要严格的安全隔离。Cloudflare 的 Sandbox SDK 基于 Containers 产品构建,提供了简化的 API 用于执行命令、管理文件、运行后台进程以及暴露服务。在 Moltworker 架构中,Sandbox SDK 承担了核心运行时执行环境的职责。

与传统容器管理相比,Sandbox SDK 封装了底层的生命周期复杂性。开发者无需关注容器的创建、配置与销毁细节,只需通过统一的 TypeScript API 即可完成代码执行。典型的使用模式包括:创建项目目录结构、执行系统命令检查环境、运行特定语言的代码片段。以 Python 上下文执行为例,开发者首先通过 createCodeContext 方法创建语言上下文,然后在 runCode 调用中注入代码并获取执行结果。这种模式对于需要动态执行用户输入或第三方脚本的 AI 代理场景尤为适用。

Moltworker 对 Sandbox SDK 的应用更进一步,实现了与外部 Worker 的双向通信机制。容器内部运行完整的 Moltbot 网关运行时,包括其集成的所有外部服务适配器。当容器需要访问外部 API(如调用 AI Gateway 或 Browser Rendering)时,通过 SDK 的回调机制将请求转发给入口 Worker,由入口 Worker 代理完成网络通信。这种设计既保持了容器内部运行时的完整性,又充分利用了 Workers 网络层的安全防护与性能优化。值得注意的是,Sandbox 容器需要付费计划支持(最低 $5 / 月),但 AI Gateway、Zero Trust Access 等组件均在免费或慷慨的免费配额范围内。

R2 持久化存储与会话状态管理

Serverless 容器的一个根本特性是数据短暂性:容器销毁后,其内部文件系统中存储的所有数据都会丢失。对于需要维护长期对话历史、用户偏好设置或中间计算结果的 AI 代理而言,这是一个必须解决的关键问题。Moltworker 通过 Cloudflare R2 对象存储实现了持久化存储层。

Sandbox SDK 提供的 mountBucket 方法允许在容器启动时自动将 R2 存储桶挂载为本地文件系统的一个目录。挂载完成后,容器内的所有读写操作都直接作用于 R2 存储,无论容器生命周期如何变化,存储在挂载目录中的文件都会持久保存。Moltbot 利用这一机制存储多种类型的数据:对话历史文件记录了代理与用户的交互记录,用于支持多轮对话的记忆功能;会话状态快照保存了代理的当前执行上下文,支持中断后的恢复;配置与凭据文件存储了用户的个性化设置与外部服务集成参数。

从工程实践角度,R2 挂载目录的选择需要考虑容器重启后的初始化顺序。建议将所有需要持久化的数据集中存放在单一挂载点下,避免因挂载失败导致的部分数据丢失。同时,由于 R2 的存储模型是对象而非传统文件系统,某些文件系统操作(如硬链接、符号链接的跨目录解析)可能存在限制,开发时需要验证所有依赖的文件操作在挂载环境下的兼容性。

Browser Rendering 与 CDP 代理架构

AI 代理的一个重要能力是网页导航与表单填写。Moltbot 支持通过浏览器自动化执行诸如查询路线、搜索餐厅、生成操作录屏等任务。在 Cloudflare 环境中,Browser Rendering 产品提供了无头浏览器实例的托管服务,支持 Puppeteer、Stagehand、Playwright 等主流自动化框架。

Moltworker 的浏览器集成采用了分层代理架构。在容器内部,Moltbot 运行时通过本地的 CDP 端口发起浏览器控制请求。这些请求首先被转发到入口 Worker,入口 Worker 充当 CDP 代理,将请求重新转发到 Cloudflare 的 Browser Rendering 服务。这种设计的动机在于:Browser Rendering 服务运行在 Cloudflare 的全球边缘网络上,而容器网络可能存在出站连接限制。通过 Worker 层的代理,容器无需直接访问外部网络,所有浏览器流量都经过平台的安全审计与流量控制。

具体实现中,Moltworker 仓库提供了一个 Thin CDP Proxy 路由模块,负责解析 CDP 协议报文并转发到目标服务。同时,为了让容器内的 Moltbot 能够识别 Browser Rendering 实例,研究团队开发了一个 Browser Rendering 技能模块,在容器启动时注入到运行时的技能库中。从代理运行时的视角来看,它只是在连接一个本地的 CDP 端口,所有的远程执行细节都被透明地抽象掉了。这种设计降低了集成复杂度,使得现有依赖本地浏览器的代理代码几乎无需修改即可在边缘环境中运行。

Zero Trust Access 与细粒度访问控制

将 AI 代理服务暴露到互联网上意味着需要严格控制访问权限。传统的认证方案要求开发者实现用户注册、登录、会话管理等逻辑,不仅开发成本高,还容易引入安全漏洞。Cloudflare Zero Trust Access 提供了声明式的访问策略配置能力,Moltworker 利用这一产品保护其 API 端点与管理界面。

Zero Trust Access 的核心理念是默认拒绝所有访问请求,只有满足特定策略条件的请求才能通过。策略条件可以基于多种属性:用户身份(支持多种身份提供商集成)、设备状态(要求符合安全基线)、网络位置(限制可访问的 IP 范围)、时间窗口(限制访问时段)等。Moltworker 的典型配置要求用户通过 Cloudflare Access 登录,登录成功后,平台会在请求中注入 JWT 令牌,入口 Worker 可以验证该令牌以确保请求来自合法的认证会话。

这种零信任架构的优势在于:认证逻辑与业务逻辑解耦,开发者只需在 Worker 中验证令牌有效性,无需自行处理密码存储、会话过期、暴力破解防护等复杂问题;同时,Zero Trust Access 提供了详细的访问审计日志,记录每次请求的用户身份、访问时间与目标端点,便于安全审计与异常检测。对于需要多人协作使用同一代理实例的场景,管理员可以通过 Access 策略精确控制不同用户对管理功能与普通功能的访问权限。

工程化部署的关键参数与监控建议

基于 Moltworker 的开源实现与 Cloudflare 平台特性,部署一个生产可用的边缘 AI 代理运行时需要关注以下工程参数。Worker 脚本的超时配置应根据代理任务的预期执行时间设置,对于需要长时间运行的复杂任务(如视频录制、数据抓取),建议将超时限制设置为 300 秒以上,并通过分阶段执行或任务队列机制处理超出单次请求限制的操作。Sandbox 容器的资源配额需要根据代理的复杂度预估,Cloudflare 的容器规格支持从共享 CPU 到专用 CPU 的多种配置,对于 CPU 密集型的代理任务(如视频编码、图像处理),专用 CPU 实例能够提供更稳定的性能。

持久化存储的 R2 桶配置应启用版本控制,以便在数据损坏或误操作时恢复历史版本。对于高频率的读写场景,建议配置 R2 的生命周期策略,自动将冷数据迁移到低成本存储层。Browser Rendering 的使用存在并发实例限制,生产部署前应评估预期的并发浏览器操作数量,必要时通过队列机制限制并发请求。监控方面,Cloudflare 的 Workers Analytics 提供了请求量、执行时间与错误率的实时指标,建议配置告警规则在错误率超过阈值或响应时间异常增长时及时通知运维人员。

结论与实践价值

Moltworker 的实现证明了在 Serverless 边缘环境中运行复杂的 AI 代理是可行的。通过合理拆分架构层次并利用 Cloudflare 开发者平台提供的各类托管服务,开发者可以在无需管理底层基础设施的情况下,构建具备全局可达性、自动扩展与内置安全的 AI 应用。对于计划在边缘部署 AI 代理的团队,Moltworker 提供的架构模式具有直接的参考价值:使用 AI Gateway 实现模型无关的请求路由、使用 Sandbox SDK 隔离执行不可信代码、使用 R2 挂载机制持久化状态、使用 Browser Rendering 抽象浏览器自动化、使用 Zero Trust Access 集中管理访问控制。这一组合构成了一个完整的边缘 AI 应用技术栈,能够支撑从个人助手到企业级服务的多种部署场景。

资料来源:本文核心架构描述参考 Cloudflare 官方博客《Introducing Moltworker: a self-hosted personal AI agent, minus the minis》(2026 年 1 月 29 日)与 Moltworker 开源仓库。

查看归档