Перейти к содержанию

developer-tools

SDK для Claude сами ведут цикл computer use, браузер ваш

Claude News

Флаг run_tools_eagerly устроен так, что клик может случиться раньше, чем Claude допишет ответ. Если ответ оборвётся, Claude не узнает, что действие уже выполнено. Сама новость шире: как сказано в документации Anthropic, Python и TypeScript SDK сами ведут цикл browser use и computer use, а браузер или рабочий стол остаются за вами.

Коротко

  • В Python и TypeScript SDK для Claude появились готовые классы для browser use и computer use, а Browser Use, Browserbase, E2B и Daytona предлагают совместимые с ними драйверы.
  • Вы наследуете класс и пишете по методу на действие вроде navigate или left_click. SDK раздаёт вызовы, прогоняет URL-политику, файловую политику и callback подтверждения, затем собирает tool_result.
  • Браузера, готового драйвера и URL-политики в комплекте нет. Из шести рекомендованных мер безопасности SDK закрывает три, а перехват запросов, egress-правила и изоляцию хоста делаете вы сами.

Computer use появился в публичной бете 22 октября 2024 года вместе с обновлённой Claude 3.5 Sonnet. По данным AI Wiki, Anthropic тогда называла функцию экспериментальной, громоздкой и склонной к ошибкам. По данным Explainx, computer use и browser use стали общедоступными 20 августа 2026 года. При этом, как напоминает ClaudeDevs, цикл всё это время писали сами: API лишь сообщал, куда Claude хочет кликнуть и что напечатать.

Драйвер наследуется от BetaAbstractBrowserToolset20260801 и реализует только нужные действия

Драйвером в документации называют ваш подкласс BetaAbstractBrowserToolset20260801. В примере из quick start он умеет три действия (navigate, screenshot и left_click) и обязательный метод _browser_state, который отчитывается о состоянии браузера. Внутри стоит ваша обёртка над библиотекой автоматизации, например Playwright. Для рабочего стола есть парный класс. По документации Claude Platform, одна запись computer_toolset_20260801 даёт Claude 17 инструментов вроде screenshot, left_click, type и zoom.

Экземпляр драйвера передаётся прямо в tools. Действие, которое вы не реализовали, уходит в API как отключённое. Если Claude всё же его вызовет, SDK вернёт ошибку, и прогон продолжится. Runner драйвер не закрывает, так что один экземпляр обслуживает несколько прогонов, а закрыть его нужно вручную.

В TypeScript есть пара ловушек. Действия пишут как методы класса, а не стрелочные поля, потому что SDK ищет их в прототипе, а действие type там называется type_. Минимальный пример на Chrome DevTools Protocol лежит в claude-quickstarts на обоих языках, и Anthropic прямо предупреждает, что для продакшена он не годится.

Хук в execute срабатывает после всех проверок, и изменённый вход SDK не перепроверяет

Для логирования или своей проверки переопределяют execute и вызывают родительский метод. Код до этого вызова срабатывает уже после URL-политики, файловой политики и confirm. Он может поменять вход, и SDK изменённый вход заново не проверит. Код после вызова видит результат и тоже может его поправить, а ToolError отклоняет вызов.

У переопределённого execute есть побочный эффект: SDK считает реализованными все действия и предлагает Claude всё, что включено по умолчанию, в том числе то, чего драйвер не умеет. Лишнее выключают через configs. Текст ToolError Claude читает как результат с ошибкой, другие исключения приходят в виде «ClassName: message», и прогон идёт дальше. ToolsetUsageError останавливает всё и долетает до вызывающего кода.

Локальные пути SDK не прячет ни в тексте ошибок, ни в строке, которую возвращает действие вроде left_click, ни в сообщениях закрытых диалогов. Текст ToolError из вашей политики или confirm Claude читает дословно. Поэтому документация советует ловить исключения в методах и писать в ToolError свой текст.

Ранний старт запускает действие, пока ответ Claude ещё стримится

По умолчанию tool runner выполняет вызовы хода, когда Claude закончил ответ. Если передать stream=True и run_tools_eagerly=True, runner начнёт действие в браузере или на рабочем столе ещё во время стриминга. Каждый проход по циклу при этом отдаёт поток вместо сообщения.

Проверки остаются на месте: URL-политика, файловая политика и confirm срабатывают до вызова, просто confirm может спросить вас ещё посреди стрима. Вызовы по-прежнему идут по одному, в том порядке, в каком их написал Claude, и упавший вызов отменяет остальные вызовы этого хода.

Главная проблема в том, что начатое действие уже не отменить. Если ответ оборвётся на max_tokens или ваш цикл остановится раньше, клик всё равно случится, а Claude его результата не прочитает.

URL-политика проверяет только адрес в navigate, остальное ловят перехват и egress

Защита строится в три слоя. URL-политику SDK вызывает как функцию перед каждым navigate и передаёт ей адрес в том виде, как его написал Claude. Если функция ничего не вернула, переход разрешён, а если бросила ToolError, Claude прочитает текст ошибки. На back, forward и reload политика не срабатывает, а url_policy=None запрещает любой переход (в TypeScript undefined просто оставляет опцию незаданной).

Представьте охранника, который проверяет адрес в заказе такси, но не видит, куда пассажир пойдёт пешком. Клики по ссылкам, формы, редиректы и запросы самой страницы проходят мимо политики, и увидеть их может только драйвер, если перехватывает запросы. Но и хук перехвата не замечает WebSocket-рукопожатий, service worker и шагов редиректа. Поэтому последний слой отдают сети контейнера: egress-правила блокируют приватные и link-local диапазоны IPv4 и IPv6, включая адрес облачных метаданных.

Из шести шагов, которые советует документация, SDK выполняет три: URL-политику, ограничение загрузок и выгрузок и подтверждение через confirm. Перехват запросов, egress и отдельный контейнер или VM на каждую сессию остаются за вашим драйвером и инфраструктурой.

На наш взгляд, самое слабое место в том, как SDK обращается с URL. Он их не разбирает: заменяет управляющие символы пробелами, обрезает края и режет адрес на 4 096 символах, так что содержимое data: URL, путь из file: URL и логин с паролем в адресе доходят до Claude как есть. Пример на CDP не для продакшена, а URL-политики в комплекте нет, так что основная работа по безопасности, судя по всему, остаётся на разработчике.

Где ещё заработает toolset

По данным Explainx, обновлённые инструменты computer и browser скоро должны появиться в Google Cloud Vertex AI, но сроки не названы. В документации Claude Platform отмечено, что в Claude Managed Agents новый toolset пока недоступен, и дата его подключения не называется. По данным того же Explainx, старые модели пока остаются на computer_20251124 с beta-заголовком, и когда их переведут на новый набор, не сказано.

Читайте также

  1. Opus 5.5 подешевел, но ломает агентов ошибкой 400
  2. Просмотрщик сессий в ant CLI и режим auto у агентов Claude
  3. Торговые агенты на Claude: код открыт под Apache 2.0
  4. ant apply синхронизирует агентов Claude с репозиторием
  5. Правка истории диалога ломает запрос в Claude Fable 5.1
  6. Computer use и Skills API на Claude Platform вышли из беты

Комментарии

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.

Из Google мы используем только имя и аватар. Почту не сохраняем.