惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V2EX - 技术
V2EX - 技术
P
Privacy International News Feed
Security Latest
Security Latest
H
Hacker News: Front Page
T
Tenable Blog
The Hacker News
The Hacker News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Security @ Cisco Blogs
Project Zero
Project Zero
O
OpenAI News
AI
AI
Spread Privacy
Spread Privacy
C
CERT Recently Published Vulnerability Notes
The Last Watchdog
The Last Watchdog
G
GRAHAM CLULEY
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Scott Helme
Scott Helme
Application and Cybersecurity Blog
Application and Cybersecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
NISL@THU
NISL@THU
A
Arctic Wolf
T
Threat Research - Cisco Blogs
PCI Perspectives
PCI Perspectives
N
News and Events Feed by Topic
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
Simon Willison's Weblog
Simon Willison's Weblog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Know Your Adversary
Know Your Adversary
Google Online Security Blog
Google Online Security Blog
罗磊的独立博客
L
LINUX DO - 最新话题
U
Unit 42
S
Security Affairs
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
博客园 - 【当耐特】
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
月光博客
月光博客
Engineering at Meta
Engineering at Meta
腾讯CDC
F
Full Disclosure
Cyberwarzone
Cyberwarzone
S
SegmentFault 最新的问题
Recorded Future
Recorded Future
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 司徒正美
The Cloudflare Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Мультики про агентов: BI-команда на multica
dddmitya · 2026-05-04 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение11 мин

Охват и читатели332

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

 BI-задачи неплохо подходят для такой проверки ввиду своей разнородности. Дашборд — это не один SQL-запрос и не одна визуализация. Нужно понять бизнес-запрос, уточнить KPI, проверить данные, спроектировать датасет, собрать чарты, собрать дашборд и на каждом этапе обеспечить соответствующие проверки.

 Одиночный агент способен пройти длинную техническую задачу автономно. Но в таком сценарии разные режимы работы остаются внутри одного контекста: агент сам уточняет постановку, сам принимает допущения, сам собирает результат и сам же оценивает, достаточно ли хорошо получилось. Для BI это риск: технически дашборд может быть собран, но смысл метрик, качество данных или логика визуализации останутся непроверенными.

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

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

 Суть эксперимента: проверить, можно ли сделать переходы между агентами управляемыми на конкретном BI-сценарии: провести задачу от входного запроса до готового дашборда в Apache Superset через команду агентов на multica — open-source платформе управления задачами с канбан доской в стиле Jira/Yougile. В multica можно создавать изолированные рабочие пространства, в каждому свои runtime и набор агентов. При этом задачи канбан доски можно назначить не только человеку, но и агенту: агент получает конкретный issue, в которой видны все его сессии, также через CLI агенту доступны комментарии, изменения статусов, создание новых задач для передачи работы дальше по конвейеру. Таким образом агенты участвует в процессе как исполнитель конкретного шага, так и как координаторы.

Задача

Постановка задачи агентам типовая – разработать датасет, чарт либо дашборд. На данном этапе работ агентам как правило передаётся достаточно подробная спецификации, которая не требует дополнительных вводных и укладывается в существующую модель данных.

На первый взгляд это звучит как задача на генерацию SQL поверх витрин и визуализаций. Но в реальности между запросом и готовым дашбордом есть ряд необходимых шагов: уточнить постановку, проверить доступность данных, определить структуру датасета, спроектировать дашборд, собрать чарты, проверить результат и вернуть его на доработку, если метрики, данные или визуализация не сходятся.

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

Рабочий цикл выглядит так:

→ уточнение постановки
→ проверка данных
→ проектирование датасета
→ проектирование дашборда
→ подготовка данных
→ сборка чартов
→ сборка дашборда
→ проверка кода, разметки
→ повторный цикл для доработок
→ проверка дашборда

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

Десять ролей с узкой специализацией

 В системе используется 10 ролей.

Coord — координатор процесса. Разбирает входную задачу, делегирует этапы, открывает review-issues, маршрутизирует доработки, принимает решение о переходе к следующей фазе и делать merge результат.

AUTHOR — 3 роли:

  • scoping — уточняет постановку, KPI, границы задачи;

  • dataset-architect — проектирует структуру датасета;

  • dashboard-designer — описывает логику и структуру будущего дашборда.

