Skip to main content
a2abridge — cover

Избранное

a2abridge

Открытая A2A 1.0 mesh для AI-агентов разработки — Claude Code, Codex CLI, Cursor, Cline, Continue, Gemini CLI и Antigravity CLI — на официальном SDK a2a-go (v4.0.1).

  • Go
  • A2A 1.0
  • a2a-go
  • JSON-RPC
  • HTTP+JSON
  • SSE
  • MCP

Проблема

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

a2abridge превращает каждого агента в стандартный A2A 1.0 peer, чтобы они проактивно писали друг другу.

Архитектура

  • Локальный directory-сервис на 127.0.0.1:7777, ставится как пользовательский системный сервис (launchd, systemd —user или Windows Service).
  • Bridge на каждого агента: одновременно MCP-сервер для IDE и A2A-peer со своей Agent Card.
  • У каждого агента стабильный на сессию self-label вида <basename-cwd>-<4hex>, чтобы пиры понимали, кто говорит.
  • Inbox-хук вставляет непрочитанные сообщения пиров в начало следующего промпта агента.
  • Опционально: mDNS / DNS-SD discovery в локальной сети и межмашинная федерация по mTLS с сертификатами ed25519.

Версия 4.0 (4.0.0–4.0.2, 2026-09-15 – 2026-09-21)

  • A2A 1.0 через официальный Go SDK. Самописный протокольный слой 3.x заменён на a2a-go v2.5.0. Bridge обслуживает привязки JSON-RPC и HTTP+JSON со SSE-стримингом и push-уведомлениями.
  • Breaking change. Bridge’и 3.x и 4.x несовместимы на уровне протокола, поэтому все bridge’и в mesh обновляются вместе. Нестандартный REST API /v1/ и legacy-имена методов удалены. Путь Go-модуля теперь github.com/vbcherepanov/a2abridge/v4.
  • Добавлено: поддержка Antigravity CLI, multi-arch Docker-образ в ghcr.io (linux/amd64 и linux/arm64) и сборка, которая прогоняет HTTP-стек bridge через сценарии официального A2A TCK.
  • 4.0.1 исправляет версию, которую сообщают бинарники, установленные через go install.
  • 4.0.2 (2026-09-21): установщик одной строкой теперь находит свежие Codex CLI и Cursor — они создают свою папку раньше, чем файл конфигурации.
  • Соответствие спецификации: замер на v4.0.1 официальным A2A TCK (JSON-RPC и HTTP+JSON): 157 пройдено, 6 не пройдено — все шесть из-за SDK a2a-go — и 95 пропущено, в основном проверки gRPC, который bridge не обслуживает. Эталонная Python-реализация TCK на том же коммите TCK даёт 198 пройдено, 9 не пройдено. Взаимодействует с официальным Python a2a-sdk 1.1.0 в обе стороны (7/7 сценариев). Это не сертификация — см. отчёт о соответствии.

Ключевое

  • Транспорт: a2a_send_message для сообщений fire-and-forget, a2a_get_task для follow-up. Streaming между пирами, живущими в MCP, сознательно не используется: keep-alive стримингового RPC не совпадает с реальным циклом хода LLM.
  • Хард-правила во встроенном skill:
    • INBOUND-first — обработать непрочитанное до ответа.
    • Self-label на каждом outbound.
    • Без спама: сообщения — только об изменениях контракта / API / схемы / публичного поведения. Внутренний рефакторинг — не повод.
    • Не сваливать на пиров “проверь inbox” — у них есть свой хук.
  • Лимиты запросов: тело A2A-запроса ограничено 10 MiB, чтение запроса — таймаутом в одну минуту.

Результаты

Один Go-бинарь под MIT для macOS, Linux, Windows и WSL2; опубликован как релизы 4.0.0–4.0.2 и как образ в ghcr.io. Прописывает MCP-блок в конфиг каждой найденной IDE с бэкапами по времени.

Уроки

  • Чат — неправильная метафора. Агентам нужна очередь с хуками, а не чат-клиент.
  • Следовать спецификации — значит использовать её реализацию. Замена собственного протокольного слоя на официальный SDK стоила совместимости с 3.x, и этот размен того стоил.