← 返回公开榜单
mo

cloudflare/moltworker

Run OpenClaw, (formerly Moltbot, formerly Clawdbot) on Cloudflare Workers

本周新增
58 星
近 3 周倍数
0.2x
距上次推送
242 天
距上次发布
—
许可证
Apache-2.0

星标增长

每根柱子是这个周期记录下来的 star 增长:优先取逐个 stargazer 到达时间分桶的到达数,还没被 stargazer 扫描覆盖的仓库改用该周期的 star 净增;两个写者都没记录的周期画成虚线空档,而不是当成 0。柱高按各自窗口的峰值归一,两张图不共用坐标轴。指向任意一根柱子, tooltip 里是该周期的九项指标:当前值与周期内的净增。

指向或点击一根柱子,看当天的九项指标。

2/142/182/232/273/33/73/123/16

2026 年 2 月 16 日 新增 65 个星标; 2026 年 2 月 17 日 新增 84 个星标; 2026 年 2 月 21 日 新增 224 个星标; 2026 年 2 月 23 日 新增 70 个星标; 2026 年 2 月 25 日 新增 78 个星标; 2026 年 2 月 27 日 新增 66 个星标; 2026 年 2 月 28 日 新增 29 个星标; 2026 年 3 月 1 日 新增 29 个星标; 2026 年 3 月 2 日 新增 34 个星标; 2026 年 3 月 3 日 新增 33 个星标; 2026 年 3 月 4 日 新增 31 个星标; 2026 年 3 月 5 日 新增 18 个星标; 2026 年 3 月 8 日 新增 63 个星标; 2026 年 3 月 10 日 新增 49 个星标; 2026 年 3 月 11 日 新增 23 个星标; 2026 年 3 月 16 日 新增 58 个星标

窗口内最高的一天是 2026 年 2 月 21 日,新增 224 个星标。

证据时间轴

这个项目还没有记录到异动、发布或许可证变化。

README
该仓库存储的文档,若已生成中文翻译则一并显示

OpenClaw on Cloudflare Workers

在 Cloudflare Sandbox 中运行 OpenClaw(曾用名 Moltbot,曾用名 Clawdbot)个人 AI 助手。

moltworker architecture

实验性: 这是一个概念验证,展示了 OpenClaw 可以在 Cloudflare Sandbox 中运行。它不受官方支持,且可能无通知中断。自行承担风险。

部署到 Cloudflare

要求

此项目使用的 Cloudflare 功能有免费层级:

  • Cloudflare Access (认证)
  • 浏览器渲染 (用于浏览器导航)
  • AI Gateway (可选,用于 API 路由/分析)
  • R2 存储 (可选,用于持久化)

容器成本估算

此项目使用 standard-1 Cloudflare 容器实例(1/2 vCPU,4 GiB 内存,8 GB 磁盘)。以下是假设容器 24/7 运行时的近似月度成本,基于 Cloudflare 容器定价:

资源配置月度使用量包含免费超出近似成本
内存4 GiB2,920 GiB-hrs25 GiB-hrs2,895 GiB-hrs~$26/月
CPU (约 10% 利用率)1/2 vCPU~2,190 vCPU-min375 vCPU-min~1,815 vCPU-min~$2/月
磁盘8 GB5,840 GB-hrs200 GB-hrs5,640 GB-hrs~$1.50/月
Workers 付费计划$5/月
总计~$34.50/月

注意:

  • CPU 仅按 实际使用量 计费,而非配置容量。10% 利用率估计是一个轻度使用的个人助手的基本线;您的实际成本将随使用情况变化。
  • 内存和磁盘按 配置容量 全时间计费。
  • 为降低成本,配置 SANDBOX_SLEEP_AFTER(例如 10m),使容器在空闲时休眠。仅运行 4 小时的容器在计算成本上大致为 ~$5-6/月(除 $5 计划费外)。
  • 网络出口、Workers/Durable Objects 请求和日志会产生额外费用,但对于个人使用通常很小。
  • 请参阅 实例类型表 了解其他选项(例如,lite 内存 256 MiB/$0.50/月,或 standard-4 12 GiB 用于较重负载)。

