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: детали реализации
|
||||
- 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ч — начинаем с текущего момента
|
||||
```
|
||||
|
||||
Loading…
Reference in New Issue
Block a user