Перейти к основному содержимому

Использование компьютера

VibeOS может управлять вашим рабочим столом — нажимать, печатать, прокручивать, перетаскивать — в фоновом режиме на macOS, Windows и Linux. Ваш курсор не двигается, фокус клавиатуры не меняется, а ваши виртуальные рабочие столы / Spaces не переключаются. Вы и агент работаете совместно на одной машине.

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

Как это работает​

Набор инструментов computer_use общается по протоколу MCP через stdio с cua-driver — открытым фоновым драйвером для использования компьютера. Каждая платформа использует соответствующий стек специальных возможностей и ввода «под капотом»:

ПлатформаДерево специальных возможностейОтправка ввода
macOSAX (частные SkyLight SPI)SLPSPostEventRecordTo — в рамках PID, без перемещения курсора
WindowsUIAutomationSendInput + PostMessage — без перехвата фокуса
LinuxAT-SPI (X11 + Wayland)XTest (X11) / virtual-keyboard (Wayland)

Результат одинаков на всех платформах: агент может читать дерево специальных возможностей любого видимого окна И отправлять синтезированные события, не выводя его на передний план, не переключая виртуальные рабочие столы и не перемещая реальный курсор ОС.

Подробнее о базовом контракте — почему важен фоновый режим, инвариант «без переднего плана», внутреннее устройство отправки кликов — см. cua.ai/docs/concepts/the-no-foreground-contract.

Включение​

Выберите любой удобный путь — оба запускают один и тот же вышестоящий установщик:

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

vibeos computer-use install

Эта команда загружает и запускает вышестоящий установщик cua-driver — install.sh на macOS/Linux, install.ps1 на Windows. Используйте vibeos computer-use status для проверки установки.

Вариант 2: включите набор инструментов интерактивно.

  1. Запустите vibeos tools, выберите 🖱️ Computer Use (macOS/Windows/Linux).
  2. Установка запускает вышестоящий установщик (тот же, что и в Варианте 1).

После установки, независимо от выбранного пути, предоставьте необходимые разрешения для вашей платформы:

ПлатформаНеобходимые разрешения
macOSСистемные настройки → Конфиденциальность и безопасность → Специальные возможности + Запись экрана → разрешите вашему терминалу (или приложению VibeOS). vibeos computer-use doctor сообщит, какого разрешения не хватает.
WindowsНичего не требуется во время установки. Если вы работаете через SSH (не RDP / консоль), вам понадобится шаблон автозапуска — см. cua.ai/docs/how-to-guides/driver/windows-ssh для прокси между Сеансом 0 и Сеансом 1+.
LinuxДоступный сервер отображения: DISPLAY должен быть установлен для X11, или XDG_SESSION_TYPE=wayland. Сеансы Wayland требуют моста XWayland для захвата. AT-SPI должен быть включен (по умолчанию включен в GNOME/KDE/Xfce).

Затем запустите сеанс с включенным набором инструментов:

vibeos -t computer_use chat

или добавьте computer_use в список включенных наборов инструментов в ~/.vibeos/config.yaml.

vibeos computer-use doctor — ваша первая остановка для диагностики​

vibeos computer-use doctor запускает структурированный MCP-инструмент health_report от cua-driver и выводит матрицу проверок. Это самый быстрый способ узнать, почему действие не работает.

$ vibeos computer-use doctor
⚠️ cua-driver 0.5.8 на darwin — неполноценно
✅ binary_version: cua-driver 0.5.8
✅ platform_supported: macOS 26.4.1 (arm64)
✅ session_active: MCP-сеанс активен.
❌ bundle_identity: У процесса нет CFBundleIdentifier.
→ Запустите бинарный файл внутри CuaDriver.app, чтобы TCC правильно предоставил атрибут.
✅ tcc_accessibility: Специальные возможности предоставлены.
✅ tcc_screen_recording: Запись экрана предоставлена.
✅ ax_capability: AX доверен и доступен.
✅ screen_capture_capability: ScreenCaptureKit доступен; 1 дисплей(ев) доступен для общего доступа.
  • Код выхода 0, когда общий статус ok — всё настроено.
  • Код выхода 1, когда статус degraded или failed — хотя бы одна проверка не пройдена; подсказка к каждой ошибке говорит, что исправить.
  • Код выхода 2, когда сам бинарный файл cua-driver недоступен.

