Перейти к содержимому

MCP и ИИ-агенты

Эта страница переведена с английского. Читать страницу на английском

Zeyn создан для агентов с двух сторон: агентов, которые пишут приложения на Zeyn, и агентов, которые пользуются работающим приложением от имени пользователя.

Агенты, которые пишут приложения

Проект, в котором работает агент, несёт собственные правила и инструменты:

  • AGENTS.md и CLAUDE.md перечисляют команды, структуру проекта, правила языка и указатель по фреймворку.
  • .mcp.json регистрирует zeyn mcp, MCP-сервер на stdio со следующими инструментами:
ИнструментЧто делает
zeyn_docsСправочник по фреймворку по темам: rules, language, protocol
zeyn_describeФункции, экраны, маршруты, доступ, API, проблемы и отсутствующие переводы приложения
zeyn_checkКомпилирует и сообщает о проблемах; fix: true сначала переписывает переименованные API
zeyn_testЗапускает cargo test и возвращает конец вывода
zeyn_new_featureСоздаёт папку функции и регистрирует её

Главный страж это компилятор. У каждого правила, которое он может обеспечить, есть тест compile_fail и сообщение #[diagnostic::on_unimplemented], написанное так, чтобы агент мог по нему действовать, например:

error[E0277]: `min()` and `max()` cannot be used on a `bool` column
  = note: `min()` and `max()` work on i32, i64, Money, Date, Time, DateTime, LocalDateTime and their Option forms

ZEYN_DESCRIBE=1 cargo run выводит то же описание, которое возвращает zeyn_describe, и завершается.

Агенты, которые пользуются приложением

App::new(t!("app.name")).mcp(Mcp::read_only())

С agents экраны приложения становятся инструментами:

  • один инструмент поиска для каждой таблицы,
  • один инструмент сохранения для каждой формы, со схемой из полей и правил формы (только с Mcp::read_write()).

Агенты достигают их двумя способами:

  • В браузере через WebMCP (document.modelContext.registerTool), если браузер его поддерживает. Инструменты текущего экрана регистрируются при его открытии и удаляются при закрытии.
  • На сервере по адресу POST /_zeyn/mcp (JSON-RPC). Он требует заголовок Authorization, поэтому одна браузерная сессия никогда не сможет им управлять.

Те же правила, что и для людей

  • Агент получает ровно те разрешения, что и пользователь, от имени которого он действует. Инструменты для экранов и действий, которые пользователю нельзя открывать, в список не попадают.
  • Вызовы проходят через guard-ы, перехватчики, валидацию и лимиты частоты обычного вызова.
  • Записи аудита помечают вызовы, сделанные агентами, чтобы проверяющий мог их отличить.
  • Mcp::read_only() позволяет агентам искать, но не сохранять. Выбирайте read_write() только для приложений, где агент должен изменять данные.