Управление компьютером
Hermes Agent умеет управлять вашим рабочим столом — кликать, печатать, прокручивать, перетаскивать — в фоновом режиме на macOS, Windows и Linux. Курсор мыши не двигается, фокус клавиатуры не переключается, а виртуальные рабочие столы / Spaces остаются на месте. Вы и агент работаете на одной машине одновременно, не мешая друг другу.
В отличие от большинства интеграций для управления компьютером, эта работает с любой моделью, поддерживающей инструменты — Claude, GPT, Gemini или открытой моделью на локальном OpenAI-совместимом эндпоинте. Никакой привязки к нативной схеме Anthropic здесь нет.
Как это устроено
Встроенный набор инструментов computer_use — рекомендуемый способ
интеграции Hermes. Он общается по MCP через stdio с
cua-driver — открытым драйвером для
фонового управления компьютером. Под капотом каждая платформа задействует
свой стек accessibility и ввода:
| Платформа | Дерево accessibility | Отправка ввода |
|---|---|---|
| macOS | AX (приватные SkyLight SPI) | SLPSPostEventRecordTo — привязано к pid, курсор не перемещается |
| Windows | UIAutomation | SendInput + PostMessage — фокус не перехватывается |
| Linux | AT-SPI (X11 + Wayland) | XTest (X11) / virtual-keyboard (Wayland) |
Итог одинаков на всех платформах: агент читает дерево accessibility любого видимого окна и отправляет синтезированные события, не выводя окно на передний план, не переключая виртуальные рабочие столы и не трогая реальный курсор ОС.
За разбором лежащего в основе контракта — почему важен фоновый режим, что такое инвариант “без переднего плана” и как устроена диспетчеризация кликов изнутри — обращайтесь к cua.ai/docs/explanation/the-no-foreground-contract.
На какой машине это работает
computer_use действует на той же машине, где находится экран бота, и никогда
на машине, где запущен Hermes Desktop. На шлюзе с terminal.backend: local
это хост шлюза. С терминалом в песочнице (docker, ssh, singularity)
драйвер работает внутри песочницы, на её собственном дисплее, поэтому
дотянуться он может только до того, до чего дотягивается терминал. В образе
песочницы должен быть cua-driver (в nousresearch/hermes-sandbox:desktop
он есть). Песочницы Modal, Daytona и Vercel пока не умеют держать дисплей:
с этими бэкендами computer_use отказывает, если не задать
bot_desktop.placement: gateway и тем самым разрешить управлять хостом.
Подробности: Экран бота → Где работает экран.
Включение
Драйвер поставляется вместе с Hermes. cua-driver закреплён в
pm/lock.json и входит в набор PM-пакетов по умолчанию: инсталляторы, голый
hermes pm install и hermes update ставят его на любой цели с macOS,
Windows и glibc Linux (сборок cua-driver для musl и Android нет). В бандл
десктопного приложения он тоже входит. Чтобы его не ставить, передайте
--skip-computer-use в POSIX или -SkipComputerUse в Windows (или запустите
hermes pm install --without cua-driver). Hermes запомнит этот выбор, а
hermes pm install cua-driver его отменит.
Если загрузка не удалась или вы раньше отказались от драйвера, поставит его любой из этих способов:
hermes tools→ выберите🖱️ Computer Use— если драйвера всё ещё нет, он установится автоматически.- Дашборд / десктопное приложение → включите набор инструментов Computer Use — если драйвер не найден, переключатель сам запустит установку в фоне (прогресс виден в панели наборов инструментов).
Ручная установка / починка:
hermes computer-use install
Эта команда просит PM подготовить закреплённый пакет cua-driver (с проверкой
по pm/lock.json) — апстрим-инсталлятор она не запускает. Проверить установку
можно командой hermes computer-use status.
Уже есть cua-driver? Hermes переиспользует его, если он поддерживает
runtime-контракт версии 0.20. Во время настройки, включения набора
инструментов, hermes update и при первом вызове computer_use за сессию
Hermes проверяет локальную версию и манифест. Устаревшую или неполную
стандартную установку он чинит через PM (не чаще раза за
сессию в рантайме). Бинарник, выбранный через HERMES_CUA_DRIVER_CMD,
остаётся под вашим контролем — Hermes лишь сообщит о несовместимости и
не станет его трогать.
Если вы устанавливаете Cua Driver первым, cua-driver skills install
ставит пакет навыков Cua в ~/.cua-driver/skills/cua-driver.
Автообнаружение Hermes — запланированный следующий шаг cua-driver, поэтому
пока направьте Hermes на этот каталог или создайте на него символическую
ссылку в своём пространстве навыков. Можно также зарегистрировать сырые
MCP-инструменты Cua как собственный MCP-сервер, но это альтернатива для тех,
кому нужен низкоуровневый интерфейс. Встроенный набор инструментов даёт
действия, конфигурацию, подтверждения и диагностику на стороне Hermes.
После установки, независимо от выбранного пути, выдайте платформенные разрешения:
| Платформа | Требования |
|---|---|
| macOS | Системные настройки → Конфиденциальность и безопасность → Универсальный доступ + Запись экрана. Выдайте разрешение той сущности, которую назовёт hermes computer-use doctor (CuaDriver, com.trycua.driver, в любом режиме разрешений — демон драйвера всегда запускается через CuaDriver.app). |
| Windows | Никаких при установке. Если вы работаете через SSH (не RDP / консоль), понадобится паттерн автозапуска — см. cua.ai/docs/how-to-guides/driver/windows-ssh про прокси Session 0 ↔ Session 1+. |
| Linux | Доступный дисплейный сервер: переменная DISPLAY для X11, либо XDG_SESSION_TYPE=wayland. Сессиям Wayland нужен мост XWayland для захвата экрана. AT-SPI должен быть включён (по умолчанию включён в GNOME/KDE/Xfce). |
Затем запустите сессию с включённым набором инструментов:
hermes -t computer_use chat
либо добавьте computer_use в список включённых наборов инструментов в
~/.hermes/config.yaml.
Режимы разрешений и профили браузера с активной сессией входа
Hermes проецирует свой обычный UX подтверждений на неизменяемые runtime-режимы cua-driver. Режим разрешений и подтверждение манифеста возможностей — это настройки запуска. После старта рантайма изменить их нельзя:
| Сессия Hermes | Режим cua-driver | Вмешательство человека |
|---|---|---|
| Ручные или smart-подтверждения (по умолчанию) | standard | Обычные подтверждения Hermes; Cua останавливается на своей защищённой границе |
computer_use.permission_mode: bounded + проверенный манифест | приватный демон bounded | Вы один раз при запуске просматриваете и подтверждаете манифест возможностей |
--yolo, /yolo или approvals.mode: off | приватный демон unrestricted | Одно явное принятие риска в Hermes; runtime-запросов Cua нет |
Работа с браузером — включая страницы в профиле с активной сессией входа —
идёт через набор инструментов browser (browser_exec), а не через
computer_use. Прежний опт-ин computer_use.grant_existing_profile убран
вместе с типизированным браузерным маршрутом; оставшийся ключ в config.yaml
просто игнорируется.
Режим bounded для повторяемой автоматизации
Для регулярной автоматизации браузера (cron-задачи, плановые исследования в
авторизованном приложении) режим bounded использует манифест возможностей,
который вы проверяете один раз:
# config.yaml
computer_use:
permission_mode: bounded
capability_manifest: ~/.hermes/cua-manifest.yaml
Манифест перечисляет приложения, виды профилей браузера, разрешённые origin
и типизированные инструменты, которыми может пользоваться сессия (формат — в
справочнике по режимам разрешений cua-driver).
Hermes запускает приватный рантайм с флагами
--capability-manifest ... --approve-capability-manifest; всё, что выходит
за рамки манифеста, блокируется внутри cua-driver по умолчанию.
Отсутствующий или нечитаемый манифест приводит к явному сбою при старте
сессии, а не к тихому понижению режима. Сессионный YOLO по-прежнему
перекрывает bounded для этой конкретной сессии.
На macOS приватные демоны для сессии запускаются через установленный бандл
CuaDriver.app (так гранты разрешений привязываются к идентичности самого
драйвера, а не сбрасываются с каждой сборкой Hermes), и перед запуском
Hermes проверяет подпись кода этого бандла — точный идентификатор
com.trycua.driver и официальную подписывающую команду. Если вы собираете
cua-driver из исходников (без подписи), включите явный опт-ин:
# config.yaml
computer_use:
allow_unsigned_driver: true # только для локальной разработки драйвера
Каждый MCP-транспорт владеет приватной сессией жизненного цикла внутри
своего рантайма. Публичное имя сессии — это лишь метка для принадлежности
курсора и состояния в рамках сессии. Оно не выбирает рантайм, не делится им
и не поддерживает его живым. Отключение /yolo, сброс или закрытие сессии
Hermes, очистка при отмене или завершение процесса закрывают эту
транспортную сессию. Hermes также останавливает приватные рантаймы, которые
сам запустил для доступа bounded или unrestricted. Один
диалог Hermes не может изменить режим или гранты чужого рантайма. Режимы
bounded и unrestricted используют приватный встроенный демон, который на macOS
запускается через CuaDriver.app (см. выше).
Подтверждение smart остаётся standard: классификация LLM не может
заменить проверенный манифест.
Режим YOLO/unrestricted не защищает от prompt injection и непреднамеренного ввода. Используйте его только в одноразовой VM или с аккаунтами и данными, полную компрометацию которых вы готовы принять.
hermes computer-use doctor — первая точка диагностики
hermes computer-use doctor запускает структурированный MCP-инструмент
health_report из cua-driver и выводит матрицу проверок. Это самый
быстрый способ понять, почему конкретное действие не срабатывает.
$ hermes computer-use doctor
⚠️ cua-driver VERSION on darwin: degraded
✅ binary_version: cua-driver VERSION
✅ platform_supported: macOS 26.4.1 (arm64)
✅ session_active: MCP session is active.
❌ bundle_identity: Process has no CFBundleIdentifier.
→ Run the binary inside CuaDriver.app so TCC grants attribute correctly.
✅ tcc_accessibility: Accessibility is granted.
✅ tcc_screen_recording: Screen Recording is granted.
✅ ax_capability: AX is trusted and reachable.
✅ screen_capture_capability: ScreenCaptureKit reachable; 1 display(s) shareable.
- Код выхода 0, когда общий статус
ok— всё настроено. - Код выхода 1, когда статус
degradedилиfailed— хотя бы одна проверка провалилась; подсказка при каждой ошибке говорит, что чинить. - Код выхода 2, когда сам бинарник cua-driver недоступен.
Полезные флаги:
--include ПРОВЕРКА— выполнить только перечисленные проверки (флаг можно повторять)--skip ПРОВЕРКА— пропустить проверку (имеет приоритет над--include)--json— вывести сырой структурированный ответ, той же формы, что и MCP-ответtools/call health_report
Матрица проверок учитывает платформу: bundle_identity / tcc_* получают
статус skip на Windows и Linux, поскольку там таких понятий нет.
ax_capability проверяет AX на macOS, UIA на Windows и AT-SPI на Linux —
для каждой платформы с собственной диагностической подсказкой при сбое.
На Linux, где демон — это написанный вручную пользовательский юнит systemd
или запись автозапуска XDG, а не управляемый автозапуск, doctor читает и эти
юниты: ExecStart для cua-driver, указывающий на удалённый при чистке
каталог packages/releases/<version>/, отмечается как проваленная проверка
daemon unit (...) (направьте его на ~/.cua-driver/packages/current/cua-driver),
а для юнита, запускающего cua-driver serve, выполняется проверка
daemon (...), которая подключается к его сокету: fail, когда никто не
слушает (цикл падений, остановлен, так и не запускался), pass, когда демон
отвечает. Переустановка драйвера демон не запускает — это делает
systemctl --user status <unit>. hermes computer-use status печатает ту же
строку о мёртвом демоне и завершается с кодом 1.
Курсор агента и сессии
Пока агент действует, вы увидите подсвеченный оверлейный курсор,
скользящий по экрану к месту каждого клика / ввода текста / прокрутки.
Реальный курсор ОС никогда не двигается. Оверлей просто показывает, где
сейчас действует агент. Каждый запуск Hermes объявляет публичное имя
сессии cua-driver (что-то вроде hermes-3a7b9c14d2e8). Имя обозначает
принадлежность курсора и связанное с ним состояние, так что параллельные
запуски и субагенты получают разные курсоры. Приватной сессией жизненного
цикла внутри рантайма владеет MCP-транспорт — публичное имя к ней
отношения не имеет.
Оверлейный курсор чисто косметический — захват экрана, клики и ввод текста
работают и без него. Hermes отключает его автоматически там, где он
известен своими сбоями: на macOS (холостая нагрузка на CPU), в безголовом
Linux / WSL2 / контейнерах и на десктопах Linux с X11 (оверлей — это
полноэкранное окно поверх всех остальных, которое после неаккуратного
завершения сессии может застрять над всеми рабочими пространствами и
заблокировать ввод на рабочем столе). В Linux с Wayland и в Windows оверлей
остаётся включённым. Чтобы принудительно включить курсор на любой
платформе, задайте computer_use.no_overlay: false в config.yaml (или
true, чтобы принудительно выключить).
Настроить курсор можно через флаги CLI cua-driver или runtime-инструмент
MCP set_agent_cursor_style — полный перечень опций (встроенные силуэты
arrow и teardrop, собственные SVG / PNG / ICO через --cursor-icon,
цвета градиента и эффект свечения во время выполнения) смотрите на
cua.ai/docs/how-to-guides/driver/personalize-cursor.
Углубляемся — пакет навыков cua-driver
Hermes держит собственный навык-обёртку
(skills/autonomous-ai-agents/computer-use/SKILL.md) сфокусированным на
рабочем процессе и словаре действий computer_use со стороны Hermes. За
платформенными деталями, семантикой записи, взаимодействием со страницами
браузера и прочим глубоким поведением Cua ставьте пакет навыков, который
команда cua-driver выпускает и поддерживает самостоятельно:
cua-driver skills install
Команда линкует пакет в ~/.hermes/skills/cua-driver (Hermes — один из
агентов, которых показывает cua-driver skills status). Навык-обёртка остаётся
слоем рабочего процесса: пакет описывает собственный MCP-словарь драйвера
(get_window_state, element_token, snapshot_id), а обёртка computer_use
переводит в него за вас — продолжайте вызывать computer_use(action=...). Пакет
содержит:
| Файл | Тема |
|---|---|
SKILL.md | Кросс-платформенное ядро (инвариант снапшота, контракт “без переднего плана”, диспетчеризация кликов, механика AX-дерева) |
MACOS.md | Специфика macOS: контракт “без переднего плана”, навигация по AXMenuBar, диспетчеризация кликов SkyLight, JS-мост Apple Events |
WINDOWS.md | Специфика Windows: дерево UIA, хостинг UWP / ApplicationFrameHost, изоляция Session 0, паттерн автозапуска |
LINUX.md | Специфика Linux: дерево AT-SPI, X11 / Wayland, определение эмулятора терминала |
RECORDING.md | Семантика записи траекторий и видео |
WEB_APPS.md | Советы по взаимодействию со страницами браузера |
TESTS.md | Рабочий процесс воспроизведения по траектории |
Это платформенные углублённые материалы, а не дубликаты навыка Hermes —
когда агент сообщает “на Windows мой клик попал не туда”, он читает
WINDOWS.md, чтобы понять контекст UIA / UWP: почему так вышло и что
сделать иначе.
cua-driver skills status показывает, что установлено и в какие среды
выполнения агентов это связано. Сегодня список автообнаружения включает
Claude Code, Codex, OpenCode, OpenClaw и Antigravity; автообнаружение
Hermes запланировано как следующий шаг в trycua/cua — а пока просто
один раз выполните cua-driver skills install и направьте свою среду
выполнения на каталог ~/.cua-driver/skills/cua-driver (либо создайте на
него символическую ссылку в привычном месте для навыков).
Быстрый пример
Промпт пользователя: “Найди моё последнее письмо от Stripe и перескажи, чего они от меня хотят.”
План агента (форма одна и та же на macOS / Windows / Linux — модель просто подставляет платформенное сочетание клавиш и название приложения):
computer_use(action="capture", mode="som", app="Mail")— делает снимок экрана почтового приложения с пронумерованными пунктами боковой панели, кнопками панели инструментов и строками писем.computer_use(action="click", element=14)— клик по полю поиска.computer_use(action="type", text="from:stripe")computer_use(action="key", keys="return", capture_after=True)— подтверждение и новый снимок экрана.- Клик по первому результату, чтение тела письма, пересказ.
Всё это время ваш курсор остаётся там, где вы его оставили, а почтовое приложение так и не выходит на передний план.
Как получить сам скриншот
Скриншоты, снятые при управлении компьютером, обычно остаются внутренними: они нужны модели, чтобы видеть экран, а вам агент отвечает текстом. Но при каждом захвате изображения в кэш картинок Hermes попадает ещё и ограниченная по объёму копия, пригодная для отправки, и её путь агент знает. Поэтому там, где канал поддерживает вложения (Telegram, Discord, десктоп и другие платформы шлюза), достаточно попросить:
«Пришли мне скриншот моего экрана».
и агент отдаст настоящую картинку вложением, а не её описание. В CLI канала для вложений нет, так что там агент назовёт путь к сохранённому файлу.
Хранятся только 20 последних файлов захвата, и сами по себе скриншоты никогда не уходят — только когда вы о них попросите.
Целый экран vs. поверхность рабочего стола
«Сделай скриншот моего экрана» захватывает вообще всё, что сейчас отображается — композитный снимок всех видимых окон, как по PrtScn. На этом изображении нет кликабельных элементов, поэтому чтобы подействовать на что-то внутри него, агент заново захватывает конкретное приложение.
Запрос на снимок рабочего стола нацелен на саму поверхность оболочки ОС — обои, значки рабочего стола, панель задач — с её кликабельными элементами, так что запросы вроде «открой Корзину на рабочем столе» по-прежнему работают.
Совместимость с провайдерами
| Провайдер | Зрение? | Работает? | Примечания |
|---|---|---|---|
| Anthropic (Claude Sonnet/Opus 3+) | ✅ | ✅ | Лучший вариант в целом; поддержка SOM и сырых координат. |
| OpenRouter (любая модель с поддержкой зрения) | ✅ | ✅ | Поддерживаются составные сообщения инструментов. |
| OpenAI (GPT-4+, GPT-5) | ✅ | ✅ | Аналогично предыдущему. |
| Google (Gemini 2+) | ✅ | ✅ | Поддерживаются и вызовы инструментов, и зрение. |
| Локальные vLLM / LM Studio / Ollama (модель с поддержкой зрения) | ✅ | ✅ | Если модель поддерживает составное содержимое инструментов. |
| Только текстовые модели | ❌ | ✅ (с ограничениями) | Используйте mode="ax" для работы только через дерево accessibility. |
Скриншоты отправляются вместе с результатами инструментов как части
image_url в стиле OpenAI. Для Anthropic адаптер преобразует их в
нативные блоки изображений tool_result. Тип MIME изображения берётся из
явного поля mimeType в cua-driver (image/png или image/jpeg) — без
определения по сигнатурным байтам на стороне клиента.
Безопасность
Hermes применяет многоуровневую защиту:
- Деструктивные действия (click, type, drag, scroll, key, focus_app)
требуют подтверждения через тот же гейт, что и опасные shell-команды, —
интерактивно через диалог CLI или кнопки подтверждения в мессенджере.
Разрешения «один раз / на сессию / всегда» хранятся под ключом
cua:<action>:<background|foreground>в общем хранилище сессии /command_allowlist(разрешение для фонового варианта никогда не распространяется на видимый foreground-вариант). Там, где ответить некому — cron (approvals.cron_mode), одиночный запрос, платформы без присмотра и любой headless-запуск, — действие отклоняется, а не одобряется само;--yolo//yoloпо-прежнему обходят проверку. - Жёстко заблокированные сочетания клавиш на уровне инструмента: очистка корзины, принудительное удаление, блокировка экрана, выход из системы, принудительный выход из системы.
- Жёстко заблокированные текстовые паттерны для ввода:
curl | bash,sudo rm -rf /, форк-бомбы и тому подобное. - Системный промпт агента прямо запрещает: кликать по диалогам разрешений, вводить пароли, следовать инструкциям, встроенным в скриншоты.
Если хотите подтверждать каждое действие вручную, добавьте
approvals.mode: manual в ~/.hermes/config.yaml.
Эффективность по токенам
Скриншоты обходятся дорого. Hermes применяет четыре уровня оптимизации:
- Вытеснение скриншотов — у любого провайдера скриншоты едут в каждом
запросе, пока тот не упрётся в документированный лимит Anthropic на изображения
в одном запросе (20 блоков изображений или 24 МБ данных изображений); тогда самая
старая пачка превращается в плейсхолдеры
[screenshot removed to save context]. Ниже лимита ничего не переписывается, поэтому префикс кэша промпта выживает; на лимите — один медленный ход на пачку вместо одного на каждый скриншот. Изображения, которые вы прикрепили сами, в лимит входят, но никогда не удаляются. - Обрезка при компрессии на стороне клиента — компрессор контекста распознаёт мультимодальные результаты инструментов и вырезает части с изображениями из старых записей.
- Оценка токенов с учётом изображений — каждое изображение считается примерно за 1500 токенов (фиксированная ставка Anthropic) вместо длины его base64-представления в символах.
- Серверное редактирование контекста (только Anthropic) — при
активации адаптер включает
clear_tool_uses_20250919черезcontext_management, чтобы API Anthropic само очищало старые результаты инструментов на своей стороне.
Сессия из 20 действий на экране 1568×900 обычно обходится примерно в 30 тыс. токенов контекста скриншотов, а не в ~600 тыс.
Ограничения
- Производительность. Фоновый режим медленнее, чем передний план — события, маршрутизируемые через accessibility, занимают ~5–20 мс на macOS, ~3–10 мс на Windows UIA, ~5–15 мс на Linux AT-SPI против прямой отправки HID. Для скорости кликов агента это незаметно; заметно, если вы пытаетесь записать speed-run.
- Ввод паролей с клавиатуры невозможен. У действия
typeесть жёсткие блокировки на паттерны командной оболочки; для паролей используйте системный автозаполнитель (Keychain на macOS / Credential Manager на Windows / GNOME Keyring / KWallet). - Некоторые приложения не предоставляют дерево accessibility. Современные UWP-приложения на Windows, Electron младше 28-й версии на Linux и отдельные приложения macOS с собственной отрисовкой (Logic, Final Cut, некоторые игры) имеют скудные или пустые AX-деревья. Если дерево пустое, переходите на работу по пиксельным координатам — или пропустите задачу совсем.
- Windows: окна с повышенными привилегиями (admin) нельзя
контролировать обычным агентом. Windows UIPI (User Interface
Privilege Isolation) обеспечивает границы уровней целостности: процесс
среднего уровня целостности (агент Hermes по умолчанию) не может ни
перечислить дерево UIA, ни внедрить ввод мыши в окно, принадлежащее
процессу высокого уровня целостности (администратор). Симптом:
capture(mode='som')возвращает 0 элементов, аclick(...)сообщает об успехе, ничего при этом не делая, хотя скриншот рендерится нормально (захват через GDI работает ниже уровня проверки целостности). Клавиатурные события частично обходят UIPI, поэтому Tab / Enter всё же могут перемещаться по диалогу с повышенными правами. Это ограничение ОС, а не баг cua-driver — оно затрагивает любой стек автоматизации Windows. Чтобы управлять окнами с повышенными правами, запустите сам агент Hermes с высоким уровнем целостности (из терминала, запущенного от имени администратора); в остальных случаях нацеливайтесь на окна без повышенных прав. - Windows:
hermes computer-use doctorпадает с «Access is denied», хотя инструмент работает. cua-driver, установленный вC:\Program Files\WindowsApps, не может быть запущен интерпретатором venv Hermes (WinError 5 изCreateProcess), хотя shell тот же бинарник находит без проблем. Doctor теперь показывает это как диагноз, а не traceback. Лечится один раз: переустановите апстримным установщиком (он кладёт драйвер в профиль пользователя) или укажите вHERMES_CUA_DRIVER_CMDкопию внеWindowsApps. - Особенности развёртывания по платформам:
- macOS использует приватные SkyLight SPI. Apple может изменить их в любом обновлении ОС. Hermes предупреждает, если установленная версия cua-driver старше той, против которой она тестировалась.
- Windows: SSH-сессии выполняются в Session 0, у которой нет интерактивного рабочего стола. Запускайте Hermes изнутри RDP- или консольной сессии, либо настройте автозапускаемое задание планировщика cua-driver — рецепт есть на странице windows-ssh.
- Linux требует доступный дисплейный сервер. Безголовые серверы
получают его от Bot Screen: рабочий стол Xfce на
профиль поверх TigerVNC, транслируемый в Hermes Desktop, где можно
перехватить управление для входа и 2FA. Запускается он из панели Screen
в десктопе или командой
hermes computer-use screen start; при первом использовании (первый вызовcomputer_useили браузер с окном) он стартует сам, только если заданоbot_desktop.auto_start: true(по умолчанию выключено). Чистым сессиям Wayland нужен мост XWayland для захвата экрана (путь внедрения ввода cua-driver для Wayland работает независимо).
Для кросс-платформенной автоматизации GUI без накладных расходов на
рабочий стол (и без настройки TCC / Session 0 / X11) для задач,
ограниченных вебом, правильный выбор — набор инструментов browser с
реальным headless Chromium.
Настройка
Режим разрешений и манифест (см. раздел Режимы разрешений выше):
computer_use:
permission_mode: standard # standard (по умолчанию) | bounded
capability_manifest: "" # путь к манифесту возможностей, обязателен для bounded
На Linux нативная поддержка Wayland по-прежнему включается вручную. Этот опт-ин Hermes передаёт каждому процессу cua-драйвера, в том числе сессиям шлюза, — но только если у процесса задан WAYLAND_DISPLAY:
computer_use:
native_wayland: true
После изменения настройки запущенный шлюз нужно перезапустить.
Переопределить путь к бинарнику драйвера (тесты / CI / локальные сборки):
HERMES_CUA_DRIVER_CMD=/path/to/your/cua-driver
Автозапуск в Windows (по желанию)
В Windows cua-driver может стартовать из задачи планировщика
(cua-driver-serve), создаваемой на каждую загрузку системы, чтобы к моменту
обращения Hermes уже слушать. Эта задача необязательная: по умолчанию
Computer Use запускает драйвер по требованию, на каждую сессию, как в macOS
и Linux, и при установке или включении набора инструментов никакая задача
планировщика не регистрируется (#97389).
Чтобы включить автозапуск, задайте в config.yaml (задача зарегистрируется
или починится при следующей установке драйвера или включении набора
инструментов):
computer_use:
autostart: true # default: false (on-demand; no scheduled task)
Автозапуск нужен, когда вы управляете Windows по SSH: у сессии 0 нет
интерактивного рабочего стола, и драйвер по требованию до него не
дотянется (рецепт есть в
windows-ssh). Если
задача уже есть, а она вам не нужна, удалите её командой
cua-driver autostart disable (или schtasks /Delete /TN cua-driver-serve)
из консоли с повышенными правами. Пока computer_use.autostart равен false,
Hermes не регистрирует её заново.
Драйвер можно заменить целиком: параметр computer_use.backend в
config.yaml называет единственный активный провайдер (cua по умолчанию
или установленный плагин-провайдер; см.
плагины бэкенда Computer Use).
hermes tools → Computer Use показывает все установленные провайдеры.
Телеметрия
По умолчанию cua-driver поставляется с включённой анонимной телеметрией
использования (PostHog) со стороны апстрима. Hermes отключает её за
вас — при каждом вызове cua-driver (MCP-бэкенд, status, doctor и
установка) Hermes устанавливает переменную окружения
CUA_DRIVER_RS_TELEMETRY_ENABLED=0 для драйвера.
Чтобы включить телеметрию обратно (пусть cua-driver использует
собственное поведение по умолчанию и отправляет данные), задайте в
config.yaml:
computer_use:
cua_telemetry: true # по умолчанию: false (телеметрия выключена)
Когда телеметрия включена, hermes computer-use doctor сообщает
telemetry: enabled; когда выключена (по умолчанию) — telemetry: disabled via CUA_DRIVER_RS_TELEMETRY_ENABLED.
Тестирование против локальной сборки cua-driver
Когда вы сами разрабатываете cua-driver — или хотите протестировать
неопубликованное исправление — направьте Hermes на бинарник, собранный из
исходников, вместо опубликованного релиза. Hermes разрешает путь к драйверу
через shutil.which("cua-driver") и не проверяет
HERMES_CUA_DRIVER_VERSION, поэтому локальная сборка (сообщающая версию
как 0.0.0-local-*) принимается как есть. Есть два подхода:
Вариант A — install-local (собрать и добавить в PATH)
Из вашей рабочей копии trycua/cua запустите апстрим-инсталлятор для
локальной сборки. Он собирает бэкенд на Rust в режиме релиза и кладёт
cua-driver в тот же путь установки, что использует продакшн-инсталлятор,
добавляя каталог с бинарником в ваш PATH:
# Windows (PowerShell), из корня репозитория cua
./libs/cua-driver/scripts/install-local.ps1 -NoAutoStart
# macOS / Linux, из корня репозитория cua (без --release по умолчанию собирается debug-сборка)
./libs/cua-driver/scripts/install-local.sh --release
- На Windows сборка размещается в
%USERPROFILE%\.cua-driver\packages\…, а junction%LOCALAPPDATA%\Programs\Cua\cua-driver\bin(добавлен в пользовательский PATH) указывает на неё. На macOS/Linuxcua-driverсимволически связывается с~/.local/bin(переопределяется флагом--bin-dir <path>). -NoAutoStartпропускает регистрацию демона входаcua-driver-serve— для тестирования Hermes он не нужен (подробности в примечаниях ниже).
Затем откройте новую сессию оболочки (чтобы изменение PATH вступило в силу) и проверьте:
cua-driver --version # локальные сборки сообщают версию как 0.0.0-local-release
# Windows: (Get-Command cua-driver).Source
# macOS/Linux: which cua-driver
Вариант B — направить Hermes напрямую на собранный бинарник (самый быстрый цикл)
Пропустите всю церемонию установки: выполните cargo build и укажите
HERMES_CUA_DRIVER_CMD на получившийся бинарник. Лучший вариант для
быстрого цикла правка/сборка/тест.
cargo build -p cua-driver # добавьте --release для релизной сборки; запускать из libs/cua-driver/rust
# Windows (.env)
HERMES_CUA_DRIVER_CMD=C:\path\to\cua\libs\cua-driver\rust\target\debug\cua-driver.exe
# macOS / Linux (.env)
HERMES_CUA_DRIVER_CMD=/path/to/cua/libs/cua-driver/rust/target/debug/cua-driver
Подтвердите, что Hermes использует именно вашу сборку
hermes computer-use statusвыводит разрешённый путь к бинарнику и его версию.hermes computer-use doctorподтверждает, что бинарник доступен, и прогоняет весь путь MCP от начала до конца.- В сессии команда
computer_use(action="capture")задействует порождённый дочерний процессcua-driver mcp.
Заметки и подводные камни
- Hermes порождает stdio-прокси
cua-driver mcp. В обычной сессии этот прокси подключается к стандартному машинному демону (и может его запустить). В явном Hermes YOLO Hermes вместо этого сам владеет приватным дочерним процессомcua-driver serve --embeddedи направляет прокси на его приватный сокет или именованный канал. Паттерн автозапуска / Windows UIAccess по-прежнему важен для интерактивного ввода в Session 1+ через SSH — см. раздел про ограничения. - Заблокированный бинарник на Windows. Работающий демон
cua-driver-serveможет удерживатьcua-driver.exeи блокировать перезапись при пересборке.install-local.ps1автоматически переименовывает заблокированный бинарник, освобождая место; если вы запускаетеcargo buildвручную (вариант B), сначала остановите демон командойcua-driver autostart disable(илиschtasks /End /TN cua-driver-serve). - Цикл пересборки. После правки исходников cua-driver заново
запустите
install-local(пересобирает, переразмещает, переключает junctioncurrent) для варианта A, либо просто выполнитеcargo buildзаново для варианта B — в обоих случаях менять что-либо в Hermes не нужно. - Локальные сборки пропускают проверку версии. Hermes предупреждает,
если установленная версия cua-driver старше протестированной базовой
версии для данной ОС, но делает исключение для сборок для разработки
0.0.0-local-*— поэтому ваша локальная сборка никогда не вызовет это предупреждение.
Диагностика неполадок
Первое действие при любых странностях: запустите hermes computer-use doctor. Структурированная матрица проверок покажет вам (и любому
агенту, который вам помогает) точно, что не так.
Конкретные сбои, которые доктор не отлавливает:
computer_use backend unavailable: cua-driver is not installed —
Выполните hermes computer-use install, чтобы скачать бинарник
cua-driver, либо запустите hermes tools и включите набор инструментов
Computer Use.
Клики как будто не срабатывают — Сделайте снимок экрана и проверьте
состояние. Возможно, вводу мешает модальное окно, которое вы не заметили.
Закройте его клавишей escape или кнопкой закрытия.
macOS: в Системных настройках CuaDriver включён, но hermes computer-use permissions status / doctor сообщают, что Универсальный доступ или Запись
экрана не выданы — сохранённое разрешение устарело. macOS привязывает каждую
строку разрешений к требованию подписи кода приложения; строка, записанная для
прежней сборки CuaDriver, после обновления драйвера перестаёт совпадать, а
переключение тумблера её не переписывает. Сбросьте затронутые строки и выдайте
разрешения заново:
tccutil reset Accessibility com.trycua.driver
tccutil reset ScreenCapture com.trycua.driver
hermes computer-use permissions grant
Индексы элементов устарели — индексы SOM действительны только до
следующего capture. Делайте повторный снимок после любого действия,
меняющего состояние. Обёртка использует непрозрачные element_token для
обнаружения устаревших ссылок — вместо ошибочного клика вы увидите явную
ошибку.
“blocked pattern in type text” — текст, который вы пытались передать
в type, совпал с паттерном из списка опасных команд оболочки. Разбейте
команду на части или пересмотрите подход.
Пустые снимки на Linux — не задана переменная DISPLAY, либо вы
работаете в чистом Wayland без моста XWayland. hermes computer-use doctor пометит это как ax_capability: fail с подсказкой Set DISPLAY (X11)….
Пустые снимки на Windows через SSH — вы находитесь в Session 0 (сессии служб). Работайте напрямую через RDP / консоль, либо настройте паттерн автозапуска — см. cua.ai/docs/how-to-guides/driver/windows-ssh.
Смотрите также
- Навык со стороны Hermes —
skills/autonomous-ai-agents/computer-use/SKILL.md— учит словарю действийcomputer_useHermes; именно его загружает агент. - Пакет навыков cua-driver — для платформенных углублённых
материалов (контракт “без переднего плана” на macOS, UIA + Session 0
на Windows, AT-SPI + X11/Wayland на Linux, запись, страницы браузера)
выполните
cua-driver skills installи прочитайтеMACOS.md/WINDOWS.md/LINUX.md/RECORDING.md/WEB_APPS.md. Автообнаружение Hermes — запланированный следующий шаг; пока направьте Hermes на установленный каталог пакета или создайте на него символическую ссылку в своём пространстве навыков. - cua.ai/docs — документация проекта cua-driver:
- Что такое управление компьютером? — введение в концепцию
- Контракт “без переднего плана” — почему важен фоновый режим
- Справочник по установке — детали кросс-платформенной установки
- Персонализация курсора агента — встроенные формы, собственные ассеты, runtime-переопределения
- Управление Windows через SSH — паттерн автозапуска Session 0 → Session 1+
- Поддержание работы cua-driver — жизненный цикл автозапуска / демона
- Подключение вашего агента — регистрация cua-driver в различных средах выполнения (в том числе в Hermes)
- Исходный код cua-driver (trycua/cua)
- Автоматизация браузера для кросс-платформенных веб-задач, где не нужно управлять нативными приложениями.