Event Bus: Redis Streams + lazy loading (agent=human, no history preload)
This commit is contained in:
parent
89ea09411e
commit
75c8e6597a
@ -57,9 +57,31 @@ Event Bus частично решает: если Tracker упал, событи
|
|||||||
|
|
||||||
## На подумать
|
## На подумать
|
||||||
|
|
||||||
### ⚠️ Event Bus: детали реализации
|
### ✅ Event Bus: Redis Streams (решение)
|
||||||
- Tracker пишет в Redis Stream или в Redis Pub/Sub?
|
|
||||||
- Streams = persistent, Pub/Sub = volatile
|
**Выбор: Redis Streams** (не RabbitMQ — тот не хранит историю).
|
||||||
- Consumer groups для multi-instance агентов?
|
|
||||||
- Retention policy (сколько хранить)?
|
**Роль:** real-time доставка + буфер при reconnect. НЕ хранилище истории (это PostgreSQL).
|
||||||
- WS остаётся как транспорт до клиента, но sourced из Redis?
|
|
||||||
|
**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ч — начинаем с текущего момента
|
||||||
|
```
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user