H繁中版
文件user-guidecomputer use
<!-- Source: https://hermesbible.com/docs/user-guide/features/computer-use -->

Section: 核心功能 · URL: https://hermesbible.com/docs/user-guide/features/computer-use

電腦使用 (macOS)

Hermes Agent 能在背景中操控你的 Mac 桌面——包括點擊、輸入、滾動和拖曳。你的游標不會移動,鍵盤焦點不會改變,macOS 不會切換空間。你和代理程式在同一台機器上協同工作。

與大多數電腦使用整合不同,這適用於任何支援工具的模型——Claude、GPT、Gemini,或本地 vLLM 端點上的開放模型。無需擔心 Anthropic 原生的架構。

運作方式

computer_use 工具集透過 stdio(標準輸入輸出)與 cua-driver 進行 MCP(模型上下文協議)通訊。這是一個 macOS 驅動程式,使用 SkyLight 私有 SPI(系統程式介面,SLEventPostToPidSLPSPostEventRecordTo)和 _AXObserverAddNotificationAndCheckRemote 無障礙 SPI 來:

  • 直接向目標行程發布合成事件——無需 HID(人機介面裝置)事件擷取,無需游標跳轉。
  • 在不提升視窗的情況下切換 AppKit 活動狀態——無需切換空間。
  • 在視窗被遮擋時保持 Chromium/Electron 無障礙樹狀結構活躍。

這種組合正是 OpenAI Codex「背景電腦使用」所採用的方案。cua-driver 是其開源等效方案。

啟用

選擇最方便的方式——兩者都會執行相同的上游安裝程式:

選項 1:專用 CLI(命令列介面)命令(最直接)。

hermes computer-use install

這會抓取並執行上游 cua-driver 安裝程式: curl -fsSL https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.sh。 使用 hermes computer-use status 來驗證安裝。

選項 2:互動式啟用工具集。

  1. 執行 hermes tools,選擇 🖱️ Computer Use (macOS)cua-driver (background)
  2. 設定過程會執行上游安裝程式(與選項 1 相同)。

安裝後,無論你選擇哪種方式:

  1. 在提示時授予 macOS 權限:
    • 系統設定 → 隱私權與安全性 → 無障礙 → 允許終端機(或 Hermes 應用程式)。
    • 系統設定 → 隱私權與安全性 → 螢幕錄製 → 允許相同的應用程式。
  2. 啟動啟用工具集的會話:
    hermes -t computer_use chat
    
    或在 ~/.hermes/config.yaml 中將 computer_use 加入啟用的工具集。

保持 cua-driver 更新

cua-driver 專案定期發布修復(例如 v0.1.6 修復了 UTM 工作流程中的 Safari 視窗焦點錯誤)。Hermes 在兩個地方刷新二進位檔,讓你不會卡在過時的版本:

  • hermes update——當你更新 Hermes 本身時,如果 cua-driver 在 PATH 中,上游安裝程式會在更新結束時重新執行。對於非 macOS 用戶和未安裝 cua-driver 的用戶,此操作無效。
  • hermes computer-use install --upgrade——手動強制刷新。無論 cua-driver 是否已安裝,都會重新執行上游安裝程式。當你想立即取得最新修復而不等待下一次代理程式更新時,請使用此命令。

hermes computer-use status 會在二進位檔路徑旁顯示已安裝的版本。

快速範例

用戶提示:「找出我來自 Stripe 的最新電子郵件,並總結他們希望我做什麼。

