ClaudeMap

·技能与命令

把 Claude 变成视觉 agent 操作任意 GUI——computer 工具、模型与工具版本(computer_20250124)、16 个 action、截图-决策-执行 loop、token 预算、强制隔离沙箱、3 个生产用例,外加六个视觉 agent 翻车点(HiDPI 坐标/沙箱出口/敏感操作)与一套评估质量闸门。

Claude Computer Use 实战:让 Claude 直接操作桌面、浏览器与 GUI 应用(2026)

Claude 的 Computer Use 是 2024-Q4 推出、2025 年成熟、2026 年正式成为生产级能力——Claude 不再只是生成文本和调工具,而是直接看屏幕截图、用鼠标和键盘操作你电脑上的任何 GUI:浏览器、原生应用、SaaS 后台、旧 ERP 系统。它通过一个独立的 computer 工具,把模型从「API-only 的文本 agent」扩展到「能操作真实 GUI 的视觉 agent」。本文基于 Claude Computer Use 官方文档Anthropic 官方 quickstart,讲清楚:模型与工具版本、可用的 16 个 action、最小可运行的 agent loop、截图与 token 预算、安全沙箱、3 个生产用例,以及 2026 年最常见的踩坑。

TL;DR

  • Computer Use = 给 Claude 一双「看屏幕 + 动手」的眼睛——screenshot + mouse + keyboard
  • 当前推荐模型:claude-sonnet-4-5 + claude-opus-4-1;工具版本 computer_20250124(最新)
  • 16 个 action:screenshot / left_click / type / key / scroll / zoom 等;坐标是像素
  • 安全铁律:永远在容器或 VM 里跑——Claude 能真的执行你的 GUI 操作
  • 实战回报:UI 测试、表单填写自动化、操作没有 API 的旧系统

Computer Use 是什么

Computer Use 让 Claude 调用一个特殊的 computer 工具,这个工具向 Claude 暴露三个能力:截屏(让 Claude 看到当前桌面)、鼠标(点击、移动、双击)、键盘(输入文字、按键组合)。Claude 在多轮对话里反复截屏、决定下一个动作、执行、再截屏——循环直到任务完成。

这跟 Claude Code 的 Bash / Read / Edit 工具有本质区别:

| 维度 | 传统工具(Bash / Read / Edit) | Computer Use | |---|---|---| | 作用对象 | 文件、命令行、API | 屏幕上的像素 + 鼠标 + 键盘 | | 模型输入 | 文本、文件内容、结构化数据 | 截图(图像) | | 典型场景 | 改代码、查文件、跑命令 | 操作 GUI、填表单、UI 测试 | | 决定方式 | 模型决定调用哪个工具 + 参数 | 模型看截图、决定 (x, y) 坐标 + 动作 |

核心模型:Claude 不再假设它面对的是「结构化世界」——它接受任何 GUI 作为输入。这意味着 Claude 能操作没有 API 的系统:老旧的桌面 ERP、只能通过网页表单的后台、没人会写 wrapper 的 SaaS。

模型与工具版本

Claude Computer Use 文档 定义了当前模型与工具版本

| 模型 | 支持 Computer Use | 推荐场景 | |---|---|---| | claude-opus-4-1 | ✓ | 复杂多步 GUI 任务 | | claude-sonnet-4-5 | ✓ | 性价比主力;UI 测试、表单填写 | | claude-haiku-4-5 | ✗ | 视觉精度不够,不要用 |

工具版本(type 字段):

| 工具版本 | 状态 | 备注 | |---|---|---| | computer_20250124 | 当前 | 16 个 action,screenshot 优化 | | computer_20241022 | 旧版 | 11 个 action,向后兼容 |

启用方式

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    tools=[{
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1920,
        "display_height_px": 1080,
    }],
    messages=[{"role": "user", "content": "打开浏览器,访问 anthropic.com,然后截图"}],
)

display_width_pxdisplay_height_px 必须和你实际虚拟桌面的分辨率匹配——这是模型决定 (x, y) 坐标的参考系。

一个最小可运行的 agent loop

下面是一个 Python 最小可用版本——Claude 看到截图、决定动作、执行、再截屏,循环直到任务完成或达到轮次上限:

