Webagent от Agent-net: ИИ-агент для сайта из одного JSON-файла

Agent-net, команда, строящая маркетплейс для взаимодействия ИИ-агентов, открыла исходный код Webagent — фреймворка на Go для развёртывания публичных бизнес-агентов. Идея простая: бизнес даёт сайт, получает агента, и этот агент общается с другими агентами. Вместо написания кода оркестрации достаточно заполнить декларативный JSON-файл, выбрать по одному провайдеру на каждый из девяти слотов и запустить webagent serve.

Проект распространяется под лицензией Apache 2.0, собирается без ошибок и уже сейчас запускает живых агентов в Slack, WhatsApp и HTTP, работающих на инструментах MCP. Правда, версия помечена как v0: браузерные действия, MCP с OAuth, экспорт в OTel, а также слой идентификации и биллинга AgentNet в список реализованного не входят.

Девять слотов и провайдеры по умолчанию

Агент в Webagent — это один «мозг» (модель плюс инструкция) поверх набора слотов, определённых в каталоге core/. Каждый слот — это Service Provider Interface с реестром провайдеров в spi/ и назначенным по умолчанию вариантом:

Слот Встроенные провайдеры По умолчанию
Retrieval live, keyword, hybrid live
Memory session session
Guardrail basic, off basic
Channel a2a, web, slack, whatsapp (заглушка telegram) a2a
Secrets env, file, static env
Presenter text, terminal (QR), web text
Model echo, openrouter, gateway echo
Action none, demo, mcp none
Observability none, log, memory none

Конструкция рассчитана на три аудитории с одним контрактом: компании, которые настраивают агента выбором из меню; компании, которые расширяют систему, регистрируя собственного провайдера; и партнёры, поставляющие адаптеры. Ядро при этом никто не форкает. Каждый провайдер обязан пройти conformance-набор своего слота, чтобы считаться сертифицированным.

Безопасность обеспечивается кодом, а не промптом

Ключевое архитектурное решение — action.Guard. Каждый инструмент, доступный агенту, будь то из action-провайдера или внедрённый хостом, оборачивается так, что выбранный guardrail срабатывает до выполнения действия. Модель не может это обойти. В DESIGN.md проект опирается на исследовательский вывод: успех агента определяет архитектура, а не возможности модели. Там же приводится ссылка на arXiv 2511.19477 и разрыв в успешности выполнения задач — 85% против 50% на одних и тех же моделях.

Что уже работает

Мозг echo по умолчанию не требует учётных данных, поэтому webagent validate и webagent serve запускаются «из коробки» на двух примерах спецификаций: zomato.json и bakery.json. Чтобы подключить реальную модель, команда webagent keys set openrouter сохраняет ключ в системном каталоге конфигурации с правами 0600. Ключи никогда не записываются в спецификацию, а переменная окружения всегда имеет приоритет. И openrouter, и gateway — OpenAI-совместимые клиенты с циклом вызова инструментов.

Бизнес с уже работающим MCP-сервером становится действующим агентом через один блок в спецификации. Action-провайдер mcp подключается по Streamable HTTP (JSON и SSE) с аутентификацией по bearer-токену или API-ключу, выполняет рукопожатие на этапе сборки и передаёт каждый инструмент агенту за guardrail, поэтому validate показывает реальное число инструментов.

Адаптеры каналов Slack и WhatsApp проверяют подпись каждого входящего вебхука, сразу подтверждают получение, отвечают через API платформы, игнорируют собственные сообщения и отсеивают повторные доставки. Slack указывает на /slack/events, а колбэк Meta — на /whatsapp/webhook.

Секреты подчиняются правилу именования: любой ключ конфигурации, оканчивающийся на Secret, — это ссылка, разрешаемая через выбранное хранилище на этапе сборки, поэтому спецификации безопасно коммитить. Неразрешённая ссылка приводит к ошибке сборки, а не к запуску канала без учётных данных. Наблюдаемость выдаёт TurnTrace на каждый ход, выровненный по конвенциям OpenTelemetry GenAI, а набор eval/ прогоняет сценарии с проверками.

Что это значит для российского бизнеса

Webagent — открытый проект на Go, и его можно развернуть на собственном сервере, не отдавая данные внешним SaaS. Для компаний, которые обязаны учитывать требования 152-ФЗ при обработке персональных данных, это важный момент: спецификация и секреты остаются внутри контура, а ключи хранятся в системном каталоге с правами 0600. Впрочем, для работы реальной модели всё равно нужен внешний провайдер вроде OpenRouter или собственный OpenAI-совместимый шлюз, так что вопрос размещения модели придётся решать отдельно. Если вы уже экспериментировали с другими открытыми агентными инструментами, например с набором навыков Mantis от Google для поиска и правки уязвимостей или с рантаймом Shepherd для форка и отката агентных запусков, Webagent занимает свою нишу: он не про отладку агентов, а про быстрый вывод публичного агента наружу.

Частые вопросы

Кому подходит Webagent?

Компаниям, которым нужен публичный агент для общения с клиентами или другими агентами, но не хочется писать код оркестрации. Достаточно JSON-спецификации и выбора провайдеров. Также подойдёт партнёрам, которые хотят поставлять собственные адаптеры.

Какие каналы уже поддерживаются?

Slack, WhatsApp, HTTP и a2a. Telegram пока представлен заглушкой. Каналы Slack и WhatsApp проверяют подписи вебхуков и защищены от повторных доставок.

Нужны ли учётные данные для запуска?

Нет. Мозг echo работает без ключей, поэтому webagent validate и webagent serve запускаются на примерах zomato.json и bakery.json сразу после установки. Для реальной модели потребуется ключ OpenRouter или собственный шлюз.

Как хранятся секреты?

Ключ, сохранённый командой webagent keys set openrouter, лежит в системном каталоге конфигурации с правами 0600. В спецификации секреты не пишутся: любой ключ, оканчивающийся на Secret, — это ссылка на хранилище. Неразрешённая ссылка останавливает сборку.

Можно ли подключить существующий MCP-сервер?

Да, для этого достаточно одного блока в спецификации. Провайдер mcp подключается по Streamable HTTP с bearer- или API-ключом, выполняет рукопожатие на сборке и передаёт инструменты агенту под guardrail.

Что ещё не реализовано?

Браузерные действия, MCP с OAuth, экспорт в OTel, а также слой идентификации и биллинга AgentNet. Версия помечена как v0, поэтому перед продакшеном стоит изучить список отложенных доработок.

Как гарантируется безопасность действий?

Каждый инструмент оборачивается в action.Guard, и выбранный guardrail срабатывает до выполнения действия. Модель не может обойти эту проверку — ограничение заложено в архитектуру, а не в промпт.

Под какой лицензией проект?

Apache 2.0, написан на Go. Исходный код и пост о запуске доступны в репозитории проекта.

Есть ли примеры для быстрого старта?

Да, в комплекте две спецификации: zomato.json и bakery.json. Они работают с мозгом echo без каких-либо учётных данных.

Как посмотреть, сколько инструментов видит агент?

Команда webagent validate показывает реальное число инструментов, полученных от MCP-сервера после рукопожатия на этапе сборки. Тот же принцип прозрачности применяется и в других открытых проектах для агентов, например в бенчмарке поиска NEEDLE, где результаты проверяются на живых запросах.

Источник: marktechpost.com