计算机控制(Computer Use)

计算机控制(Computer Use)

Computer Use 让 Claude 能够通过截图、鼠标和键盘控制与计算机环境交互,实现自主的桌面操作自动化。

Beta 功能:Computer Use 目前处于 beta 阶段,需要使用 beta 标头:

  • "computer-use-2025-01-24"(Claude 4 模型和 Claude Sonnet 3.7)
  • "computer-use-2024-10-22"(Claude Sonnet 3.5 [已弃用])

功能概览

Computer Use 是一项 beta 功能,让 Claude 能够与桌面环境交互。该工具提供:

  • 截图捕获:查看屏幕上当前显示的内容
  • 鼠标控制:点击、拖动和移动光标
  • 键盘输入:输入文本和使用键盘快捷键
  • 桌面自动化:与任何应用程序或界面交互

虽然 Computer Use 可以与 bash 和文本编辑器等其他工具结合使用以实现更全面的自动化工作流,但 Computer Use 特指计算机使用工具查看和控制桌面环境的能力。

模型兼容性

Computer Use 在以下 Claude 模型中可用:

模型工具版本Beta 标头
Claude 4 系列模型computer_20250124computer-use-2025-01-24
Claude Sonnet 3.7computer_20250124computer-use-2025-01-24
Claude Sonnet 3.5 v2(已弃用)computer_20241022computer-use-2024-10-22
模型优化:Claude 4 模型使用针对新架构优化的更新工具版本。Claude Sonnet 3.7 引入了额外功能,包括思维功能,可更深入地了解模型的推理过程。
版本兼容性:旧工具版本不保证与新模型向后兼容。始终使用与您的模型版本对应的工具版本。

安全注意事项

安全风险:Computer Use 是一项 beta 功能,具有与标准 API 功能不同的独特风险。这些风险在与互联网交互时会加剧。为了降低风险,请考虑采取以下预防措施:

  1. 隔离环境:使用具有最小权限的专用虚拟机或容器,以防止直接系统攻击或意外。
  2. 保护敏感数据:避免让模型访问敏感数据(如账户登录信息),以防止信息盗窃。
  3. 限制网络访问:将互联网访问限制在允许列表域名内,以减少接触恶意内容。
  4. 人工确认:对于可能导致重大现实后果的决策以及需要明确同意的任务(如接受 Cookie、执行金融交易或同意服务条款),请人工确认。

提示注入风险:在某些情况下,Claude 会遵循内容中发现的命令,即使它与用户的指令冲突。例如,网页或图像中包含的 Claude 指令可能会覆盖指令或导致 Claude 出错。

我们建议采取预防措施,将 Claude 与敏感数据和操作隔离,以避免与提示注入相关的风险。我们已经训练模型抵抗这些提示注入,并添加了额外的防御层。如果您使用我们的 Computer Use 工具,我们会自动在您的提示上运行分类器以标记潜在的提示注入实例。

如果您想选择退出并关闭此保护,请联系我们

最后,请告知最终用户相关风险,并在您自己的产品中启用 Computer Use 之前获得他们的同意。

快速开始

参考实现

我们提供了一个 Computer Use 参考实现,包含 Web 界面、Docker 容器、示例工具实现和代理循环。

更新说明:该实现已更新,包含适用于 Claude 4 模型和 Claude Sonnet 3.7 的新工具。请务必拉取最新版本的仓库以访问这些新功能。

基本使用示例

import anthropic

client = anthropic.Anthropic()

response = client.beta.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    tools=[
        {
          "type": "computer_20250124",
          "name": "computer",
          "display_width_px": 1024,
          "display_height_px": 768,
          "display_number": 1,
        },
        {
          "type": "text_editor_20250124",
          "name": "str_replace_editor"
        },
        {
          "type": "bash_20250124",
          "name": "bash"
        }
    ],
    messages=[
        {
            "role": "user",
            "content": "打开浏览器并访问 example.com"
        }
    ],
    betas=["computer-use-2025-01-24"]
)

工具定义

Computer 工具

{
    "type": "computer_20250124",
    "name": "computer",
    "display_width_px": 1024,  # 显示宽度(像素)
    "display_height_px": 768,   # 显示高度(像素)
    "display_number": 1         # X11 显示编号(可选)
}

支持的操作

Computer Use 工具支持以下操作:

操作说明示例
key按键盘按键{"action": "key", "text": "Return"}
type输入文本{"action": "type", "text": "Hello"}
mouse_move移动鼠标{"action": "mouse_move", "coordinate": [100, 200]}
left_click左键点击{"action": "left_click"}
left_click_drag拖动{"action": "left_click_drag", "coordinate": [300, 400]}
right_click右键点击{"action": "right_click"}
middle_click中键点击{"action": "middle_click"}
double_click双击{"action": "double_click"}
screenshot截图{"action": "screenshot"}
cursor_position获取光标位置{"action": "cursor_position"}