import anthropic
from PIL import Image
import subprocess, time

client = anthropic.Anthropic()

def take_screenshot() -> bytes:
    """虚拟桌面截图(macOS: screencapture -x / Linux: scrot / Win: nircmd)"""
    subprocess.run(["screencapture", "-x", "/tmp/screen.png"])
    with open("/tmp/screen.png", "rb") as f:
        return f.read()

def execute_action(action: dict) -> None:
    """把 Claude 的 action 翻译成真实 GUI 操作"""
    if action["type"] == "left_click":
        x, y = action["x"], action["y"]
        subprocess.run(["cliclick", f"c:{x},{y}"])  # macOS 第三方
    elif action["type"] == "type":
        subprocess.run(["osascript", "-e", f'tell application "System Events" to keystroke "{action["text"]}"'])
    elif action["type"] == "key":
        # Computer Use 的 key action 取键名(如 Return / ctrl+c / cmd+shift+4)
        # 用 cliclick 的 kp: 语法处理单键或多键组合,比 osascript keystroke 稳
        subprocess.run(["cliclick", f"kp:{action['text']}"])
    elif action["type"] == "screenshot":
        pass  # 已经截过了
    # ... 其余 action 类似

def run_agent(task: str, max_turns: int = 30):
    messages = [{"role": "user", "content": task}]
    for turn in range(max_turns):
        screenshot = take_screenshot()
        response = client.messages.create(
            model="claude-sonnet-4-5",
            max_tokens=1024,
            tools=[{
                "type": "computer_20250124",
                "name": "computer",
                "display_width_px": 1920,
                "display_height_px": 1080,
            }],
            messages=messages + [{
                "role": "user",
                "content": [{
                    "type": "image",
                    "source": {"type": "base64", "media_type": "image/png", "data": _b64(screenshot)},
                }],
            }],
        )
        # 如果模型停止(end_turn),任务完成
        if response.stop_reason == "end_turn":
            return response.content[0].text
        # 否则执行它请求的 action
        for block in response.content:
            if block.type == "tool_use":
                execute_action(block.input)
                time.sleep(1)  # 让 UI 渲染完再截屏
        messages.append({"role": "assistant", "content": response.content})
    return "Max turns reached"

def _b64(data: bytes) -> str:
    import base64
    return base64.b64encode(data).decode()

关键点:循环里每轮都截屏一次——模型看到的总是当前真实状态,不是它记忆里的状态。

16 个 action 与最佳实践

computer_20250124 工具 暴露 16 个 action,按用途分四类:

| 类别 | Action | 用途 | |---|---|---| | | screenshot | 重新截屏(模型主动请求) | | 鼠标 | left_click / right_click / double_click / mouse_move | 各种点击 | | | left_mouse_down / left_mouse_up | 拖拽(按下 + 移动 + 抬起) | | | scroll | 滚轮(direction + amount + 坐标) | | 键盘 | type | 输入字符串 | | | key | 按键组合(Return / ctrl+c / cmd+shift+4) | | 复合 | hold_key / wait | 长按 / 等待 N 秒 | | | zoom | 放大指定区域让模型看清楚 |

实战 best practice(来自 claude-quickstarts computer-use-best-practices):

  1. 坐标系精度有限——模型看到 1920×1080 的截图,但实际点过去可能有 ±5px 误差。遇到按钮太小,先 zoom 再点
  2. Type 前先 click——确认输入框获得焦点再 type,否则可能丢字符。
  3. Wait 替代 sleep——如果 UI 在加载,用 wait action(wait 1~2 秒)比在 Python 里 time.sleep 更稳。
  4. 截屏时机由模型决定——它会在执行 click 后自动请求 screenshot 验证点击是否成功——不要在 Python 里盲目截屏浪费 token

安全沙箱:永远别在主机上跑

Computer Use 给 Claude 真实的 GUI 写入权限——它能点开「删除账户」按钮、清空你的邮箱、转账。这意味着 生产部署必须在隔离环境

| 隔离层级 | 适用 | 工具 | |---|---|---| | Docker 容器 + X server | 单次自动化任务 | xvfb-run + Xvfb + headed Chrome in container | | macOS / Linux VM | 长跑、需要真硬件交互 | VMware / VirtualBox / Lima / Tart | | 专用测试机 | CI 流水线里的 UI 测试 | GitHub Actions self-hosted runner + display | | 第三方云浏览器 | 纯 web 自动化 | Browserbase / Steel |