什么是 OpenClaw?

OpenClaw(曾用名 Moltbot,曾用名 Clawdbot)是一个具有网关架构的个人 AI 助手,可连接到多个聊天平台。主要功能:

  • 控制 UI - 网关的基于 Web 的聊天界面
  • 多渠道支持 - Telegram、Discord、Slack
  • 设备配对 - 需要明确批准的安全 DM 认证
  • 持久对话 - 跨会话的聊天历史和上下文
  • 代理运行时 - 可扩展的 AI 功能,具有工作区和技能

本项目将 OpenClaw 打包到 Cloudflare Sandbox 容器中运行,提供完全管理的、始终在线的部署,无需自行托管。可选的 R2 存储可实现跨容器重启的数据持久化。

架构

moltworker architecture

快速入门

Cloudflare Sandboxes 可在 Workers 付费计划 上获取。

# 安装依赖
npm install

# 设置您的 API 密钥(直接 Anthropic 访问)
npx wrangler secret put ANTHROPIC_API_KEY

# 或者使用 Cloudflare AI Gateway(见下文“可选:Cloudflare AI Gateway”)
# npx wrangler secret put CLOUDFLARE_AI_GATEWAY_API_KEY
# npx wrangler secret put CF_AI_GATEWAY_ACCOUNT_ID
# npx wrangler secret put CF_AI_GATEWAY_GATEWAY_ID

# 生成并设置网关令牌(远程访问所需)
# 保存此令牌 - 您需要它来访问控制 UI
export MOLTBOT_GATEWAY_TOKEN=$(openssl rand -hex 32)
echo "您的网关令牌: $MOLTBOT_GATEWAY_TOKEN"
echo "$MOLTBOT_GATEWAY_TOKEN" | npx wrangler secret put MOLTBOT_GATEWAY_TOKEN

# 部署
npm run deploy

部署后,使用您的令牌打开控制 UI:

https://your-worker.workers.dev/?token=YOUR_GATEWAY_TOKEN

将 your-worker 替换为您的实际 worker 子域名,将 YOUR_GATEWAY_TOKEN 替换为您上面生成的令牌。

注意: 第一次请求可能需要 1-2 分钟,因为容器正在启动。

重要: 在您完成以下步骤之前,您将无法使用控制 UI。您必须:

  1. 设置管理 UI 以保护管理 UI
  2. 配对您的设备 通过管理 UI 在 /_admin/

您还可能希望 启用 R2 存储,以便您的配对设备和对话历史在容器重启后保持持久(可选但推荐)。

设置管理 UI

要使用 /_admin/ 的管理 UI 进行设备管理,您需要:

  1. 在您的 worker 上启用 Cloudflare Access
  2. 设置 Access 密钥,以便 worker 可以验证 JWTs

1. 在 workers.dev 上启用 Cloudflare Access

保护您的 worker 最简单的方法是使用 workers.dev 的内置 Cloudflare Access 集成:

  1. 前往 Workers & Pages 控制面板
  2. 选择您的 Worker(例如,moltbot-sandbox)
  3. 在 设置 下,在 域名和路由 中,在 workers.dev 行中,点击肉丸菜单(...)
  4. 点击 启用 Cloudflare Access
  5. 复制对话框中显示的值(稍后您需要 AUD 标签)。注意: 对话框中的“管理 Cloudflare Access”链接可能 404 — 忽略它。
  6. 要配置谁可以访问,请转到 Cloudflare 控制面板侧边栏中的 零信任 → Access → 应用程序,找到您的 Worker 应用程序:
    • 将您的电子邮件地址添加到允许列表
    • 或者配置其他身份提供者(Google、GitHub 等)
  7. 从 Access 应用程序设置中复制 应用程序受众 (AUD) 标签。这将作为您的 CF_ACCESS_AUD(见下文第 2 步)

2. 设置 Access 密钥

启用 Cloudflare Access 后,设置密钥,以便 worker 可以验证 JWTs:

# 您的 Cloudflare Access 团队域名(例如,"myteam.cloudflareaccess.com")
npx wrangler secret put CF_ACCESS_TEAM_DOMAIN

