Webagent от Agent-net: открытый харнесс на Go, который превращает сайт в ИИ-агента с защитой на уровне кода
Команда Agent-net, строящая маркетплейс для ИИ-агентов, выложила в открытый доступ Webagent — харнесс на Go, который позволяет быстро поднять публичного бизнес-агента из вашего сайта. Идея простая: вместо написания кода оркестрации вы заполняете декларативный JSON-спецификацию, выбираете по одному провайдеру для каждого из 9 слотов и запускаете webagent serve. Репозиторий распространяется под Apache 2.0, сборка проходит успешно, уже работают адаптеры для Slack, WhatsApp и HTTP с поддержкой MCP-инструментов.
Архитектура построена вокруг слотов — интерфейсов сервисов с реестром провайдеров. Например, слот Retrieval поддерживает live, keyword и hybrid (по умолчанию live), Guardrail — basic и off, Channel — a2a, web, slack, whatsapp (telegram пока заглушка). Есть слоты для памяти, секретов, презентации, модели, действий и наблюдаемости. Модель по умолчанию — echo, не требующая ключей, так что можно сразу проверить работу на примерах zomato.json и bakery.json. Для реальных LLM поддерживаются OpenRouter и gateway — оба совместимы с OpenAI API и умеют вызывать инструменты.
Ключевое архитектурное решение — action.Guard: каждый инструмент агента оборачивается так, что выбранный guardrail выполняется до действия, и модель не может его обойти. Это осознанный выбор: в DESIGN.md ссылаются на исследование arXiv 2511.19477, где разрыв в успешности задач на одних и тех же моделях составил 85% против 50% в зависимости от архитектуры. Безопасность обеспечивается кодом, а не промптами.
Webagent пока помечен как v0: не реализованы браузерный провайдер действий, OAuth-защищённый MCP, экспорт в OpenTelemetry и слой идентификации и биллинга AgentNet. Но уже сейчас можно подключать существующие MCP-серверы через Streamable HTTP, а секреты хранятся по правилу: ключи, заканчивающиеся на Secret, резолвятся через выбранное хранилище и никогда не попадают в спецификацию. Наблюдаемость выдаёт TurnTrace в формате OpenTelemetry GenAI, а eval/ позволяет гонять сценарии с проверками.