Денис Дмитриев
Все проекты
Платформа/В работе/2026

Артель — агентный стек по контракту

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

  • Каждый агент — отдельный бот в Telegram, вмешаться можно в любой момент
  • Ошибка агента не роняет цикл, а превращается в корректирующий ход
  • Проверено стресс-харнессами и хаос-прогонами, а не только юнит-тестами

Задача

В предыдущем стеке агенты «договаривались» свободным текстом, и любой сбой формата превращался в тихую поломку: система выглядела работающей, а результата не давала. Хотелось противоположного — чтобы невалидный ход было невозможно исполнить.

Как устроено

Один runtime в нескольких экземплярах по YAML-конфигам. Ход модели обязан завершаться fenced-JSON со списком действий; он валидируется схемой и проходит гейт возможностей по роли — аналитик не может выкатить релиз, даже если очень захочет. Починка формата — не больше двух попыток, дальше эскалация человеку. Доставка между агентами через Redis Streams, истина хранится в Postgres, Telegram остаётся зеркалом.

Что было трудно

Сложным оказался не разбор JSON, а поведение агентов во времени. Пришлось строить сторожей на исполнении: сторож ожиданий (подтолкнуть, потом эскалировать), бюджет ходов с паузой, разрыватель циклов на двенадцати сообщениях пары без события, очередь недоставленного после трёх попыток. Это ловит не баги в коде, а зацикливание самих участников.

Чем подтверждено

  • Харнессы: стресс 31/31, инъекция отказов 31/31, отскок 9/9, фаззинг парсера 20/20
  • Длительный прогон с хаос-инъекцией 0.4–0.5 — чисто
  • 99/99 юнит-тестов
  • Шесть находок уровня HIGH, найденных харнессами, закрыты до релиза

Стек

PythonRedis StreamsPostgreSQLpydanticaiogramDocker