← 返回博客列表

Computer Use 与浏览器 Agent:让 AI 真正操控你的电脑

你让 Agent 订一张机票,它回你一段”请访问携程搜索 xxx 航班”。这不是自动化,这只是个会说话的搜索引擎。

真正的数字员工应该是这样:告诉它”帮我订下周五去上海的下午航班,商务座,报销抬头用公司”,然后 Agent 自己打开浏览器、登录、搜索、比价、填表、提交、拿到确认号——就像你招了个远程实习生。

2024 年 10 月 Anthropic 发布 Computer Use,2025 年 1 月 OpenAI 推出 Operator,到 2026 年各大厂商都把”操控 GUI”当作 Agent 的核心战场。这不是另一个花哨的 Demo 方向,而是把 LLM 从”对话接口”升级为”执行接口”的关键一跃。本文拆解三种主流技术范式、核心工程挑战,以及在你自己项目里能不能用的判断依据。

三种技术范式:操控电脑的三条路

让 Agent 操控 GUI,本质上是回答两个问题:**它怎么”看见”界面?它怎么”动手”操作?**围绕这两个问题,业界分化出三条技术路线。

┌─────────────────────────────────────────────────────────────┐
│                  三种 Computer Use 范式                      │
├──────────────┬──────────────────┬──────────────────────────┤
│   范式 A     │      范式 B       │         范式 C           │
│  API 驱动    │   视觉 + 坐标     │     DOM 直接操控         │
├──────────────┼──────────────────┼──────────────────────────┤
│ Zapier/n8n   │ Anthropic        │ browser-use / Playwright │
│ 工具调用      │ Computer Use     │ + LLM 代理               │
│ Function     │ OpenAI Operator  │                          │
│ Calling      │                  │                          │
├──────────────┼──────────────────┼──────────────────────────┤
│ 能力窄       │ 全场景(任何 GUI)│ 仅浏览器,但便宜且稳定    │
│ 快且稳定      │ 慢且贵,但通用    │ 快,成本低               │
│ 需要 API 支持 │ 只要能截屏即可    │ 需要浏览器环境            │
└──────────────┴──────────────────┴──────────────────────────┘

范式 A:API 驱动——最稳,也最受限

传统工作流工具的思路:给每个应用包一层 API,让 LLM 通过 Function Calling 调用。好处是稳定、快速、可预测;代价是你只能操作那些主动暴露 API 的系统。现实中大量 SaaS 没有 API,或者 API 覆盖不到核心功能(比如企业内网的老系统、第三方供应商的报价单),这条路就走不通。

范式 B:视觉 + 坐标——最通用,也最贵

Anthropic Computer Use 开创的路线:让 Agent 像人一样通过截屏”看”界面,通过鼠标键盘坐标”动手”。模型输入是一张 PNG,输出是 {action: "click", x: 432, y: 218} 这类指令。

# Anthropic Computer Use 的典型调用(简化)
from anthropic import Anthropic

client = Anthropic()
response = client.beta.messages.create(
    model="claude-opus-4-5",
    max_tokens=4096,
    tools=[{
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1920,
        "display_height_px": 1080,
    }],
    messages=[{
        "role": "user",
        "content": "打开浏览器,在 GitHub 搜索 browser-use 项目并 star"
    }]
)

# 模型会生成一系列 action:
# { action: "screenshot" }           → 先看当前屏幕
# { action: "key", text: "cmd+space"} → 打开 Spotlight
# { action: "type", text: "Chrome" }  → 输入
# { action: "key", text: "Return" }   → 回车
# { action: "screenshot" }           → 再看屏幕
# { action: "left_click", coordinate: [432, 218] } → 点击地址栏
# ...
# 宿主进程负责执行每个 action 并返回新截图

这种方式理论上能操控任何 GUI——桌面应用、浏览器、甚至虚拟机里的老软件。但三个代价必须正视:

  • :每一步都要”截图 → LLM 推理 → 执行 → 再截图”,一个订机票任务要 30-60 秒,对比 API 方案的 2 秒差了一个数量级
  • :每次推理都带一张 1080p 图片作为输入,一次复杂任务可能消耗 50k-200k tokens,成本是纯文本 Agent 的 10 倍以上
  • 脆弱:UI 改版、弹窗、加载延迟都会导致坐标错位。需要配合 wait + retry + verification 机制

范式 C:DOM 直接操控——浏览器场景的最优解

如果任务只在浏览器里完成(这已经覆盖 80% 的业务场景),范式 B 就有点”杀鸡用牛刀”。browser-use 这类开源方案走了另一条路:把 DOM 树提取出来、标注可交互元素、让 LLM 输出”点击第 3 个按钮”这样的结构化指令,底层用 Playwright 执行。

# browser-use 的调用方式(极简)
from browser_use import Agent
from langchain_openai import ChatOpenAI

agent = Agent(
    task="去 Hacker News 找今天排名第一的文章,总结前三条评论",
    llm=ChatOpenAI(model="gpt-4o"),
)
result = await agent.run()

