Техническая документация

Synadia NATS Agents

Что где лежит в коде, как запускается и что проверялось.
Версия d5b786da3c04 · подготовлено 7 сентября 2026

О проекте

Задание может выполняться дольше HTTP-запроса. Поэтому шлюз пишет его в очередь, а воркер обрабатывает отдельно. Нужны повторная доставка и проверка, что готовый результат не применяется второй раз.

Консоль Synadia на Vue/Bun, шлюз YouTrack и отдельный Codex-воркер. Между ними NATS с JetStream. Discovery и диагностический чат подключены. Для выполнения задач в YouTrack ещё нужны настройки доступа.

  • YouTrack URL и MCP/REST-доступ не настроены. Вместо корпоративного адреса задан недоступный placeholder; обращения к рабочему YouTrack не выполняются.
  • Доступ Codex/OpenAI пока не предоставлен. Выполнение задачи и запись комментария в YouTrack не проверены.
  • Диагностические health/hooks/jobs — штатные ответы gateway, а не ответы LLM.
  • Публично доступны discovery и диагностика gateway. Текущие задачи и сабагенты Codex Desktop к консоли пока не подключены.

Скриншоты, схемы и исходные материалы сохранены на языке оригинала; подписи и описание переведены.

Архитектура и схемы

  • Исходный examples/agent-web-ui обслуживается Bun; процессы запускаются через scripts/start-production.js.
  • Gateway отвечает за webhooks и результаты, worker отделён от HTTP и читает durable consumer JetStream.
  • Используется отдельная учётная запись NATS; subjects youtrack.codex.jobs.komaroff и youtrack.codex.results.komaroff в stream KOMAROFF_CODEX.
  • CODEX_DRY_RUN=false и YOUTRACK_DRY_RUN=false. Отсутствие ключей не заменяется синтетическими ответами.
  • Консоль открыта без пароля с 7 сентября 2026. Webhook требует собственный токен; NATS и БД наружу не опубликованы.
Компоненты и границы интеграций
Компоненты и границы интеграций · Mermaid ↓
Проверенный диагностический запрос
Проверенный диагностический запрос · Mermaid ↓
Развёртывание
Развёртывание · Mermaid ↓

Code-map: файлы и связи

Карта привязана к версии d5b786da3c04. В таблице — экран или API, связанный модуль и данные.

ФункцияЭкран / APIМодульДанные / проверка
Консоль/ и /wsexamples/agent-web-ui/server/index.ts; server/bridge.tsVue/Bun, WebSocket, Synadia discovery; проверены UI и ответ health
Webhook/youtrack/webhooksrc/youtrack-gateway.jsпроверка токена, быстрая постановка job
ОчередьKOMAROFF_CODEXsrc/jetstream.jsdurable worker, results, readiness
ВыполнениеCodex workersrc/codex-worker.js; scripts/acodexпоследовательное выполнение; ключ ожидается
YouTrackMCP или RESTsrc/youtrack-mcp-client.js; youtrack-gateway.jsвнешний доступ ещё не настроен

Как работать с картой

  1. Перед изменением найти функцию и пройти связи до API, состояния и хранилища.
  2. Проверить входы, ошибки, повторные события и зависимые сценарии.
  3. После изменения обновить карту и затронутые схемы вместе с кодом.
  4. Выполнить связанные проверки и привязать новые материалы к версии исходников.

Сценарии и API

  1. Открыть консоль без входа, увидеть CONNECTED и обнаруженный NATS-агент codex.
  2. Открыть агента, отправить health и получить настоящий ответ о JetStream, subjects и consumers.
  3. После настройки YouTrack и Codex: webhook → job → отдельный worker → result → запись результата в YouTrack.
  4. Проверить состояние jobs и результаты, повторы доставки и восстановление worker на согласованной тестовой задаче.

Проверка опубликованной версии

CI: Полная сборка исходного приложения ↗ · d5b786da · версия этого демо · 2026-09-07

  • Полный исходный образ собран в GitHub CI. API и отдельный worker запущены.
  • В Synadia UI обнаружен один настоящий агент; health прошёл через WebSocket/NATS и вернул состояние KOMAROFF_CODEX.
  • Оба dry-run флага выключены; готовность NATS и consumers подтверждена.
  • Гостевой доступ и webhook без токена отклоняются. Проверены desktop и мобильный экран.
  • Реальная задача Codex и запись в YouTrack не выполнялись: отсутствуют настройки интеграций.

Эти проверки относятся к указанной версии. Коммерческие показатели и качество моделей на независимой выборке здесь не измерялись.

Измерения

Память контейнеров: три снимка без внешней обработки
Память контейнеров: три снимка без внешней обработки · Исходные данные ↓
  • Пять последовательных HTTPS GET с VPS к самому себе: 8.9–60.7 ms, все HTTP 200. Это не нагрузочный тест и не оценка внешней сети.
  • В замерах не запускались Telegram-сбор, LLM или задача Codex.

Запуск и эксплуатация

Полный образ собирается исходным docker/Dockerfile. app: node scripts/start-production.js; worker: node src/codex-worker.js.

Настройки: /srv/portfolio/agents/.env и integrations.env; отдельный постоянный codex-state. Docker-ресурсы и логи ограничены.

Требуется YOUTRACK_BASE_URL и YOUTRACK_MCP_URL либо YOUTRACK_TOKEN; для модели — согласованный OPENAI_API_KEY/CODEX_API_KEY или иной штатный доступ. Не переносить корпоративные ключи без указания владельца.

После предоставления настроек пройти одну явно выбранную задачу: webhook, durable job, session_started, analysis_completed, результат в YouTrack. До этого цепочка документируется как неподтверждённая.

Стек

Vue / BunИсходный интерфейс Synadia и WebSocket bridge
NATS / JetStreamDiscovery, очередь, durable consumers
Node.js / Codex SDKОтдельный worker
MCP / RESTYouTrack после настройки доступа

Материалы и исходники

История репозитория: с 22 мая 2026. Версия на сайте: 7 сентября 2026.

Архив материалов на языке оригинала.