
С последними апдейтами Claude Code и Codex CLI классические сабагенты потеряли смысл. Сессии научились общаться между собой напрямую.
В сообществе всё чаще отключают автоматический спавн и отказываются от тяжелых ролевых конфигов: на Hacker News разработчики делятся воркэраундами, закрывают права через deny: [Agent(Explore)] или запускают CLI с флагом --disallowedTools Task, возвращая управление в свои руки.
Вместо обещанной параллельности и автономной команды сценарий часто выглядит так: модель берет обычную задачу, поднимает семерых детей... и съедает лимит аккаунта еще до того, как они закончат ресерч. При этом последовательный запуск в одном окне закрывает ту же задачу за пару минут без лишнего расхода токенов.
Ниже => разбор того, почему классические сабагенты стали оверхедом, и как устроен нативный пиринг живых сессий.
1. Сабагент это пустой контекст и перерасход токенов
Сабагент не является легким фоновым потоком текущей сессии. Архитектурно сабагент (включая кастомные именованные профили вроде code-reviewer) == холодный старт нового изолированного процесса.
Семь системных промптов, семь списков тулов, семь повторных вычиток репозитория. Назад -> короткий summary. Пока дети думают, родитель оплачивает ожидание.
У каждого нового сабагента инициализируется свое окружение: тяжелый system prompt, каталог тулов, файлы инструкций и собственный кэш. Завершив работу, потомок не передает родителю ход рассуждений, а возвращает только сжатый summary, где часто теряются важные детали.
С точки зрения процессов:
Для рядового фикса нанимаются семеро новых сотрудников. Каждому проводится онбординг с нуля, а затем каждые 30 секунд запрашивается статус на дейли. При этом каждый вопрос оплачивается по тарифу полного рабочего дня.
Настоящий пиринг устроен иначе: короткая реплика коллеге, который уже находится в контексте проекта, без перезапуска онбординга.
2. Codex CLI: спавн внутри треда и налог на ожидание
В OpenAI Codex CLI два открытых окна терминала изолированы: прямого межпроцессного сокета между ними нет. Сабагенты живут внутри одного корневого треда.

Команда /agent переключает дочерние треды внутри текущей сессии, а не между отдельными процессами.
Здесь возникают две статьи скрытых расходов:
Налог на опрос через wait_agent
По умолчанию таймаут wait_agent составляет 30 секунд. Если дочерний агент пишет код две минуты, родитель каждые 30 секунд просыпается и делает новый model turn по распухшему контексту.
Хотя архитектуры v1 и v2 поддерживают пробуждение по событиям, 30-секундный поллинг перезапускает модель и сжигает токены.
Налог на историю (FullHistory)
В MultiAgent V2 параметр fork_turns по умолчанию выставлен в all (режим FullHistory). Каждый потомок полностью копирует историю родителя. Глобального переключателя в конфиге нет => приходится задавать правила через developer_instructions.
В тестах ночного координатора на OpenAI Community сабагенты с гидратацией истории родителя сожгли в 2.6 раза больше квоты, чем чистые сессии. Дополнительно без явного вызова close_agent завершенный потомок продолжает занимать слоты max_threads.
3. Claude Code: потеря вывода и блокировки
В Claude Code сабагенты запускаются через инструмент Agent (ранее Task). С версии 2.1.198 они по умолчанию уходят в фон. Родитель получает только финальный summary. Лимиты: глубина до 3, параллельно до 20 воркеров.

