Перейти к содержимому
Команда ClaudexiaОбновлено АВТОМАТИЗАЦИЯ

Claude Computer Use в 2026: как автоматизировать браузер без флаки

Практика Computer Use на Claude: архитектура, песочница, стоимость, ограничения и как сделать стабильную браузерную автоматизацию в проде.

Большую часть эпохи API «использование» софта моделью означало обвязку из инструментов: тут функция поиска, там запрос в БД, иногда скрипт на Playwright, если хватало смелости. Computer use переворачивает эту схему. Вы отдаёте Claude скриншот реального экрана и крошечный набор примитивов (клик, ввод, скролл, клавиша), и модель управляет интерфейсом так же, как это делал бы человек. В 2026 году с текущим поколением Sonnet и Opus 4.8 это наконец работает достаточно стабильно, чтобы ставить в узкие продакшен-сценарии. В этой статье разбираем, что это такое, когда имеет смысл тянуться к этому инструменту, как разворачивать безопасно и сколько это реально стоит.

Что такое computer use на уровне механики

Принцип обманчиво простой. На каждом шаге:

  1. Ваш харнесс делает скриншот виртуального дисплея.
  2. Вы отправляете скриншот в Claude как изображение вместе с целью пользователя и историей действий.
  3. Claude отвечает tool call'ом: computer с действием вида { action: "left_click", coordinate: [834, 412] }, key, type, screenshot, scroll и т. д.
  4. Харнесс выполняет действие в ОС, делает свежий скриншот, и цикл повторяется.

Модель не запущена на вашей машине. Она занимается визуальным рассуждением по пикселям и выдаёт низкоуровневые намерения. Именно это делает её рабочей на легаси-софте без API, на сайтах, борющихся со скрейперами, и на внутренних инструментах, которые никто и никогда не обернёт в REST.

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: process.env.CLAUDEXIA_API_KEY!,
  baseURL: "https://api.claudexia.tech/v1",
});

const response = await client.beta.messages.create({
  model: "claude-sonnet-4.6",
  max_tokens: 1024,
  tools: [
    {
      type: "computer_20250124",
      name: "computer",
      display_width_px: 1280,
      display_height_px: 800,
      display_number: 1,
    },
  ],
  betas: ["computer-use-2025-01-24"],
  messages: [
    { role: "user", content: "Открой дашборд заказов и выгрузи CSV за сегодня." },
  ],
});

Когда брать (и когда не брать)

Computer use: инструмент с острыми краями. Сценарии, где он оправдывает себя:

  • Легаси без API. Внутренние ERP, терминалы мейнфреймов, портал поставщика 2009 года, то есть всё, где сделать настоящую интеграцию дороже самой работы.
  • Сайты за логином, блокирующие скрейперы. Там, где селектор Playwright ломается раз в неделю, модель, читающая отрендеренную страницу, оказывается на порядки устойчивее.
  • End-to-end тесты на визуальные регрессии. Не юнит-уровень, а «работает ли ещё чекаут после редизайна корзины».
  • Замена RPA. Большинство ботов на UiPath/Automation Anywhere: хрупкие скрипты «клик по координатам». Computer use заменяет их системой, которая адаптируется, когда кнопка переезжает.

Сценарии, где стоит уйти:

  • Всё, где есть нормальный API. Computer use дороже прямого вызова в 100–1000 раз.
  • Высоконагруженные пути, чувствительные к latency. Каждый шаг представляет собой round-trip с vision-токенизацией.
  • Задачи, где случайный клик по «не той» кнопке катастрофичен (продакшен-движение денег, инфраструктурные изменения, удаления). Используйте API с явными allow-листами.

Песочница: Docker + xvfb + Playwright

Никогда не запускайте computer use против реального десктопа. Рабочий в проде паттерн, одноразовый Docker-контейнер с виртуальным фреймбуфером и браузером, которым может управлять модель:

FROM mcr.microsoft.com/playwright:v1.50.0-jammy

RUN apt-get update && apt-get install -y \
    xvfb x11vnc fluxbox imagemagick && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY package.json ./
RUN npm install

COPY . .

ENV DISPLAY=:99
CMD ["bash", "-c", "Xvfb :99 -screen 0 1280x800x24 & fluxbox & node harness.js"]

Внутри контейнера ваш харнесс владеет циклом: запускает Chromium через Playwright, снимает скриншоты страницы (или через import из ImageMagick), шлёт их Claude, парсит tool call и диспетчит действие через page.mouse, page.keyboard и навигационные примитивы. Контейнер должен быть эфемерным: одна задача, один контейнер, жёсткий таймаут, потом уничтожение. Это и есть ваш blast radius.

Паттерн цикла

Минимально жизнеспособный харнесс короткий:

