大多數公司至少有一個完全沒有 API 的應用程式。先前課程中的工具無法觸及它,因為沒有任何東西可供它們呼叫。
Meridian 是一家虛構的工程顧問公司,擁有其中一個這樣的應用程式。那是一款名為 PlotDesk 的舊版繪圖管理軟體,同樣是虛構的。每逢星期五,都會有一個人花一整天的時間點擊相同的畫面,以匯出 PDF 繪圖集。PlotDesk 沒有 API,也沒有命令列。它只有視窗和按鈕。
電腦使用讓 Claude 能像人一樣,透過查看螢幕截圖並決定要點擊什麼、要輸入什麼文字,來透過這些視窗和按鈕操作 PlotDesk。
Meridian 希望 Claude 為專案 MEG-2026-0142 匯出今天的 PDF 繪圖集。
查看由誰執行每個動作
透過 API,Claude 永遠不會連接到桌面。Claude 所產生的只是一個包含工具呼叫的回應。您的程式是呼叫 Messages API 的 Python 程式。它在桌面上執行每個動作並回傳結果。
這就是迴圈。Claude 要求提供螢幕截圖。您的程式拍攝一張截圖,並以圖片的形式回傳。Claude 查看它,並傳送下一個動作,例如在特定座標上的點擊,或是要輸入的一些文字。您的程式執行該動作,迴圈會持續重複,直到任務完成為止。這就是您已經擁有的工具迴圈,只不過有些結果是螢幕截圖。
Meridian 的整個匯出過程總共花了七個動作。
| Claude 的動作 | 發生了什麼事 |
|---|---|
screenshot | Claude 找到 PlotDesk 視窗 |
left_click | 在專案編號欄位上 |
type | MEG-2026-0142 |
left_click | 在「開啟」上 |
screenshot | PlotDesk 顯示該專案:Pump Station Replacement,22 張圖紙 |
left_click | 在「匯出 PDF」上 |
screenshot | 狀態列顯示「Exported MEG-2026-0142_plots.pdf」 |
在專用容器中執行桌面
Claude 會根據螢幕上顯示的任何內容採取行動。網頁或圖片中的文字可能會覆寫您的指示,或導致 Claude 犯錯。為了限制單一錯誤動作可能造成的傷害程度,請為桌面提供一個只包含任務所需內容的專用容器或虛擬機器。請按以下方式設定:
- 每個工作階段都會獲得一個專用容器。
- 容器內不含任何憑證,也沒有從主機掛載的目錄。
- 容器只能連接到任務所使用的網路主機。
您的程式和您的 API 金鑰都留在容器之外。
撰寫動作,並讓 SDK 執行迴圈
Python 和 TypeScript SDK 都有一個名為 computer toolset 的類別。您可以對它進行子類別化,並為任務所需的每個動作撰寫一個方法。該類別會為您建立工具集的 tools 項目,且目前處於 beta 階段。在 Python 中,需要 1.12.0 版或更高版本的 SDK。
Meridian 實作了工具集中的三個動作:screenshot、left_click 和 type。任何您未實作的動作,都會以停用狀態傳送給 API。
每個方法都只有一行,將工作交給 backend 處理。那是您自己建立的包裝層,用來包裹任何控制桌面的東西,例如 VNC 用戶端或 xdotool。這個以 Python 和 TypeScript 撰寫的最小化 VNC 範例(在新分頁中開啟)是不錯的起點,但並非用於正式環境。
在 tools 中傳入您類別的一個實例,以及提示。Tool Runner 是一個 SDK 輔助工具,會為您執行迴圈,直到 Claude 回覆時不包含工具呼叫為止。
截至 2026 年 10 月,這個工具集(在新分頁中開啟)已在 Claude API 以及 Google Cloud 上的 Claude Models(由 Google 管理)上提供。Amazon Bedrock、Microsoft Foundry 以及 AWS 上的 Claude Platform 則擁有較早期的 beta 工具版本。這些版本採用不同的 tools 項目和 beta 標頭,即一種用來啟用 beta 功能的請求標頭。
讓一個人核准點擊和輸入
當您建立該實例時,請傳入一個名為 confirm 的函式。SDK 會在每個動作執行前呼叫它。如果它回傳 True,該動作就會執行。其他任何回傳值都會拒絕該動作,並告知 Claude 有人拒絕了該動作。
confirm 能看到動作及其輸入,但看不到螢幕畫面。正在觀看桌面的人可以看到 Claude 想點擊的位置上有什麼東西。因此 Meridian 會自動核准螢幕截圖,並將每個點擊和每個 type 動作都傳送給其操作員,也就是正在觀看桌面的人。
以下是 Meridian 的程式。其中有三個名稱來自 Meridian 自己的程式碼,而非 SDK:backend、ask_operator 和 TASK。ask_operator 會向操作員顯示該動作,並回傳他們的答案,而 TASK 則保存提示。
決定何時適合使用電腦使用
每一張螢幕截圖都會留在對話中,因此每一個步驟的成本都會比前一個步驟更高。所以,當軟體擁有 MCP 伺服器(一種將其功能以工具形式提供給 Claude 的服務)、API 或命令列時,請改用這些方式。電腦使用適用於沒有上述任何一種方式的軟體,例如 PlotDesk。
如果任務只侷限在網頁內,瀏覽器使用工具(在新分頁中開啟)是更貼切的選擇。它會直接讀取並操作網頁本身,不需要完整的桌面環境。
重點整理
- Claude 要求執行動作,而您的程式負責執行它們。
- 桌面在每個工作階段中都於專用容器中執行。
- 您只需實作任務所需的動作。
- Meridian 的
confirm函式會將每個點擊和每個type動作傳送給一個人來核准。 - 如果有直接的介面可用,就使用它;如果沒有,就使用電腦使用。