/ Дневник курса / Урок 5 /

Агент за рулём компьютера: как работает и где быть осторожным

Агент видит экран и кликает как человек: где он заменяет API, как читать его бенчмарки и три слоя защиты от вредных инструкций.

  • computer-use
  • ai-agents
  • security
  • prompt-injection

Computer Use — это когда LLM смотрит на скриншот экрана и двигает мышь самостоятельно. Разберём цикл из одного шага, почему этот режим выбирают для legacy-софта, как читать противоречивые бенчмарки 2026 года и три слоя защиты, без которых агента нельзя выпускать на боевую машину.

1. Что такое computer-use агент

CUA (computer-use agent) — мультимодальная LLM, которая видит экран через скриншот и двигает мышь и клавиатуру, как человек. Универсальный интерфейс «экран + мышь + клавиатура» обходится без API приложения, без плагинов, без специальных интеграций. Где обычный агент дёргает функцию, CUA — кликает по пикселю.

Цикл одного шага — четыре фазы:

   ┌─────────────────┐
   │   PERCEPTION    │  скриншот в контекст как
   └────────┬────────┘  изображение (+ DOM/a11y
            │           для веба)
            ▼
   ┌─────────────────┐
   │   REASONING     │  «где я, что вижу, какой
   └────────┬────────┘  след. шаг, не кликал ли
            │           я уже сюда»
            ▼
   ┌─────────────────┐
   │     ACTION      │  click(x,y) · type("…")
   └────────┬────────┘  scroll · key("Enter")
            │
            ▼
   ┌─────────────────┐ ───┐
   │  новый скриншот │    │  петля замыкается
   └─────────────────┘    │  обратно на PERCEPTION
            ▲             │
            └─────────────┘
Рисунок — цикл одного шага CUA: perception (скриншот как изображение в контекст, для веба плюс DOM/accessibility tree) → reasoning (chain-of-thought про текущее состояние) → action (click/type/scroll/key) → новый скриншот, и петля замыкается обратно на perception.

Ключевое: это не «OCR + скрипт». Одна сеть одновременно смотрит, думает и кликает — распознать текст, понять layout, решить, куда нажать, — всё в одном проходе, а не пайплайном из распознавалки, парсера и хардкод-логики.

2. Зачем это нужно: выбор режима автоматизации

Около 60 % корпоративного ПО в банкинге, госсекторе и медицине — legacy без API. Партнёрские кабинеты, маркетплейсы, госпорталы либо вообще не дают программного доступа, либо он покрывает не всё. Подключаться некуда, а автоматизировать надо.

Между «руками» и CUA есть лестница из четырёх режимов, и берут самый дешёвый из подходящих:

Режим Когда брать Стоимость
API-интеграция API есть и покрывает задачу быстро, дёшево, надёжно
Browser automation (Selenium/Playwright) стабильная вёрстка код под страницу, ломается на изменении UI
RPA (UiPath/Blue Prism) большой объём на стабильном UI дорогая лицензия + поддержка кратно сверху
Computer-use нестабильный UI без API гибкий, самовосстанавливается, дороже всех по токенам

Детерминированные скрипты (Selenium/RPA) ломаются на любом изменении вёрстки — поддержка обходится кратно дороже самой лицензии, и так каждый год. CUA подстраивается под новый UI сам, потому что «смотрит» на экран так же, как человек. Расплата — токены: каждый скриншот в контексте стоит денег, задача выходит ощутимо дороже скрипта. Поэтому CUA берут последним, для нестабильного UI без API, а не первым.

Tool-set типичного агента: действия экрана (screenshot, click, type, scroll, key), файловая система в пределах workspace, bash/shell в sandbox, веб-навигация (open_url, go_back) и служебные wait, ask_user, done, fail.

3. Ландшафт 2026: кто на рынке

