diff --git a/BRAINSTORM-MICROSERVICES-2026-02-21.md b/BRAINSTORM-MICROSERVICES-2026-02-21.md index 9f9eef0..8b7f993 100644 --- a/BRAINSTORM-MICROSERVICES-2026-02-21.md +++ b/BRAINSTORM-MICROSERVICES-2026-02-21.md @@ -57,9 +57,31 @@ Event Bus частично решает: если Tracker упал, событи ## На подумать -### ⚠️ Event Bus: детали реализации -- Tracker пишет в Redis Stream или в Redis Pub/Sub? -- Streams = persistent, Pub/Sub = volatile -- Consumer groups для multi-instance агентов? -- Retention policy (сколько хранить)? -- WS остаётся как транспорт до клиента, но sourced из Redis? +### ✅ Event Bus: Redis Streams (решение) + +**Выбор: Redis Streams** (не RabbitMQ — тот не хранит историю). + +**Роль:** real-time доставка + буфер при reconnect. НЕ хранилище истории (это PostgreSQL). + +**Retention:** ~24ч. Старые события — из PostgreSQL через REST API. + +### ✅ Lazy Loading контекста (ключевое решение) + +Агент при подключении **НЕ грузит историю**. Как человек — зашёл и видит только новое. + +``` +1. Subscribe на Redis Stream (real-time, с текущего момента) +2. GET /tasks?assignee=me # мои задачи +3. GET /project/{id}/docs # документация +4. Работает. Историю НЕ грузит. +5. Если нужен контекст → read_messages(limit=10) — пагинация назад +``` + +**Почему:** не засоряет контекст LLM, агент сам решает когда подгружать. +**Prompt guideline:** "Если не хватает контекста — используй read_messages()" + +### Reconnect +``` +1. XREAD STREAMS events {last_event_id} # пропущенные +2. Если last_event_id > 24ч — начинаем с текущего момента +```