HelloAI
L4 第 16 篇 🐥 难度 🕒 13 分钟

视觉语言 Agent:让 AI 操控你的屏幕

Claude Computer Use、OpenAI Operator、Gemini 2.5 Computer Use——LLM 看屏幕 + 点鼠标 + 敲键盘,2024-2026 Agent 最大产品形态。

阿莱
2026/9/25

L4-04 讲了 Agent 的概念。L4-09 讲了”调 API 工具”。 这一篇讲:让 Agent 直接操控你的电脑——看屏幕、点鼠标、敲键盘

这是 2024-2026 年 LLM 最有冲击力的产品形态—— 不需要 API,没有界面就用界面

一句话定义

Computer-Use Agent(CUA / VLA Agent / GUI Agent)

一个视觉语言模型(VLM)观察屏幕截图 → 决定下一步 → 输出鼠标键盘动作 → 在真实操作系统 / 浏览器里执行。

它和传统 RPA(UiPath / Selenium)的区别:

  • RPA:录制脚本,写死坐标和元素选择器 → 界面一改就崩
  • CUA:每一步看截图理解,像人一样适应 → 界面变了也能继续

主流玩家

1. Anthropic Computer Use(2024-10)

第一个把”Computer Use”做成 API 产品的:

# Claude 接收屏幕截图 + 任务,返回鼠标键盘动作序列
response = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    tools=[{"type": "computer_20241022", "name": "computer",
            "display_width_px": 1024, "display_height_px": 768}],
    messages=[{"role": "user", "content": "帮我在 Numbers 里做个预算表"}]
)
# 模型返回:{action: "screenshot"} / {action: "mouse_move", x, y} / {action: "key", text: "..."}

架构

  • 模型不直接控制你电脑——返回动作描述
  • 你的代码(或 SDK 提供的 reference impl)负责执行
  • 通常跑在沙箱 VM / Docker 容器里

2. OpenAI Operator(2025-01)

OpenAI 的对应产品,主打浏览器自动化

  • 跑在云端虚拟浏览器里(用户不需要本地暴露屏幕)
  • 适合订票 / 购物 / 填表单类任务
  • 通过 ChatGPT 网页交互,看不到底层 API

3. Google Gemini 2.5 Computer Use(2025)

Gemini 的版本——和 Android / Workspace 集成最深。

Benchmark 现实

最重要的两个基准:

OSWorld(综合操作系统 + 多 app):

模型得分
OpenAI CUA38.1%
Claude Computer Use22%
人类基线~72%

WebVoyager(仅浏览器):

模型得分
OpenAI CUA87%
Claude Computer Use56%

注:分数随版本升级快速变化,以最新模型卡为准。

关键观察

  • 浏览器任务(WebVoyager)远比通用 OS 任务(OSWorld)成功率高
  • 人类 72% vs 当前最强 38%——通用 OS 仍有 2× 差距
  • 简单任务(点按钮)OK,复杂任务(多 app 协作)频繁失败

技术挑战

1. GUI Grounding:识别屏幕上的元素

模型必须能从截图里识别”哪里是 Submit 按钮”—— 不是文本任务,而是像素位置任务

主流做法:

  • VLM 直接输出 (x, y) 坐标(Claude / OpenAI)
  • 用 OCR 标注所有可点击元素 → 给模型选标号(一些开源 Agent)

2. Operational Knowledge:知道下一步该做什么

“打开 Excel → 新建文件 → 选模板 → 填数据”—— 这是任务级的 procedural knowledge,比 GUI grounding 更难训。

3. 错误恢复

页面加载慢 / 弹窗 / 验证码 / 登录过期—— 真实环境的 edge case 多到一个 Agent 一辈子也跑不完。

4. 安全 / 隔离

Agent 在你电脑里运行 = 直接执行任何动作

  • 删文件
  • 转账
  • 发消息
  • 不可逆操作

必须用 VM / 容器 / 浏览器沙箱隔离

应用场景

已经 work 的

  • 数据搬运:从 A 系统 copy 到 B 系统
  • 简单网页填表:注册、购物、订餐
  • 重复性 GUI 测试(替代 Selenium)
  • 辅助残障用户操作软件

还有距离的

  • 复杂多 app 协作(“找邮件附件 → Excel 加工 → 邮件回复”)
  • 企业级长流程(销售线索全流程、HR 入职流程)
  • 创作类(用 Photoshop 设计海报)

与传统 RPA 的差异

维度传统 RPAComputer Use Agent
设置录制脚本 / 写选择器自然语言任务
容错性界面变化就坏界面变了也能适应
学习成本工程师 / 业务培训任何人写任务即可
执行速度快(几秒)慢(每步看截图)
成本一次开发,重复用每次都消耗 LLM token
适合场景高频固定流程长尾 / 探索性任务

