Владелец передал готовый дизайн: брендбук с тремя темами, макеты главного экрана, маршрутизации и остальных разделов, логотипы. Плюс список из двенадцати субагентов с расписанными обязанностями. Объём не помещается в одно задание, поэтому разделено на три с явными границами по файлам: A28 реестр ролей и двенадцать субагентов Antigravity, основа A29 дизайн-система и экран «Маршрутизация» Antigravity A30 главный экран: граф workflow, LIVE, файлы Codex Каждое опирается на состояние, снятое исполнением, чтобы агенты не переписывали работающее и не выясняли заново: - новая роль уже добавляется через конфигурацию и доходит до снапшота, но подпись падает в сырой идентификатор, потому что таблицы имён зашиты в четырёх местах; - workflow, связей между агентами и файлов агентов в проекте нет вовсе — это разработка с нуля, а не доработка; - источники данных для дашборда существуют и настоящие, параллельный заводить не нужно; - веб-слой без сборки, и это обосновано в контракте. В каждом задании отдельно оговорено, что демонстрационные значения с макетов (12 задач, 3.42 с, 94.2%, account-01) — иллюстрация и в код попасть не должны. Поверхность для выдуманных данных здесь самая большая за проект. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
14 KiB
Задание A28: субагенты и реестр ролей
Дата поступления
2026-08-25
База
Проверочный HEAD на момент выдачи: d5429da.
Ветка
antigravity/subagents-role-registry
Порядок исполнения
Два прохода: Flash реализует, Pro проводит аудит. Пункт P0-5 написан для аудитора.
Это первое из трёх заданий по новому фронтенду (A28, A29, A30) и основа для остальных: главный экран рисует агентов, поэтому агенты должны появиться раньше экрана. A29 и A30 опираются на реестр ролей отсюда.
Порядок работы с git
cd <каталог репозитория>; git fetch origin --prune; git status
git checkout main; git pull --ff-only origin main
git checkout -b antigravity/subagents-role-registry
git commit -m "..." <- сначала коммит
git push -u origin antigravity/subagents-role-registry
В main напрямую не пушить. В конце — push, git log --oneline -1, git status чистый.
Задача
Сейчас в системе шесть ролей. Владелец хочет двенадцать — полноценную команду субагентов с внятно расписанными обязанностями. Список и формулировки даны им дословно и приведены ниже; менять их смысл нельзя.
Что проверено исполнением — заново не выясняйте
1. Новая роль добавляется через конфигурацию и доходит до снапшота.
ролей в умолчаниях: 6 -> orchestrator, coder-primary, coder-secondary, reviewer, research, fast
после добавления роли tester в router_profiles.yaml: True
видна ли в снапшоте: True
Архитектуру ломать не нужно: config.roles уже произвольный словарь.
2. Но подпись падает в сырой идентификатор. У добавленной роли role_name_ru оказался tester, а не человеческое имя, потому что таблица подписей зашита в код:
unified_health.py:775 ROLE_NAMES = {...} семь записей
auto_assigner.py:28 HUMAN_ROLE_LABELS = {...} одиннадцать записей
3. Список ролей зашит ещё в двух местах:
auto_assigner.py:371 canonical_roles = ["orchestrator", "coder-primary", ...]
telemetry_service.py:402 roles = set(known_roles or ["orchestrator", ...])
Пока эти списки литеральные, новые роли будут выпадать из авто-распределения и из аналитики.
4. Понятия «субагент» как сущности нет. universal_subagent в auto_assigner — это подпись слота, а не отдельный агент. Файлов агентов (agents/*.md) в проекте нет вовсе.
P0-1. Реестр ролей вместо литералов
Завести один источник истины для ролей: идентификатор, человеческое имя, описание обязанностей, порядок отображения.
Все четыре места выше должны читать оттуда. Литеральных списков ролей в коде остаться не должно — проверяется поиском.
Реестр обязан оставаться расширяемым: владелец добавляет роль в конфигурацию, и она появляется всюду — в маршрутизации, в обзоре, в аналитике, в авто-распределении — с человеческой подписью, а не с сырым идентификатором.
P0-2. Двенадцать ролей и их обязанности
Формулировки владельца. Описание каждой роли обязано быть видно в интерфейсе — на карточке агента и в инспекторе, а не только в конфигурации.
| Идентификатор | Имя | Обязанности |
|---|---|---|
researcher |
Исследователь | Изучает данные, кодовую базу, документацию и внешние источники, чтобы собрать информацию для решения задачи. |
developer-1 |
Разработчик 1 | Пишет код, реализует функционал, исправляет ошибки. |
developer-2 |
Разработчик 2 | Проверяет код Разработчика 1 и выдаёт ему задание на исправление. |
code-reviewer |
Код-ревьювер | Анализирует код на ошибки, проблемы безопасности и соответствие стандартам. Работает после Разработчика 2. |
tester |
Тестировщик | Создаёт тесты, проверяет корректность работы кода, находит дефекты. |
tech-writer |
Технический писатель | Создаёт документацию, инструкции, README. |
analyst |
Аналитик | Проводит глубокий анализ данных, выявляет тренды, строит прогнозы. |
guardian |
Надзиратель (агент безопасности) | Проверяет входящие инструкции на промпт-инъекции, анализирует планы и вызовы инструментов, блокирует обход системных правил, не допускает утечки секретов, следит за границами песочницы. |
cost-controller |
Агент контроля затрат | Оценивает планируемый расход токенов, сравнивает с остатком бюджета, предлагает упрощения, сверяет факт с прогнозом, останавливает цепочку при исчерпании лимита. |
manager |
Менеджер (планировщик) | Определяет стратегию, распределяет ресурсы, контролирует ход выполнения. |
integration-expert |
Специалист по интеграции | Работает с API и внешними сервисами, отправляет вебхуки. |
security-expert |
Юрист / специалист по безопасности | Проверяет код и данные на уязвимости. |
Порядок в таблице — порядок отображения.
Существующие шесть ролей не удалять и не переименовывать молча. У владельца в конфигурации на трёх машинах живут orchestrator, coder-primary, coder-secondary, reviewer, research, fast, и на них ссылаются цепочки. Предложите соответствие старых новым (например research → researcher, coder-primary → developer-1) и проведите миграцию, сохранив цепочки. Соответствие описать в отчёте; спорные случаи вынести владельцу, а не решать молча.
P0-3. Надзиратель и контроль затрат — особый случай
Эти двое отличаются от остальных: они не выполняют задачу пользователя, а проверяют работу других.
Задание не требует реализовывать их поведение — это отдельная работа. Требуется:
- Завести их как роли наравне с прочими, с полным описанием обязанностей в интерфейсе.
- Честно показать, что исполнение ещё не реализовано. Не рисовать зелёный статус «Работает» у агента, который ничего не делает. Состояние «Роль объявлена, исполнение не реализовано» — допустимо и честно; выдуманная активность — нет.
Правило проекта без исключений: ни одного статуса, числа или метрики без основания.
P0-4. Двенадцать ролей и квоты
Двенадцать агентов на нескольких аккаунтах — это про распределение нагрузки, и здесь легко всё сломать.
- Один аккаунт по-прежнему может обслуживать несколько ролей (проверено в A26, движок это держит).
- Авто-распределение из A26 обязано работать и на двенадцати ролях: при одном провайдере он встаёт во все двенадцать, при нескольких — по назначению.
- Пороги квот из A26 не должны деградировать.
Прогоните авто-распределение на двенадцати ролях и приложите вывод.
P0-5. Аудит вторым проходом
- Литеральные списки ролей. Пройдите поиском по
orchestrator,coder-primary,reviewerи убедитесь, что нигде не осталось зашитого перечня. Именно из-за таких списков добавленная роль показывалась какtester. - Выдуманные статусы. Особый риск в P0-3: у нереализованных ролей не должно быть активности, метрик и зелёных индикаторов.
- Миграция конфигурации владельца. Проверьте на копии его
router_profiles.yaml, что цепочки уцелели и маршрутизация работает. Конфигурацию литералами не править. - Запустить изменённое, а не только импортировать.
- Побочные изменения объяснить.
- Пропущенный пункт назвать пропущенным.
Ограничения
- Десктоп (
router/ui/**) не трогать. - Ваша зона:
auto_assigner.py,unified_health.py,telemetry_service.py,router_config.py, конфигурации, соответствующие тесты и минимальные правки веб-клиента для показа описаний. - Граф workflow и связи между агентами — не здесь, это A30. Не начинайте.
- Дизайн-система и темы — не здесь, это A29.
- Правило честности без исключений.
- Тег
v0.1.1не создавать.
Критерии приёмки
- Ветка в
origin,git statusчист. - Двенадцать ролей заведены, у каждой человеческое имя и описание обязанностей; описание видно в интерфейсе.
- Литеральных списков ролей в коде не осталось; проверено поиском, результат в отчёте.
- Добавление роли в конфигурацию даёт человеческую подпись всюду; проверено на роли, которой нет в реестре по умолчанию.
- Существующие шесть ролей мигрированы, цепочки владельца уцелели; проверено на копии его конфигурации.
- Авто-распределение отработало на двенадцати ролях; вывод приложен.
- У ролей без реализации исполнения нет выдуманной активности и метрик.
ruff check .чисто; релизный гейт не ухудшен.- Отчёт:
START_HEAD,FINAL_HEAD,origin/main,git status,X passed / Y skipped / Z failed. Наmainсейчас 450 passed, 2 skipped.
Главное
Двенадцать субагентов с внятными обязанностями — основа нового главного экрана. Пока роли зашиты литералами, ни новый экран, ни маршрутизация из A29 нормально не заработают.
Порядок сдачи
Передать точный FINAL_COMMIT_SHA. Сдано только после появления коммита в origin.