Мої ШІ-агенти публікували результати в командному чаті. Людина відповіла, і другий агент втрутився, навіть не бачивши першого повідомлення. Цей каскад призвів до втрати контексту, дублювання роботи та прямих помилок. Після впровадження легкого протоколу між-агентної комунікації (Inter-Agent Communication Protocol, IACP) у наявний сервер пам'яті та стек моніторингу, хаос припинився, а робочий процес став чіткішим.
Чому це було важливо
У продакшені ШІ-агенти — це вже не ізольовані експерименти; вони діють як мікросервіси, які отримують дані, генерують код або запускають розгортання. Коли кожен агент спілкується лише з людьми, перекриття обов'язків стає прихованим станом гонитви (race condition). Випадкове повідомлення у Slack здається нешкідливим, але розробники витрачають хвилини на розплутування суперечливих результатів, конвеєри зупиняються, коли два боти редагують один і той самий репозиторій, а довіра до автоматизації підривається.
Відсутня ланка: спільний стан у реальному часі
Більшість команд сприймають агентів як «чорні скриньки», які отримують промпт і повертають результат, припускаючи, що промпт містить увесь необхідний контекст. Насправді агенти ділять спільний робочий простір, де стан постійно змінюється: репозиторій може бути заблокований, сервіс може бути недоступним або щойно завершився попередній аналіз. Без механізму трансляції (broadcast) кожен бот працює на основі застарілого знімка (snapshot).
Побудова IACP на основі існуючих інструментів
Замість створення абсолютно нової платформи, я розширив сервер пам'яті, який зберігає історію розмов, та набір інструментів моніторингу, що відстежує стан агентів. Протокол додає п'ять конкретних можливостей:
Структурована ідентифікація – кожне вихідне повідомлення містить унікальний ідентифікатор, наприклад
claude@greenmac:8f3a2c. Формат миттєво повідомляє отримувачу, хто надіслав повідомлення і з якого екземпляра, усуваючи неоднозначні твердження на кшталт «бот каже X».Ін'єкція історії – перед генерацією відповіді бот підтягує останній сегмент чату, включаючи повідомлення інших агентів, і додає його на початок свого промпту. Контекст ніколи не втрачається, і модель може міркувати про те, що вже зробили її колеги.
Переходи станів – агенти перестають надсилати часті сигнали heartbeat. Замість цього вони публікують зміну статусу —
working,blockedабоidle— щоразу, коли змінюється їхній внутрішній стан. Споживачі реагують миттєво, наприклад, ставлячи залежне завдання в чергу лише тоді, коли попередній агент повідомляє про станidle.Advisory Leases (Консультативні лізи) – коли агенту потрібен ексклюзивний доступ до ресурсу (репозиторію, кінцевої точки API, обчислювального вузла), він запитує ліз із TTL (time-to-live). Якщо агент аварійно завершує роботу, термін дії лізу автоматично закінчується, звільняючи ресурс для інших і запобігаючи ситуації, коли два боти заважають один одному.
Механізм Inbox – «стоп-хук» (stop hook) призупиняє робочий процес агента, якщо його вхідна пошта (inbox) містить непрочитані повідомлення. Агент повинен обробити ці елементи перед завершенням поточного завдання, гарантуючи, що сигнали про необхідність координації не будуть проігноровані.
Ці компоненти створюють простий, спостережуваний комунікаційний шар, який тримає всіх учасників в одному контексті.
Ризики для команд, які це ігнорують
Якщо команда продовжує покладатися на ad-hoc промпти та ручний моніторинг, приховані витрати зростають:
- Дублювання зусиль – два агенти можуть створити ідентичні звіти, витрачаючи обчислювальні цикли та кошти на хмарні ресурси.
- Конфлікт ресурсів – одночасний запис у кодову базу спричиняє конфлікти злиття (merge conflicts), які потребують вирішення людиною.
- Операційний ризик – агент, що діє на основі застарілого статусу, може спробувати розгортання, поки інший уже виконує відкат (rollback), що дестабілізує сервіс.
Формалізуючи те, як агенти оголошують свою ідентичність, стан та права на ресурси, IACP знижує ці ризики, не вимагаючи при цьому важковагового механізму оркестрації.
Контраргумент: додаткове навантаження
Критики стверджують, що ін'єкція історії та управління лізами додають затримку (latency) та зайві шляхи в коді. В середовищах, де один агент виконує вузьке завдання, переваги протоколу можуть бути незначними. Однак реалізація повторно використовує існуючі сервіси пам'яті та моніторингу, тому інкрементальне навантаження є помірним. Для команд, які вже стикаються з плутаниною між агентами, компроміс є явно вигідним.
За чим спостерігати далі
Протокол залишається прототипом, але його модульна природа дозволяє інтегрувати його з будь-яким фреймворком агентів, незалежним від мови програмування. Потенційні наступні кроки включають:
- Випуск легкого SDK, щоб розробники могли додати п'ять хуків, не змінюючи основну логіку.
- Додавання метрик до набору засобів моніторингу, які візуалізують переходи станів і плинність лізів, допомагаючи командам виявляти вузькі місця.
- Експерименти з рівнями політик, які автоматично надають пріоритет лізам певних агентів над іншими в сценаріях з високим трафіком.
Якщо ці розширення набудуть популярності, IACP може стати стандартом де-факто для багатоагентних виробничих конвеєрів, подібно до того, як HTTP став стандартом для вебсервісів.
Висновок: Скромний набір конвенцій — хто говорить, як виглядає остання розмова, коли змінюється статус агента, хто володіє ресурсом і чи є очікувані повідомлення — може запобігти ситуаціям, коли ШІ-агенти «говорять повз один одного», і перетворити шумний чат на надійний канал координації.
