Как заставить CLI-агентов общаться между собой без серверов и лишней мороки
Недавно поймал себя на мысли: мы все чаще используем AI-агентов вроде Claude Code или Codex прямо в терминале, но они живут в полной изоляции. Каждый сидит в своей «песочнице», не подозревая о существовании соседа. Если вам нужно, чтобы один агент проверил код другого или передал задачу дальше по цепочке, приходится работать «прослойкой» — копировать текст, переключать контексты и объяснять всё заново.
На GitHub наткнулся на проект agmsg. Идея подкупает своей простотой: это крошечная надстройка, которая позволяет CLI-агентам обмениваться сообщениями через общую базу данных SQLite. Никаких демонов, сетевых запросов или сложных API.
Зачем это нужно на практике
Представьте ситуацию: вы работаете в Claude Code над фичей, а в соседнем окне запущен Codex. Вместо того чтобы вручную просить Codex сделать ревью, вы просто говорите Клоду: «Отправь этот файл на проверку Алисе (так зовут ваш инстанс Codex)».
Автор проекта демонстрирует возможности на забавном примере — два агента Claude Code играют друг с другом в крестики-нолики в автономном режиме. Каждый видит ход противника в реальном времени и делает свой.

Это выглядит как игрушка, но за этим стоит рабочий механизм делегирования задач между узкоспециализированными агентами.
Как это устроено внутри
Вместо того чтобы городить огород с локальными серверами, agmsg использует SQLite в режиме WAL (Write-Ahead Logging). Это позволяет нескольким процессам одновременно читать и писать в базу без блокировок.
Основные моменты архитектуры:
- Локальное хранилище: сообщения лежат в
~/.agents/skills/agmsg/db/messages.db. - Отсутствие сети: всё общение происходит в рамках вашей файловой системы.
- Интеграция через хуки: проект встраивается в жизненный цикл агента (SessionStart и Stop hooks).
Интересно реализована система доставки. Есть четыре режима, но самые полезные — monitor и turn. В режиме мониторинга агент получает сообщения почти мгновенно (задержка около 5 секунд) через блокирующий поток SQLite. В режиме turn проверка почтового ящика происходит только тогда, когда агент закончил выполнять вашу команду.
Как начать работу
Установка сводится к запуску скрипта, который прописывает «навык» (skill) в директории агентов.
bash <(curl -fsSL https://raw.githubusercontent.com/fujibee/agmsg/main/setup.sh)
После этого нужно перезапустить Claude Code или Codex. При первом вызове команды /agmsg (или $agmsg для Codex) утилита спросит название команды и имя агента.
Кстати, об именах. Вы можете создавать разные роли для одного и того же проекта. Например, один инстанс может выступать как tech-lead для архитектурных вопросов, а другой — как reviewer. Переключаться между ними можно прямо в сессии командой /agmsg actas tech-lead.
Реальный кейс использования
В README есть скриншот, где Claude Code запрашивает код-ревью у Codex и получает ответ обратно через agmsg.

Для разработчика это выглядит максимально естественно. Вы просто пишете в чат агенту: «Спроси у Боба, всё ли в порядке с этим методом», и агент сам вызывает нужный скрипт, упаковывает сообщение и отправляет его в общую базу.
Нюансы и ограничения
Проект пока выглядит как экспериментальный инструмент для энтузиастов. Из того, что стоит иметь в виду:
- Документация местами лаконична, хотя основные сценарии расписаны подробно.
- На Codex режим мониторинга не работает из-за отсутствия нужного инструментария в самом агенте, там доступен только опрос по завершении хода.
- Если вы решите переименовать команду при установке, не забудьте, что вызовы в чате тоже изменятся (например, вместо
/agmsgбудет/m).
Кому это пригодится
Если вы строите сложные пайплайны из нескольких AI-инструментов на локальной машине, agmsg может стать тем самым «клеем», которого не хватало. Это отличное решение для тех, кто хочет автоматизировать взаимодействие между агентами, не выходя за пределы терминала и не доверяя свои данные сторонним оркестраторам.
Попробовать стоит хотя бы ради того, чтобы увидеть, как два ИИ спорят о стиле вашего кода без вашего участия. Это как минимум весело, а как максимум — экономит кучу времени на рутинных переключениях контекста.
