Избранное
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, и этот размен того стоил.