Полезные флаги:

  • --include CHECK — запустить только указанные проверки (повторите для нескольких)
  • --skip CHECK — пропустить проверку (имеет приоритет над --include)
  • --json — вывести необработанную структурированную полезную нагрузку, той же формы, что и ответ MCP tools/call health_report

Матрица проверок учитывает платформу: bundle_identity / tcc_* — skip на Windows + Linux, потому что эти концепции неприменимы. ax_capability проверяет AX на macOS, UIA на Windows, AT-SPI на Linux — каждый с правильной диагностической подсказкой, когда не может получить доступ.

Курсор агента и сеансы​

Когда агент действует, вы увидите тонированный наложенный курсор, скользящий по экрану туда, куда попадает каждый клик / ввод текста / прокрутка. Реальный курсор ОС никогда не двигается — наложение — это визуальная подсказка, которая говорит: «агент действует здесь». Каждый запуск VibeOS объявляет собственный идентификатор сеанса cua-driver (что-то вроде vibeos-3a7b9c14d2e8); идентичность курсора привязана к этому сеансу, поэтому параллельные запуски / под-агенты получают собственный курсор, не мешая друг другу.

Настройте курсор с помощью флагов CLI cua-driver или инструмента MCP set_agent_cursor_style во время выполнения — см. cua.ai/docs/how-to-guides/driver/personalize-cursor для полного меню (встроенный силуэт arrow или teardrop, пользовательский SVG / PNG / ICO через --cursor-icon, цвета градиента во время выполнения, ореол свечения).

Углубленное изучение — пакет навыков cua-driver​

VibeOS намеренно фокусирует свой навык (skills/computer-use/SKILL.md) на словаре действий computer_use со стороны VibeOS — единственном источнике истины, который загружает агент. Для более глубокого материала — платформенно-специфичных деталей, семантики записи, взаимодействия со страницами браузера — направьте свою обвязку агента на пакет навыков cua-driver, который команда cua-driver поставляет и поддерживает напрямую:

cua-driver skills install

Эта команда создает символическую ссылку на пакет в каталоге навыков вашей обвязки агента. После ее запуска агент получает доступ к:

ФайлТема
SKILL.mdКроссплатформенное ядро (инвариант снимка, контракт «без переднего плана», отправка кликов, механика AX-дерева)
MACOS.mdОсобенности macOS: контракт «без переднего плана», навигация по AXMenuBar, отправка кликов SkyLight, мост Apple Events JS
WINDOWS.mdОсобенности Windows: дерево UIA, хостинг UWP / ApplicationFrameHost, изоляция Сеанса 0, шаблон автозапуска
LINUX.mdОсобенности Linux: дерево AT-SPI, X11 / Wayland, обнаружение эмулятора терминала
RECORDING.mdСемантика записи траектории и видео
WEB_APPS.mdСоветы по взаимодействию со страницами браузера
TESTS.mdРабочий процесс воспроизведения по траектории

Это платформенно-специфичные углубленные материалы, а не дубликаты навыка VibeOS — когда агент сообщает: «на Windows мой клик попал не в тот элемент», он читает WINDOWS.md для контекста UIA / UWP, который объясняет, почему так произошло и что делать иначе.

cua-driver skills status показывает, что установлено и с какими обвязками агента это связано. Сегодня список автообнаружения охватывает Claude Code, Codex, OpenCode, OpenClaw и Antigravity; автообнаружение VibeOS запланировано как последующее обновление в trycua/cua — до тех пор запустите cua-driver skills install один раз и укажите вашей обвязке на результирующий каталог ~/.cua-driver/skills/cua-driver (или создайте символическую ссылку на него в вашем обычном пространстве навыков).

Краткий пример​

