能力选型
核对日期:2026-08-26。
1. 定义与边界
GUI 操作层有四档,不要都叫 Computer Use:
| 档 | 定义 | 观察 | 动作 |
|---|---|---|---|
| 业务 API / MCP | 结构化工具 | JSON | 函数调用 |
| 只读抓取 | Server 侧 fetch / search | HTML 摘要或片段 | 无点击 |
| 结构化浏览器 | 应用托管的浏览器 | 无障碍树、元素 ref、可选截图 | 按 ref 或坐标点击、填表、多 tab |
| 桌面 Computer Use | 虚拟显示器上的整桌面 | 截图(像素坐标) | 鼠标键盘,外加可选 bash / 编辑器 |
Anthropic 把后两档拆成两个 client toolset:browser_toolset_20260801 与 computer_toolset_20260801。模型只发出 member 调用,执行发生在你的环境,API 不替你开浏览器或虚拟机。OpenAI 的 computer 工具同样是「模型出动作、你在隔离容器 / Playwright 里执行」。
Playwright MCP 属于结构化浏览器:用 accessibility snapshot,而不是每步截图。它不是 Anthropic 协议,但是同一档工程选择。
本文件不讨论 MCP JSON-RPC,见 ../04-工具调用体系/MCP在Agent中的位置.md。
2. 为什么重要
GUI Agent 的成本和风险都比普通工具高一个数量级:
- 截图 token 贵,坐标随分辨率和滚动条漂移。
- 页面文本是不可信指令源,注入成功率高于聊天框。
- 一次批处理可以在单回合里点完「同意并提交」。
- 接错档会把能用 OpenAPI 解决的事做成「看屏幕点鼠标」。
选型错误的典型症状:内部后台明明有 API,却让模型对着管理页截图点菜单。
3. 核心机制
Anthropic 官方口径与此一致:任务留在网页内用 browser use;只要读指定 URL 或检索来源,用更轻的 web fetch / web search;computer use 面向整桌面。
4. 架构模式
4.1 决策表
| 场景 | 选择 | 不要选 |
|---|---|---|
| 订单查询、改状态有内部 API | 业务 Tool | 浏览器 |
| 读文档站、抽静态条款 | Web Fetch | 开浏览器 |
| 内部 SPA 填表、无 API | 结构化浏览器(ref) | 桌面 CU |
| 设计稿画布、远程桌面嵌在网页里 | 截图 + 坐标兜底 | 假装 ref 总能点中 |
| 装软件、点原生对话框 | 桌面 CU + 容器 | 用户本人笔记本 |
| 微信 / 支付宝小程序里「替用户点」 | 不适合本层 | 用各端官方 API;见 ../18-Agent前端与交互/跨端流式差异.md |
4.2 Client toolset vs 自建 Playwright
| Anthropic browser toolset | Playwright MCP | 自建 browser.* 工具 | |
|---|---|---|---|
| 动作空间 | 官方 27+ member,可选 JS/上传 | MCP 工具集(snapshot/click/navigate) | 你自己的 schema |
| 模型适配 | Claude 针对该 toolset 训练 | 通用模型 + 结构化树 | 完全自控 |
| 执行位置 | 你的 executor | 你的 MCP server | 你的网关 |
| 治理 | 仍要 allowlist / HITL | --allowed-origins 不是安全边界 | 必须自建策略 |
生产不要「模型直接连用户 Chrome」。无论哪一档,浏览器都在任务级隔离环境里。
4.3 与 Skill 的关系
「按团队规范走查线上页」可以是 Skill,步骤里调用 frontend-workspace 或浏览器工具。Skill 不能授予打开任意域名的权限。见 ../19-Skills与能力平台/能力分层与选型.md。
5. 工程实现
最小决策记录,进入 trace:
type GuiTier =
| "api"
| "web_fetch"
| "structured_browser"
| "screenshot_computer_use"
| "desktop_computer_use";
interface GuiTaskContract {
goal: string;
tier: GuiTier;
whyNotApi: string;
allowedOrigins: readonly string[];
requiresHitl: boolean;
}
执行器按 toolset_name + name 分发,不要只看 name:browser 与 computer 都可能有 screenshot。
function dispatchGuiCall(call: {
toolsetName: "browser" | "computer" | null;
name: string;
}): "browser" | "computer" | "custom" {
if (call.toolsetName === "browser" || call.toolsetName === "computer") {
return call.toolsetName;
}
return "custom";
}
6. 生产实践
| 实践 | 说明 |
|---|---|
| 先证明 API 不够 | 立项写清缺失的字段或系统 |
| 浏览器默认无登录态 | 需要登录再走 凭证与HITL.md |
| 可选 member 默认关 | Anthropic:javascript_exec、file_upload、read_console、read_network |
| 旧 beta 单独分支 | computer_20251124 需要 beta header 和不同参数;新集成用 toolset |
| 成本 | 树读取通常比整页截图便宜;截图保留最近几张,批量修剪以免打爆 prompt cache |
7. 常见反模式
| 反模式 | 表现 | 后果 | 修正 |
|---|---|---|---|
| 无 API 检查 | 所有后台流程上 CU | 慢、贵、易注入 | 决策表 |
| 桌面跑网页任务 | 虚拟机里再开 Firefox 点网页 | 攻击面变成整个 OS | browser toolset |
| MCP allowlist 当沙箱 | 只设 Playwright --allowed-origins | 官方写明不拦 redirect | 网络层 + navigate 复核 |
| 用户会话里跑 Agent | 复用本人 Cookie | 被注入后等于本人操作 | 空 profile / 机器人账号 |
| 小程序套 CU | 以为能远程点微信按钮 | 没有合法自动化面 | 平台 API |
8. 评测方法
| 指标 | 说明 |
|---|---|
| Tier Choice Accuracy | 人标档位与系统档位是否一致 |
| Api Bypass Rate | 明明有 API 却走 GUI 的比例,目标趋近 0 |
| Token per Successful Task | 同任务 GUI vs API 成本比 |
| Human Takeover Rate | 因选错档导致接管 |
9. 安全与治理
- Client toolset 不把执行放到模型供应商侧;你的容器泄密就是你的事故。
- 供应商分类器(Anthropic 对截图注入的确认引导)不能替代执行器策略。
- 告知终端用户风险并取得同意后再在产品里打开 GUI Agent。
10. 权威资料
- Anthropic Browser use: https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-tool (核对日期:2026-08-26)
- Anthropic Computer use: https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool (核对日期:2026-08-26)
- Playwright MCP README: https://github.com/microsoft/playwright-mcp (核对日期:2026-08-26)
- OpenAI Computer use: https://developers.openai.com/api/docs/guides/tools-computer-use (核对日期:2026-08-26)