Рынок к 2026-му закрывает почти все задачи пятёркой инструментов с разной философией:

  • Claude Computer Use (Anthropic) — permission-first: спрашивает разрешение перед действием, из коробки логирует действия и скриншоты.
  • ChatGPT Agent + Atlas (OpenAI) — agent mode в чате плюс отдельный AI-браузер Atlas, watch mode на чувствительных сайтах, встроенный детектор prompt injection.
  • Comet (Perplexity) — браузер на Chromium со встроенным агентом: ассистент в боковой панели кликает, заполняет формы и проходит многошаговые задачи прямо в открытых вкладках. Категория Atlas, не библиотека browser-use. Ахиллесова пята общая — содержимое страницы становится каналом для indirect prompt injection (см. раздел 5).
  • UI-TARS (ByteDance, Apache 2.0) — native GUI-модель, а не обёртка над чужим API: база Qwen-2-VL, 50B токенов обучения на GUI-скриншотах, размеры 2B/7B/72B. Главное — self-host без зависимости от вендора.
  • browser-use (Python, MIT) — библиотека: Chromium через CDP, авто-экстракция DOM, маскирование sensitive-data, работает с любой LLM (Anthropic/Google/OpenAI/Ollama). Достаточно собрать Agent с use_vision=True и подать скриншот в контекст.

Минимальный шаг через browser-use выглядит так — вся петля «восприятие → рассуждение → действие» спрятана внутри agent.run():

agent = Agent(
    task=query,
    llm=llm,
    browser_context=browser_context,
    use_vision=True,  # скриншот страницы входит в контекст как изображение
)
result = await agent.run()  # внутри: цикл скриншот → рассуждение → действие

4. Как читать цифры: бенчмарк выше человека ≠ надёжность

Главный канонический бенчмарк — OSWorld-Verified: 369 задач в реальной Ubuntu-среде на уровне пикселей, клавиатуры и мыши. В начале 2026-го Claude Opus 4.6 взял 72,7 % при human baseline ~72,4 % — впервые модель формально превзошла человека. UI-TARS-1.5 — лидер среди open source на 42,5 %, Operator — 36,4 %.

Снимок устаревает за месяцы. К середине 2026-го лидеры сменились: Operator подрос до ~38,1 %, появился UI-TARS-2 с ~47,5 %, а коммерческие платформы декларируют до ~82 % — но на собственных судьях, без независимой верификации. Самодекларируемые рекорды растут быстрее верифицированных, и «свежая цифра лидерборда» читается хуже, чем кажется: непонятно, что в ней от модели, а что от методологии оценки.

Звучит как победа, но цифру нельзя брать в лоб по трём причинам.

Зубчатый интеллект (jagged intelligence). Прогресс на системных задачах соседствует с провалами на банальностях. Модель берёт золото на математической олимпиаде, но время по аналоговым часам (ClockBench) определяет лишь в 50,6 % против 90,1 % у человека. Высокий средний балл прячет узкие зоны, где агент ломается на ровном месте.

Коммерческие лидерборды против академических. Расхождение огромное. На Online-Mind2Web коммерческие платформы рапортуют до 97 % — но на своих гибких ИИ-судьях. Академический Mind2Web-2 опирается на деревья критериев (в среднем до 50 узлов на задачу) и ручную верификацию, и там лучшая модель даёт 28 % при человеке 54 %. Самодекларируемые 97 % browser-use — это не верифицированный результат, а маркетинг методологии оценки.

 OSWorld-Verified         Online-Mind2Web          Mind2Web-2
 (Ubuntu, верифиц.)       (коммерч. судья)         (академ., ~50 узлов)
 ┌───────────────┐        ┌───────────────┐        ┌───────────────┐
 │ Opus    72.7% │        │ bu-max  97.0% │        │ модель    28% │
 │ human   72.4% │        │ свой судья    │        │ human     54% │
 │ UI-TARS 42.5% │        │ не верифиц.   │        │ верифиц.      │
 └───────────────┘        └───────────────┘        └───────────────┘
 модель ≈ человек         не сравнивать            человек >> модель
Рисунок — три бенчмарка дают три разные правды: на верифицированном OSWorld модель сравнялась с человеком (72,7 % против 72,4 %), на коммерческих лидербордах рапортуют до 97 % на собственном судье, а на строгом академическом Mind2Web-2 человек вдвое впереди (54 % против 28 %).