Запрос пользователя: «Найди мое последнее письмо от Stripe и кратко изложи, что они хотят, чтобы я сделал.»

План агента (одинаков на macOS / Windows / Linux — модель подставляет идиоматическое для платформы сочетание клавиш и имя приложения):

  1. computer_use(action="capture", mode="som", app="Mail") — получает снимок экрана почтового приложения, где каждый элемент боковой панели, кнопка панели инструментов и строка сообщения пронумерованы.
  2. computer_use(action="click", element=14) — нажимает поле поиска.
  3. computer_use(action="type", text="from:stripe")
  4. computer_use(action="key", keys="return", capture_after=True) — отправляет запрос и получает новый снимок экрана.
  5. Нажимает верхний результат, читает тело письма, кратко излагает.

В течение всего этого времени ваш курсор остается там, где вы его оставили, а почтовое приложение никогда не выходит на передний план.

Совместимость провайдеров​

ПровайдерЗрение?Работает?Примечания
Anthropic (Claude Sonnet/Opus 3+)✅✅Лучший в целом; SOM + необработанные координаты.
OpenRouter (любая модель со зрением)✅✅Поддерживаются многочастные сообщения с инструментами.
OpenAI (GPT-4+, GPT-5)✅✅То же, что и выше.
Google (Gemini 2+)✅✅Поддерживаются как вызов инструментов, так и зрение.
Локальные vLLM / LM Studio / Ollama (модель со зрением)✅✅Если модель поддерживает многочастное содержимое инструментов.
Только текстовые модели❌✅ (неполноценно)Используйте mode="ax" для работы только с деревом специальных возможностей.

Снимки экрана отправляются встроенными в результаты инструментов как части image_url в стиле OpenAI. Для Anthropic адаптер преобразует их в собственные блоки изображений tool_result. MIME-тип изображения берется из явного поля mimeType от cua-driver (image/png или image/jpeg) — никакого определения типа по магическим байтам на стороне клиента.

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

VibeOS применяет многоуровневые защитные механизмы:

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

Используйте вместе с approvals.mode: manual в ~/.vibeos/config.yaml, если вы хотите подтверждать каждое действие.

Эффективность токенов​

Снимки экрана стоят дорого. VibeOS применяет четыре уровня оптимизации:

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

Сеанс из 20 действий на дисплее 1568×900 обычно стоит ~30K токенов контекста снимков экрана, а не ~600K.

Ограничения​

  • Производительность. Фоновый режим медленнее, чем передний план — события, маршрутизированные через специальные возможности, занимают ~5–20 мс на macOS, ~3–10 мс на Windows UIA, ~5–15 мс на Linux AT-SPI по сравнению с прямой отправкой HID. Это незаметно для кликов на скорости агента; заметно, если вы попытаетесь записать скоростное прохождение.
  • Нет ввода пароля с клавиатуры. type имеет жестко заблокированные шаблоны для полезных нагрузок командной оболочки; для паролей используйте автозаполнение системы (связка ключей macOS / диспетчер учетных данных Windows / связка ключей GNOME / KWallet).
  • Некоторые приложения не предоставляют дерево специальных возможностей. Современные приложения UWP на Windows, Electron < 28 на Linux и несколько приложений macOS с пользовательским рисованием (Logic, Final Cut, некоторые игры) имеют разреженные или пустые AX-деревья. Используйте пиксельные координаты, если дерево пусто — или полностью пропустите задачу.
  • Windows: повышенные (административные) окна нельзя контролировать из обычного агента. Windows UIPI (Изоляция привилегий пользовательского интерфейса) обеспечивает границы уровней целостности: процесс со средним уровнем целостности (по умолчанию агент VibeOS) не может перечислять дерево UIA или внедрять ввод мыши в окно, принадлежащее процессу с высоким уровнем целостности (Администратор). Симптом: capture(mode='som') возвращает 0 элементов, а click(...) сообщает об успехе, ничего не делая, хотя снимок экрана отображается нормально (захват GDI находится ниже проверки целостности). События клавиатуры частично обходят UIPI, поэтому Tab / Enter все еще могут перемещаться по повышенному диалогу. Это ограничение ОС, а не ошибка cua-driver — оно затрагивает все стеки автоматизации Windows. Для управления повышенными окнами запустите самого агента VibeOS с высоким уровнем целостности (запустите из повышенного терминала); в противном случае нацеливайтесь на неповышенные окна.
  • Платформенно-специфичные особенности развертывания:
    • macOS использует частные SkyLight SPI. Apple может изменить их в любом обновлении ОС. VibeOS предупреждает, когда установленный cua-driver старше версии, с которой он был протестирован.
    • Windows SSH-сеансы запускаются в Сеансе 0, у которого нет интерактивного рабочего стола. Управляйте VibeOS изнутри RDP / консольного сеанса или настройте запланированную задачу автозапуска cua-driver — windows-ssh содержит рецепт.
    • Linux требует доступного сервера отображения. Безголовые серверы нуждаются в Xvfb (Xvfb :99 -screen 0 1920x1080x24) до того, как computer_use сможет захватывать или внедрять события. Чистые сеансы Wayland нуждаются в мосте XWayland для захвата экрана (путь внедрения Wayland от cua-driver обрабатывает ввод независимо).

