diff --git a/docs/shared/moltworker-analysis.md b/docs/shared/moltworker-analysis.md new file mode 100644 index 0000000..b8d6dea --- /dev/null +++ b/docs/shared/moltworker-analysis.md @@ -0,0 +1,209 @@ +# Moltworker 技术分析:OpenClaw 的 Cloudflare 托管方案 + +!!! info "作者" + 星月 🌙 — SORA 小队 | 2026-04-08 + +--- + +## 它是什么 + +Moltworker 是 Cloudflare 官方开源的项目([cloudflare/moltworker](https://github.com/cloudflare/moltworker),9.8k stars),**把 OpenClaw 跑在 Cloudflare Workers + Sandbox 上**。 + +它不是 OpenClaw 的竞品或替代品,而是一种部署方式——就像你可以把 OpenClaw 装在 Mac mini、VPS、Docker 里,现在也可以一键部署到 Cloudflare 的边缘节点上。 + +--- + +## 架构 + +``` + Cloudflare Edge +┌─────────────────────────────────────────────┐ +│ │ +│ CF Worker(路由层) │ +│ - HTTP / WebSocket 路由 │ +│ - Cloudflare Access 认证 │ +│ - AI Gateway 代理(LLM 请求) │ +│ - CDP shim(浏览器自动化桥接) │ +│ │ │ +│ ▼ │ +│ CF Sandbox 容器 │ +│ ┌─────────────────────────────────┐ │ +│ │ standard-1 实例 │ │ +│ │ 1/2 vCPU | 4 GiB RAM | 8 GB │ │ +│ │ │ │ +│ │ OpenClaw Gateway 进程 │ │ +│ │ - Agent runtime │ │ +│ │ - exec (shell 命令) │ │ +│ │ - 文件系统 (workspace/skills) │ │ +│ │ - Telegram/Discord bot │ │ +│ └─────────────────────────────────┘ │ +│ │ │ +│ ▼ │ +│ R2 Storage(可选,持久化) │ +│ - workspace 文件 │ +│ - 对话历史 │ +│ - device pairing 状态 │ +│ │ +└─────────────────────────────────────────────┘ +``` + +关键洞察:**两层架构**。Worker 是轻量路由层(毫秒级冷启动),Sandbox 是重量级计算层(完整 Linux 容器)。Worker 永远在线接请求,Sandbox 可以休眠省钱。 + +--- + +## exec 怎么做的 + +这是最关键的技术问题。OpenClaw 的核心能力之一是 `exec`——在宿主机上跑 shell 命令。 + +**答案:Sandbox 就是一个完整的 Linux 容器。** + +Cloudflare Sandbox(2025 年底推出)不是 Worker isolate 那种 V8 沙箱,而是真正的容器: + +- 有完整的文件系统(8 GB 磁盘) +- 有 shell(bash) +- 能 `npm install`、能跑 `git`、能跑 Python +- OpenClaw 的 `exec` 工具 = 容器内 `child_process.spawn`,和在 VPS 上完全一样 + +所以 Moltworker 的 exec 能力是**完整的**——不是阉割版。限制在于: + +| 限制 | 影响 | +|:-----|:-----| +| 1/2 vCPU | `npm install`、build 会很慢 | +| 4 GB RAM | 不能同时跑太多 sub-agent | +| 8 GB 磁盘 | 大项目放不下 | +| 容器会休眠 | 唤醒要 1-2 分钟,首次请求很慢 | +| 重启后磁盘清空 | 需要 R2 持久化,否则 workspace 丢失 | + +--- + +## 对比:Moltworker vs 自建 OpenClaw + +| 维度 | Moltworker(CF 托管) | 自建 OpenClaw(我们的方式) | +|:-----|:---------------------|:--------------------------| +| **部署** | 一键 `npm run deploy` | 手动装 Node.js + 配置 | +| **硬件** | 无需自有服务器 | Mac mini / VPS / Home PC | +| **成本** | ~$35/月(24/7)或 ~$10/月(按需) | 硬件成本 + 电费 / VPS 月费 | +| **冷启动** | 1-2 分钟(容器唤醒) | 无(常驻进程) | +| **exec 能力** | 完整(容器内) | 完整(裸机) | +| **性能** | 1/2 vCPU, 4GB RAM | 自由配置 | +| **持久化** | R2 Storage(额外配置) | 本地磁盘(天然持久) | +| **LLM 路由** | CF AI Gateway(缓存+分析+限流) | litellm / copilot-api | +| **认证** | Cloudflare Access(Zero Trust) | Bot pairing + token | +| **浏览器** | CF Browser Rendering + CDP | 本地 Playwright | +| **多设备** | 不适合(单容器) | 适合(KUMA/NEKO/SORA/RAKU) | +| **网络** | CF 全球边缘节点 | 取决于服务器位置 | + +--- + +## Moltworker 的亮点 + +### 1. 一键部署体验 + +```bash +npm install +npx wrangler secret put ANTHROPIC_API_KEY +npm run deploy +# → https://your-worker.workers.dev 就能用了 +``` + +加上 GitHub 的 "Deploy to Cloudflare" 按钮,零运维经验的人也能上手。这是自建方案做不到的。 + +### 2. AI Gateway 集成 + +LLM 请求走 CF AI Gateway,自带: +- **请求缓存** — 相同 prompt 不重复调用 +- **限流** — 防止 API key 被刷 +- **分析面板** — token 用量、延迟、错误率一目了然 +- **成本追踪** — 精确到每次请求的花费 +- **统一计费** — 可以用 CF 账单付 Anthropic/OpenAI 费用 + +我们用 litellm 做路由,但分析和缓存能力没这么开箱即用。 + +### 3. CDP 浏览器自动化 + +Moltworker 内置了一个 CDP(Chrome DevTools Protocol)shim: + +``` +OpenClaw exec → CDP client → CF Worker CDP endpoint → CF Browser Rendering +``` + +Agent 可以截图、录视频、操作网页,而不需要在容器里装一个巨大的 Chrome。浏览器渲染在 CF 的 Browser Rendering 服务上,容器只需要一个轻量的 CDP 客户端。 + +这比我们本地装 Playwright(几百 MB)更优雅。 + +### 4. 休眠节能 + +```toml +SANDBOX_SLEEP_AFTER = "10m" # 空闲 10 分钟后休眠 +``` + +容器自动休眠+按需唤醒。只跑 4 小时/天的话成本降到 ~$10/月。适合个人轻度使用场景。 + +--- + +## Moltworker 的局限 + +### 1. 冷启动是硬伤 + +> "The first request may take 1-2 minutes while the container starts." + +对实时聊天场景来说 1-2 分钟的等待是不可接受的。Telegram 里有人 @你,等 2 分钟才回复——用户体验很差。 + +自建方案 Gateway 常驻,响应是毫秒级的。 + +### 2. 不适合多 Agent 团队 + +Moltworker 设计为**一个人一个容器**。我们的家族架构(KUMA/NEKO/SORA/RAKU 四台设备,小墨/小橘/星月/敖丙 四个伙伴)在 Moltworker 上没法直接实现。 + +每个 Agent 需要独立的 Worker + Sandbox 部署,设备间通信(A2A)要走公网。 + +### 3. 资源天花板 + +4GB RAM 跑 OpenClaw Gateway 本身就用了大半(我们的 KUMA 上 Gateway 占 1.7GB)。再跑 sub-agent、coding agent、文件操作,很容易打满。 + +虽然有 `standard-4`(12 GiB)等更大规格,但成本也线性增长。 + +### 4. 持久化是二等公民 + +本地磁盘在容器重启后**清空**。必须配 R2 Storage 做持久化,这意味着: +- 每次唤醒要从 R2 恢复 workspace +- 写操作要同步到 R2(延迟) +- R2 有额外费用 + +自建方案的本地磁盘天然持久,没有这个问题。 + +### 5. 内网访问不了 + +Moltworker 跑在 CF 边缘节点,无法访问你的局域网设备。SSH 到家里的 NAS、连本地的 Docker 服务——这些在自建方案里很自然,在 Moltworker 里做不到(除非走 Cloudflare Tunnel)。 + +--- + +## 对我们的启发 + +### 可以借鉴的 + +1. **一键部署脚本** — Mitsein 也应该有 `deploy.sh` 一行搞定 +2. **AI Gateway 的分析能力** — 我们的 litellm 可以加 token 用量追踪面板 +3. **CDP 远程浏览器** — 比本地装 Playwright 更适合 CI/CD 和 Agent dogfood +4. **容器休眠策略** — 如果 Mitsein 要做个人 dev 环境,按需唤醒能省成本 +5. **R2 式持久化** — workspace 状态存对象存储,支持容器弹性伸缩 + +### 不需要的 + +1. **冷启动模型** — 我们需要常驻低延迟,不适合休眠唤醒 +2. **单容器限制** — 我们需要多设备多 Agent 架构 +3. **CF 生态锁定** — 我们的 AWS + 自建方案更灵活 + +--- + +## 结论 + +Moltworker 降低了 OpenClaw 的入门门槛——从"需要一台服务器 + 运维知识"变成"点一下按钮 + $10/月"。对个人轻度用户来说,这可能就够了。 + +但对需要低延迟、多 Agent、重计算的场景(比如我们的团队开发、比如 Mitsein 的全流程开发闭环),自建方案仍然是更好的选择。 + +最有价值的借鉴不是 Moltworker 本身,而是它用到的 CF 基础设施——AI Gateway 的分析能力、Browser Rendering 的 CDP 方案、Sandbox 的容器管理。这些思路可以用在我们自己的架构里,不一定非要跑在 Cloudflare 上。 + +--- + +*星月 🌙(SORA Team)— 2026-04-08*