# 您在上述步骤中复制的 Access 应用程序的 Application Audience (AUD) 标签
npx wrangler secret put CF_ACCESS_AUD

您可以在 零信任控制面板 下 设置 > 自定义页面 中找到您的团队域名(它是 .cloudflareaccess.com 之前的子域名)。

3. 重新部署

npm run deploy

现在访问 /_admin/,您将看到通过 Cloudflare Access 提示进行身份验证才能访问管理 UI。

替代方案:手动 Access 应用程序

如果您更喜欢更多控制,可以手动创建 Access 应用程序:

  1. 前往 Cloudflare 零信任控制面板
  2. 导航到 Access > 应用程序
  3. 创建一个新的 自托管 应用程序
  4. 将应用程序域名设置为您的 Worker URL(例如,moltbot-sandbox.your-subdomain.workers.dev)
  5. 添加要保护的路径:/_admin/*,/api/*,/debug/*
  6. 配置您期望的身份提供者(例如,电子邮件 OTP、Google、GitHub)
  7. 复制 应用程序受众 (AUD) 标签 并按上述方式设置密钥

本地开发

对于本地开发,创建一个 .dev.vars 文件,其中包含:

DEV_MODE=true               # 跳过 Cloudflare Access 认证 + 跳过设备配对
DEBUG_ROUTES=true           # 启用 /debug/* 路由(可选)

身份验证

默认情况下,moltbot 使用 设备配对 进行身份验证。当新设备(浏览器、CLI 等)连接时,必须通过管理 UI 在 /_admin/ 进行批准。

设备配对

  1. 设备连接到网关
  2. 连接保持挂起,直到批准
  3. 管理员通过 /_admin/ 批准设备
  4. 设备现在已配对,可以自由连接

这是最安全的选择,因为它要求每个设备都进行明确批准。

网关令牌(必需)

当远程托管时,访问控制 UI 需要一个网关令牌。将其作为查询参数传递:

https://your-worker.workers.dev/?token=YOUR_TOKEN
wss://your-worker.workers.dev/ws?token=YOUR_TOKEN

注意: 即使有有效的令牌,新设备仍然需要通过管理 UI 在 /_admin/ 进行批准(见上文的设备配对)。

仅对于本地开发,在 .dev.vars 中设置 DEV_MODE=true 以跳过 Cloudflare Access 认证并启用 allowInsecureAuth(完全绕过设备配对)。

持久化存储 (R2)

默认情况下,moltbot 数据(配置、配对设备、对话历史)在容器重启时会丢失。要启用跨会话的持久化存储,请配置 R2:

1. 创建 R2 API 令牌

  1. 前往 Cloudflare 控制面板 中的 R2 > 概述
  2. 点击 管理 R2 API 令牌
  3. 创建一个新的具有 对象读写 权限的令牌
  4. 选择自动创建的 moltbot-data 桶(首次部署时创建)
  5. 复制 访问密钥 ID 和 秘密访问密钥

2. 设置密钥

# R2 访问密钥 ID
npx wrangler secret put R2_ACCESS_KEY_ID

# R2 秘密访问密钥
npx wrangler secret put R2_SECRET_ACCESS_KEY

# 您的 Cloudflare 账户 ID
npx wrangler secret put CF_ACCOUNT_ID

要找到您的账户 ID:前往 Cloudflare 控制面板,点击您账户名称旁边的三个点菜单,并选择“复制账户 ID”。

工作原理

R2 存储使用备份/恢复方法以简化操作:

容器启动时:

  • 如果 R2 挂载并包含备份数据,则将其恢复到 moltbot 配置目录
  • OpenClaw 使用其默认路径(无需特殊配置)

运行期间:

  • 一个 cron 作业每 5 分钟运行一次,将 moltbot 配置同步到 R2
  • 您也可以从管理 UI 在 /_admin/ 触发手动备份

在管理 UI 中:

  • 当 R2 配置后,您将看到“上次备份:[时间戳]”
  • 点击“立即备份”以触发立即同步

没有 R2 凭据,moltbot 仍然可以工作,但使用临时存储(容器重启时数据丢失)。

容器生命周期

默认情况下,sandbox 容器保持无限期存活 (SANDBOX_SLEEP_AFTER=never)。这建议使用,因为冷启动需要 1-2 分钟。

要为不经常使用的部署减少成本,您可以配置容器在一段时间不活动后休眠:

npx wrangler secret put SANDBOX_SLEEP_AFTER
# 输入:10m(或 1h、30m 等)

当容器休眠时,下一个请求将触发冷启动。如果您配置了 R2 存储,您的配对设备和数据将在重启后保持持久。

管理 UI

admin ui

访问 /_admin/ 的管理 UI 以:

  • R2 存储状态 - 显示 R2 是否配置,上次备份时间,以及“立即备份”按钮
  • 重启网关 - 杀死并重启 moltbot 网关进程
  • 设备配对 - 查看挂起请求,单独或一次性批准设备,查看已配对设备

管理 UI 需要Cloudflare Access身份验证(或本地开发时 DEV_MODE=true)。

调试端点

启用(需要 DEBUG_ROUTES=true 和 Cloudflare Access)时,/debug/* 可用的调试端点:

  • GET /debug/processes - 列出所有容器进程
  • GET /debug/logs?id=<process_id> - 获取特定进程的日志
  • GET /debug/version - 获取容器和 moltbot 版本信息

可选:聊天渠道

Telegram

npx wrangler secret put TELEGRAM_BOT_TOKEN
npm run deploy

Discord

npx wrangler secret put DISCORD_BOT_TOKEN
npm run deploy

Slack

npx wrangler secret put SLACK_BOT_TOKEN
npx wrangler secret put SLACK_APP_TOKEN
npm run deploy

可选:浏览器自动化 (CDP)

此 worker 包含一个 Chrome DevTools Protocol (CDP) 衬垫,它启用了浏览器自动化功能。这允许 OpenClaw 控制无头浏览器执行网络抓取、截图和自动化测试等任务。

设置

  1. 设置用于身份验证的共享密钥:
npx wrangler secret put CDP_SECRET
# 输入一个安全的随机字符串
  1. 设置您 worker 的公共 URL:
npx wrangler secret put WORKER_URL
# 输入:https://your-worker.workers.dev
  1. 重新部署:
npm run deploy

端点

端点描述
GET /cdp/json/version浏览器版本信息
GET /cdp/json/list列出可用浏览器目标
GET /cdp/json/new创建新的浏览器目标
WS /cdp/devtools/browser/{id}用于 CDP 命令的 WebSocket 连接

所有端点都需要通过 ?secret=<CDP_SECRET> 查询参数进行身份验证。

内置技能

容器包含 /root/clawd/skills/ 中的预安装技能:

cloudflare-browser

通过 CDP 衬垫进行浏览器自动化。需要设置 CDP_SECRET 和 WORKER_URL(见上文的 浏览器自动化)。

脚本:

  • screenshot.js - 捕获 URL 的屏幕截图
  • video.js - 从多个 URL 创建视频
  • cdp-client.js - 可重用的 CDP 客户端库

用法:

# 屏幕截图
node /root/clawd/skills/cloudflare-browser/scripts/screenshot.js https://example.com output.png

# 多个 URL 的视频
node /root/clawd/skills/cloudflare-browser/scripts/video.js "https://site1.com,https://site2.com" output.mp4 --scroll

有关完整文档,请参阅 skills/cloudflare-browser/SKILL.md。

可选:Cloudflare AI Gateway

您可以将 API 请求通过 Cloudflare AI Gateway 进行路由,以实现缓存、速率限制、分析和成本跟踪。OpenClaw 对 Cloudflare AI Gateway 提供了一流的支持,作为首选提供者。

AI Gateway 作为 OpenClaw 和您的 AI 提供者(例如 Anthropic)之间的代理。请求发送到 https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/anthropic 而不是直接发送到 api.anthropic.com,为您提供 Cloudflare 的分析、缓存和速率限制。您仍然需要一个提供者 API 密钥(例如您的 Anthropic API 密钥)——网关将其转发到上游提供者。

设置

  1. 在 Cloudflare 控制面板的 AI Gateway 部分 创建一个 AI Gateway。
  2. 设置三个必需的密钥:
# 您的 AI 提供者的 API 密钥(例如,您的 Anthropic API 密钥)。
# 这会通过网关传递给上游提供者。
npx wrangler secret put CLOUDFLARE_AI_GATEWAY_API_KEY

# 您的 Cloudflare 账户 ID
npx wrangler secret put CF_AI_GATEWAY_ACCOUNT_ID

# 您的 AI Gateway ID(来自 Gateway 概览页面)
npx wrangler secret put CF_AI_GATEWAY_GATEWAY_ID

所有三个都是必需的。OpenClaw 根据账户 ID 和 Gateway ID 构建网关 URL,并将 API 密钥传递给上游提供者通过网关。

  1. 重新部署:
npm run deploy

当 Cloudflare AI Gateway 配置后,它将优先于直接的 ANTHROPIC_API_KEY 或 OPENAI_API_KEY。

选择模型

默认情况下,AI Gateway 使用 Anthropic 的 Claude Sonnet 4.5。要使用不同的模型或提供者,请设置 CF_AI_GATEWAY_MODEL,格式为 provider/model-id:

npx wrangler secret put CF_AI_GATEWAY_MODEL
# 输入:workers-ai/@cf/meta/llama-3.3-70b-instruct-fp8-fast

这适用于任何 AI Gateway 提供者:

提供者CF_AI_GATEWAY_MODEL 值示例API 密钥是...
Workers AIworkers-ai/@cf/meta/llama-3.3-70b-instruct-fp8-fastCloudflare API 令牌
OpenAIopenai/gpt-4oOpenAI API 密钥
Anthropicanthropic/claude-sonnet-4-5Anthropic API 密钥
Groqgroq/llama-3.3-70bGroq API 密钥

注意: CLOUDFLARE_AI_GATEWAY_API_KEY 必须与您正在使用的提供者匹配——这是您的提供者 API 密钥,通过网关转发。一次只能通过网关使用一个提供者。对于多个提供者,请使用直接密钥 (ANTHROPIC_API_KEY, OPENAI_API_KEY) 并结合网关配置。

Workers AI 与统一计费

通过 统一计费,您可以在不需要单独提供者 API 密钥的情况下使用 Workers AI 模型——Cloudflare 直接向您收费。将 CLOUDFLARE_AI_GATEWAY_API_KEY 设置为您的 AI Gateway 身份验证令牌(即 cf-aig-authorization 令牌)。

传统 AI Gateway 配置

AI_GATEWAY_API_KEY + AI_GATEWAY_BASE_URL 的先前方法仍然受支持以向后兼容,但已弃用,改为上述原生配置。

所有密钥参考

密钥必需描述
CLOUDFLARE_AI_GATEWAY_API_KEY是*您的 AI 提供者的 API 密钥,通过网关传递(例如,您的 Anthropic API 密钥)。需要 CF_AI_GATEWAY_ACCOUNT_ID 和 CF_AI_GATEWAY_GATEWAY_ID
CF_AI_GATEWAY_ACCOUNT_ID是*您的 Cloudflare 账户 ID(用于构建网关 URL)
CF_AI_GATEWAY_GATEWAY_ID是*您的 AI Gateway ID(用于构建网关 URL)
CF_AI_GATEWAY_MODEL否覆盖默认模型:provider/model-id (例如 workers-ai/@cf/meta/llama-3.3-70b-instruct-fp8-fast). 见 选择模型
ANTHROPIC_API_KEY是*直接 Anthropic API 密钥(替代 AI Gateway)
ANTHROPIC_BASE_URL否直接 Anthropic API 基础 URL
OPENAI_API_KEY否OpenAI API 密钥(替代提供者)
AI_GATEWAY_API_KEY否传统 AI Gateway API 密钥(已弃用,使用 CLOUDFLARE_AI_GATEWAY_API_KEY)
AI_GATEWAY_BASE_URL否传统 AI Gateway 端点 URL(已弃用)
CF_ACCESS_TEAM_DOMAIN是*Cloudflare Access 团队域名(管理 UI 所需)
CF_ACCESS_AUD是*Cloudflare Access 应用程序受众(管理 UI 所需)
MOLTBOT_GATEWAY_TOKEN是用于身份验证的网关令牌(通过 ?token= 查询参数传递)
DEV_MODE否设置为 true 以跳过 CF Access 认证 + 设备配对(仅限本地开发)
DEBUG_ROUTES否设置为 true 以启用 /debug/* 路由
SANDBOX_SLEEP_AFTER否容器休眠超时:never (默认) 或如 10m, 1h 等时长
R2_ACCESS_KEY_ID否用于持久化存储的 R2 访问密钥
R2_SECRET_ACCESS_KEY否用于持久化存储的 R2 秘密密钥
CF_ACCOUNT_ID否Cloudflare 账户 ID(R2 存储所需)
TELEGRAM_BOT_TOKEN否Telegram 机器人令牌
TELEGRAM_DM_POLICY否Telegram DM 策略:pairing (默认) 或 open
DISCORD_BOT_TOKEN否Discord 机器人令牌
DISCORD_DM_POLICY否Discord DM 策略:pairing (默认) 或 open
SLACK_BOT_TOKEN否Slack 机器人令牌
SLACK_APP_TOKEN否Slack 应用程序令牌
CDP_SECRET否用于 CDP 端点身份验证的共享密钥(见 浏览器自动化)
WORKER_URL否worker 的公共 URL(CDP 所需)

安全注意事项

身份验证层

在 Cloudflare Sandbox 中的 OpenClaw 使用多层身份验证:

  1. Cloudflare Access - 保护管理路由 (/_admin/, /api/*, /debug/*)。只有经过身份验证的用户才能管理设备。

  2. 网关令牌 - 访问控制 UI 所需。通过 ?token= 查询参数传递。保管此密钥。

  3. 设备配对 - 每个设备(浏览器、CLI、聊天平台 DM)都必须通过管理 UI 在 /_admin/ 进行明确批准,然后才能与助手交互。这是默认的“配对”DM 策略。

故障排除

npm run dev 因 Unauthorized 错误失败: 您需要启用 Cloudflare Containers 在 Containers 控制面板

网关启动失败: 查看 npx wrangler secret list 和 npx wrangler tail

配置更改未生效: 编辑 Dockerfile 中的 # Build cache bust: 注释并重新部署

首次请求缓慢: 冷启动需要 1-2 分钟。后续请求速度更快。

R2 未挂载: 确保所有三个 R2 密钥已设置 (R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, CF_ACCOUNT_ID)。注意:R2 挂载仅在 生产环境 中工作,在 wrangler dev 中不工作。

管理路由访问被拒绝: 确保 CF_ACCESS_TEAM_DOMAIN 和 CF_ACCESS_AUD 已设置,并确保您的 Cloudflare Access 应用程序配置正确。

设备未出现在管理 UI 中: 设备列表命令需要 10-15 秒,因为 WebSocket 连接开销。等待并刷新。

本地开发中的 WebSocket 问题: wrangler dev 在通过 sandbox 通过 WebSocket 代理时存在已知限制。HTTP 请求正常工作,但 WebSocket 连接可能失败。部署到 Cloudflare 以获得完整功能。

已知问题

Windows:网关以退出代码 126 (权限被拒绝) 失败

在 Windows 上,Git 可能将 shell 脚本检出为 CRLF 行尾而不是 LF 行尾。这会导致 Linux 容器内的 start-openclaw.sh 以退出代码 126 失败。确保您的存储库使用 LF 行尾——使用 Git 配置 git config --global core.autocrlf input 或添加一个 .gitattributes 文件,其中包含 * text=auto eol=lf。详情请见 #64。

链接

页面上的每个数字都来自记录下来的 stargazer 到达时间,没有评分公式,也没有 AI 判定。 任何结论都可以用 /api/v1/repos/{id}/stats 里的原始增量自己重算。