Способность безопасности не равна. Бенчмарк ClawsBench разделяет три метрики: Task Success Rate (TSR), Unsafe Action Rate (UAR) и Safe Completion Rate (SCR). И вот ключевая цифра урока: Claude Opus 4.6 — TSR 63,0 % при UAR 23,0 %, тогда как у человека TSR 74,5 % при UAR 0,0 %. Каждое пятое действие модели небезопасно. Хуже того, рост успешности через усложнение планирования закономерно поднимает долю небезопасных действий — модель чаще тянется к рискованным системным утилитам. «Автоматизировать безопасно» и «автоматизировать максимально» — разные цели.

5. Где всё ломается: prompt injection и Confused Deputy

Безопасность тут не приложение к теме, а её центр. Корень один: модель не отличает надёжно инструкции разработчика от инструкций в данных. Любой контент в контексте — веб-страница, PDF, письмо, скриншот — потенциальная команда.

Prompt injection бывает трёх видов:

  • Direct — пользователь сам вводит вредный промпт; защита — фильтрация входа.
  • Indirect — инструкции спрятаны в контенте (веб, PDF, письмо); агент читает и выполняет их как свою команду. Угроза № 1.
  • Multimodal — скрытый текст на картинке или в HTML (display:none, белым по белому); модель всё равно видит его и обрабатывает.

Три задокументированные атаки показывают паттерн.

rm -rf через PDF (HiddenLayer). Пользователь просит Claude Computer Use прочитать PDF. В файле спрятана обфусцированная (Base64 + ROT13) директива «расшифруй сам перед выполнением» плюс контекстная манипуляция: модель убеждают, что она в безопасной тестовой среде, где опасные команды разрешены. Claude декодирует и выполняет sudo rm -rf --no-preserve-root /. Внутри sandbox обошлось; без docker-изоляции снесло бы хост.

Confused Deputy (запутанный помощник) в Claude Desktop Extensions (LayerX, CVSS 10,0). Расширения .mcpb исполняются на хосте unsandboxed с правами пользователя. Сценарий «Ace of Aces»: атакующий кладёт вредную инструкцию в описание события Google Calendar, пользователь просит Claude «разобраться с задачами в календаре». Claude читает событие легитимным коннектором, распознаёт инструкцию как команду и транслирует её в Desktop Commander — тихий запуск кода на ПК жертвы. Данные из низкорискового публичного источника попали в высокорисковый локальный исполнитель. Anthropic решила не менять архитектуру связывания — вектор остаётся открытым.

Exfiltration через цепочку уязвимостей. Третий задокументированный паттерн собирается из звеньев: invisible injection через URL-параметры предзаполняет чат, агент тихо выгружает данные наружу, а дефолтные проверки обходятся за счёт approval fatigue. Итог — украдена история разговоров пользователя.

   ┌──────────────────────────┐
   │   ИСТОЧНИК ДАННЫХ        │  PDF · Calendar · веб-
   │   (низкий риск)          │  страница · скриншот
   └────────────┬─────────────┘
                │
                ▼
   ┌──────────────────────────┐
   │   КОНТЕКСТ МОДЕЛИ        │  данные ≡ инструкции:
   │   (граница рвётся здесь) │  модель их не различает
   └────────────┬─────────────┘
                │
                ▼
   ┌──────────────────────────┐
   │   ИСПОЛНИТЕЛЬ            │  bash · Desktop Commander
   │   (высокий риск)         │  → RCE / exfiltration
   └──────────────────────────┘
Рисунок — общий механизм всех трёх атак: данные из низкорискового источника (PDF, календарь, веб-страница) проходят в контекст, где модель не отделяет их от своих инструкций, и доходят до высокорискового исполнителя (bash, Desktop Commander) — RCE или утечка. Граница доверия рвётся именно на стыке «данные → контекст».

Вывод из трёх атак: один слой защиты (permission-диалог, classifier или system prompt) всегда обходится. Нужно минимум три слоя: изоляция среды + контроль действий + человек на рискованных шагах.

