Эта страница переведена с английского. Читать страницу на английском
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 formsZEYN_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()только для приложений, где агент должен изменять данные.