Новости и статьи об искусственном интеллекте и нейросетях. Мы собираем и обрабатываем самую актуальную информацию из мира AI. О проекте

Новости

Масштабирование управляемых агентов: отделяем мозг от рук

Anthropic запустила Управляемые агенты в платформе Claude для долгосрочных задач: виртуализированы сессия, каркас и песочница. Разграничение мозга от рук и сессии устраняет сбои, упрощает отладку, усиливает безопасность и снижает TTFT на 60-90%. Система готова к будущим моделям и масштабу.

24 апреля 2026 г.
8 мин
15

В инженерном блоге часто обсуждают создание эффективных агентов и проектирование каркасов для задач длительного выполнения. Такие каркасы включают предположения о возможностях Claude, которые быстро устаревают по мере улучшения моделей.

Например, ранее выяснилось, что Claude Sonnet 4.5 преждевременно завершал задания, приближаясь к пределу контекста — это называлось "тревогой контекста". Проблему решали перезагрузкой контекста в каркасе. Однако с Claude Opus 4.5 этого уже не требовалось, и перезагрузки стали лишними.

Каркасы продолжают развиваться, поэтому создали Управляемые агенты — сервис в платформе Claude для запуска агентов долгосрочного действия через стабильные интерфейсы, независимые от текущих реализаций.

Разработка Управляемых агентов решила классическую задачу: создание системы для будущих программ. Операционные системы когда-то виртуализировали аппаратное обеспечение в общие абстракции вроде процесса и файла. Команда read() одинаково работает с дисками 1970-х или современными SSD, пока интерфейсы стабильны, а реализации меняются.

Управляемые агенты применяют тот же подход. Виртуализированы ключевые части агента: сессия (неизменяемый лог событий), каркас (цикл вызовов Claude и маршрутизации инструментов) и песочница (среда для выполнения кода и правок файлов). Это позволяет менять реализации независимо, фиксируя только форму интерфейсов.

Схема архитектуры Управляемых агентов: сессия, каркас и песочница

Не заводите домашнего питомца

Сначала все компоненты агента поместили в один контейнер: сессия, каркас и песочница делили среду. Плюсы включали прямые системные вызовы для правок файлов без границ сервисов.

Но такая связка создала проблему: получился "питомец" по аналогии с pets-vs-cattle. Питомец — это уникальный экземпляр, требующий ручного ухода, в отличие от interchangeable скота. Сервер стал питомцем: сбой контейнера уничтожал сессию, а зависший требовал реанимации.

Отладка зависших сессий проходила через WebSocket-поток событий, который не показывал источник сбоя — будь то ошибка в каркасе, потеря пакета или отключение контейнера. Инженеру приходилось заходить в shell контейнера с данными пользователей, что делало диагностику невозможной.

Каркас предполагал, что ресурсы Claude находятся в том же контейнере. При запросах подключения к частным облакам клиентов приходилось либо соединять сети, либо переносить каркас. Предположение стало барьером.

Решение — разграничить "мозг" (Claude и каркас) от "рук" (песочниц и инструментов) и сессии (лога событий). Каждый элемент стал независимым интерфейсом, устойчивым к сбоям.

Каркас выходит из контейнера. Мозг теперь вызывает контейнер как инструмент: execute(name, input) → string. Контейнеры превратились в скот. При сбое каркас ловит ошибку инструмента и передает Claude. При повторной попытке создается новый контейнер по рецепту: provision({resources}). Больше не нужно спасать контейнеры.

Восстановление после сбоя каркаса. Каркас тоже стал скотом. Сессионный лог вне его, так что при крахе новый запускается командой wake(sessionId), загружает лог через getSession(id) и продолжает с последнего события. В цикле агента каркас фиксирует события: emitEvent(id, event).

Схема разграничения мозга, рук и сессии в Управляемых агентах

Граница безопасности. В связанной схеме любой ненадежный код от Claude выполнялся в контейнере с учетными данными — инъекция промта позволяла их прочитать. С токенами злоумышленник мог создавать неограниченные сессии. Ограничение области помогало, но Claude становится умнее. Структурное решение: токены недоступны из песочницы.

Применены два подхода. Авторизацию пакуют с ресурсом или хранят во внешнем хранилище. Для Git токен репозитория используется при инициализации песочницы для клонирования, интегрируется в локальный remote. Внутри push и pull работают без передачи токена агенту. Для пользовательских инструментов — поддержка MCP с OAuth в хранилище. Claude вызывает через прокси с токеном сессии, прокси берет credentials и звонит сервису. Каркас не видит учетных данных.

Сессия — не окно контекста Claude

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

Но необратимость приводит к сбоям: неизвестно, какие токены понадобятся позже. При компакции удаленные сообщения восстанавливаемы только при хранении. Исследования предлагали хранить контекст вне окна, как объект в REPL, доступный кодом для фильтрации.

Пример хранения контекста вне окна в REPL

В Управляемых агентах сессия дает то же преимущество: объект контекста вне окна Claude, надежно в логе. Интерфейс getEvents() позволяет выбирать срезы по позициям. Мозг гибко использует: продолжает с последней точки, отматывает для предыстории или перечитывает перед действием.

Загруженные события трансформируются в каркасе перед окном Claude — для организации, кэша промтов или инженерии контекста. Разделены хранилище в сессии и управление в каркасе, так как будущее инженеринга непредсказуемо. Интерфейсы гарантируют только доступность лога.

Много мозгов, много рук

Много мозгов. Разграничение решило жалобу клиентов: для ресурсов в их VPC требовалось соединение сетей, так как каркас ожидал ресурсы рядом. Без контейнера предположение исчезло. Плюс производительность: раньше каждый мозг требовал контейнер с полной инициализацией — клонирование, загрузка событий.

Это проявлялось в time-to-first-token (TTFT) — задержке до первого токена ответа, наиболее заметной для пользователя.

Теперь контейнеры создаются по необходимости через execute(name, input) → string. Без нужды в песочнице вывод начинается сразу после загрузки событий. p50 TTFT упал на 60%, p95 — более чем на 90%. Масштаб — запуск stateless каркасов с подключением рук по делу.

Много рук. Нужно подключать мозг к нескольким средам, решая, куда делегировать — сложнее одной shell. Раньше модели не справлялись, контейнер ограничивал: сбой терял состояние всех рук.

Каждая рука — инструмент execute(name, input) → string: имя и вход, строка на выходе. Поддерживает любые инструменты, MCP, свои. Каркас не знает, контейнер это или эмулятор. Руки не привязаны, мозги передают их друг другу.

Схема подключения нескольких мозгов к рукам в агентах

Заключение

Задача старая: системы для несуществующих программ. ОС выжили десятилетиями благодаря абстракциям над железом. Управляемые агенты создают платформу для будущих каркасов и компонентов вокруг Claude.

Это мета-каркас без мнения о конкретных реализациях для Claude. Система с общими интерфейсами для разных каркасов. Например, Claude Code отлично работает в задачах, специализированные — в нишах. Подходит под любые, адаптируясь к росту интеллекта Claude.

Мета-дизайн фиксирует интерфейсы вокруг Claude: манипуляция состоянием (сессия), вычисления (песочница). Масштаб на мозги и руки. Интерфейсы обеспечивают надежность и безопасность на длинных горизонтах без предположений о количестве или размерах.