6. Слой 1 и 2: человек в цикле и визуальные подтверждения

Первая линия — не пускать агента в автономный режим там, где ошибка необратима. Действия раскладывают по тирам риска, и у каждого свой режим:

 LOW-RISK            MEDIUM-RISK                HIGH-RISK
 Autonomous          Notify                     Confirm
 ──────────          ──────────                 ──────────
 чтение, поиск,      отправка письма,           платёж, удаление
 навигация, сбор     запись в CRM:              данных, смена прав:
 данных — агент      превью + таймер            агент ждёт явного
 работает сам        5–10 сек, авто-proceed     подтверждения
                     с возможностью отмены      человека
Рисунок — HITL по уровням риска: low-risk (чтение, навигация) идёт автономно, medium-risk (письмо, запись в CRM) — с превью и таймером 5–10 секунд на отмену, high-risk (платёж, удаление, смена прав) требует явного подтверждения человека.

Что показывать перед подтверждением: скриншот элемента, куда модель собирается кликнуть (bounding box); действие в человеко-читаемой форме («Отправить X руб. Ивану Петрову»); из какой задачи оно вытекает; кнопку Stop с автосохранением состояния.

Два режима закрывают чувствительные сценарии. Watch mode (ChatGPT Agent, Claude): на sensitive-сайтах пользователь видит каждый шаг и может прервать. Takeover (Operator-паттерн): на вводе логина, 2FA, CAPTCHA агент приостанавливает сбор скриншотов и передаёт клавиатуру и мышь человеку. Плюс fail-closed by default: если модель не уверена — спрашивает, а не гадает.

Опасность HITL — approval fatigue: если спрашивать на каждый чих, человек начинает жать OK не читая, и защита обнуляется. Поэтому подтверждения — только на high-risk, а не на всё подряд.

7. Слой 3: изоляция, минимальные права, контроль доменов

Главный слой — не контроль действий (он обходим), а изоляция среды. Агент никогда не запускается на хосте. Модель угроз диктует выбор песочницы:

  • Firecracker microVM / Kata — для production: отдельное ядро Linux на каждый sandbox, агент не видит host-процессы и файлы. Старт microVM ~125 мс, накладные расходы памяти <5 МиБ.
  • gVisor — для compute-heavy с ограниченным I/O: перехватывает системные вызовы агента в user-space-ядре. Дороже голого контейнера, но проброс GPU не работает; полноценной VM при этом не нужно.
  • Hardened container (seccomp + AppArmor + capability dropping) — для внутренней автоматизации с доверенным кодом. Не полная VM, но многократно безопаснее дефолтного контейнера.

Два правила «никогда»: не запускать агента прямо на хосте и не монтировать docker.sock в контейнер агента — это классический способ побега из контейнера (Docker socket escape).

Дальше — минимальные права по трём осям:

  • Сеть. Default-deny, allowlist только нужных доменов. Никаких wildcards вроде *.googleapis.com — они покрывают сервисы, о которых вы не думаете, и через injection атакующий выгрузит секреты по «разрешённому» правилу. Весь HTTP/HTTPS через proxy, raw TCP/UDP заблокированы, каждый outbound логируется.
  • Файловая система. Read-write — только рабочая директория, $HOME/.ssh/.aws//etc (если вообще монтируются) строго read-only. Не ходить по symlinks за пределы workspace. Git hooks и CI-файлы в workspace — ревью вручную: их могут подменить и исполнить.
  • Credentials. Ключи инжектятся в заголовки на host-стороне через credential proxy и внутрь VM не попадают — компрометация sandbox тогда не равна утечке ключей. Секретов в .env внутри песочницы быть не должно.

Deny-list на действия (curl/wget только через proxy, прямой запрет rm -rf с корневыми путями, dd, mkfs, shutdown, запись в ~/.ssh) — полезен, но вспомогателен: он обходим, и полагаться только на него нельзя. Изоляция остаётся основным слоем, deny-list — страховкой.

