⚪️ Codex Sub-Agents, vNext
В связи с предыдущим постом, я тут немного поразбирался в субагентах кодекса. В связи с чем решил накатать этот пост.
▶️ Во-первых, и это уже месяц минимум как не новость - в кодексе сделали более-менее стандартных субагентов как в СС. То есть их можно описывать в отдельном файле, обзывать по имени, и задавать им кастомный промпт с настройками тулов/mcp. Всё "как у людей", вернее, как в СС было с лета 2025)) Поэтому чувство дежавю легкое. Но тут клозеды не удержались, и сделали не в стандартном md файле описание, а в .toml. Не особо страшно, но не удобно - скиллы то они нормальные заюзали! Надо будет насоветовать им в сторону md с фронтметтером. Чего они выделяются то?!
❓Спросите - ну и чо? На самом деле это открывает возможность создания кастомных агентов, промптом заточенных на определенную задачу, которые уже умеют делать эту задачу (за счет промпта) и им не надо разбираться как оно делается. Вроде бы и стандартный агент может скилл прочитать... Поэтому - да, сейчас скиллы во многом заменили кастомных агентов, может быть поэтому новость прошла мимо меня.
▶️ Во-вторых, поразбирался в потрохах системы суб-агентов. Не особый секрет, что сейчас в кодексе делается новая версия агентного сварма, который исторически в коде именуется multi-agent, а на публике стал sub-agents. В общем, в кодексе готовится multi-agents-v2, которую уже можно включить фичафлагом (multi_agent_v2).
Тут много заметных ихменений. Самое главное - это модель коммуникации/управления субагентами. Раньше субагент запускался как дочерняя сессия, и задачи ему поступали как имитация сообщения пользвоателя. И ответ поступал как сообщение пользвоателя. Поэтому в апи управления субагентами было ожидание определенного субагента.
▶️ В новой системе перешли на "агентную почту". Агент может отпарвить сообщения другому агенту (считайте, что по имени). Можно "заснуть" до момента поступления любого сообщения. То есть оркестратор запустив в работу сварм субагентов, может "заснуть" и ожидать, когда его разбудит или сообщение от любого агента, или ввод пользователя. Теперь не обязательно "бегать кругами вокруг агентов" в ожидании результата! Ну и агентная почта поступает с метаданными - то есть видно кто написал.
Письма субагенту могут прерывать его текущую работу, или нет. Если нет - то это аналог steer сообщений пользователя, которые поступают в контекст модели и она принимает их "к сведению".
▶️ Есть некоторые особенности управления контекстом для субагентов. Если мы наследуем контекст родительской сессии - то мы наследуем и модель, и все сообщения сессии, и уровень ризонинга.
Но есть и возможность начинать субагента либо с пустого контекста, либо взять в контекст один или более последних "ходов". Ход - это группа сообщений сессии, обычно от сообщения пользователя до завершения работы модели и ее финального сообщения. Из этих ходов фильтруются все блоки размышлений, тулюза - остаются только промежуточные комментарии модели при выполнении и сообщения (видимо, пользвоателя и других агентов).
Кастомного субагента (терминология плавает - это то agent role, то agent type) может быть назначена только если контекст пустой или настледует ограниченное количество ходов. полный форк сессии не позволяет "повесить" на нее роль - видимо, потому что только чатсичный форк позволяет собрать контекст заново, с инъекцией инструкций кастомного субагента вначале.
▶️ В общем, система выглядит гораздо более рабочей в части мультиагентного применения.
@deksden_notes
Post #711
1.6K
- 👍 16
- 🔥 6
- ❤ 3
- ✍ 1
- ❤🔥 1