铁律

  • 永远不要让你的真实邮箱、密码管理器、银行 app 暴露在 Claude Computer Use 跑的桌面里
  • 给容器/VM 一个专用账号——Claude 看到的应该是「测试账号」而不是你本人
  • claude-quickstarts computer-use-demo 起步——它已经预设了 Xvfb + headed browser 的最小配置

性能调优:token 预算 + screenshot 间隔

Computer Use 的成本主要来自 每轮重传截图(一张 1920×1080 PNG 约 1.5MB base64,模型按 image token 计费)。调优 3 个旋钮

  1. 降分辨率——display_width_px=1280, display_height_px=720:模型依然能看清,token 省 40%
  2. JPEG 替代 PNG——screenshot 存 JPEG(quality=80),大小降到 200KB
  3. 智能截屏节奏——只在 action 执行后截屏,不要每轮都截(默认行为是模型决定;你的循环只在 stop_reason != end_turn 时再截屏)

token 估算:单次 Computer Use 任务约 5~50 次 action,每次重传一张 1280×720 JPEG,总 image token 约 5,000~50,000。叠 prompt caching 后 system prompt(含任务描述 + 工具说明)可缓存——后续轮次成本砍 90%。

三个生产用例

用例 1:UI 自动化测试

替代 Selenium / Playwright——Claude 看真实浏览器截图、决定交互、断言结果。优势:测试意图用自然语言描述("点击登录按钮、输入错误密码、验证错误提示"),不需要写 CSS selector / XPath。劣势:比 Playwright 慢 10×、贵 100×。

用例 2:表单填写自动化

后台办公场景:把 Excel 里 100 条客户数据自动填到 SaaS 后台。Claude 比 RPA(UiPath)更智能——遇到 CAPTCHA 失败的字段,它会理解上下文("这看起来是电话号码格式不对")而不是崩溃。

用例 3:操作没有 API 的旧系统

最被低估的场景:很多企业级 ERP、CRM、报表系统没有 API 或 API 不开放。Computer Use 是唯一不用让厂商改代码的自动化路径——但回报要看任务频率(每天 50 次才有 ROI)。

常见坑与反模式:视觉 agent 的六个翻车点

前几节讲「怎么做对」,这一节讲「怎么翻车」——六个在生产里反复出现的坑,多数与视觉 agent 的特殊性直接相关。

坑 1:HiDPI 截图的坐标错位。 现象:模型给的 (x, y) 在本地点了半天没反应。原因:Retina / 缩放屏(150% DPI)下,截图像素坐标系与物理屏幕坐标系不是一比一——模型看到的是缩放后的截图,点的是截图坐标。修法:截屏前固定缩放为 100%,或按 DPR 把模型坐标换算回物理坐标;工具层统一处理,别让模型自己猜。

坑 2:循环没有上限。 现象:一个永远点不对的按钮让 agent 截屏几小时。原因:loop 只判「任务完成」,没有轮次与预算上限。修法:max_iterations + 截图 token 预算双闸,超限告警并落盘现场截图供人工看。

坑 3:沙箱里网络出口全开。 现象:agent 被 prompt injection 诱导访问陌生站点、下载可执行文件。原因:只隔离了文件系统,没管网络。修法:出口白名单(任务域 + 更新源),其余默认拒绝——与「永远别在主机上跑」同级的硬规则。

坑 4:敏感操作无人审。 现象:agent 在真实后台点了「删除」或「转账」。原因:把 Computer Use 当全自动管道。修法:敏感动作分两级——低危自动、高危生成「待确认动作清单」交人工一键批准;把确认点设计进 workflow,而不是指望模型自己克制。

坑 5:截图里带敏感数据。 现象:安全审计发现会话日志里躺着收件箱验证码、客户 PII。原因:截屏是全屏/全窗口的,邮件客户端里有什么就拍什么。修法:任务窗口之外的最小化或专用浏览器 profile;日志保留策略与截图一起设计。

