重点分析:exec 靠 CF Sandbox 容器实现(完整 Linux), 两层架构(Worker 路由 + Sandbox 计算),冷启动/资源限制/持久化局限, 以及 AI Gateway、CDP 浏览器、休眠策略等可借鉴的思路
210 lines
8.7 KiB
Markdown
210 lines
8.7 KiB
Markdown
# 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*
|