Session Recorder — black box de sessões (D3)¶
Identidade¶
- Tipo: lib/CLI determinística + backend do lookup (core)
- Stack: Python 3.12 + SQLite, zero deps
- Path:
_core/session_recorder.py·_lookup_backends/transcripts.py·_core/clean_transcripts.py - Issues: epic DEV-1117 (stories DEV-1118…1121)
- Status: ativo
O que é¶
A camada de RESGATE da D3: sessão que morre sem /encerrar-sessao deixava de existir pro sistema de memória. Agora todo turno (pedido + resposta + tools + arquivos tocados) é capturado do transcript do harness com resumo extrativo sem LLM, deduplica por fingerprint e fica consultável. Memória curada (sessions-log/STATE/decisions) continua sendo a fonte nobre.
Como funciona¶
- Captura: parser do JSONL em turnos (tool_results/system-reminders não abrem turno; synthetic ignorado).
- Store: SQLite WAL
.pd/recorder/turns.db(PK=fingerprint → idempotente) + fallback JSON. Primeiro run real arquivou 1.286 turnos do histórico completo. - Resgate:
lookup --source transcripts(opt-in por design — turno cru não polui busca default nem índice D1). - Limpeza integrada:
clean_transcripts.py --applyarquiva o pd-framework no recorder ANTES de deletar (não-pulável).
Quickstart¶
python _core/session_recorder.py capture --all-sessions
python _core/session_recorder.py tail --limit 10
python _core/lookup.py "o que eu estava fazendo" --source transcripts
python _core/clean_transcripts.py --days 30 # preview; --apply só com confirmação
Don'ts¶
- Nunca tratar o recorder como memória nobre — é resgate.
- Nunca deletar transcripts do pd-framework sem passar pelo
clean_transcripts.py. - Nunca ativar
transcriptsno ACTIVE do lookup (decisão registrada — flood).
Troubleshooting¶
- 0 turnos no preview → rodar do diretório do repo (o default resolve o projeto pelo cwd).
- Resgate de outra máquina → store é local por máquina, por design.
- Skill /limpar-transcripts global ainda com fluxo antigo → pendência de permissão registrada na DEV-1121; usar o script no framework.
Histórico¶
- 2026-07-03 — epic completo: 8afb2cf (captura) · 879865e (store, 1.286 turnos retroativos) · 45be2e7 (source lookup) · b6af5e8 (limpeza integrada) · d8b46e9 (docs)
Notas Relacionadas¶
memory-engine · outcomes-cost · repo: _core/docs/session-recorder.md · manual §10.5