Управление компьютером (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: включить набор инструментов в интерактивном режиме.
- Запустите
hermes tools, выберите🖱️ Computer Use (macOS)→cua-driver (background). - Мастер настройки запустит тот же upstream-установщик (как в варианте 1).
После установки — каким бы путём вы ни пошли:
- Выдайте разрешения macOS, когда система их запросит:
- System Settings → Privacy & Security → Accessibility → разрешите доступ терминалу (или приложению Hermes).
- System Settings → Privacy & Security → Screen Recording → разрешите ему же.
- Откройте сессию с включённым набором инструментов:
либо добавьтеhermes -t computer_use chatcomputer_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.”
План агента:
computer_use(action="capture", mode="som", app="Mail")— снимок Mail, где каждый пункт боковой панели, кнопка тулбара и строка письма пронумерованы.computer_use(action="click", element=14)— клик по полю поиска (элемент #14 из снимка).computer_use(action="type", text="from:stripe")computer_use(action="key", keys="return", capture_after=True)— отправка запроса и новый снимок экрана.- Клик по верхнему результату, чтение тела письма, краткое резюме.
Всё это время курсор остаётся там, где вы его оставили, а 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, совпал со списком опасных шаблонов оболочки. Разбейте команду на части или пересмотрите подход.
Смотрите также
- Универсальный навык:
macos-computer-use - Исходники cua-driver (trycua/cua)
- Автоматизация браузера для кроссплатформенных веб-задач.