Huginn and Muninn — распределённая система для сбора сведений о компаниях из открытых источников и анализа сообщений Telegram с помощью LLM. Система объединяет данные о юридических лицах и извлечённые из сообщений отзывы, предоставляя оператору административный интерфейс для работы с ними.
Период работы — март 2026 года, четыре недели. Исследовательский этап завершён; дальнейшая разработка пока не ведётся. Система использовалась локально и не была доведена до эксплуатации.
Задача и моя роль
Я создавал проект, чтобы исследовать возможности разработки ПО с ИИ-агентами на примере распределённой системы. Работа шла в свободное время, без команды: около восьми часов в выходные и двух часов по будням.
Моя роль была архитектурной: я определял бизнес-логику, устройство системы, границы компонентов, контракты и критерии приёмки. Реализацию и тесты по этим критериям выполняли агенты.
Компоненты и потоки данных
Прикладная часть состоит из четырёх сервисов и административного приложения:
- сервис сбора сообщений Telegram на Python;
- сервис анализа сообщений на Python: обращается к LLM и извлекает отзывы;
- сервис компаний на .NET: работает со сведениями о юридических лицах;
- сервис отзывов на .NET: принимает результаты анализа;
- административный интерфейс на React для работы оператора с компаниями и отзывами.
Сообщения между сбором и анализом передаются через RabbitMQ. Результаты анализа поступают в сервис отзывов по HTTP. Отдельный контур импорта и хранения реестровых данных обеспечивает сервис компаний сведениями о юридических лицах.
Для двух сервисов выбрали Python из-за подходящих библиотек для Telegram и LLM. Остальная серверная часть реализована на .NET, административное приложение — на React и Vite. В стек также вошли FastAPI, PostgreSQL, Docker, OpenTelemetry и Grafana.
Инфраструктура и организация проекта
Для системы подготовлены варианты развёртывания, мониторинг и управление доступом через Keycloak. Из вариантов развёртывания использовался только локальный. Для исследования алгоритмов анализа чатов создана отдельная утилита разметки данных.
Код и документация разделены по уровню ответственности:
- метарепозиторий содержит общие инструкции агента, карту репозиториев и процедуры работы;
- отдельный репозиторий описывает цели, бизнес-логику, архитектуру системы, общие контракты и сквозные сценарии;
- репозитории сервисов содержат их код, внутреннюю документацию и тесты.
Требования, архитектурные решения и критерии приёмки использовались как вход для реализации и последующей проверки. Задачи велись в GitLab.
Результаты исследовательского этапа
За четыре недели появились четыре сервиса, административное приложение и инфраструктура для локальной работы. Объём проработки отражён в инженерных артефактах:
- 26 верхнеуровневых архитектурных решений;
- 20 архитектурных решений внутри сервисов;
- более 250 подробно описанных и закрытых задач GitLab;
- тесты по заданным критериям приёмки и материалы исследования алгоритма анализа сообщений.
Текущее состояние и границы результата
Итог марта 2026 года — реализованный и описанный каркас распределённой системы. Исследовательский этап завершён, а работа по превращению его в продукт для конкретной аудитории не проводилась.
На старте не было запроса от конкретных пользователей. Поиск аудитории, сбор её требований и подготовку к эксплуатации я оставил за рамками эксперимента. Позже появились другие задачи, поэтому к запуску я не возвращался. Результаты проекта относятся к разработке системы; опыта её внедрения и поддержки в эксплуатации здесь нет.