Continut mutat din repo-ul romfast/workspace, unde fusese comis din greseala (commit-urile 0558bae si 47d9fb2 de acolo). Acolo e acum ignorat. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q4uzvgm7AyJch5WH8QHRhY
41 lines
1.9 KiB
Markdown
41 lines
1.9 KiB
Markdown
# Puntea Discord — cum se acumulează și se golește contextul
|
|
|
|
Sursă: `romfastsql/proxmox/lxc171-claude-agent/discord-bridge/` (`bot.py`, `runner.py`, `session_store.py`).
|
|
|
|
## Model
|
|
|
|
Fiecare fir de Discord (thread) e mapat pe o sesiune Claude Code reală, nu pe o
|
|
fereastră de memorie proprie (spre deosebire de chatbot-ul Maria/Flowise, care
|
|
folosește Buffer Window Memory cu `k=5`).
|
|
|
|
- `session_store.py` ține în `state.json` câte o înregistrare per `thread_id`,
|
|
cu câmpul `sid` = session id-ul Claude Code.
|
|
- La fiecare tur nou pe același fir, `runner.py` pornește procesul cu
|
|
`claude --resume <sid> --autocompact auto` — deci **contextul se acumulează
|
|
la nesfârșit** în sesiunea Claude Code, cu compactare automată (`--autocompact
|
|
auto`) gestionată de Claude Code însuși când se apropie de limita de context
|
|
(nu e o ștergere, e un sumar intern).
|
|
- Dacă procesul moare/repornește, se reia cu `--resume` pe același `sid` —
|
|
contextul supraviețuiește restart-urilor botului.
|
|
|
|
## Când se golește efectiv
|
|
|
|
Nu există curățare automată pe timp (nu e un TTL/cron). Contextul unui fir se
|
|
resetează DOAR manual, din Discord:
|
|
|
|
- **`/new`** — pornește o sesiune nouă (`sid = None`), fir „curat".
|
|
- **`/new fork:True`** — sesiune nouă, dar pornită dintr-un fork al
|
|
contextului curent (păstrează istoricul până la acel punct, apoi ramifică).
|
|
|
|
`bot.py:645` apelează `runner.reset(tid, fork=...)`, care în `runner.py:333`
|
|
oprește procesul curent și șterge `proc.sid` (la fork, marchează following
|
|
`--resume` cu fork în loc de resume simplu).
|
|
|
|
## De reținut
|
|
|
|
- Nu confunda acest mecanism cu Maria (Flowise): acolo fereastra e fixă (ultimele
|
|
5 schimburi, per `sessionId`), aici fereastra e "tot" + auto-compact intern
|
|
Claude Code, golit doar la `/new`.
|
|
- Comanda `/cleanup` (`cleanup.py`) NU are legătură cu contextul conversației —
|
|
curăță procese orfane rămase în urma firelor (memorie RAM), nu istoricul de chat.
|