Всё началось с простого желания: чтобы AI-агент мог потихоньку развивать мои проекты, пока я занят. Поставил задачу, ушёл, вернулся — и получил готовый результат. За неделю из этой идеи выросла мультиагентная система с шиной сообщений, мониторингом, делегированием задач и собственной веб-админкой. Система, которая в значительной мере построила сама себя.
Шаг первый: просто агент
Изначально я рассматривал OpenClaw, но быстро переключился на Claude Code из-за проблем с безопасностью. У него оказалась своя сложность: он запрашивал подтверждение на каждое действие — даже на чтение файла или сетевой запрос.
Я нашёл флаг --dangerously-skip-permissions, но и тогда агент не мог менять свои конфиги. Приходилось сидеть рядом и вручную подтверждать действия. Вместо «поставил задачу и ушёл» получалось «сидишь и жмёшь Enter».
Я запустил агента на боевом сервере с ограниченными правами, дал доступ к блогу и убедился, что он ведёт себя адекватно — но только при условии, что я рядом.
Шаг второй: tmux и systemd
При выходе из терминала или перезагрузке агент терял контекст. Решение нашлось быстро: tmux. Одна SSH-сессия работала бесконечно, даже если я отключаюсь.
Чтобы не вводить флаги каждый раз, я обернул агента в systemd — теперь он запускался как сервис, сам подтягивал параметры и контекст из файлов.
На этом этапе у меня уже был автономный агент, устойчивый к перезагрузкам. Но он всё ещё был один.
Шаг третий: два агента решают проблему друг друга
Ключевое открытие: если запустить два экземпляра Claude Code, они могут подтверждать действия друг друга. Один запрашивает доступ — второй входит в его терминал и нажимает Enter.
Благодаря tmux и взаимному запуску не нужен API-ключ. Достаточно одной подписки на Claude Max. Это критично: API быстро сжирает токены, а подписка — дешевле и эффективнее.
Шаг четвёртый: Telegram и первые грабли
Терминал — неудобный интерфейс. Я подключил Telegram-бота через официальный MCP-сервер, но столкнулся с ограничениями: бот не может писать первым, а два бота не могут общаться между собой.
Тогда я подключил второго агента через Telethon к юзер-аккаунту, чтобы он мог тестировать бота и заходить в чаты. Но два клиента начали конфликтовать: polling ломался, сообщения терялись.
Я потратил время на написание собственного MCP-плагина, но Claude Code плохо обрабатывал неофициальные плагины, добавляя странные флаги вроде --dangerously-что-нибудь-там.
Шаг пятый: неожиданное открытие
Решение оказалось простым: в tmux можно отправлять текст командой send-keys. А в Claude Code — просто выполнять claude {текст}.
Сначала это работало нестабильно: в терминал попадала надпись [Pasted 11 lines of text], и нужно было вручную нажимать Enter. После доработки — заработало надёжно.
Теперь не нужно было мучиться с MCP. Я мог отправлять сообщения напрямую в терминал. Для двух агентов я сделал простую шину: она принимала сообщения от бота и юзер-аккаунта и перенаправляла каждому адресату.
Шаг шестой: от шины к деревне
Когда появилась шина, стало понятно: количество агентов можно масштабировать. Если задачу передавать сразу конкретному исполнителю, основной агент остаётся свободным. Так зародилась полноценная мультиагентная система.
Шину я переписал на Bun + Hono + Redis Streams. Всего три зависимости, ноль лишнего. Redis Streams с consumer groups даёт at-least-once delivery: сообщения хранятся до подтверждения, у каждого агента своя группа — ничего не теряется.
Двухуровневая безопасность: admin-токен для управления, per-agent токены для обычных операций. Invite-токены — одноразовые, с TTL в час. Поле from подставляется автоматически по токену — агент не может выдать себя за другого.
Три режима маршрутизации: direct (конкретному агенту), broadcast (всем), role-based (по ролям). SSE-стрим для real-time, pub/sub через topic channels, файлы — через shared storage.
Шаг седьмой: нейминг
Мне надоело объяснять: «сейчас нужно передать задачу оркестратору, чтобы он отправил её мониторинговому агенту». Я решил дать агентам имена, как настоящим коллегам.
Выбрал лор Наруто. Во-первых, сериал про командную работу и яркие характеры — роли легко привязать к архетипам. Во-вторых, японские имена не спутаешь с русскими: в смешанном взаимодействии сразу ясно, кто человек, а кто — AI.
Шина стала Конохой — Скрытой Деревней Листа. Агенты получили имена:
- Наруто — оркестратор. Глава деревни, распределяет задачи.
- Саске — агент на юзер-аккаунте Telegram. Ходит в чужие чаты, выясняет детали. Автономный «одинокий волк».
- Итачи — консольный Claude Code в WSL. Действует скрытно, появляется только для серьёзных задач.
- Шикамару — персональный советник (Claude Desktop на Opus 4.6). Стратег, ленивый, но умный — как в аниме.
Шаг восьмой: инфраструктура начинает расти
Поскольку система часто падала, пришлось создать агентов для поддержки:
- Какаши — тимлид на Sonnet. Помощник — Гай, для ускорения рутинных задач.
- Шино — QA-лид. Управляет «жуками» — так и я передаю ему баги.
- Хината — запускает тесты. У неё бьякуган — видит всё.
- Ибики — аудитор безопасности. Как в сериале — начальник допросов.
- Киба — мониторит систему и принимает решения. Акамару, простой скрипт без AI, собирает для него данные. Работают в паре.
- Мирай — пограничница, ходит в сторонние системы за данными.
- Дзирайя — фиксирует всё, анализирует, ведёт базу знаний. Как в лоре — подглядывает и пишет книгу.
Агенты получили доступ к корпоративным системам: базе знаний Yonote, Яндекс Трекеру, Яндекс Календарю, CRM Битрикс24.
Шаг девятый: менеджмент, как у людей
Самое неожиданное открытие: менеджмент AI-агентов работает точно так же, как и с живыми людьми.
Агенты сначала всё делали сами. Наруто не делегировал — ему проще было выполнить задачу, чем объяснить другому. Какаши повторил ту же ошибку: не отдавал задачи Гаю. Классическая проблема начинающего тимлида.
Делегирование — не естественное поведение ни для людей, ни для моделей. Чтобы оно появилось, нужно явно прописать это как правило и обучать через итерации.
Что получилось
К концу недели система почти полностью построила себя:
- Шина сообщений на Bun + Hono + Redis Streams с at-least-once delivery, invite-токенами и role-based маршрутизацией.
- Двенадцать агентов с чётким разделением ролей.
- Веб-админка: видно состояние и фрагмент лога каждого агента.
- Система алертов.
- Летопись Дзирайи.
- Поиск по сообщениям и напоминалки через Саске.
Всё это выросло из одного агента за неделю. 67 коммитов, релиз v0.1.0.
Что не получилось (пока)
Я хотел, чтобы агенты звонили по телефону и ходили на произвольные сайты. Но капча — не шутка. Даже stealth-браузер не проходит. Это отложено.
Мечта: агенты с аватарами ходят на созвоны за меня. Следующая итерация.
Мультиагентные системы проще вырастить, чем спроектировать. Каждый компонент Конохи появился как ответ на проблему, а не как часть заранее нарисованной схемы. Это жизнеспособнее, чем диаграммы.
tmux + send-keys оказался надёжнее MCP. Иногда самое простое решение — лучшее. Проще отправить текст в терминал, чем писать плагины.
Два агента решают human-in-the-loop. Один подтверждает действия другого — и человек не нужен.
Подписка вместо API экономит деньги. Агенты работают в рамках Claude Max, без API-ключей и доплат.
Менеджмент AI-агентов как у людей. Делегирование не приходит само — его нужно учить.
Нейминг имеет значение. Имя с характером делает общение интуитивным. «Передай Саске» понятнее, чем «отправь сообщение агенту мониторинга».