← 返回部落格

Claude 電腦使用工具:AI 桌面自動化完整開發者指南

· Save Team
claudeaicomputer-useautomationapideveloperanthropic

如果你能告訴 AI「開啟 Firefox,導航到一個網站,填寫表單,然後儲存結果」——它真的能做到呢?不是透過脆弱的 Selenium 腳本,不是透過自訂 API 整合,而是像人類一樣看著螢幕,使用滑鼠和鍵盤。

這正是 Claude 的電腦使用工具所做的事情。

什麼是電腦使用?

電腦使用是一個測試版 API 功能,讓 Claude 可以透過以下方式與桌面環境互動:

  • 截圖擷取 — Claude 可以看到螢幕上的內容
  • 滑鼠控制 — 點擊、拖曳、捲動
  • 鍵盤輸入 — 輸入文字、按下快捷鍵
  • 桌面自動化 — 與任何應用程式互動

關鍵詞是任何。與傳統自動化(用於瀏覽器的 Selenium、用於 macOS 的 AppleScript)不同,Claude 不需要特殊 API 或元素選擇器。它查看螢幕上的像素並決定點擊什麼。就像你一樣。

運作原理(Agent 迴圈)

電腦使用遵循簡單的迴圈:

  1. 你給 Claude 發送任務 — 「把一張貓的圖片儲存到桌面」
  2. Claude 請求工具操作 — 「截一張圖」
  3. 你的應用程式執行 — 擷取螢幕,回傳圖像
  4. Claude 分析並請求下一個操作 — 「點擊座標 (500, 300)」
  5. 重複直到任務完成

這個迴圈被稱為 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+salt+tab
  • mouse_move — 移動游標

增強操作(Claude 4.x 模型)

  • scroll — 向任意方向捲動並控制捲動量
  • left_click_drag — 在座標之間點擊並拖曳
  • right_clickmiddle_click — 其他滑鼠按鈕
  • double_clicktriple_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。

更好結果的提示技巧

使用清晰、結構化的提示詞時,電腦使用效果最佳:

  1. 要具體。 「開啟 Firefox,進入 example.com,點擊登入按鈕」比「登入到網站」效果更好。

  2. 讓 Claude 驗證。 在提示詞中加入:「每一步後,截圖並評估是否達到了正確的結果。只有確認後才繼續。」

  3. 使用鍵盤快捷鍵。 下拉選單和捲動條可能難以點擊。提示 Claude 改用 TabEnter 和方向鍵。

  4. 提供範例。 對於可重複的任務,在提示詞中包含範例截圖和預期的工具呼叫。

  5. 使用 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 個令牌,具體取決於截圖大小和回應複雜性。

入門

  1. 嘗試參考實作。 複製 anthropic-quickstarts,執行 Docker 容器,進行實驗。
  2. 從簡單任務開始。 「開啟文字編輯器,輸入 Hello World,儲存檔案。」在嘗試複雜工作流程之前先讓 agent 迴圈運行起來。
  3. 新增防護措施。 設定迭代限制,驗證座標,記錄每個操作,對任何不可逆操作新增人工確認。
  4. 優化提示詞。 指令越好,Claude 需要的迭代次數越少——令牌成本也越低。

電腦使用代表了 AI API 可能性的根本性轉變。與其為每個應用程式建構自訂整合,不如給 Claude 人類使用的相同介面——螢幕、滑鼠和鍵盤——讓它自己解決剩下的問題。

自動化的未來不是更多 API,而是能使用我們已有介面的 AI。