使用场景

1. Web 自动化

# 自动填写表单
response = client.beta.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=2048,
    tools=[computer_tool],
    messages=[{
        "role": "user",
        "content": "访问 example.com/signup,填写注册表单,用户名是 'testuser',邮箱是 'test@example.com'"
    }],
    betas=["computer-use-2025-01-24"]
)

2. 应用程序测试

# 自动化 UI 测试
response = client.beta.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=2048,
    tools=[computer_tool],
    messages=[{
        "role": "user",
        "content": "打开计算器应用,执行 123 + 456 的计算,验证结果是否为 579"
    }],
    betas=["computer-use-2025-01-24"]
)

3. 数据收集

# 从网站提取信息
response = client.beta.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=2048,
    tools=[computer_tool],
    messages=[{
        "role": "user",
        "content": "访问 news.example.com,收集首页的所有新闻标题"
    }],
    betas=["computer-use-2025-01-24"]
)

4. 工作流自动化

# 自动化办公任务
response = client.beta.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=2048,
    tools=[computer_tool, text_editor_tool, bash_tool],
    messages=[{
        "role": "user",
        "content": "打开 report.docx,找到所有包含 'TODO' 的段落,提取出来并保存到 todos.txt"
    }],
    betas=["computer-use-2025-01-24"]
)

最佳实践

1. 明确的指令

提供清晰、具体的步骤:

# ✅ 好的指令
"打开 Chrome 浏览器,访问 example.com,点击页面顶部的 'Login' 按钮,在用户名字段输入 'testuser'"

# ❌ 模糊的指令
"登录网站"

2. 错误处理

实现重试和错误恢复机制:

max_retries = 3
for attempt in range(max_retries):
    try:
        response = client.beta.messages.create(
            model="claude-sonnet-4-5",
            max_tokens=2048,
            tools=[computer_tool],
            messages=messages,
            betas=["computer-use-2025-01-24"]
        )
        break
    except Exception as e:
        if attempt == max_retries - 1:
            raise
        time.sleep(2 ** attempt)

3. 安全隔离

在隔离环境中运行:

# 使用 Docker 容器
docker run -it --rm \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e DISPLAY=$DISPLAY \
  anthropic/computer-use-demo

4. 监控和日志

记录所有操作以便调试和审计:

for block in response.content:
    if block.type == "tool_use":
        print(f"Tool: {block.name}")
        print(f"Input: {block.input}")

与其他工具结合

与 Bash 工具结合

tools = [
    {
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1024,
        "display_height_px": 768
    },
    {
        "type": "bash_20250124",
        "name": "bash"
    }
]

# Claude 可以在使用 computer use 的同时执行命令行操作

与文本编辑器结合

tools = [
    {
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1024,
        "display_height_px": 768
    },
    {
        "type": "text_editor_20250124",
        "name": "str_replace_editor"
    }
]

# Claude 可以编辑文件并在 UI 中查看结果

限制和注意事项

当前限制

  1. 性能:复杂的 UI 交互可能需要多次迭代
  2. 准确性:点击小目标或密集 UI 元素时可能不准确
  3. 文本识别:OCR 能力有限,可能无法识别所有文本
  4. 动态内容:处理动画或快速变化的内容可能有困难

不支持的操作

  • 访问需要特殊权限的系统资源
  • 直接操作硬件设备
  • 绕过操作系统安全限制
  • 与专有或加密内容交互

定价

Computer Use 工具使用的 token 计费方式:

  • 输入 token:按标准输入价格计费
  • 输出 token:按标准输出价格计费
  • 图像处理:截图按图像 token 计费

成本优化

  • 仅在必要时使用截图
  • 合理设置 max_tokens
  • 考虑使用更小的显示分辨率

常见问题

Q: Computer Use 可以在任何操作系统上工作吗?

A: Computer Use 主要针对 Linux 环境进行了优化和测试。虽然理论上可以在其他操作系统上工作,但我们建议使用 Linux(特别是在 Docker 容器中)以获得最佳体验。

Q: 如何处理需要人工确认的操作?

A: 在代理循环中实现人工确认机制:

if requires_confirmation(action):
    user_approval = input(f"确认执行: {action}? (y/n): ")
    if user_approval.lower() != 'y':
        continue

Q: Computer Use 可以访问互联网吗?

A: 可以,但强烈建议限制互联网访问到允许列表域名,以降低安全风险。

相关资源

下一步