Для кроссплатформенной автоматизации GUI без накладных расходов на рабочий стол (и без настройки TCC / Сеанса 0 / X11) набор инструментов browser использует настоящий безголовый Chromium и является правильным ответом для задач, связанных только с вебом.

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

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

VIBEOS_CUA_DRIVER_CMD=/path/to/your/cua-driver

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

VIBEOS_COMPUTER_USE_BACKEND=noop   # записывает вызовы, без побочных эффектов

Телеметрия​

cua-driver поставляется с включенной анонимной телеметрией использования (PostHog) по умолчанию в вышестоящем проекте. VibeOS отключает ее для вас — при каждом вызове cua-driver (MCP-бэкенд, status, doctor и установка) VibeOS устанавливает CUA_DRIVER_RS_TELEMETRY_ENABLED=0 в окружении драйвера.

Чтобы снова включить (позволить cua-driver использовать его собственное значение по умолчанию и отправлять телеметрию), установите это в config.yaml:

computer_use:
cua_telemetry: true # по умолчанию: false (телеметрия выключена)

Когда она включена, vibeos computer-use doctor сообщает telemetry: enabled; когда выключена (по умолчанию), он сообщает telemetry: disabled via CUA_DRIVER_RS_TELEMETRY_ENABLED.

Тестирование с локальной сборкой cua-driver​

Когда вы разрабатываете сам cua-driver — или хотите протестировать невыпущенное исправление — укажите VibeOS на бинарный файл, который вы собрали из исходного кода, вместо опубликованного релиза. VibeOS разрешает драйвер с помощью shutil.which("cua-driver") и не проверяет VIBEOS_CUA_DRIVER_VERSION, поэтому локальная сборка (сообщается как 0.0.0-local-*) принимается как есть. Два подхода:

Вариант A — install-local (сборка + размещение в PATH)​

Из вашего клона trycua/cua запустите вышестоящий локальный установщик. Он собирает Rust-бэкенд в режиме релиза и помещает cua-driver в ту же структуру установки, которую использует производственный установщик, добавляя его каталог bin в ваш PATH:

