关于 Weavetab
Weavetab 是面向 AI Agent 的本地浏览器与桌面应用自动化引擎,通过 CDP 控制 Chromium 和 Electron 应用。它用精简语义映射及差异更新呈现页面,并提供凭据遮蔽和本地安全策略。
主要功能
- 01通过 CDP 控制浏览器和 Electron
- 02生成带差异更新的语义映射
- 03支持点击、输入及页面操作
- 04服务端注入并遮蔽凭据
- 05提供域名策略与角色权限
适用场景
- 01自动操作网页表单与导航
- 02自动执行 Electron 应用任务
- 03避免凭据进入 Agent 上下文
- 04检查页面变化并提取信息
MCP 相关
Weavetab MCP 服务通过 stdio 或绑定本机的 WebSocket 暴露浏览器和 Electron 自动化工具。客户端可调用页面读取、交互、导航、截图、网络与存储等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
42收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| app | string | 否 | config.json 中 'electron' 下配置的 Electron 应用名称。 |
| full | boolean | 否 | 设为 true 时,返回完整的 Markdown 表格(占用更多上下文),而不是精简列表。 |
| delta | boolean | 否 | 差异模式:仅返回自上次 browser_map 调用以来发生变化(新增、移除或修改)的元素。显示不同时间点之间的差异,不同于 prune。连续调用时,最多可减少 97% 的提示词令牌。 |
| force | boolean | 否 | 即使循环检测判断没有变化,也强制重建完整 DOM 映射。绕过映射跳过保护并重置循环计数。 |
| prune | boolean | 否 | 语义 DOM 剪枝:返回前压缩当前快照。删除没有交互后代且未被任何切换触发器(如 aria-controls)引用的隐藏元素。将 SVG 图标替换为 [SVG Icon: label] 标记。不同于 delta:true——delta 对比不同时间的变化,prune 只压缩一次当前快照。两者结合可最大限度提高 token 效率。 |
| query | string | 否 | 按标签或角色子字符串筛选返回的元素。适用于密集型仪表板。 |
| scope | enum | 否 | 将解析限制在语义页面区域内,以节省 token。适用于信息密集型仪表板。navigation | main_content | sidebar | form | modal | utility |
| tab_id | string | 否 | 读取指定的后台标签页,而不是当前活动标签页。 |
| visual | any | 否 | Set-of-Marks 视觉定位。true = 始终注入编号标记并返回注释后的屏幕截图。"auto" = 仅当 DOM 交互元素数量 < 5 时启用(canvas/WebGL/Figma 页面)。收到标记后,使用 browser_click({ mark: N }) 与编号元素交互。 |
| ax_tree | boolean | 否 | 完全绕过扩展,读取原始 Chrome Accessibility Tree。Shadow DOM 隐藏元素时使用此选项。 |
| show_overlays | boolean | 否 | 默认为 false。仅用于调试——通过扩展绘制彩色元素边框(效果不佳)。蓝色边缘光晕是标准视觉指示器,会在读取状态期间自动显示。仅在调试元素边界时启用此选项。 |
详细介绍
Weavetab 是面向 AI Agent 的开源自动化引擎。它通过原生 Chrome DevTools Protocol (CDP) 套接字,将模型直接连接到运行中的 Chromium 浏览器和 Electron 桌面应用,无需 WebDriver 二进制文件、无需云中继,也不收集任何遥测数据。
操作执行延迟低于 10 ms。网页会被转换为 Agent 可读的语义映射,并通过逐轮差异对比将令牌用量最多降低 95%。内置安全机制可强制执行本地域策略、基于角色的访问控制和客户端凭据注入。
由 fy2ne 构建并设计架构。
为什么不选 Playwright 或 Puppeteer?
标准方案——通过 MCP 使用 Playwright——确实可行。但它存在根本性的架构成本,规模越大,累积影响越明显。
| Playwright / Puppeteer | Weavetab | |
|---|---|---|
| 协议层 | 通过浏览器二进制文件使用 WebDriver BiDi 或 CDP | 原始 CDP WebSocket,第 0 层 |
| 工具执行延迟 | 50–300 ms(二进制文件 + IPC 开销) | 3–8 ms |
| 桌面应用控制 | 仅限浏览器 | Chrome + 任意 Electron 应用(Discord、VS Code、Figma…) |
| DOM 表示方式 | 向大模型输出完整 HTML | Semantic Map 3.0,支持增量差异对比 |
| 每个映射的令牌成本 | ~2,000–8,000 个令牌 | ~80–400 个令牌(通过增量差异降低 95%) |
| CAPTCHA | 需要 API 服务 | 通过 CDP 鼠标轨迹模拟实现零 API |
| 凭据安全 | 以明文传递机密信息 | 盲注入——绝不进入大模型上下文 |
| 扩展程序访问 | 受限 | 完整的 Chrome 扩展 API 接口 |
架构
MCP Client (Claude / Cursor / Antigravity / Copilot / Windsurf)
|
| JSON-RPC 2.0 (stdio or WebSocket 127.0.0.1:3000)
v
+-------------------------------------------------------------+
| Weavetab MCP Server |
| |
| +-----------------+ +---------------------------------+ |
| | Security Layer |-->| Intelligence Engine | |
| | Rate · RBAC | | Map 3.0 · Delta · Memory | |
| | Policy · Audit | | Pruner · Framework Detector | |
| +-----------------+ +----------------+----------------+ |
| | |
| +----------v----------------+ |
| | CDP Bridge | |
| | Ghost Cursor · Typing | |
| | App Router · Loop Guard | |
| +----------+----------------+ |
+-------------------------------------------------------------+
| CDP WebSocket (127.0.0.1)
+---------------------------+-----------------------------+
v v v
Chrome / Edge VS Code / Discord Your Electron App
(any tab) (Electron apps) (local dev)
无云服务,无外部进程。CDP WebSocket 连接和可选的 MCP WebSocket 守护进程(--ws)都严格绑定到 127.0.0.1,并通过共享密钥进行身份验证(~/.weavetab-system/ws-secret),同时验证 Origin/Host 请求头。
快速开始
npx -y @weavetab/mcp
将以下内容添加到 MCP 客户端配置中:
{
"mcpServers": {
"weavetab": {
"command": "npx",
"args": ["-y", "@weavetab/mcp"]
}
}
}
| 客户端 | 配置路径 |
|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Code | claude mcp add weavetab -- npx -y @weavetab/mcp |
| Cursor | .cursor/mcp.json |
| Antigravity | ~/.gemini/antigravity/mcp/weavetab/ |
| VS Code Copilot | .vscode/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
核心技术
语义地图 3.0
基于浏览器的 Agent 面临的主要瓶颈是 DOM 表示。完整的 HTML 转储冗长、庞大,对大模型而言也没有明确的结构意义。Weavetab 的 browser_map 会运行一个浏览器内 CDP 遍历器,生成精简的语义地图:
╔═ ACTIVE DIALOG: "Confirm Payment" ═╗
[w:3] button "Confirm" [w:4] button "Cancel"
┌ "Pro Plan — $49/mo"
[w:12] button "Upgrade" [w:13] button "View Details"
[w:14] input val:"[email protected]" ph:"Email address" FOCUSED
[w:20...w:38] 18 nav links: "Dashboard" ... "Sign out"
主要特性:
- 引用 ID(
w:N)在会话期间保持稳定,供所有交互工具使用 - 容器绑定——按钮和输入框按其父卡片、行或分区标题分组
- 弹窗置顶——打开的对话框会单独置于顶部,确保 Agent 不会漏看
- 链接折叠——将重复的导航栏/页脚中连续出现的 4 个或更多链接压缩为单个令牌行
- 语义差异——重新读取时,仅传输发生变化的节点(
~已修改,+已添加,−已移除),最多可将重新读取成本降低 95%
幽灵光标
点击不会作为合成 DOM 事件分发,而是通过一系列物理 Input.dispatchMouseEvent CDP 调用发送,沿着贝塞尔曲线轨迹移动,并带有随机加速度、自然抖动和按压时长。用于标记基于事件的自动化的反机器人指纹检测不会触发。
browser_pointer 支持 hover_chain,可在一次工具调用中遍历多级菜单:
{
"hover_chain": ["File", "Export As", "PNG"],
"click_final": true
}
盲注入凭据
browser_type_secret 会在服务端从 ~/.weavetab/secrets.json 解析密钥。解析后的值绝不会包含在 MCP 响应中,也不会出现在 DOM 快照中,并且在所有审计日志中始终会被遮蔽为 [REDACTED]。大模型上下文永远不会看到凭据。
weavetab secrets set GITHUB_TOKEN
# Stored. Never echoed, never logged, never surfaced to the agent.
Electron 与桌面应用自动化
任何工具都接受可选的 app 参数,可将命令路由到已注册的 Electron 进程,而不是浏览器标签页:
{ "app": "discord", "ref": "w:24", "text": "Hey, deploying now" }
在 ~/.weavetab/config.json 中注册应用:
{
"electron": {
"discord": "C:\\Users\\<user>\\AppData\\Local\\Discord\\Discord.exe",
"vscode": "C:\\Users\\<user>\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe",
"figma": "C:\\Users\\<user>\\AppData\\Local\\Figma\\Figma.exe"
}
}
Weavetab 会通过 CDP 自动连接到已注册的进程。目标应用无需修改代码。
零 API 验证码求解
browser_captcha 通过编排模拟人类行为特征的 CDP 鼠标事件来解决 Cloudflare Turnstile、reCAPTCHA v2/v3、GeeTest 和 hCaptcha——包括速度曲线、微暂停和滚动惯性——无需第三方 API、外部服务或 API 密钥。
工具套件
9 个类别共 41 个工具。完整参数参考:docs/tools/tools.md
| 类别 | 工具 |
|---|---|
| 视觉与 DOM | browser_map browser_find browser_scrape browser_inspect browser_snapshot browser_screenshot browser_console browser_extract_design |
| 输入与交互 | browser_click browser_type browser_type_secret browser_key browser_pointer browser_select browser_fill browser_upload browser_scroll |
| 导航与环境 | browser_navigate browser_tabs browser_detect browser_viewport browser_emulate |
| 任务与自动化 | browser_burst browser_automation browser_recording browser_pattern_learn |
| 安全与人工监督 | browser_dialog browser_thoughts browser_clipboard browser_wait |
| 自主验证码求解 | browser_captcha |
| 网络与存储 | browser_network_intercept browser_storage browser_cookies browser_checkpoint browser_performance |
| Office 文档 | browser_office |
| 画布与求值 | browser_eval browser_pdf browser_canvas browser_highlight |
安全性
- 传输:CDP WebSocket 和 MCP WebSocket 守护进程(
--ws)均严格绑定到127.0.0.1,并通过 256 位共享密钥 Bearer/握手认证以及Origin/Host验证。不会在外部接口上监听。 - 策略引擎:在
~/.weavetab/config.json顶层的policies数组中配置按域名划分的allow/read-only/deny/audit规则(默认阻止*.bank.*和paypal.com) - RBAC:五种角色——
operator(默认)、viewer(权限最低的只读角色)、automation、system、admin——强制执行工具级权限门控 - 插件信任与清单:三级验证(
@weavetab/*官方插件、已验证的注册表允许列表,以及对未经验证的包进行强制交互式确认并检查weavetab.json权限清单) - 盲注入:凭据在服务端解析,并在所有输出和审计日志中屏蔽
- 循环断路器:基于违规次数的卡死循环检测器会停止失控的自主序列
- 审计日志:所有工具调用、策略决策和错误都会写入
~/.weavetab-system/logs/mission_<timestamp>.log
安全漏洞请发送至:[email protected](请勿通过公开议题报告)。
CLI 参考
weavetab # Start in stdio mode (default)
weavetab --ws --port 3000 # WebSocket daemon mode (bound to 127.0.0.1)
weavetab config # Interactive configuration wizard
weavetab secrets set KEY_NAME # Store a secret (never echoed)
weavetab secrets list # List stored secret keys (not values)
weavetab plugin add <name> # Install a verified/confirmed plugin
weavetab plugin list # List installed plugins
配置文件:~/.weavetab/config.json
{
"browserType": "chromium",
"headless": false,
"extension": true,
"maxActionsPerMinute": 60,
"role": "operator",
"electron": {
"discord": "...",
"vscode": "...",
"antigravity": "..."
}
}
可扩展性
Weavetab 提供类型化插件 SDK,可用于编写自定义 MCP 工具、HUD 覆盖层和工具生命周期钩子:
npx @weavetab/sdk init my-plugin
有关架构、清单规范和 SDK API 参考,请参阅 docs/PLUGINS.md。
许可证
AGPL-3.0-only。通过 stdio 或 WebSocket 建立的客户端连接,不会将 copyleft 义务延伸至你的客户端应用或模型。
赞助开发 · 讨论 · SUPPORT.md
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
