Claude 计算机使用工具:AI 桌面自动化完整开发者指南
如果你能告诉 AI “打开 Firefox,导航到一个网站,填写表单,然后保存结果”——它真的能做到呢?不是通过脆弱的 Selenium 脚本,不是通过自定义 API 集成,而是像人类一样看着屏幕,使用鼠标和键盘。
这正是 Claude 的计算机使用工具所做的事情。
什么是计算机使用?
计算机使用是一个测试版 API 功能,让 Claude 可以通过以下方式与桌面环境交互:
- 截图捕获 — Claude 可以看到屏幕上的内容
- 鼠标控制 — 点击、拖拽、滚动
- 键盘输入 — 输入文本、按下快捷键
- 桌面自动化 — 与任何应用程序交互
关键词是任何。与传统自动化(用于浏览器的 Selenium、用于 macOS 的 AppleScript)不同,Claude 不需要特殊 API 或元素选择器。它查看屏幕上的像素并决定点击什么。就像你一样。
工作原理(Agent 循环)
计算机使用遵循简单的循环:
- 你给 Claude 发送任务 — “把一张猫的图片保存到桌面”
- Claude 请求工具操作 — “截一张屏”
- 你的应用程序执行 — 捕获屏幕,返回图像
- Claude 分析并请求下一个操作 — “点击坐标 (500, 300)”
- 重复直到任务完成
这个循环被称为 agent 循环。Claude 不断请求操作(截图、点击、输入、滚动),你的应用程序不断执行它们,直到 Claude 判断任务完成。
以下是开始使用的最简 API 调用:
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
tools=[
{
"type": "computer_20251124",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
"display_number": 1,
},
{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"},
{"type": "bash_20250124", "name": "bash"},
],
messages=[{
"role": "user",
"content": "Save a picture of a cat to my desktop."
}],
betas=["computer-use-2025-11-24"],
)
测试版头部 "computer-use-2025-11-24" 是必需的。三个工具(计算机、文本编辑器、bash)协同工作,让 Claude 完全控制环境。
可用操作
计算机使用工具支持丰富的交互操作:
基本操作
screenshot— 捕获当前显示left_click— 点击[x, y]坐标type— 输入文本字符串key— 按下键或组合键(如ctrl+s、alt+tab)mouse_move— 移动光标
增强操作(Claude 4.x 模型)
scroll— 向任意方向滚动并控制滚动量left_click_drag— 在坐标之间点击并拖拽right_click、middle_click— 其他鼠标按钮double_click、triple_click— 多次点击hold_key— 按住某个键一段时间wait— 在操作之间暂停
最新新增:缩放
在 Claude Opus 4.6、Sonnet 4.6 和 Opus 4.5 上可用:
zoom— 以全分辨率检查特定屏幕区域
这在 Claude 需要阅读小文字或识别细微 UI 细节时特别有用。
计算环境
Claude 不直接连接到你的电脑。你需要提供一个沙盒环境 — 通常是运行以下内容的 Docker 容器:
- 虚拟显示 — Xvfb(X 虚拟帧缓冲)渲染桌面
- 桌面环境 — 轻量级窗口管理器如 Mutter
- 应用程序 — Firefox、LibreOffice、文件管理器等
- 工具实现 — 将 Claude 的请求转换为实际鼠标/键盘操作的代码
Anthropic 提供了一个参考实现,所有这些都在 Docker 中预配置好了。这是最快的入门方式。
构建 Agent 循环
以下是处理来回交互的简化 agent 循环:
async def agent_loop(task: str, max_iterations: int = 10):
client = anthropic.Anthropic()
messages = [{"role": "user", "content": task}]
tools = [
{
"type": "computer_20251124",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
},
{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"},
{"type": "bash_20250124", "name": "bash"},
]
for _ in range(max_iterations):
response = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=4096,
messages=messages,
tools=tools,
betas=["computer-use-2025-11-24"],
)
messages.append({"role": "assistant", "content": response.content})
# Extract tool calls
tool_results = []
for block in response.content:
if block.type == "tool_use":
result = execute_tool(block.name, block.input)
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result,
})
if not tool_results:
return messages # Task complete
messages.append({"role": "user", "content": tool_results})
execute_tool 函数是你将实际截屏、鼠标点击和键盘输入连接到计算环境的地方。
坐标缩放:容易踩的坑
API 将图像限制为最长边最大 1568px。如果你的显示器更大(比如 1512x982),截图会被缩小采样——但 Claude 返回的坐标是基于较小的图像的。
你必须将坐标缩放回去:
import math
def get_scale_factor(width, height):
long_edge = max(width, height)
total_pixels = width * height
long_edge_scale = 1568 / long_edge
total_pixels_scale = math.sqrt(1_150_000 / total_pixels)
return min(1.0, long_edge_scale, total_pixels_scale)
scale = get_scale_factor(1512, 982)
# When Claude says "click at (450, 300)", scale it up:
def execute_click(x, y):
screen_x = x / scale
screen_y = y / scale
perform_click(screen_x, screen_y)
跳过这一步意味着 Claude 的点击会偏离目标。这是最常见的实现 bug。
更好结果的提示技巧
使用清晰、结构化的提示词时,计算机使用效果最佳:
-
要具体。 “打开 Firefox,进入 example.com,点击登录按钮”比”登录到网站”效果更好。
-
让 Claude 验证。 在提示词中添加:“每一步后,截图并评估是否达到了正确的结果。只有确认后才继续。”
-
使用键盘快捷键。 下拉菜单和滚动条可能难以点击。提示 Claude 改用
Tab、Enter和方向键。 -
提供示例。 对于可重复的任务,在提示词中包含示例截图和预期的工具调用。
-
使用 XML 标签处理凭据。 如果 Claude 需要登录,在
<robot_credentials>标签中传递凭据。但要小心——当 Claude 与不受信任的内容交互时,提示注入风险更高。
安全:认真对待
计算机使用有独特的安全风险:
- 通过屏幕内容进行提示注入。 Claude 读取屏幕上的所有内容。恶意网页可能显示覆盖你提示词的指令。
- 自主操作。 Claude 可能会点击链接、接受对话框或导航到你预期以外的地方。
- 凭据暴露。 如果 Claude 能在屏幕上看到密码或令牌,它们就会成为对话的一部分。
Anthropic 内置了标记截图中潜在提示注入的分类器。但最好的防御是隔离:
- 在专用虚拟机或 Docker 容器中以最小权限运行
- 不要在没有监督的情况下给予敏感账户的访问权限
- 将互联网访问限制在允许的域名列表内
- 对不可逆操作(购买、账户创建等)需要人工确认
可以构建什么
计算机使用最适合速度不是关键但自动化有价值的任务:
- 自动化测试 — 测试任何桌面应用程序,不仅仅是 Web 应用
- 数据收集 — 导航网站并提取信息
- 遗留系统集成 — 自动化没有 API 的应用程序中的工作流
- 表单填写 — 跨多个站点填写 Web 表单
- 研究工作流 — 从网络搜索、阅读和汇编信息
- QA 和监控 — 验证 UI 是否正确渲染
对于研究和数据收集工作流,像 Save 这样的工具很好地补充了计算机使用——一旦 Claude 导航到页面,将其转换为干净的 Markdown 就能给你结构化的、AI 就绪的内容,而不是原始截图。
当前限制
请注意这些测试版限制:
- 延迟。 每个操作都需要一次 API 调用、截图捕获和响应。比人类点击要慢。
- 视觉准确性。 Claude 可能误读小文字或误识别 UI 元素。新的缩放操作有帮助,但并不完美。
- 滚动。 在最新版本中有了显著改进,但复杂的滚动交互仍然可能不可靠。
- 电子表格。 单元格选择很棘手。尽可能使用键盘导航。
- 不在社交平台上创建账户。 Claude 故意不会在社交媒体上创建账户或冒充人类。
定价
计算机使用遵循标准工具使用定价:
- 系统提示开销: 466-499 个令牌
- 工具定义: 每个工具 735 个令牌(对于 Claude 4.x)
- 截图: 作为视觉令牌计费(根据分辨率而异)
- agent 循环中的每次 API 调用都是单独的计费请求
对于典型的 10 步任务,预计使用 15,000-50,000 个令牌,具体取决于截图大小和响应复杂性。
入门
- 尝试参考实现。 克隆 anthropic-quickstarts,运行 Docker 容器,进行实验。
- 从简单任务开始。 “打开文本编辑器,输入 Hello World,保存文件。” 在尝试复杂工作流之前先让 agent 循环运行起来。
- 添加防护措施。 设置迭代限制,验证坐标,记录每个操作,对任何不可逆操作添加人工确认。
- 优化提示词。 指令越好,Claude 需要的迭代次数越少——令牌成本也越低。
计算机使用代表了 AI API 可能性的根本性转变。与其为每个应用程序构建自定义集成,不如给 Claude 人类使用的相同界面——屏幕、鼠标和键盘——让它自己解决剩下的问题。
自动化的未来不是更多 API,而是能使用我们已有界面的 AI。