Путь сообщения
Что происходит между нажатием Enter и появлением ответа: как API собирает контекст, как Runtime выполняет ход, как вызываются инструменты и как ответ доходит до браузера.
Коротко
1
Сообщение
Текст, файлы, выбранные сценарии
Браузер
2
Сборка хода
Права, лимиты, ассистент, правила, MCP
API
3
Слот и воркер
Очередь при нехватке ёмкости
Runtime
4
Цикл модели
Ответ и вызовы инструментов
Воркер
5
Поток в браузер
Текст, рассуждения, инструменты
SSE
6
Сохранение
Сообщение, файлы, расход
API
Подробно
Что собирает API
- Проверяет права на отправку и месячные лимиты токенов и расходов.
- Определяет ассистента и его системный промпт, разрешённые MCP и навыки с учётом группы пользователя.
- Добавляет текст выбранных сценариев к сообщению.
- Записывает сообщение пользователя и создаёт запуск.
- Передаёт Runtime всё нужное: модель, источники MCP, правила, промпт, файлы.
Источники MCP со статусом проверки «НЕ ПРОЙДЕНА» в ход не попадают.
Что делает воркер
- Поднимает контекст чата: историю, модель, источники MCP, файлы пространства.
- Ведёт цикл модели. Каждый вызов инструмента выполняется и возвращается модели, пока она не даст окончательный ответ.
- Навыки пакетов вызывает через Package-pool, инструменты MCP через соединение этого чата.
- Если инструменту нужны личные настройки пользователя, ход ставится на паузу, а в чате появляется форма «Нужны ваши настройки».
События
| Событие | Что значит |
|---|---|
run.accepted, run.scheduled, run.started | Запуск принят, получил слот, начался |
message.delta, message.completed | Текст ответа |
reasoning.delta | Рассуждения модели |
tool.call, tool.result | Вызов инструмента и результат. Для MCP с именем источника |
usage.delta | Расход токенов для полоски контекста |
artifact.created | Новый файл |
run.completed, run.failed, run.cancelled | Завершение |
Контекст
Когда история приближается к окну модели, EVA сжимает старую часть в краткое изложение и продолжает работу. Сжатие проверяется по тем же лимитам, что и обычный ход.
Отмена
Остановка в чате помечает запуск, планировщик сигналит воркеру, воркер завершает текущий шаг и отправляет финальное событие.