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

如果你能告訴 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": "Minibase 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 是否正確渲染

對於研究和資料收集工作流程,像 Minibase 這樣的工具很好地補充了電腦使用——一旦 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。

Continue reading

準備好更智慧地儲存了嗎?

一鍵將任意網頁轉換為 Markdown。

新增到 Chrome