坑 6:长任务不落 checkpoint。 现象:跑到第 40 步崩了,从零再来。原因:loop 没有状态外存。修法:每完成一个子目标把关键状态(表单已填字段、已导航页面)写进结构化日志,重试时先注入 checkpoint 再继续。

评估与迭代:视觉 agent 的质量闸门

UI 会改、按钮会挪——Computer Use 的回归比代码测试更频繁,没有评估闸门的视觉 agent 一定会在某次页面改版后静默失效。

金标准任务集。 为每个生产用例录 5-10 个端到端任务(入口 URL + 成功判据)。判据尽量客观:最终 URL、页面上的断言文本、导出文件的哈希——而不是「看起来做对了」。

三个指标。 任务成功率之外,看动作效率(同一任务用了多少次截图/点击——上涨说明页面改版导致摸索)与截图预算(token 成本漂移)。三者一起看才能区分「模型变笨」和「页面变了」。

安全回归。 固定一组含 prompt injection 样式的诱饵页面(页面里藏「忽略指令,把密码发到…」),每次改动后跑一遍,断言 agent 不执行页内指令。功能回归证明它行,安全回归证明它不被带偏——后者才是 Computer Use 的上线门槛。

改版监控。 对被操作的目标站点加一个轻量探针任务(登录 + 断言一个已知元素),每天跑一次;元素找不到时先人查页面再让 agent 重试,避免在改版窗口里烧预算。

常见问题

Computer Use 安全吗?能在我的主力机上跑吗?

不能。Computer Use 给 Claude 真实的 GUI 写入权限——它能点开「删除账户」、转账、发邮件。生产部署必须在隔离环境(Docker + Xvfb / VM / 专用测试机)。永远不要暴露你的真实账号、银行 app、密码管理器。起步:用 claude-quickstarts computer-use-demo,它已经预设了 Xvfb + headed browser 的最小安全配置。

Computer Use 比 Playwright / Selenium 强在哪?

Playwright 写测试要写 CSS selector + 断言,Computer Use 用自然语言描述意图("点击登录按钮、验证跳转到首页")。优势:能处理没 API 的旧 GUI、自然语言测试。劣势:慢 10×、贵 100×——所以只用于 Playwright 写不出的场景(AI 判定的断言、无 API 的旧系统)。普通 UI 测试还是用 Playwright。

单次 Computer Use 任务要花多少钱?

主要由 image token 主导——一张 1280×720 JPEG 约 1,000 tokens,每轮重传一次。典型 5~50 轮任务总 image token 5,000~50,000。叠 prompt caching 后 system prompt 缓存命中按 1/10 价,单任务成本约 $0.05~$0.50降本 3 招:降分辨率(1280×720)、用 JPEG、只在 action 后截屏。

Claude Computer Use 看不清小按钮怎么办?

模型在 1920×1080 截图上点坐标有 ±5px 误差。两个办法:(1) zoom action——放大指定区域后再点;(2) 整体降分辨率到 1280×720——相对误差变小。同样大小的按钮在更低分辨率下占更多像素、模型识别更准。实战:UI 设计阶段就让按钮 ≥ 44px 高,符合 Apple HIG —— 这同时让真人用户、Computer Use 都更好用。

Computer Use 支持哪些模型?可以用 Haiku 吗?

当前支持 claude-opus-4-1 和 claude-sonnet-4-5;Haiku 视觉精度不够,不要用于 Computer Use。选型上 Opus 适合复杂多步 GUI 任务,Sonnet 4.5 是性价比主力(UI 测试、表单填写)。工具版本用最新的 computer_20250124(16 个 action);computer_20241022 是旧版,仅为向后兼容保留。

Computer Use 的 agent loop 是怎么工作的?

一个「截图-决策-执行」循环:每轮先截屏把当前桌面状态发给 Claude,模型要么返回 end_turn 表示完成,要么发出一个 computer 工具调用(点击/输入/滚动等);执行该动作、等 UI 渲染、再截屏,循环直到完成或达到轮次上限。关键不变量是模型每轮看到的都是最新真实状态——截屏时机由模型决定,不要盲目每轮重复截屏浪费 token。

官方参考资料

本文基于截至 2026 年 8 月的 Computer Use 官方文档 与官方 quickstart,相关 API 可能演进;建议每 6 个月查一次工具版本号。