fix(graceful-handoff): model-aware context window detection (v2.1.0)
Stop hook fallback antok 200K-vindu. På Opus 4.7 (faktisk 1M) kunne auto-handoff fyre 5–7x for tidlig — estimert 70% når reell bruk var ~14%. Erstatter enkel fallback med 4-stegs resolution-kjede: 1. payload.context_window.used_percentage (autoritativ) 2. payload.context_window.context_window_size + transcript-estimat 3. MODEL_WINDOWS[payload.model.id] + estimat 4. FALLBACK_WINDOW=1_000_000 + estimat (2026-default) additionalContext-meldinger inkluderer nå [kilde: <source>] for innsyn. Brief som kilde-artefakt i docs/brief-context-window-detection.md. 6 nye tester (57 totalt). Ingen regresjoner.
This commit is contained in:
parent
346b4c4fb7
commit
40a82ccdb4
10 changed files with 347 additions and 34 deletions
|
|
@ -80,15 +80,17 @@ hooks/hooks.json # Registrerer alt
|
|||
|
||||
## Auto-trigger ved kontekst-terskel — hvordan virker det?
|
||||
|
||||
Det finnes ingen Claude Code-primitiv som eksponerer real-time kontekst-prosent til hooks (Anthropic har closed feature requests #16988, #27969, #34340). Vi bruker derfor en **approksimasjon**:
|
||||
Det finnes ingen Claude Code-primitiv som eksponerer real-time kontekst-prosent til hooks (Anthropic har closed feature requests #16988, #27969, #34340). Vi bruker derfor en **4-stegs resolution-kjede** (v2.1):
|
||||
|
||||
1. **Stop hook** fyrer etter hver model-respons og får `transcript_path` i payload
|
||||
2. Hooken leser `wc -c <transcript>` for char-count
|
||||
3. Estimerer tokens som `chars / 3.5`
|
||||
4. Sammenligner mot `context_window_size` fra payload (default 200k, men respekterer 1M-windows)
|
||||
5. Ved estimert ≥ 70%: spawner pipeline synkront
|
||||
1. **Stop hook** fyrer etter hver model-respons og får `transcript_path` + payload
|
||||
2. Resolver kontekstbruk i prioritert rekkefølge:
|
||||
- `payload.context_window.used_percentage` — autoritativ, modell-agnostisk (ingen estimering)
|
||||
- `payload.context_window.context_window_size` + transcript-estimat (`chars / 3.5`)
|
||||
- Modell-mapping: `payload.model.id` → kjent vindusstørrelse (Opus 4.7=1M, Sonnet 4.6=200k, Haiku=200k)
|
||||
- Siste fallback: 1M (oppdatert 2026-default — antar moderne modell)
|
||||
3. Ved estimert ≥ 70%: spawner pipeline synkront
|
||||
|
||||
Dette estimatet kan avvike ±10% fra Claude's reelle telling. **70% er konservativt valgt** — gir buffer mot drift.
|
||||
Estimerings-pathen (steg 2-4) kan avvike ±10% fra Claude's reelle telling. **70% er konservativt valgt** — gir buffer mot drift. Direct-pathen (`used_percentage`) har ingen drift. additionalContext-meldingen viser hvilken kilde som ble brukt (`direct`/`payload-size`/`model-map`/`default-1m`) for innsyn.
|
||||
|
||||
For å hindre repeat-firing innen samme sesjon: lock-fil `<transcript_dir>/.handoff-lock-<session_id>` opprettes ved første trigger.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue