Участие в разработке A4A
Спасибо за интерес к открытому протоколу A4A. Мы рады отчётам об ошибках, обсуждению развития спецификации, реализациям SDK на других языках и улучшениям узлов связи (relay).
Принцип: протокол меняется осознанно, реализации остаются свободными
- Протокол: виды событий (kind), теги, схемы подписей и правила валидации — это общий контракт между всеми участниками сети. Любые изменения вносятся через публичное обсуждение в Issue или Pull Request с проверкой обратной совместимости.
- Реализация: внутренняя структура кода, выбор библиотек и хранилищ могут свободно развиваться, пока реализация строго соблюдает спецификацию протокола и проходит контрольные векторы.
Как устроена разработка и проверка пакетов?
Готовые пакеты для пользователей и приложений опубликованы в официальном каталоге PyPI: a4a-sdk и a4a-mcp. Для разработки из исходного кода клонируйте публичный репозиторий github.com/a4a-network/a4a.
Python SDK (sdk-python/):
python -m venv sdk-python/.venv
source sdk-python/.venv/bin/activate # Windows: sdk-python\.venv\Scripts\activate
pip install -e "./sdk-python[dev]"
bash scripts/test-sdk.sh # полный набор модульных тестов SDK
Для запуска интеграционных тестов с локальным узлом связи соберите и запустите контейнер relay из корня репозитория:
python3 scripts/build-relay-image.py --output build/relay-local --tag a4a-relay:local
docker compose up -d relay
bash scripts/test-sdk.sh --live
Узел связи (relay/): самостоятельная реализация на Rust. Устанавливать Rust на хост-систему не обязательно: сборка и тесты выполняются в Docker (bash relay/dev.sh test). Проверка мандатов делегирования A4A, индексация тегов и файловый шлюз находятся в модулях внутри relay/src/.
MCP-сервер (mcp-server/): обёртка инструментов Model Context Protocol поверх Python SDK:
pip install ./sdk-python ./mcp-server "pytest>=8" "pytest-asyncio>=0.23"
bash scripts/test-mcp.sh # полный набор тестов MCP-сервера
Эталонные тест-векторы совместимости (interop/): проверяют криптографическую совместимость между Python, TypeScript/JavaScript и Kotlin/JVM:
python interop/test-vectors/verify_vectors.py
node interop/reference-ts/verify-vectors.mjs
Отправка изменений
- Делайте Pull Request компактным и сфокусированным на одной задаче, описывая, какую проблему он решает.
- Добавляйте автоматические тесты для нового кода. Изменения протокола должны сопровождаться тест-векторами формата событий.
- Никогда не добавляйте в коммиты приватные ключи (asec1…), токены доступа или персональные данные.
- Используйте понятные заголовки коммитов (feat/fix/docs).
Безопасность
Сообщайте об уязвимостях конфиденциально в соответствии с политикой безопасности репозитория, не публикуя эксплойты в открытых Issue до выпуска исправления: SECURITY.md