代理程式的計畫:

  1. computer_use(action="capture", mode="som", app="Mail")——獲取帶有每個側邊欄項目、工具列按鈕和郵件列編號的 Mail 螢幕截圖。
  2. computer_use(action="click", element=14)——點擊搜尋欄位(從擷取中取得的元素 #14)。
  3. computer_use(action="type", text="from:stripe")
  4. computer_use(action="key", keys="return", capture_after=True)——提交並獲取新的螢幕截圖。
  5. 點擊頂部結果,閱讀郵件內容,進行總結。

在此過程中,你的游標會停留在原處,Mail 永遠不會跳到前景。

供應商相容性

供應商視覺?可用?備註
Anthropic (Claude Sonnet/Opus 3+)整體最佳;SOM + 原始座標。
OpenRouter (任何視覺模型)支援多部分工具訊息。
OpenAI (GPT-4+, GPT-5)同上。
本地 vLLM / LM Studio (視覺模型)如果模型支援多部分工具內容。
純文字模型✅ (降級)使用 mode="ax" 進行僅無障礙樹狀結構操作。

螢幕截圖以 OpenAI 風格的 image_url 部分內聯發送於工具結果中。對於 Anthropic,轉換器將其轉換為原生 tool_result 圖像區塊。

安全性

Hermes 應用多層護欄:

  • 破壞性操作(點擊、輸入、拖曳、滾動、按鍵、focus_app)需要批准——可透過 CLI 對話框互動式批准,或透過訊息平台的批准按鈕。
  • 工具層級硬性封鎖的按鍵組合:清空垃圾桶、強制刪除、鎖定螢幕、登出、強制登出。
  • 硬性封鎖的輸入模式:curl | bashsudo rm -rf /、fork 炸彈等。
  • 代理程式的系統提示明確告訴它:不要點擊權限對話框,不要輸入密碼,不要遵循嵌入在螢幕截圖中的指令。

如果你希望每個操作都經過確認,請在 ~/.hermes/config.yaml 中設定 approvals.mode: manual

Token 效率

螢幕截圖成本高昂。Hermes 應用四層優化:

  • 螢幕截圖淘汰——Anthropic 轉換器僅在上下文中保留最近 3 個螢幕截圖;較舊的會變為 [screenshot removed to save context] 佔位符。
  • 客戶端壓縮修剪——上下文壓縮器偵測多模態工具結果,並從較舊的結果中移除圖像部分。
  • 圖像感知 token 估算——每個圖像計為約 1500 個 token(Anthropic 的固定費率),而不是其 base64 字元長度。
  • 伺服器端上下文編輯(僅限 Anthropic)——啟用時,轉換器透過 context_management 啟用 clear_tool_uses_20250919,讓 Anthropic 的 API 在伺服器端清除舊的工具結果。

在 1568×900 顯示器上進行 20 個操作的會話,通常花費約 30K token 的螢幕截圖上下文,而不是 600K。

限制

  • 僅限 macOS。 cua-driver 使用 Linux 或 Windows 上不存在的私有 Apple SPI。對於跨平台 GUI 自動化,請使用 browser 工具集。
  • 私有 SPI 風險。 Apple 可以在任何作業系統更新中更改 SkyLight 的符號表面。如果你想在 macOS 升級時保持可重複性,請使用 HERMES_CUA_DRIVER_VERSION 環境變數固定驅動程式版本。
  • 效能。 背景模式比前景模式慢——SkyLight 路由事件約需 5-20 毫秒,而直接 HID 發布則更快。對於代理程式速度的點擊,這種差異不明顯;但如果你嘗試錄製速度運行,可能會注意到。
  • 無鍵盤密碼輸入。 type 對命令列載荷有硬性封鎖模式;對於密碼,請使用系統的自動填充功能。

設定

覆蓋驅動程式二進位檔路徑(測試 / CI):

HERMES_CUA_DRIVER_CMD=/opt/homebrew/bin/cua-driver
HERMES_CUA_DRIVER_VERSION=0.5.0    # optional pin

完全替換後端(用於測試):

HERMES_COMPUTER_USE_BACKEND=noop   # records calls, no side effects

疑難排解

computer_use backend unavailable: cua-driver is not installed——執行 hermes computer-use install 來抓取 cua-driver 二進位檔,或執行 hermes tools 並啟用 Computer Use 工具集。

點擊似乎無效——擷取並驗證。你可能未看到的模態視窗正在阻擋輸入。使用 escape 或關閉按鈕將其關閉。

元素索引過時——SOM 索引僅在下一次 capture 之前有效。在任何改變狀態的操作後,請重新擷取。

「blocked pattern in type text」——你嘗試輸入的文字符合危險 shell 模式清單。請拆分命令或重新考慮。

另請參閱



交付模式