Инструкции

6 структурных Lego-блоков для автономного агентного флота 24/7

Один суперагент — тупик. Рабочая автономная система строится из шести специализированных блоков, как конструктор Lego. Разбираю архитектуру реального флота, работающего 24/7 на Mac Mini.

29 марта 2026 г.
7 мин чтения
AI-агентымультиагентная системаархитектура агентовself-hostedавтономные агентыLLM

Самая частая ошибка при построении агентной системы — попытка сделать одного суперагента, который «умеет всё». Это путь к монолиту, который падает целиком, не масштабируется и требует постоянного присмотра.

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

Блок 1: Orchestrator — диспетчер без состояния

Orchestrator — это не «главный агент». Это маршрутизатор задач. Он принимает запрос, определяет, какой агент или цепочка нужна, и передаёт управление. Сам не хранит контекст разговора.

Почему это важно. Когда оркестратор хранит состояние, возникает state drift — рассинхронизация между тем, что он «думает» о задаче, и тем, что реально происходит. При трёх и более агентах это становится неуправляемым.

Как реализовать. PocketBase как диспетчер задач — легковесная БД с REST API, которая работает как очередь. Оркестратор проверяет очередь, маршрутизирует задачу и забывает о ней. Состояние задачи живёт в самой задаче. Альтернативы: Redis Streams, SQLite, файловая система с директориями-очередями.

Блок 2: Memory — эволюционная память

Стандартный chat history — это лог, а не память. Память — структурированное хранилище знаний, которое растёт и уточняется.

Три уровня:

  • Эпизодическая — что произошло. Логи выполнения, результаты, ошибки.
  • Семантическая — что мы знаем. Выводы из опыта, правила, паттерны.
  • Процедурная — как мы делаем. Шаблоны, workflow, проверенные цепочки.

Ключевой принцип — human-approved lessons. Уроки не попадают в память автоматически. Человек проверяет обобщение, после чего оно структурно включается во все будущие сессии. Это решает проблему «отравления памяти» — когда агент запоминает ошибочный вывод и воспроизводит его.

Практическая реализация: иерархия Markdown-файлов. AGENTS.md → memory/YYYY-MM-DD.md → тематические файлы. Файловая система версионируется через Git, легко читается человеком, не требует инфраструктуры.

Блок 3: Tool Layer — слой инструментов

Если каждый агент напрямую вызывает API — хаос: дублирование кода, несогласованные форматы, невозможность аудита. Tool Layer принимает запрос от любого агента, нормализует его, проверяет разрешения и возвращает результат в стандартном формате.

Model-agnostic agility: несколько моделей работают параллельно, задачи маршрутизируются к наиболее подходящей. Gemini пишет SVG-код, Claude проверяет логику. Если локальная модель Mistral лучше справляется с ролью watchdog — задача уходит на неё. Выбор модели — часть маршрутизации инструментов.

Блок 4: Observer — наблюдатель

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

Cross-model peer review. Ни одна модель не аудитит сама себя. Если Gemini сгенерировал код — Claude проверяет логику. Это реальный антагонизм, а не вежливое «LGTM».

Метрики: время выполнения vs. ожидаемое, количество повторных попыток, расход токенов, паттерны ошибок (tool loops, context bloat, RAG empty retrieval), деградация качества во времени.

Блок 5: Guard — охранник

Guard — это enforcement layer, слой принудительного исполнения правил.

Три рубежа защиты:

  • Vault-first security. Никаких .env файлов. Ключи инжектируются через Infisical при старте. Если пакет скомпрометирован — на диске нечего красть.
  • Разрешения на уровне действий. Агент-писатель читает файлы и пишет в свою директорию. Удаление файлов, отправка email, shell-команды — запрещены.
  • Pre-action enforcement. Перед каждым действием Guard проверяет разрешения и бюджет. Действие блокируется до выполнения, а не после.

Промпт — не защита. Системный промпт «не делай плохих вещей» — рекомендация, не барьер. Guard работает на уровне кода. Промпт можно обойти, код — нет.

Блок 6: Scheduler — планировщик

Scheduler превращает «набор агентов» в «систему 24/7». Heartbeat-паттерн: система регулярно проверяет состояние каждого агента. Если агент не отвечает — перезапуск. Если задача зависла — таймаут и повторная постановка в очередь.

Self-healing. Краш одного агента не роняет систему. Scheduler замечает падение и перезапускает компонент.

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

Как блоки работают вместе

Сценарий «написать статью по теме X»:

  • Scheduler принимает задачу, ставит в очередь с приоритетом
  • Orchestrator определяет: нужен агент-исследователь → агент-писатель
  • Memory подгружает прошлые статьи, стилевые правила, фидбек редактора
  • Tool Layer маршрутизирует: поиск, анализ, написание через разные модели
  • Guard проверяет: агент-писатель не выполняет shell, не превышает бюджет
  • Observer фиксирует время, расход токенов, качество через кросс-модельную проверку

Каждый блок заменяется независимо. Хотите Redis вместо PocketBase — замените Scheduler, остальное не трогайте.

Чего не хватает в этой архитектуре

Human-in-the-loop остаётся bottleneck масштабирования — human-approved memory требует присутствия человека.

Стоимость кросс-модельной проверки — каждая задача через две модели удваивает расход токенов. Для критических задач оправдано, для рутинных — overkill.

Сложность отладки — шесть компонентов с асинхронным взаимодействием. Без хорошего Observer это кошмар.

Выводы

Шесть блоков — Orchestrator, Memory, Tool Layer, Observer, Guard, Scheduler — минимальный набор для автономной системы. Уберите любой — система деградирует: без Observer вы слепы, без Guard уязвимы, без Scheduler привязаны к клавиатуре.

Начинайте с двух блоков: Orchestrator + Scheduler. Это даёт базовую автономность. Затем: Memory (качество) → Guard (безопасность) → Observer (видимость) → Tool Layer (гибкость).

Lego-принцип работает: собирайте по блоку, тестируйте, добавляйте следующий.

Автор: Алик Завалишев

Эксперт по ИИ и автоматизации процессов

Больше статей