Изоляция родительского контекста сохраняется, но токены перераспределяются по соседним процессам.
Основной риск здесь связан с доставкой данных.
Обрезка данных
При анализе поведения вывода: когда ответ сабагента упирается в лимит output-токенов, движок делит его на два сообщения ассистента, но родителю возвращается только последнее. Статус при этом отмечается как completed, без признаков обрезки.
В одном зафиксированном кейсе сабагент сгенерировал 151 652 символа (~75k токенов). Вызывающий процесс получил 24 353 символа => 127 215 символов (84% вывода) было потеряно.
Agent Teams и файловая синхронизация
В экспериментальных Agent Teams координация построена на JSON-файлах в ~/.claude/teams/{team}/inboxes/ и файловых блокировках:
Ведущий агент выполнил 42 226 вызовов
readMailbox, встретил 4 296 ошибок отсутствия файлов и блокировок.Через 2 часа 24 минуты ведущий процесс отключил команду и закончил задачу в одиночку за 18 минут.
Это классический пример из Теории ограничений (TOC): координация и handoff создали узкое горлышко, заблокировав всю работу.
4. Структура расхода токенов и кэш
Сравнение базовых множителей расхода:
Коэффициент |
Базовое сравнение |
Первоисточник |
Примечание |
|---|---|---|---|
~4× |
Относительно одиночного чата |
Исследование Anthropic (июнь 2025) |
Задачи ресерча, не кодинг |
~15× |
Относительно одиночного чата |
Там же (объем токенов объясняет 80% дисперсии качества) |
Не путать со стоимостью относительно одиночного агента |
3–10× |
Один агент на ту же задачу |
Блог Anthropic (январь 2026) |
Оверхед мультиагентной схемы |
~7× |
Обычная сессия Claude Code |
Документация costs.md |
Стоимость Agent Teams в Plan Mode |
По данным Anthropic, жесткое разделение ролей (планировщик / исполнитель / тестировщик / ревьюер) часто тратит больше ресурсов на координацию, чем на написание кода.
Три ключевых фактора удорожания:
Тяжелый префикс: каждый сабагент подгружает системный промпт и схемы тулов (~30k токенов).
Скрытая память: в замерах первый ход чекера на Haiku занял 20 993 токена, из которых 7 133 токена (34%) ушло на скрытую загрузку
MEMORY.md.Сброс кэша: в телеметрии на 95 сессиях и 1 777 сабагентах зафиксировано 96% сбросов кэша из-за того, что медиана простоя (~9 минут) превышает дефолтный TTL кэша в 5 минут.
5. Межсессионный пиринг
Альтернатива спавну сабагентов == прямое взаимодействие между прогретыми сессиями без промежуточных файлов и поллинга.
OpenAI Codex: чтение тредов и инъекция в поток
Вместо вызова spawn_agent используется фоновый демон codex app-server (JSON-RPC) и протоколы оркестрации тредов (см. архитектуру в репозитории OpenAI Codex и руководство OpenAI по Orchestrating Multi-Agent Systems with Handoffs):

Связь сессий через шину демона. Старый codex mcp-server устарел.
В интерфейсах ChatGPT и Codex Desktop эта механика выглядит как нативный межзадачный пиринг:

Сессия слева находит соседний тред (Listed chats), отправляет ему инструкцию (Sent message to chat) и забирает результат (Read chat), а сессия справа подхватывает контекст со служебной плашкой Sent by ChatGPT from another task.
Примитивы:
Чтение контекста:
thread/readс параметромincludeTurns(илиlist_threads/read_threadв Desktop).Отправка в поток:
thread/queue/*иturn/steer(дописывание указаний в текущий шаг), либо CLI-команда:codex queue --thread <id> --message <текст>.Добавление данных без генерации:
thread/inject_itemsвносит факты в историю без запуска платного model turn.
Claude Code: локальные сокеты и хуки
Инструменты ListAgents и SendMessage работают через локальный Unix-сокет или Named Pipe. Согласно документации Claude Code по межсессионному обмену и Agent Teams (а также исследованию Anthropic Building Effective Agents), этот механизм связывает не только сабагентов, но и независимые живые сессии (peers):

Если принимающая сессия занята, сообщение ожидает паузы между вызовами тулов.
Особенности:
Безопасная доставка:
SendMessageне прерывает запущенную команду (pytest), а встает в очередь (до 50 сообщений) до завершения текущего шага.Бесплатное ожидание: параметр
notify_when_idleбудит вызывающий процесс по завершении работы партнера (без циклического опроса).Инъекция через хуки (
additionalContext): передача системного контекста без генерации токенов через событиеUserPromptSubmit:
{ "hookSpecificOutput": { "hookEventName": "UserPromptSubmit", "additionalContext": "Current branch: release-42. Deploy freeze until Friday." } }
Изоляция воркспейсов через Git Worktree
Прямая передача сообщений исключает необходимость поддерживать файлы состояния (facts.md, state.json), из-за которых процессы нередко зависают часами в очередях на диске.

Git Worktree изолирует файлы, а нативная шина IPC передает сообщения.
Сессии запускаются в изолированных директориях или worktree:
Окно 1: бенчмарки и профилирование.
Окно 2: рефакторинг сервиса.
Сессии не создают файловых конфликтов и обмениваются короткими сообщениями вместо тяжелых дампов истории.
6. А когда сабагенты оправданы?
Сабагенты остаются полезными в трех конкретных случаях:
Изоляция тяжелого вывода: Поиск по десяткам файлов логов или парсинг документации. Сабагент забирает неструктурированный вывод и возвращает родителю только финальные строки, защищая основное контекстное окно от переполнения.
Независимое код-ревью: Проверка готового диффа агентом без предыстории обсуждения и промежуточных правок.
Широкий параллельный поиск: Одновременная проверка нескольких независимых гипотез в разных источниках, когда скорость ресерча важнее расхода токенов.
Кстати по 3 сценарию реализовано большинство дипресерчей, как пример в том же грок билде:

Для стандартных задач (багфикс, написание тестов, локальный рефакторинг) сабагенты создают избыточные задержки и расходы.
7. Практические сценарии работы

Вместо хаотичного спавна сабагентов на каждый чих, архитектура межсессионного пиринга позволяет выстроить четыре четких рабочих сценария:
1. Руководитель + Исполнитель
Как устроено: Первая сессия думает (держит верхнеуровневый контекст: собирает требования, проводит ресерч, декомпозирует задачу на шаги и контролирует прогресс). Вторая сессия работает чистым исполнителем — берет конкретный шаг, пишет код, гоняет тесты и рапортует о готовности. Так можно реализовать паттерны: Delegator/Dispatcher/Orchestrator/Planner.
Профит: Контекст умного чата не забивается простынями вывода компилятора, линтера и логов тестов, а воркер не тратит токены на удержание глобальной картины проекта.
2. Независимый критик на другой модели
Как устроено: Код пишется в первой сессии (например, на Claude Sonnet), а готовый дифф отправляется на ревью во вторую сессию, запущенную на другой модели (например, GPT-4o/o3) или со специальным системным промптом строгого аудитора / security-ревьюера. Паттерны Reviewer/Adversarial/Critic.
Профит: Устраняется когнитивная слепота генератора кода (модели сложно найти собственную логическую ошибку в том же контексте). Критик получает чистый дифф без предыстории правок и оценивает решение объективно.
3. Изоляция окружений: Git Worktree, субмодули и подпапки
-
Как устроено: Сессии запускаются в параллельных рабочих директориях:
В независимых ветках через
git worktree(одна сессия профилируетmain, вторая вносит оптимизации в ветке фичи).В изолированных
git submoduleили сервисных папках монорепозитория.В изолированных сендбоксе или вообще просто подпапке.
Профит: Исключаются конфликты блокировки файлов и нет необходимости бесконечно делать
git stash/checkout. Сессии работают в своих файловых деревьях с независимыми кэшами сборки, обмениваясь только фактами через шину сообщений.
4. Кросс-проектная координация (Shared-библиотека + Бэкенд / Клиент)
Как устроено: Сессии открыты в физически разных репозиториях (например,
company/shared-protoили общие схемы типов иcompany/backend-api/ мобильный клиент).Профит: Скоординированная разработка контрактов и интеграций без ручного переноса файлов. Первая сессия обновляет proto-схему или библиотеку, а вторая тут же синхронно подхватывает новые сигнатуры в коде бэкенда или фронтенда.
Ну и какой итог?
Основная задача управления разработкой => снижать неопределенность и удерживать процесс в предсказуемом состоянии.
Автоматический спавн сабагентов увеличивает число точек отказа, раздувает handoff и приводит к неконтролируемому расходу квоты. Межсессионный пиринг решает проблему изоляции и параллелизма без холодного старта и финансового оверхеда.
Практичный подход:
Одиночная сессия для 80% повседневных задач (багфикс, локальные фичи, тесты).
Пиринг прогретых окон в Worktree или разных репозиториях для оркестрации, независимого ревью и сквозной разработки.
Точечный изолированный сабагент с лимитом шагов только как «мусорка для контекста» при разборе гигантских сырых дампов данных.
Комментарии (11)

becefi
30.08.2026 06:25координация построена на JSON-файлах в
~/.claude/teams/{team}/inboxes/и файловых блокировкахЧто за ужос?

akardapolov
30.08.2026 06:25Ну, я так же делал - когда писал свою систему для обмена сообщений между агентами (январь 2026 г., Claude Code). Правда без блокировок, насколько помню.

mixsture
30.08.2026 06:25mailboxes. Технология из линукс…ммм…наверно 40-50 летней давности. И это все живет в одной эпохе с оптимизированными на доставку протоколами, шинами, эвент сорсингом, веб хуками. Киберпанк, который мы заслужили.

izogfif
30.08.2026 06:25Семь системных промптов, семь списков тулов, семь повторных вычиток репозитория. Назад -> короткий summary. Пока дети думают, родитель оплачивает ожидание.
У каждого нового сабагента инициализируется свое окружение: тяжелыйsystem prompt, каталог тулов, файлы инструкций и собственный кэш. Завершив работу, потомок не передает родителю ход рассуждений, а возвращает только сжатый summary, где часто теряются важные детали.1) Почему system prompt должен быть тяжелым?
2) Какой смысл передавать весь ход рассуждений? Если нужно передать только часть, то это можно указать в prompt'е.
3) Есть же late-cli, где в sub-agent'ов передается минимальное необходимое количество информации.

mixsture
30.08.2026 06:25Сессия слева находит соседний тред (Listed chats), отправляет ему инструкцию (Sent message to chat) и забирает результат (Read chat), а сессия справа подхватывает контекст со служебной плашкой Sent by ChatGPT from another task
И это будет мега-дыркой в существующей модели безопасности, нужна намного более развитая модель разрешений, чем сейчас. Сейчас все работает внутри контекста одной задачи с явными разрешениями/запрещениями. При общении сессий между собой - текущая сможет опросить все остальные “у кого есть права, которых нет у меня” и таки стереть с помощью них много важного.
Ну а про “ничего не удаляй, только читай” - это так, вероятностная штука, скорее защита от дурака, ее модель может как исполнить, так и забить. Нужны именно строгие внешние ограничения.

SergeiGer
30.08.2026 06:25Что в статье верно — и чего в ней не хватает
С главным тезисом я согласен: запускать холодного сабагента «по умолчанию» дорого. В статье хорошо названы реальные источники цены: ожидание
wait_agentс типовым интервалом 30 секунд, перенос полной истории черезfork_turns=all, потеря контекста и большой хвост вывода. Приведённый там пример, где из примерно 151 тысяч символов наружу дошла лишь малая часть, — не экзотика, а важное предупреждение: длинный ответ сам по себе ещё не результат.Но я бы не объявлял сабагентов умершими. Их полезная роль уже: изолированный контейнер для шумного поиска, независимый критик, параллельная проверка несвязанных гипотез. Для совместной производственной работы лучше подходят тёплые независимые сессии с устойчивой ролью и собственным рабочим деревом. Это не «роевой разум», а несколько специалистов с ясными границами и точкой сборки у человека.
Наш опыт добавляет к статье три менее заметных урока.
Координация файлами почти неизбежно превращается в отдельный продукт. Мы прошли через общие JSON-файлы, папки входящих результатов и дополнения к заданиям. 27 августа от этого отказались в пользу единого HTTP-интерфейса: файловый обмен стал бутылочным горлышком, а не средством работы.
Зелёные статусы не доказывают доставку. Задание может числиться выданным, аренда — живой, опрос — свежим, а модель фактически не получила сообщение и не начала работу. Статья подробно считает цену агентов, но почти предполагает, что команда уже дошла до исполнителя.
Для этой разницы нужен не ещё один heartbeat, а проверяемый вызов-ответ. Одноразовый идентификатор в сообщении, который модель обязана вернуть точно, даёт наблюдаемое различие между «транспорт выглядит здоровым» и «исполнитель действительно доступен». Это не лечит сбой, но прекращает самообман диагностики.
Поэтому мой вывод чуть иной: проблема не в самих сабагентах, а в неограниченном делегировании без доказуемой доставки, ограниченного контракта результата и владельца, который принимает решение.
2. Как устроена наша система сейчас — без рекламной версии
Сейчас у нас есть несколько тёплых независимых сессий на двух AI-платформах. У каждой сессии собственное рабочее дерево Git; задачи, сообщения, прогресс и результаты идут через один HTTP API. Формат результата назначается заранее: что именно должно быть в отчёте, какие свидетельства нужны, как отмечаются непроверенные части и чем завершается полный отчёт. Перед работой сессия перечитывает актуальный канон правил и подтверждает это отдельной квитанцией.
Это не автономная фабрика. Приоритеты, границы и принятие результата остаются у человека. Сессия не должна сама менять очередь, статус соседней работы или критерии приёмки.
И у системы есть неприятные, пока не закрытые ограничения.
Переход на API-only произошёл только 27 августа, после неудачного опыта файловой координации; это недавняя миграция, а не зрелая платформа.
Сессия может зарегистрироваться и при этом ни разу не дойти до настоящей работы.
Принятый отчёт может оказаться недоступным, а усечённый текст трудно отличить от законченного без явного терминатора. Терминатор обнаруживает обрыв текста, но не возвращает потерянный результат.
Самовосстановления после перезапуска пока нет: восстановление доставки и исполнителей требует отдельной проверки и участия оператора.
Проверочный одноразовый вызов-ответ помогает обнаружить молчание, но не создаёт доставку и не заменяет исправление транспорта.
В таком виде это скорее дисциплина эксплуатации, чем готовый рецепт масштабирования. Самая полезная мысль из обсуждаемой статьи для нас — не «запрещать агентов», а не платить за параллельность, пока не доказаны доставка, границы ответственности и пригодность результата.
vaslobas
Пустой контекст это и плюс, что агент взглянет на все по-новому без подсказок и галлюцинаций старого.
Renewal_Studio Автор
В большинстве случае это сильно мешает, так как требуется не голый адверсариал, а учет важных аспектов и просто взгляд со стороны. Опять таки есть вопрос оркестрации и работы сабагент который каждый раз открывается и не пиннится скорее бесполезен. А постоянно запущенные сабагенты вообще по сути те же чаты
KivApple
Если обрабатываем какой-то нетривиальный edge case (который для агента без контекста выглядит как баг), то это должно быть либо в комментариях, либо в документации. Тут найденный "баг" будет поводом поправить документацию или комментарии. Плюс родитель то имеющий контекст способен отсеять false-positive в выводах субагентов.