BUILDER — 3 роли:

  • data-engineer — готовит данные и проверяемые датасеты;

  • chart-builder — собирает чарты;

  • dashboard-builder — собирает дашборды.

REVIEWER — 3 роли:

  • data-steward — проверяет данные, KPI и смысловую корректность;

  • bi-tech-lead — проверяет техническую реализуемость и качество решения;

  • dashboard-reviewer — проверяет как отдельные чарты, так и дашборд целиком.

Смысл такой декомпозиции в четком разделении границ ответственности агентов, которое позволяет прописать ему соответствующую «персону», сопутствующие умения и инструменты. Один агент не должен одновременно уточнять постановку, проектировать решение, собирать результат и принимать собственную работу.

Базовая цепочка работы команды:

→ scoping (data steward)

→ dataset-architect (bi-tech-lead)

→ dashboard-designer (

→ data-engineer (bi-tech-lead)

→ chart-builder (dashboard-reviewer)

→ dashboard-builder (dashboard-reviewer)

После работы основного агента создаётся тикет на ревью. В случае ошибок исходная задача возвращается в работу ответственному агенту.

Проза в промптах и координация агентов

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

 В реальном процессе такой формат быстро столкнулся с проблемами:

  • LLM обучены прежде всего для самостоятельной работы и плохо справляются с делегированием и координацией задач. В результате процесс может остановиться в любой момент

  • при отсутствии структуры не понятно как LLM классифицировал свою работу, есть ли ошибки или недочеты

  • кто является следующим ответственным в цепочке

  • важные условия остаются скрыты внутри рассуждений модели

 Поэтому появился структурированный handoff между агентам. По сути в конце работы агент оставляет блок с обязательными полями:

 ===HANDOFF===

STATUS: ...

REVIEWERS-REQUESTED: ...

NEXT: ...

NEXT-PHASE: ...

===/HANDOFF===

Для ревью используется отдельный verdict:

 ===VERDICT===

REVIEW-VERDICT: APPROVED | APPROVED-WITH-AMENDMENTS | REQUESTS-REWORK

AMENDMENTS: ...

===/VERDICT===

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

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

Почему не строгий контракт на весь обмен

Логичный вопрос: почему не сделать полноценный строгий контракт — JSON-схему, typed events, набор обязательных моделей — и не заставить агентов общаться только через него.

 Полная типизация всего обмена слишком рано фиксирует границы процесса. В BI-задаче передаётся не только статус. Нужно объяснить, почему KPI трактуется именно так, какие данные вызывают сомнение, где есть риск по источнику, какие замечания критичны, а какие можно принять как amendments.

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

Поэтому контракт разделён на два слоя.

 Первый слой — строгий минимум для управления процессом, где поля парсятся кодом. По ним координатор двигает задачи, выбирается следующий исполнитель, открывается ревью, возвращается доработка и завершается этап.

 Второй слой — свободное описание смысла: что сделано, какие ограничения найдены, почему принято такое решение, на что обратить внимание на следующем шаге.

Такой компромисс оказался практичнее полного typed contract:

  • процесс ещё менялся, и жёсткая схема быстро фиксировала бы неудачные границы;

  • ревью требует пояснений, которые редко укладываются в короткий enum;

  • следующему агенту нужен контекст, а не только команда;

  • человеку нужен читаемый журнал задачи;

  • управляющая часть остаётся строгой там, где это действительно влияет на state machine.

Чтобы гарантировать, что агент выдаст итоговый результат с handoff, реализован дополнительный post-hook, который заставляет агента повторно отправить свой ответ в корректном формате. Обычно модели со второго раза справляются с этой задачи, если не хватило инструкций в роли чтобы справиться с первой попытки.

Маршрутизация детерминирована, но решения за агентами

В мультиагентном цикле рискованно полностью полагаться на то, что агент правильно укажет следующего исполнителя. Например, если этап завершён, задача должна вернуться к координатору. Даже при ошибке в поле NEXT работа не должна уйти в неверную сторону. Поэтому для терминальных статусов используется маршрутизация по событию:

BUILD-COMPLETE

READY-FOR-REVIEW

REVIEW-DONE

 Такие статусы возвращают управление координатору. Координатор решает, что делать дальше: открыть ревью, принять результат, вернуть на доработку или передать задачу к следующей фазе.

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

Жизненный цикл - в коде

 BI-задача проходит через конечный набор состояний:

 → новая задача

→ в работе

→ на ревью

→ на доработке

→ снова на ревью

→ готово

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

 Поэтому состояние задачи читается кодом перед запуском координатора. Координатор получает не длинную историю обсуждения, а конкретный следующий шаг:

разобрать бриф

открыть ревью

обработать замечания

вернуть на доработку

принять результат

смерджить артефакт

 Практический вывод: промпт задаёт специализацию агента и контекст. Жизненный цикл живёт в коде.

Агентам нужны примитивы, а не полная свобода действий

Даже при правильном понимании задачи агент может выполнять действие нестабильно: поменять не тот статус, забыть уведомление, сделать commit не в тот момент, оставить комментарий не в том формате.

Поэтому действия сведены к runtime-примитивам:

  • оставить комментарий;

  • изменить статус;

  • открыть blocker;

  • создать ревью;

  • передать задачу дальше;

  • вернуть на доработку;

  • отметить применённые amendments;

  • смерджить результат.

 Для разных ролей доступны разные действия. Координатор управляет процессом, но не меняет рабочие артефакты. Builder собирает результат, но не принимает его за reviewer. Reviewer проверяет и выносит вердикт, но не меняет исполнителя. Отдельно важна идемпотентность. Повторный запуск не должен создавать второе ревью, повторно отправлять тот же verdict или делать повторный merge. 

Практический вывод: агентам нужен ограниченный набор проверяемых действий с ролевыми ограничениями.

Ревью лучше вынести в отдельную задачу

Когда ревью остаётся в той же ленте, контекст быстро загрязняется. В одном месте оказываются исходная постановка, артефакт, замечания, ответы, исправления и повторная проверка. В рабочей схеме ревью оформляется как отдельная child-задача. В ней есть только контекст проверки: какой артефакт проверяется, из какой ветки читать, какой verdict нужно вынести. После завершения ревью управление возвращается в основную задачу. Координатор принимает решение: принять результат, отправить точечные amendments или вернуть на rework.

 Практический вывод: ревью должно быть отдельным объектом процесса. Так проще удерживать состояние и не раздувать основной контекст.

Общие знания нужно делить на зоны ответственности

BI-задача создаёт общий артефакт: описание KPI, структуру датасета, логику дашборда, замечания ревью. Если несколько агентов пишут в один файл без ограничений, решения начинают конфликтовать. Поэтому в данном случае использовался механизм section-locking: читать можно всё, писать — только в свою секцию.

Например:

  • scoping отвечает за KPI и границы задачи;

  • data-steward — за замечания по данным;

  • dataset-architect — за структуру решения;

  • dashboard-designer — за логику представления;

  • builder — за техническую сборку;

  • reviewer — за verdict и замечания.

BI нельзя проверять только через API

 Для части работы достаточно SQL, REST API и git. Можно проверить, что запрос выполняется, датасет создан, чарт сохранён, дашборд обновлён. Но BI — визуальный продукт. API может вернуть корректный ответ, а дашборд при этом выдаёт ошибки или выглядит непрофессионально: нечитаемые подписи, неудачный тип графика, визуальный шум, не эргономичная компоновка.

 Поэтому для проверки чартов и дашборда подключены browser-инструменты. Агент может не только открыть Superset и посмотреть на результат в интерфейсе, но и проанализировать информацию в devtools, и даже найти проблемы на уровне кода веб-страницы, что особенно полезно при работе с несовершенным API Superset.

Что уже работает

Система проходит полный цикл по BI-задаче: от входного запроса до готового дашборда. Покрыты не только прямые сценарии, но и обратные ветки:

  • amendments

  • rework

  • deviation

  • missing KPI

  • переход к следующей фазе

Это важнее одного успешного прогона. Рабочий процесс начинается там, где появляются замечания, неполные данные, возвраты и повторные проверки.

Планы по развитию

Следующий этап развития — работа с входным брифом и составление спецификации. Чем точнее на входе описаны KPI, источники, границы задачи и ожидаемый результат, тем устойчивее проходит весь цикл. Если постановка расплывчатая, ошибка возникает ещё до сборки: можно неверно понять KPI, пропустить scoping или передать дальше слабо проработанную задачу. Поэтому отдельным этапом нужен manager gate перед координатором. Его задача — проверить бриф до запуска основного цикла: достаточно ли описаны KPI, понятны ли источники, есть ли ограничения, можно ли уже передавать задачу в исполнение или сначала нужно задать уточняющие вопросы.

Второе направление — активный мониторинг. Если задача долго находится на ревью, в блокировке или без следующего шага, система должна сама поднимать сигнал и возвращать внимание к процессу, либо обращаться к агенту-менеджеру. Также вытекающий отсюда eval, с периодическим чтением всех сессий агентов и поиском узких мест.

 Ну и третье – дальнейшее совершенствование самого процесса работы команды за счёт постоянных прогонов на тестовых и реальным задачах.

Технический вывод

Мультиагентная BI-команда работает не за счёт количества агентов. Рабочей её делает инженерная обвязка:

  • задачи можно назначать агентам как исполнителям;

  • handoff фиксирует переход состояния;

  • terminal status возвращает управление координатору;

  • жизненный цикл задачи хранится в коде;

  • координатор получает конкретный следующий шаг;

  • действия агентов ограничены runtime-примитивами;

  • роли разделяют постановку, исполнение и ревью;

  • операции сделаны идемпотентными;

  • ревью вынесено в отдельную child-задачу;

  • общие знания разделены на зоны ответственности;

  • результат в Superset проверяется через браузер.

  • типовые задачи вынесены в runtime-примитивы

Главная граница между демо и рабочей системой проходит именно здесь. Модель может сгенерировать SQL, код или конфигурацию. Но воспроизводимый процесс появляется только после протокола, состояния, маршрутизации, ограничений и проверяемых действий.

Технический эпилог

Стек

  • Платформа задач: multica, open-source task-management платформа, доработанная под многоагентный BI-цикл. Стек: Go backend, Next.js frontend, PostgreSQL.

  • Агентский runtime: Hermes. Один контейнер на агента, отдельный role prompt, набор skills, рабочий контекст, разрешённые runtime-примитивы и ограничения по действиям.

  • LLM-провайдеры: chatgpt, ollama cloud

  • BI-система: Apache Superset 6x.

  • Источник данных: PostgreSQL.

Что доработано в multica

Поверх базовой multica добавлены доработки вокруг lifecycle задачи.

  • Pre‑wake обработчик. Перед запуском агента читает состояние issue: статус, последние HANDOFF/VERDICT, дочерние review‑задачи, служебные маркеры. На основе этого формирует для координатора конкретный следующий шаг: открыть ревью, обработать amendments, вернуть на rework, продолжить цепочку или завершить задачу.

  • Post‑comment обработчик. Срабатывает после комментария агента. Парсит HANDOFF, определяет следующий шаг, маршрутизирует задачу и проверяет соблюдение протокола.

  • Status‑driven routing. Для терминальных статусов управление возвращается координатору независимо от того, что агент написал в NEXT. Это защищает процесс от ошибок в адресации следующего исполнителя.

  • Protocol guards. Обработчик отслеживает комментарии без обязательного HANDOFF, обход notify‑механизма и некорректные переходы между work‑issue и review‑issue.

  • Исходящие уведомления. Используются для Telegram‑моста: пользователь получает уведомления о важных статусах без участия LLM в доставке.

Skills

Используются skills для:

  • определения и уточнения метрик;

  • проектирования SQL-view;

  • стандартов SQL;

  • работы с Superset API;

  • типовых ошибок и найденных обходных решений;

  • правил оформления артефактов;

  • правил ревью.

Важный принцип: исполнитель и ревьюер работают на общей базе skills.

Hermes

Hermes выбран как готовый персональный помощник, который можно переиспользовать как runtime для агентов с прицелом на будущее развитие проекта. В описании проекта Hermes прямо акцентируется learning loop: агент создаёт skills из опыта, улучшает их в процессе использования, ищет прошлые разговоры и строит модель пользователя между сессиями. В BI-команде это может быть полезно как основа для эволюции ролей: scoping, data-steward, chart-builder или dashboard-reviewer могут постепенно накапливать практики по метрикам, Superset, ревью и типовым ошибкам, оставаясь при этом запускаемыми runtime-агентами внутри multica.