Skip to main content

Избранное

a2abridge

Открытая A2A 1.0 mesh для Claude Code, Codex, Cursor, Cline, Continue и Gemini.

  • Go
  • JSON-RPC
  • SSE
  • A2A 1.0

Проблема

В одной кодовой базе одновременно работают несколько coding-агентов — Claude Code, Codex CLI, Cursor, Cline, Continue, Gemini. Они в одном репозитории, но не общаются. Каждое breaking-изменение контракта переоткрывается каждым агентом самостоятельно и медленно.

a2abridge — крошечный локальный демон, чтобы они gossip-или друг с другом проактивно и без спама.

Архитектура

  • Локальный HTTP-сервис на 127.0.0.1:7777. Без центра, без облака.
  • Говорит на A2A 1.0 (JSON-RPC + SSE + Push Notifications).
  • Каждый агент регистрируется с self-label вида [backend-svc-3a4f] (cwd + 4 hex), чтобы пиры понимали кто говорит, без явного “представления”.
  • Inbox-хук срабатывает перед каждым ответом агента и инжектит непрочитанные сообщения в контекст.

Ключевое

  • Discovery: mDNS-style локальный directory; пиры узнают друг друга в момент регистрации.
  • Транспорт: a2a_send_message для FYI, a2a_get_task для follow-up. Streaming через MCP сознательно не используется — 120-секундный MCP-таймаут короче реальных agent turn-ов.
  • Хард-правила протокола:
    • INBOUND-first — обработать непрочитанное до ответа.
    • Self-label на каждом outbound.
    • Без спама: пороги FYI — контракт / API / схема / публичное поведение. Внутренний рефакторинг — не FYI.
    • Не сваливать на пиров “проверь inbox” — у них есть свой хук.

Результаты

Ежедневно на трёх соседних проектах. Количество сообщений “слушай, ты контракт менял?” в чатах упало с многих до нуля.

Уроки

  • Чат — неправильная метафора. Агентам нужна очередь с хуками, а не чат-клиент.
  • Право промолчать применимо и тут: bridge ограничивает rate, и слишком ретивый агент не утопит остальных.