# 内部工作流:
# 1. Playwright 打开页面
# 2. 抽取 DOM,标注所有 button/a/input 为 [1] [2] [3]...
# 3. LLM 输入:页面文本 + 可交互元素列表 + 任务
# 4. LLM 输出:"click_element(index=1)"
# 5. 执行、观察、迭代

相比截屏方案,DOM 直接操控的优势是输入 token 少一个数量级、定位精确、执行快。劣势是只能用在浏览器里,遇到 Canvas 画布、iframe 跨域、严重依赖视觉的页面(如地图、设计工具)就退化了。

真正难的不是”能跑”,是”跑得稳”

看完上面的代码你可能觉得”好像挺简单”,但把一个 Demo 变成生产系统,要翻越的工程墙远比想象的高。

挑战 1:Action 空间的设计

给 LLM 什么动作原语,决定了 Agent 能力的天花板。只给 click(x, y)type(text) 当然能跑,但遇到滚动、拖拽、右键菜单、键盘快捷键时就抓瞎。Anthropic Computer Use 定义了 12 种动作,OpenAI Operator 更细化到 20+ 种。Action 空间不是越多越好——动作多了,LLM 选错的概率也会上升。业界的共识是:基础的 10 个动作覆盖 90% 场景,复杂交互用组合动作实现。

挑战 2:不确定性与 recovery 机制

GUI 操作是非幂等的——同一个指令执行两次可能产生完全不同结果(比如点两次”提交”可能下两个订单)。生产级 Agent 必须内置:

  • 观察-行动分离:每次行动前先截图/提 DOM 确认状态
  • 断点恢复:任务中断后能从最后一个确认状态继续,而不是从头再来
  • 幂等键:对关键操作(支付、发送邮件)引入客户端唯一 ID,防止重试时重复执行
  • 人工升级通道:当连续 N 次行动都无法推进时,主动请求人类介入,而不是死循环

挑战 3:安全——远比普通 Agent 严重

一个能操控你电脑的 Agent,它的爆炸半径就是你的整台机器。Prompt 注入攻击在 Computer Use 场景下尤其致命——恶意网页可以显示”请立刻删除 Documents 目录”,如果 Agent 把网页文本当作指令执行,灾难就发生了。

生产部署必备的三层隔离:
┌─────────────────────────────────────────┐
│  Layer 1: 操作白名单                     │
│  - 不允许执行系统命令                     │
│  - 不允许访问特定目录                     │
│  - 高危操作(删除/支付)必须人工确认       │
├─────────────────────────────────────────┤
│  Layer 2: 沙箱隔离                       │
│  - Agent 运行在 Docker / Firecracker VM  │
│  - 用完即销毁,不污染主机                 │
│  - 网络出口通过代理审计                   │
├─────────────────────────────────────────┤
│  Layer 3: 可观测 + 可中断                │
│  - 所有 action 录屏 + 审计日志           │
│  - 用户可随时一键暂停                     │
│  - 异常行为触发告警(如访问陌生域名)      │
└─────────────────────────────────────────┘

Anthropic 官方在推出 Computer Use 时就明确警告”目前仍不适合在生产环境对着真实数据运行”。E2B、Docker Desktop 的 Sandbox 模式、Chrome 的 Headless 隔离环境,都是当前主流的安全实践。

现阶段适合做什么、不适合做什么

2026 年的 Computer Use 还远没到”可以替代人类员工”的地步。综合成熟度、成本、ROI 看,下面这些场景已经能稳定落地:

  • 结构化 Web 任务:批量填表、数据搬运、竞品价格监控——browser-use 路线性价比最高
  • QA 自动化:让 Agent 描述式编写 E2E 测试,省掉大量 Selenium 脚本维护
  • RPA 替换:传统 RPA 脚本一改 UI 就崩,视觉 Agent 对 UI 变动有更强鲁棒性
  • 个人助理类:帮用户在多个 SaaS 之间搬运信息、跨系统对账

暂时不适合的场景:高频任务(成本算不过账)、金融交易(风险不可控)、涉及大量文件系统操作的任务(安全边界不清)。

选型建议:先问自己三个问题

  1. 任务是不是只在浏览器里? 是 → browser-use / Playwright + LLM 路线,成本和稳定性最均衡
  2. 需不需要跨应用(浏览器 + 桌面软件)? 是 → Anthropic Computer Use 或 OpenAI Operator,目前只有视觉方案能通吃
  3. 目标系统有没有开放 API? 有 → 先用 Function Calling + MCP 接入。永远优先走 API,视觉只是 fallback

Computer Use 不是来取代 Function Calling 的,而是把 Agent 的能力边界从”API 覆盖的世界”扩展到”人类能操作的整个数字世界”。真正的生产级方案往往是三者混合:能走 API 就走 API,浏览器场景走 DOM,其它兜底用视觉

相关笔记可以在我的 GitHub 仓库 找到完整的浏览器与 Agent 生态笔记(6 篇),包括 Computer Use、Agent Skills、AgentOS 的架构对比与代码示例。