OpenBrowserClaw:瀏覽器就是服務器的零基礎設施 AI 助手

這纔是真正的「serverless」——沒有服務器,只有瀏覽器。OpenBrowserClaw 是 NanoClaw 的瀏覽器版重新構想,將完整的個人 AI 助手運行在一個瀏覽器標籤頁裏。不需要 Node.js 後端,不需要 Docker,也沒有 SQLite。IndexedDB 存數據,OPFS 管文件,Web Worker 跑 Agent 邏輯,WebVM(v86 WASM)提供沙盒 Linux 環境。整個應用就是一堆靜態文件,扔到任何 CDN 上就能跑。

架構設計很巧妙:主線程的 Orchestrator 負責狀態機、消息路由和任務調度;Web Worker 裏的 Agent 獨立調用 Anthropic API 執行 tool-use 循環;bash 命令通過 v86 模擬的 Alpine Linux 在 WASM 中沙盒執行。內置 7 種工具——bash、JavaScript、文件讀寫、HTTP 請求、記憶持久化、定時任務。還支持 Telegram Bot 頻道(純 HTTPS,但需要保持標籤頁打開)。

與 NanoClaw 相比,運行時從 Node.js → 瀏覽器標籤頁,沙盒從 Docker → WebVM,數據庫從 SQLite → IndexedDB,文件系統從磁盤 → OPFS,依賴從 ~50 個 npm 包 → 0 個運行時依賴。是瀏覽器能力邊界的一次極致探索。

项目背景

传統的个人 AI 助手都需要服务器——Node.js 進程、Docker 容器、數據库服务。OpenBrowserClaw 提出了一个激進的問題:如果浏览器本身就是服务器呢?

這是 NanoClaw 的浏览器版重新構想。NanoClaw 是一个轻量级个人 AI 助手框架,跑在 Node.js 上,需要 Docker/Apple Container 做沙盒,SQLite 存數據。OpenBrowserClaw 把這一切都搬進了浏览器標签页——同样的哲學(小到能理解、為单用户設計),但完全不需要服务器。

架構設計

浏览器標签页(PWA)
├── Chat UI / Settings / Task Manager(前端组件)
├── Orchestrator(主线程)
│   ├── 消息队列與路由
│   ├── 状态機(idle/thinking/responding)
│   └── 任务调度器(cron)
├── IndexedDB(消息、任务、配置)
├── OPFS(分组文件存储)
└── Agent Worker(Web Worker)
├── Claude API tool-use 循環
└── WebVM 沙盒(v86 Alpine Linux in WASM)

關键設計:

  • **主线程**负责 UI 和调度,不做重計算
  • **Web Worker**独立運行 Agent 逻辑,不阻塞 UI
  • **WebVM**提供完整 Linux 環境,bash 命令在 WASM 沙盒里执行
  • **IndexedDB**替代 SQLite,存储消息、會话、任务、配置
  • **OPFS**(Origin Private File System)替代磁盘文件系統

内置工具

| 工具 | 功能 |

|------|------|

| bash | 在 v86 模拟的 Alpine Linux 沙盒中执行 Shell 命令 |

| javascript | 在隔离作用域中执行 JS 代码(比 bash 更轻量) |

| read_file / write_file / list_files | OPFS 分组工作区的文件管理 |

| fetch_url | 通過浏览器 fetch() 發 HTTP 请求(受 CORS 限制) |

| update_memory | 将上下文持久化到 CLAUDE.md(每次對话自動加载) |

| create_task | 用 cron 表達式創建定时任务 |

WebVM 沙盒

bash 工具通過 v86(x86 模拟器的 WASM 版本)運行一个完整的 Alpine Linux。需要下载 v86 WASM 二進制和 Alpine rootfs 镜像放到 `public/assets/`。首次使用时 VM 启動约 5-15 秒。没有這些資源时 bash 工具會返回友好错误提示,其他工具正常工作。

Telegram Bot 集成

可选功能,纯 HTTPS 實現(无 WebSocket):

1. 通過 @BotFather 創建 Bot

2. 在 Settings 里填入 Bot Token 和 Chat ID

3. Telegram 消息和浏览器聊天走同样的處理流程

注意:浏览器標签页必须保持打開,Bot 才能响應。關闭標签页时消息會在 Telegram 侧排队,重新打開後處理。

與 NanoClaw 對比

| 维度 | NanoClaw | OpenBrowserClaw |

|------|----------|-----------------|

| 運行时 | Node.js 進程 | 浏览器標签页 |

| Agent 沙盒 | Docker/Apple Container | Web Worker + WebVM |

| 數據库 | SQLite | IndexedDB |

| 文件系統 | 磁盘 | OPFS |

| 主频道 | WhatsApp | 浏览器内聊天 |

| 其他频道 | Telegram, Discord | Telegram |

| Agent SDK | Claude Agent SDK | 原始 Anthropic API |

| 後台任务 | launchd 服务 | setInterval(需標签页打開) |

| 部署 | 自托管服务器 | 静态文件(任意 CDN) |

| 依赖 | ~50 npm 包 | 0 運行时依赖 |

安全模型

  • API 密钥用 AES-256-GCM 加密存储,CryptoKey 不可导出
  • 所有存储(IndexedDB、OPFS)受同源策略保護
  • Agent 在 Web Worker 中運行,與 UI 线程隔离

已知限制:

  • XSS 攻击可能绕過加密(同源内的脚本可调用加解密 API)
  • javascript 工具内的 eval() 可發起任意 HTTP 请求
  • Telegram Bot Token 目前明文存储

部署

npm run build
# 把 dist/ 上传到任何静态托管:GitHub Pages、Cloudflare Pages、Netlify、Vercel、S3 等

不需要服务器,就是 HTML + CSS + JS。

协议:開源 | 作者:sachaa | 灵感來源:NanoClaw