Итог

  • CUA — это ReAct по скриншотам: одна мультимодальная сеть смотрит, думает и кликает в цикле «восприятие → рассуждение → действие → новый скриншот». Не OCR + скрипт.
  • Берут его последним в лестнице API → browser automation → RPA → CUA — для нестабильного UI без API, где детерминированные скрипты ломаются, а токены окупаются.
  • Бенчмарки 2026 обманчивы: 72,7 % Opus на OSWorld-Verified соседствует с 28 % на строгом Mind2Web-2 и UAR 23 % против 0 % у человека. Не доверяй одной цифре.
  • Безопасность встроена в архитектуру, а не докручивается потом. Модель не отличает данные от инструкций, поэтому нужна не одна заплатка, а три слоя: изоляция среды + контроль действий + человек на рискованных шагах. Изоляция — основной слой; HITL и deny-list — страховка поверх неё.

FAQ

Чем computer-use агент отличается от RPA вроде UiPath?

RPA исполняет жёсткие предзаписанные сценарии и ломается на любом изменении UI — поддержка обходится кратно дороже самой лицензии каждый год. CUA «смотрит» на экран мультимодальной моделью и адаптируется к новой вёрстке сам, как человек. Расплата — токены: каждый скриншот в контексте стоит денег, и задача выходит дороже жёсткого скрипта. RPA выгоден на стабильном UI с большим объёмом, CUA — на нестабильном или редко меняющемся.

Правда ли, что ИИ-агенты уже превзошли человека в управлении компьютером?

На одном бенчмарке — формально да: Claude Opus 4.6 взял 72,7 % на OSWorld-Verified при человеческом уровне ~72,4 %. Но это узкий срез. На строгом академическом Mind2Web-2 человек по-прежнему вдвое впереди (54 % против 28 %), а доля небезопасных действий модели — 23 % против 0 % у человека. Средний балл скрывает зоны, где агент ломается на банальностях вроде определения времени по часам.

Что такое prompt injection в computer-use агенте?

Это атака, где вредные инструкции прячут в данных, которые агент читает по ходу задачи — в PDF, на веб-странице, в письме или даже в скрытом тексте на картинке. Модель не отличает «команды разработчика» от «текста в данных» и выполняет инъекцию как свою команду. Indirect-вариант (инструкции в контенте) считается угрозой № 1, потому что пользователь даже не видит вредную нагрузку.

Что такое атака Confused Deputy и почему CVSS 10,0?

Confused Deputy — когда агент с правами пользователя выполняет команды атакующего, пришедшие из низкорискового источника. В Claude Desktop Extensions расширения исполняются на хосте без изоляции с полными правами: вредная инструкция в описании события календаря дотекает до локального исполнителя команд и даёт удалённый запуск кода. Максимальный балл CVSS 10,0 — потому что атака zero-click, не требует действий жертвы и ведёт к полной компрометации машины.

Какую песочницу выбрать для запуска computer-use агента?

Для production — Firecracker microVM или Kata: отдельное ядро Linux на каждый sandbox, старт ~125 мс, агент не видит host. Для compute-heavy задач с ограниченным I/O — gVisor (перехват syscalls в user-space, дороже голого контейнера, но без GPU passthrough). Для внутренней автоматизации с доверенным кодом достаточно hardened-контейнера (seccomp + AppArmor + capability dropping). Чего нельзя никогда — запускать агента на хосте и монтировать docker.sock.

Можно ли защититься от инъекций одним фильтром или системным промптом?

Нет. Опыт трёх задокументированных атак показывает: любой одиночный слой — permission-диалог, classifier или system prompt — обходится. Нужно минимум три слоя: изоляция среды (microVM/gVisor), контроль действий (allowlist доменов, deny-list команд, credential proxy) и человек на рискованных шагах (HITL на high-risk). Изоляция — основной барьер, остальное — страховка поверх неё.

Источники

Числовые ориентиры в тексте (success rate, UAR, время старта песочниц) зависят от профиля нагрузки, версии модели, scaffold и методологии конкретного лидерборда — это порядки величин для принятия решений, а не точные константы.