·技能与命令
把 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_px 与 display_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):
- 坐标系精度有限——模型看到 1920×1080 的截图,但实际点过去可能有 ±5px 误差。遇到按钮太小,先
zoom再点。 - Type 前先 click——确认输入框获得焦点再 type,否则可能丢字符。
- Wait 替代 sleep——如果 UI 在加载,用
waitaction(wait 1~2 秒)比在 Python 里time.sleep更稳。 - 截屏时机由模型决定——它会在执行 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 个旋钮:
- 降分辨率——
display_width_px=1280, display_height_px=720:模型依然能看清,token 省 40% - JPEG 替代 PNG——screenshot 存 JPEG(quality=80),大小降到 200KB
- 智能截屏节奏——只在 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。
官方参考资料
- Claude Computer Use 官方文档
- Computer Use Tool 参考(16 个 action 详解)
- Anthropic 3.5 + Computer Use 发布公告
- 官方 Computer Use demo quickstart
- 官方 Computer Use best practices
- Claude Cookbooks — tool_use 配套
本文基于截至 2026 年 8 月的 Computer Use 官方文档 与官方 quickstart,相关 API 可能演进;建议每 6 个月查一次工具版本号。