async function runTask(goal: string, maxSteps = 30) {
  const messages: Anthropic.MessageParam[] = [
    { role: "user", content: goal },
  ];

  for (let step = 0; step < maxSteps; step++) {
    const screenshot = await takeScreenshot();
    messages.push({
      role: "user",
      content: [
        { type: "image", source: { type: "base64", media_type: "image/png", data: screenshot } },
        { type: "text", text: `Шаг ${step}. Что дальше?` },
      ],
    });

    const res = await client.beta.messages.create({
      model: "claude-sonnet-4.6",
      max_tokens: 1024,
      tools: computerTools,
      betas: ["computer-use-2025-01-24"],
      messages,
    });

    if (res.stop_reason === "end_turn") return "done";
    const toolUse = res.content.find((c) => c.type === "tool_use");
    if (!toolUse) return "stuck";
    await executeAction(toolUse.input);
    messages.push({ role: "assistant", content: res.content });
  }
  throw new Error("превышен max_steps");
}

Несколько неочевидных деталей. Всегда переносите предыдущие ассистент-ходы вперёд: Claude нужна история действий, чтобы не повторяться. Всегда ставьте лимит max_steps: убежавший цикл обходится дороже всего. И всегда пишите каждый скриншот и действие на диск: когда что-то ломается, трейс остаётся единственным доступным отладчиком.

Советы по надёжности, которые реально работают

Месяцы прогона этих циклов в проде сходятся к одним и тем же практикам:

  1. Безжалостно декомпозируйте. «Обработай эту таблицу из 50 строк» падает. «Открой строку 1, скопируй email, вставь в форму, отправь, вернись к таблице» работает, и это запускается 50 раз.
  2. Явно повторяйте цель на каждом ходу. Повтор «твоя цель: выгрузить CSV» в user-сообщении каждый шаг держит модель в фокусе, когда страница меняется.
  3. Скриншот на каждом шаге, даже если модель его не просила. Модели иногда действуют по устаревшей памяти. Свежая картинка на ход срезает этот класс ошибок.
  4. Жёсткий потолок шагов и wall-clock времени. 30 шагов / 5 минут на задачу дёшево ловят бесконечные циклы.
  5. Валидация результата вторым вызовом модели. После выхода из цикла снимите финальный скриншот и спросите Sonnet «задача успешна? ответь да/нет одной строкой». Это ваш дешёвый CI-сигнал.

Реальная стоимость

Здесь интуиция обычно подводит. Computer use доминируется не output, а vision-токенами. PNG 1280×800 занимает примерно 1500–2000 input-токенов в зависимости от уровня детализации. Задача на 30 шагов с одним скриншотом на шаг занимает 45 000–60 000 input-токенов до того, как модель что-либо сказала. Output на их фоне маленький: пара tool call'ов на шаг.

Эмпирически, аккуратно поставленная задача укладывается в несколько центов, редко больше пары десятков центов end-to-end. Точные ставки зависят от модели, актуальные цифры смотрите в наших заметках по ценам. Длинные, исследовательские прогоны на топовых моделях могут уйти за $1+, если не следить. Помогают два рычага: агрессивный prompt caching системного промпта и tool schema, и даунсэмплинг скриншотов до минимально терпимого разрешения. 1024×640 часто достаточно.

Режимы отказа и что с ними делать

Чаще всего дело в галлюцинированных координатах: Claude кликает в (420, 380), а кнопка в (430, 395). Устойчивый фикс: retry с координатной сеткой. На неудачное действие наложите бледную сетку координат поверх скриншота и переспросите. Модель использует сетку как визуальный якорь, и второй заход почти всегда попадает.

Другие повторяющиеся проблемы:

  • Устаревшие скриншоты после навигации. Всегда дожидайтесь networkidle или короткого setTimeout перед следующим снимком.
  • Модальные окна, которые модель игнорирует. Добавьте в системный промпт «если видишь попап, закрой его, прежде чем продолжать».
  • Капчи. Стоп. Их автоматизировать не нужно. Корректно вываливайте задачу в очередь к человеку.

Сравнение с OpenAI Operator

Operator от OpenAI и computer use Anthropic в 2026-м сошлись к примерно одинаковой форме: цикл «скриншот вход → действие выход» в песочнице с браузером. Два практических отличия:

  • Профиль осторожности. Claude заметно консервативнее в деструктивных действиях: он остановится и переспросит перед удалением, оплатой, отправкой. В проде это плюс, в исследованиях иногда раздражает.
  • Глубина рассуждения на многошаговых планах. Sonnet 5 с extended thinking уверенно вырывается вперёд на задачах, где надо держать план из 10+ шагов через переходы между страницами.

Берите тот, чей харнесс лучше ложится на ваш стек. Разрыв в способностях небольшой, а разрыв в стоимости интеграции ощутимый.

Итог

К 2026 году computer use стал рабочим, полезным и, наконец, достаточно надёжным инструментом для узких, чётко определённых задач. Это не замена нормальным API и не правильный инструмент для высоконагруженных горячих путей. Но для длинного хвоста «у системы нет API и никогда не будет» он тихо стал самым прагматичным вариантом на столе. Жёстко изолируйте, лимитируйте шаги, логируйте всё и относитесь к нему как к неконтролируемому стажёру. Тогда вы получите много пользы за пару центов на задачу.