Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
重构所有代码和文档中的项目名称,将OpenFang统一更新为ZCLAW。包括: - 配置文件中的项目名称 - 代码注释和文档引用 - 环境变量和路径 - 类型定义和接口名称 - 测试用例和模拟数据 同时优化部分代码结构,移除未使用的模块,并更新相关依赖项。
11 KiB
11 KiB
浏览器自动化工具对比分析
分类: 智能层 (L4 自演化) 优先级: P1-重要 成熟度: L1-原型 最后更新: 2026-03-16
一、概述
本文档对比三个浏览器自动化工具,评估其与 ZCLAW/ZCLAW 桌面客户端集成的可行性:
- Chrome 146 WebMCP - 浏览器原生 AI Agent 协议
- Fantoccini - Rust WebDriver 客户端
- Lightpanda - Zig 编写的轻量级无头浏览器
二、工具详解
2.1 Chrome 146 WebMCP
核心概念
WebMCP (Web Model Context Protocol) 是 Google 和 Microsoft 联合开发的 W3C 提议标准,允许网站将应用功能作为"工具"暴露给 AI 代理。
传统 MCP: Agent → HTTP/SSE → MCP Server → Backend API
WebMCP: Agent → navigator.modelContext → 页面 JavaScript → 页面状态/UI
技术特点
| 特性 | 说明 |
|---|---|
| 运行位置 | 浏览器客户端 |
| 实现语言 | JavaScript/TypeScript |
| 启用方式 | chrome://flags/#web-mcp-for-testing |
| 协议 | 浏览器原生 API |
| 认证 | 复用页面会话/Cookie |
| 人在回路 | 核心设计,敏感操作需确认 |
API 示例
// 命令式 API
navigator.modelContext.registerTool({
name: "search_products",
description: "Search the product catalog by keyword",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "Search keyword" }
},
required: ["query"]
},
execute: async ({ query }) => {
const results = await catalog.search(query);
return { content: [{ type: 'text', text: JSON.stringify(results) }] };
}
});
// 声明式 API (HTML)
<form tool-name="book_table" tool-description="Reserve a table">
<input name="party_size" tool-param-description="Number of guests" />
</form>
优势
- ✅ Token 效率高 89% - 比基于截图的方法
- ✅ 零额外部署 - 无需单独服务器
- ✅ 状态共享 - 直接访问页面状态和用户会话
- ✅ 代码复用 - 几行 JS 即可添加能力
- ✅ 用户控制 - 人在回路设计
限制
- ❌ 仅 Chrome 146+ Canary 可用
- ❌ 需要手动启用实验标志
- ❌ 不支持无头场景
- ❌ 规范未稳定
2.2 Fantoccini
核心概念
Fantoccini 是 Rust 的高级别 WebDriver 客户端,通过 WebDriver 协议控制浏览器。
技术特点
| 特性 | 说明 |
|---|---|
| 运行位置 | 独立进程 |
| 实现语言 | Rust |
| 协议 | WebDriver (W3C) |
| 依赖 | 需要 ChromeDriver/GeckoDriver |
| 异步模型 | async/await (Tokio) |
| 认证 | 需要单独实现 |
API 示例
use fantoccini::{ClientBuilder, Locator};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 连接到 WebDriver
let client = ClientBuilder::native()
.connect("http://localhost:4444")
.await?;
// 导航
client.goto("https://example.com").await?;
// 查找元素
let elem = client.find(Locator::Css("input[name='q']")).await?;
elem.send_keys("rust lang").await?;
// 提交表单
let form = client.find(Locator::Css("form")).await?;
form.submit().await?;
// 截图
let screenshot = client.screenshot().await?;
client.close().await?;
Ok(())
}
优势
- ✅ Rust 原生,与 Tauri 后端完美集成
- ✅ WebDriver 标准,兼容多种浏览器
- ✅ 轻量级,API 简洁
- ✅ 异步设计,性能好
- ✅ 社区活跃,维护良好
限制
- ❌ 需要单独运行 WebDriver 进程
- ❌ 无法访问浏览器内存状态
- ❌ 没有内置 AI Agent 支持
- ❌ 需要自己实现认证层
2.3 Lightpanda
核心概念
Lightpanda 是用 Zig 从头编写的开源无头浏览器,专为 AI 代理和自动化设计。
技术特点
| 特性 | 说明 |
|---|---|
| 运行位置 | 独立进程 |
| 实现语言 | Zig |
| 内存占用 | 9x less than Chrome |
| 执行速度 | 11x faster than Chrome |
| 启动 | 即时(无图形渲染) |
| 内置功能 | Markdown 转换 |
性能数据
| 指标 | Lightpanda | Chrome |
|---|---|---|
| 内存 (100页) | 24MB | ~216MB |
| 执行时间 | 2.3s | ~25s |
| 启动时间 | 即时 | 秒级 |
优势
- ✅ 极致轻量 - 适合并行执行
- ✅ 高性能 - 11x 速度提升
- ✅ AI 优先 - 内置 Markdown 转换减少 token
- ✅ 确定性 - API-first 设计
- ✅ 无依赖 - 不需要 Chrome 安装
限制
- ❌ 项目较新,生态不成熟
- ❌ 不支持所有 Web API
- ❌ 需要集成到 Rust (FFI)
- ❌ 文档有限
三、对比矩阵
3.1 功能对比
| 维度 | WebMCP | Fantoccini | Lightpanda |
|---|---|---|---|
| AI Agent 支持 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
| ZCLAW 集成 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 性能 | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 成熟度 | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
| 跨平台 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 无头支持 | ❌ | ✅ | ✅ |
| 人在回路 | ✅ | ❌ | ❌ |
3.2 集成复杂度
| 工具 | 前端集成 | 后端集成 | 总体复杂度 |
|---|---|---|---|
| WebMCP | 简单 | 不需要 | ⭐ 低 |
| Fantoccini | 不需要 | 中等 | ⭐⭐ 中 |
| Lightpanda | 不需要 | 复杂 | ⭐⭐⭐ 高 |
3.3 适用场景
| 场景 | 推荐工具 |
|---|---|
| 网站暴露能力给 AI | WebMCP |
| 后端自动化测试 | Fantoccini |
| 高并发爬取 | Lightpanda |
| Tauri 桌面应用集成 | Fantoccini |
| Token 效率优先 | Lightpanda |
| 人在回路协作 | WebMCP |
四、ZCLAW 集成建议
4.1 推荐方案:分层集成
┌─────────────────────────────────────────────────────────────┐
│ ZCLAW 架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ React UI │ │ Tauri Rust │ │ ZCLAW │ │
│ │ (前端) │ │ (后端) │ │ (Kernel) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ │ WebMCP │ Fantoccini │ │
│ │ (用户交互) │ (后端自动化) │ │
│ ▼ ▼ │ │
│ ┌─────────────┐ ┌─────────────┐ │ │
│ │ 网站工具 │ │ Headless │ │ │
│ │ 暴露能力 │ │ Chrome │ │ │
│ └─────────────┘ └─────────────┘ │ │
│ │ │
│ ┌─────────────────────────────────────────────┐ │ │
│ │ Hands 系统集成 │ │ │
│ │ - Browser Hand: Fantoccini + Lightpanda │ ◄┘ │
│ │ - Researcher Hand: WebMCP + Fantoccini │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
4.2 各工具的定位
| 工具 | ZCLAW 定位 | 实现优先级 |
|---|---|---|
| WebMCP | 前端页面能力暴露,用户交互式 AI 协作 | P1 |
| Fantoccini | Tauri 后端自动化,Hands 系统核心 | P0 |
| Lightpanda | 高并发场景,未来扩展 | P2 |
4.3 实现路线图
Phase 1: Fantoccini 集成 (P0)
// desktop/src-tauri/src/browser/mod.rs
pub mod automation;
pub mod hands;
use fantoccini::{ClientBuilder, Locator};
pub struct BrowserHand {
client: Option<fantoccini::Client>,
}
impl BrowserHand {
pub async fn execute(&self, task: BrowseTask) -> Result<TaskResult, Error> {
// 实现 Browser Hand 核心逻辑
}
}
Phase 2: WebMCP 前端集成 (P1)
// desktop/src/lib/webmcp.ts
export function registerZclawTools() {
if (!('modelContext' in navigator)) {
console.warn('WebMCP not available');
return;
}
// 注册 ZCLAW 能力
navigator.modelContext.registerTool({
name: "zclaw_chat",
description: "Send a message to ZCLAW agent",
inputSchema: {
type: "object",
properties: {
message: { type: "string" },
agent_id: { type: "string" }
},
required: ["message"]
},
execute: async ({ message, agent_id }) => {
// 调用 ZCLAW Kernel
const response = await zclawClient.chat(message, agent_id);
return { content: [{ type: 'text', text: response }] };
}
});
}
Phase 3: Lightpanda 评估 (P2)
- 监控项目成熟度
- 评估 FFI 集成可行性
- 在高并发场景进行性能测试
五、行动项
立即执行
- 添加 Fantoccini 依赖到 Tauri Cargo.toml
- 实现 Browser Hand 基础结构
- 创建 WebDriver 配置管理
短期 (1-2 周)
- 完成 Fantoccini 与 Hands 系统集成
- 添加 WebMCP 检测和工具注册
- 编写集成测试
中期 (1 个月)
- 评估 Lightpanda 在生产环境的可行性
- 完善安全层集成
- 文档和示例完善