它们不是替代关系—— RPA 适合稳定高频;CUA 适合一次性 / 长尾 / 适应性强的任务。 未来很可能 RPA 工具内嵌 CUA 做”自我修复”。

实战示例:让 Claude 整理桌面

import anthropic, subprocess, base64

def run_action(action):
    """执行 Claude 返回的动作"""
    if action["action"] == "screenshot":
        # 截屏返回 base64
        subprocess.run(["screencapture", "-x", "/tmp/s.png"])
        return open("/tmp/s.png", "rb").read()
    elif action["action"] == "mouse_move":
        subprocess.run(["cliclick", f"m:{action['x']},{action['y']}"])
    elif action["action"] == "left_click":
        subprocess.run(["cliclick", f"c:{action['x']},{action['y']}"])
    elif action["action"] == "key":
        subprocess.run(["cliclick", f"kp:{action['text']}"])

client = anthropic.Anthropic()
messages = [{"role": "user", "content": "把桌面上所有截图移到 ~/Screenshots/"}]

# 循环:模型决策 → 执行 → 反馈截图 → 再决策
while True:
    resp = client.messages.create(
        model="claude-3-5-sonnet-20241022",
        max_tokens=1024,
        tools=[{"type": "computer_20241022", "name": "computer",
                "display_width_px": 1440, "display_height_px": 900}],
        messages=messages
    )
    if resp.stop_reason == "end_turn":
        break
    for block in resp.content:
        if block.type == "tool_use":
            result = run_action(block.input)
            messages.append({"role": "assistant", "content": resp.content})
            messages.append({"role": "user", "content": [{
                "type": "tool_result", "tool_use_id": block.id,
                "content": [{"type": "image", "source": {
                    "type": "base64", "media_type": "image/png",
                    "data": base64.b64encode(result).decode()
                }}]
            }]})

警告:上面是教学代码,不要在主电脑上裸跑——用 VM。

2026 现状评估

CUA 目前的成熟度:

  • 浏览器任务(WebVoyager 87%)已经接近”日常可用”
  • ⚠️ 桌面任务(OSWorld 38%)距离实用还有距离
  • ⚠️ 每步延迟(截图 + 推理)让任务慢一个数量级
  • ⚠️ token 成本高(每步一张截图 = 几千 token)

适用 / 不适用速查

场景现在适用?
浏览器查信息 / 填表✅ 现在能用
数据搬运(A 系统 → B 系统)✅ 现在能用
替代客服重复操作✅ 受控场景能用
完整完成”项目级”工作❌ 还早
操作复杂专业软件(Photoshop / CAD)❌ 还早

与 MCP / Tool Use 的关系

不是替代关系,而是互补

  • Function Calling / Tool Use:调用有 API 的服务
  • MCP:标准化的工具协议
  • Computer Use:处理没 API 的软件 / 网站

最强的 Agent 会同时用三种—— 能用 API 就用 API(快、稳、便宜),不能用 API 就用 CUA(兜底)。

💡 一个判断

Computer Use 是 LLM 时代的”shell”。

早期电脑:每个程序都得有 GUI 让人用 后来:shell + 脚本能编排所有程序(不需要 GUI) LLM 时代第一阶段:每个工具都得有 API 让 LLM 用 LLM 时代第二阶段(CUA):LLM 能用 GUI = 不再需要每个工具都暴露 API

这是为什么 Anthropic / OpenAI / Google 都在押注 CUA—— 它把 LLM 的可用工具集从”有 API 的”扩到”地球上所有软件”

但目前的可靠性还配不上这个野心。2026-2028 看突破

推荐配套阅读

🚧 3 个常见坑

⚠️ 实战避坑

坑 1:把 demo 视频当生产能力 官方 demo 都是 cherry-picked 任务——真实生产 OSWorld 成功率只有 30-40%,必须自己跑 eval。

坑 2:不做沙箱直接跑 Agent 在主机上跑 = 任何 bug 都可能删文件 / 发消息——必须 VM / Docker / 浏览器沙箱隔离。

坑 3:低估 token 成本 每步一张截图(1024×768 ≈ 1500 tokens)+ 多轮交互——长任务可能花几十美金,必须设 max_steps。

📬

读到这里说明你认真在学 🎯

订阅每周精选 —— 下一篇新文章 / 新可视化第一时间送到邮箱。

💬

讨论区

· 用 GitHub 账号登录评论
⚠️ Giscus 评论未配置 —— 在 src/components/Comments.astro 顶部填入 仓库 ID 和分类 ID(见组件注释里的配置步骤)。