Adauga masini-dezvoltare-testare.md (acces qm guest exec, ce ofera, limitari reale, de verificat inainte de folosire) si extinde monitorizare-context.md cu monitorizarea de context per subagent prin SubagentStop (context_watch.ps1 -Subagent). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015ZwtBDjGbAWvy7TmcNVxDC
71 lines
3.3 KiB
Markdown
71 lines
3.3 KiB
Markdown
# Hook-uri de disciplina (regulile 9 si 12)
|
|
|
|
## Monitorizare context sesiune (regula 9)
|
|
|
|
Agentul nu-si vede singur consumul de context. `COMUN\utile\context_watch.ps1` il citeste din
|
|
transcriptul sesiunii (ultimul `usage`: `input_tokens + cache_read + cache_creation`) si avertizeaza
|
|
peste prag: 250k = pregateste predarea, 275k = handoff acum.
|
|
|
|
Instalare, o data per calculator, in `%USERPROFILE%\.claude\settings.json` (nivel utilizator, prinde
|
|
toate proiectele):
|
|
|
|
```json
|
|
"hooks": {
|
|
"UserPromptSubmit": [
|
|
{ "hooks": [ { "type": "command",
|
|
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File \"D:\\ROA\\ROAGEST\\COMUN\\utile\\context_watch.ps1\" -Stdout" } ] }
|
|
]
|
|
}
|
|
```
|
|
|
|
- Ruleaza la fiecare mesaj al utilizatorului (~1s); sub prag nu scrie nimic.
|
|
- `-Stdout` e obligatoriu pe `UserPromptSubmit` (mesajul intra in context, exit 0). Fara el scrie pe
|
|
stderr si iese cu 2 - forma pentru `PostToolUse`.
|
|
- Praguri configurabile: `-Prag`, `-PragMax`.
|
|
- Verificare manuala: `powershell -File ...\context_watch.ps1 -Prag 900000 -PragMax 950000 -Intotdeauna`
|
|
(afiseaza `CONTEXT <n>k` indiferent de prag).
|
|
|
|
### Monitorizare context per subagent
|
|
|
|
Subagentii nu-si simt pragul de context (vezi memoria de sesiune "subagentii nu-si simt pragul de
|
|
context"). Hook-ul `SubagentStop` primeste `agent_transcript_path` - transcriptul SEPARAT al
|
|
subagentului care tocmai s-a oprit, distinct de transcriptul sesiunii principale - deci se poate
|
|
masura contextul fiecarui subagent, nu doar al orchestratorului.
|
|
|
|
`context_watch.ps1 -Subagent` citeste acel transcript separat, cu praguri implicite mai joase
|
|
(150k/200k, fata de 250k/275k la sesiunea principala, tocmai fiindca subagentii nu se opresc
|
|
singuri la timp). Optiuni suplimentare:
|
|
|
|
- `-Json` - ambaleaza mesajul in `hookSpecificOutput`/`additionalContext`, formatul cerut de
|
|
`SubagentStop`.
|
|
- `-StareFile <cale>` - scrie un antet datat, reinlocuit de fiecare rulare, pe primul rand al
|
|
fisierului de progres al sarcinii.
|
|
|
|
Garda `stop_hook_active` e in script: a doua declansare a aceluiasi ciclu de stop tace (nu se
|
|
reinjecteaza mesajul la infinit); plafonul documentat e 8 blocari consecutive inainte ca harness-ul
|
|
sa renunte oricum.
|
|
|
|
**Corectie:** niciun hook nu primeste tokenii de-a gata calculati - nici hook-urile `command`, nici
|
|
function hooks din SDK. Orice hook primeste doar `transcript_path` si trebuie sa-si citeasca singur
|
|
`usage` din JSONL (cum face `context_watch.ps1`). Singurul canal cu procent gata calculat
|
|
(`context_window.used_percentage`) e `statusLine`, care nu e hook si nu poate declansa actiuni.
|
|
|
|
Compactarea nu se poate declansa programatic dintr-un hook; singurul control indirect e coborarea
|
|
pragului de auto-compactare cu variabila de mediu `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`.
|
|
|
|
## Revizuire periodica a docs (regula 12)
|
|
|
|
`COMUN\utile\docs_revizie_check.ps1` compara data din markerul `COMUN\docs\.ultima_revizie` cu ziua
|
|
curenta si, peste 30 de zile, cere o runda de compactare. Se pune ca hook `SessionStart`, in acelasi
|
|
`settings.json`, cu `-Stdout`:
|
|
|
|
```json
|
|
"SessionStart": [
|
|
{ "hooks": [ { "type": "command",
|
|
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File \"D:\\ROA\\ROAGEST\\COMUN\\utile\\docs_revizie_check.ps1\" -Stdout" } ] }
|
|
]
|
|
```
|
|
|
|
Dupa o revizie aplicata: `powershell -File ...\docs_revizie_check.ps1 -Marcheaza` (rescrie markerul).
|
|
Interval configurabil cu `-Zile`.
|