# Windows (PowerShell), из корня репозитория cua
./libs/cua-driver/scripts/install-local.ps1 -NoAutoStart
# macOS / Linux, из корня репозитория cua (по умолчанию используется отладочная сборка без --release)
./libs/cua-driver/scripts/install-local.sh --release
  • Windows размещает сборку в %USERPROFILE%\.cua-driver\packages\… и создает точку соединения %LOCALAPPDATA%\Programs\Cua\cua-driver\bin (добавленную в ваш User PATH) к ней. macOS/Linux создает символическую ссылку cua-driver в ~/.local/bin (переопределите с помощью --bin-dir <path>`).
  • -NoAutoStart пропускает регистрацию демона входа cua-driver-serve — он не нужен для тестирования VibeOS (см. примечания).

Затем откройте новую оболочку (чтобы изменение PATH стало видимым) и подтвердите:

cua-driver --version                 # локальные сборки сообщают 0.0.0-local-release
# Windows: (Get-Command cua-driver).Source
# macOS/Linux: which cua-driver

Вариант B — укажите VibeOS напрямую на собранный бинарный файл (самый быстрый цикл)​

Пропустите всю церемонию установки: cargo build и установите VIBEOS_CUA_DRIVER_CMD на полученный бинарный файл. Лучше всего для быстрого цикла редактирования/сборки/тестирования.

cargo build -p cua-driver            # добавьте --release для релизной сборки; запускайте из libs/cua-driver/rust
# Windows (.env)
VIBEOS_CUA_DRIVER_CMD=C:\path\to\cua\libs\cua-driver\rust\target\debug\cua-driver.exe
# macOS / Linux (.env)
VIBEOS_CUA_DRIVER_CMD=/path/to/cua/libs/cua-driver/rust/target/debug/cua-driver

Подтвердите, что VibeOS использует вашу сборку​

  • vibeos computer-use status выводит разрешенный путь к бинарному файлу и версию.
  • vibeos computer-use doctor подтверждает, что бинарный файл доступен и полностью проверяет путь MCP от начала до конца.
  • В сеансе computer_use(action="capture") проверяет порожденный дочерний процесс cua-driver mcp.

Примечания и особенности​

  • Vibeos порождает собственный дочерний процесс cua-driver mcp через stdio — он не подключается к долго работающему демону автозапуска cua-driver serve или его именованному каналу. Таким образом, запланированная задача / LaunchAgent не нужны для тестирования (-NoAutoStart — это нормально). Демон автозапуска и рабочий процесс UIAccess для Windows (cua-driver-uia.exe) имеют значение только для безопасного ввода на переднем плане в некоторых приложениях (например, WPF); стандартная поверхность инструментов работает через дочерний процесс stdio. В Windows 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 (пересборка, переразмещение, переключение точки соединения current) для Варианта A или просто повторно запустите cargo build для Варианта B — никаких изменений в VibeOS не требуется в любом случае.
  • Локальные сборки пропускают проверку версии. VibeOS предупреждает, когда установленный cua-driver старше его протестированного базового уровня для каждой ОС, но делает исключение для разрабатываемых сборок 0.0.0-local-* — поэтому ваша локальная сборка никогда не вызовет это предупреждение.

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

Первое действие, если что-то не так: запустите vibeos computer-use doctor. Структурированная матрица проверок сообщает вам (и любому агенту, помогающему вам отлаживать) именно то, что не так.

Конкретные режимы сбоев, которые doctor не ловит:

computer_use backend unavailable: cua-driver is not installed — Запустите vibeos computer-use install, чтобы загрузить бинарный файл cua-driver, или запустите vibeos tools и включите набор инструментов Computer Use.

Клики, кажется, не имеют эффекта — Захватите и проверьте. Модальное окно, которое вы не видели, может блокировать ввод. Закройте его с помощью escape или кнопки закрытия.

Индексы элементов устарели — Индексы SOM действительны только до следующего capture. Повторно захватывайте после любого действия, изменяющего состояние. Обертка несет непрозрачные element_token для обнаружения устаревания — вы увидите явную ошибку, а не неправильный клик.

«blocked pattern in type text» — Текст, который вы попытались ввести с помощью type, соответствует списку опасных шаблонов оболочки. Разбейте команду или пересмотрите.

Пустые захваты на Linux — DISPLAY не установлен, или вы находитесь в чистом Wayland без моста XWayland. vibeos computer-use doctor сообщит об этом как ax_capability: fail с подсказкой Set DISPLAY (X11)….

Пустые захваты на Windows через SSH — Вы находитесь в Сеансе 0 (сеанс служб). Управляйте напрямую через RDP / консоль или настройте шаблон автозапуска — см. cua.ai/docs/how-to-guides/driver/windows-ssh.

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