От чата до модели и инструментов
Почему запрос сначала попадает на бэкенд Timelix, как выбирается модуль агента, где может крутиться LLM и как связаны tools и MCP
Принцип: бэкенд — единая точка входа
Сообщение из Timelix Chat не уходит к модели напрямую из браузера. Сначала оно попадает на бэкенд приложения (маршрут чата агента). Так мы держим авторизацию, контекст пользователя, выбор «куда дальше слать запрос» и единый формат ответа (в том числе стрим).
Зачем так: один и тот же UI может работать с разными бэкендами агента; секреты и OAuth остаются на сервере; к запросу можно подмешать RAG, mcpServerUrl и список инструментов без раскрытия деталей клиенту.
Куда уходит запрос дальше: модуль на роли
Конкретный исполнитель (N8N, встроенный AI, внешний Agent Server, OpenAI через Codex и т.д.) выбирается по конфигурации роли и дочерних контейнеров агента. Логика намеренно сосредоточена на бэкенде: пользователь в чате не переключает «провайдера» вручную — это зашито в настройках агента в базе.
Порядок имеет значение. Сначала проверяется, не задан ли в content самой роли внешний Agent Server (agentServerUrl). Если нет — перебираются дочерние блоки-контейнеры и выбирается первый подходящий модуль: AgentServer → N8nConnector → TanStackAI → CodexConnector. Если ничего не подошло, агент считается не настроенным.
Внешний Agent Server может быть развёрнут в другом регионе (например, в Нидерландах), чтобы обойти гео-ограничения и проксировать запросы к отдельным API. Это развёртывание, а не «особенность UI» — см. Agent Server — внешний LLM-сервис.
Кратко по режимам:
| Направление | Идея |
|---|---|
| N8N | Timelix отдаёт webhook вашему сценарию; логика и вызовы MCP — на стороне N8N. |
| TanStack AI | Модель вызывается внутри приложения по настройкам контейнера. |
| Agent Server | LLM и tool-loop на отдельном сервисе; в payload передаётся готовый mcpServerUrl на Timelix. |
| Codex (ChatGPT subscription) | Ответы стримятся через OAuth к API ChatGPT (WHAM); инструменты описываются в формате, ожидаемом этим API, исполнение по-прежнему завязано на контекст агента в Timelix. |
Детали маршрута и полей запроса: Timelix Chat. Альтернатива через N8N: N8N и автоматизация.
Инструменты: один набор на агента, исполнение через MCP
Список инструментов для роли собирается на бэкенде по agentId: системные tools из реестра (с учётом отключённых), плюс инструменты из каталога / внешних MCP, привязанные к роли. Это один и тот же принцип, что и для MCP-эндпоинта: без корректного agentId набор может не совпасть с ожиданиями.
Важное разделение:
- Объявление — что модель «может вызвать» (имена, описания, схема аргументов) уходит вместе с чат-запросом в выбранный бэкенд.
- Исполнение — реальные действия в данных Timelix выполняются через MCP (
/api/agent/mcp), с контекстомuserId/agentId/ при необходимостиtodoListIdи т.д. В сценарии с внешним Agent Server в запрос кладётся готовая строкаmcpServerUrl, чтобы сервер знал, куда слать tool-calls.
Подробнее: Timelix Tools, MCP-сервер Timelix, Задачи и MCP.
Зачем тогда отдельная страница про MCP
MCP — не «ещё один чат», а канал выполнения действий и перечня tools для клиентов, которые говорят по протоколу MCP (IDE, N8N MCP Client, виджеты). Чат агента и MCP согласованы по тому же агенту и тем же правилам доступа к инструментам, но транспорт разный: чат идёт через /api/agent/chat, MCP — через /api/agent/mcp. Обзор протокола: MCP-сервер.