Управление компьютером (macOS)

Hermes Agent умеет работать с рабочим столом вашего Mac — кликать, печатать, прокручивать, перетаскивать — причём в фоне. Курсор остаётся на месте, фокус клавиатуры не перескакивает, macOS не переключает Spaces у вас под руками. Вы и агент трудитесь на одной машине одновременно.

В отличие от большинства реализаций computer-use, здесь подойдёт любая модель с поддержкой инструментов — Claude, GPT, Gemini или открытая модель на локальном vLLM-эндпоинте. Никакой завязки на нативную схему Anthropic.

Как это устроено

Набор инструментов computer_use общается по MCP через stdio с cua-driver — драйвером для macOS, который опирается на приватные SPI SkyLight (SLEventPostToPid, SLPSPostEventRecordTo) и accessibility-SPI _AXObserverAddNotificationAndCheckRemote, чтобы:

  • Отправлять синтезированные события напрямую в целевые процессы — без перехвата HID-событий и без скачка курсора.
  • Переключать активное состояние AppKit без поднятия окон — без смены Spaces.
  • Держать accessibility-деревья Chromium/Electron живыми, даже когда окна перекрыты.

Именно такая связка лежит в основе «фонового computer-use» в OpenAI Codex. cua-driver — её open-source-аналог.

Включение

Берите тот путь, который удобнее, — оба запускают один и тот же исходный установщик:

Вариант 1: отдельная команда CLI (самый прямой).

hermes computer-use install

Команда скачивает и запускает upstream-установщик 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. Мастер настройки запустит тот же upstream-установщик (как в варианте 1).

После установки — каким бы путём вы ни пошли:

  1. Выдайте разрешения macOS, когда система их запросит:
    • System Settings → Privacy & Security → Accessibility → разрешите доступ терминалу (или приложению Hermes).
    • System Settings → Privacy & Security → Screen Recording → разрешите ему же.
  2. Откройте сессию с включённым набором инструментов:
    hermes -t computer_use chat
    либо добавьте computer_use в список включённых наборов инструментов в ~/.hermes/config.yaml.

Как поддерживать cua-driver в актуальном состоянии

Проект cua-driver регулярно выпускает исправления (например, в v0.1.6 починили баг с фокусом окна Safari для сценариев на UTM). Hermes обновляет бинарник в двух местах, чтобы вы не застряли на устаревшем релизе:

  • hermes update — при обновлении самого Hermes, если cua-driver доступен в PATH, upstream-установщик повторно отрабатывает в конце апдейта. Для не-macOS и для тех, у кого cua-driver не установлен, это пустая операция.
  • hermes computer-use install --upgrade — ручное принудительное обновление. Запускает upstream-установщик независимо от того, стоит ли уже cua-driver. Пригодится, когда нужен свежий фикс, а ждать следующего обновления агента не хочется.

hermes computer-use status показывает установленную версию рядом с путём к бинарнику.

Короткий пример

Промпт пользователя: “Find my latest email from Stripe and summarise what they want me to do.”

План агента:

  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 (любая vision-модель)Поддерживаются многочастные tool-сообщения.
OpenAI (GPT-4+, GPT-5)Так же, как выше.
Локальный vLLM / LM Studio (vision-модель)Если модель поддерживает многочастный tool-контент.
Текстовые модели✅ (с ограничениями)Используйте mode="ax" для работы только по accessibility-дереву.

Скриншоты передаются вместе с результатами инструментов как части image_url в стиле OpenAI. Для Anthropic адаптер преобразует их в нативные image-блоки tool_result.

Безопасность

Hermes держит защиту в несколько слоёв:

  • Разрушительные действия (click, type, drag, scroll, key, focus_app) требуют подтверждения — либо интерактивно через диалог в CLI, либо через кнопки одобрения в шлюзе сообщений.
  • Жёстко заблокированные на уровне инструмента сочетания клавиш: очистка корзины, принудительное удаление, блокировка экрана, выход из системы, принудительный выход.
  • Жёстко заблокированные шаблоны ввода: curl | bash, sudo rm -rf /, fork-бомбы и тому подобное.
  • Системный промпт агента прямо ему запрещает: кликать по диалогам разрешений, печатать пароли, выполнять инструкции, вшитые в скриншоты.

Добавьте approvals.mode: manual в ~/.hermes/config.yaml, если хотите подтверждать каждое действие.

Экономия токенов

Скриншоты обходятся дорого. Hermes применяет четыре уровня оптимизации:

  • Вытеснение скриншотов — адаптер Anthropic держит в контексте только 3 последних снимка; более старые заменяются заглушками [screenshot removed to save context].
  • Обрезка на стороне клиента при сжатии — компрессор контекста распознаёт мультимодальные результаты инструментов и вырезает image-части из старых.
  • Подсчёт токенов с учётом изображений — каждое изображение считается примерно как 1500 токенов (фиксированная ставка Anthropic), а не по длине base64-строки.
  • Серверное редактирование контекста (только Anthropic) — когда оно включено, адаптер активирует clear_tool_uses_20250919 через context_management, и API Anthropic чистит старые результаты инструментов на своей стороне.

Сессия из 20 действий на дисплее 1568×900 обычно съедает около 30 тыс. токенов на скриншоты, а не около 600 тыс.

Ограничения

  • Только macOS. cua-driver работает на приватных SPI Apple, которых нет ни в Linux, ни в Windows. Для кроссплатформенной автоматизации GUI используйте набор инструментов browser.
  • Риск приватных SPI. Apple может изменить набор символов SkyLight в любом обновлении ОС. Зафиксируйте версию драйвера через переменную окружения HERMES_CUA_DRIVER_VERSION, если хотите воспроизводимости после очередного апдейта macOS.
  • Производительность. Фоновый режим медленнее переднего плана — события через SkyLight идут примерно 5–20 мс против прямой отправки HID. На скорости кликов агента это незаметно; заметно станет, если попробуете записать спидран.
  • Нет ввода паролей с клавиатуры. У type есть жёстко заблокированные шаблоны для команд оболочки; для паролей используйте системный автозаполнитель.

Конфигурация

Переопределить путь к бинарнику драйвера (тесты / CI):

HERMES_CUA_DRIVER_CMD=/opt/homebrew/bin/cua-driver
HERMES_CUA_DRIVER_VERSION=0.5.0    # необязательная фиксация версии

Полностью подменить бэкенд (для тестирования):

HERMES_COMPUTER_USE_BACKEND=noop   # пишет вызовы, без побочных эффектов

Устранение неполадок

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” — текст, который вы пытались ввести через type, совпал со списком опасных шаблонов оболочки. Разбейте команду на части или пересмотрите подход.

Смотрите также

ESC