Задача: Сделать ядро сервиса агентов и диалогов
Сделать ядро сервиса агентов и диалогов
Центральное хранение сайтов, агентов, диалогов и сообщений.
Реализовать базовые сущности и API центрального сервиса: наши сайты, связанные с ними агенты, диалоги и сообщения. Агент сайта должен работать через этот сервис, а не как отдельная независимая система.
Ворклоги
Серверный фундамент и LLM/API
По фактическому состоянию проекта реализован базовый серверный слой центра агентов:
- добавлены GraphQL-операции
llmChatCompletion,llmCompletion,llmImageGeneration,llmSpeechGeneration; - общий LLM-клиент поддерживает Local и OpenRouter, ключи остаются на сервере;
- добавлен общий контекст выполнения и WebSocket-транспорт GraphQL;
- GraphQL LLM-операции сейчас защищены авторизацией активного пользователя;
- реализованы PostgreSQL/Prisma и серверный слой аккаунтов (
User,Token, регистрация, вход, профиль, сессии, JWT + проверка сохранённой сессии, bcrypt, отзыв сессий); - добавлен bootstrap БД и исправлен production-запуск/сборка.
Связанные коммиты, зафиксированные в аудите: d3bea97, ea2c78e, b8ce41b, bc95738.
Повторно подтверждено локально: TypeScript checks успешны, соответствие БД Prisma-контракту успешно, подключение к agents-center с хоста и из контейнера успешно, новый сервер на порту 3001 отвечает HTTP 200, через прокси на 8080 также HTTP 200.
Важно: постоянное хранение разговоров и полноценные сущности сайтов/агентов/диалогов/сообщений как продуктовый слой ещё не завершены.
HTTP-чат и минимальная событийная реакция агента
Реализованы серверные контракты, на которых может строиться центральный сервис диалогов:
POST /api/chatподдерживает обычный JSON и потоковый NDJSON;- единый
ExecutionContextнесёт execution id, режим ответа, abort signal и отправку событий; - поддержаны старт, последовательные delta, успешное завершение, ошибка и отмена;
- есть явная отмена через DELETE, отмена при disconnect/timeout/shutdown и независимость параллельных запусков;
- реализованы класс
AgentиPOST /api/agentс цепочкойmessage.received → Agent.react → message.publish; - действия связаны со stimulus через
stimulusId, фрагменты одного ответа имеют общийactionId; - мок реакции уже заменён реальным вызовом существующего
runChat/LLM.
Повторные проверки из аудита: HTTP-чат 8/8 тестов, реакции агента 2/2 теста.
Это фундамент диалоговой части, но пока без постоянной памяти разговора, дедупликации событий и общей модели сайтов/посетителей/диалогов.