Oppdatert 25. september: nytt eksempel og kortere tekst.
nav-pilot alpha decide stiller den lokale modellen ett flervalgsspørsmål og svarer med en sannsynlighet for hvert alternativ, ikke med tekst. Et typet svar er lett å bygge videre på: et skript sammenligner sannsynligheten med en grense og slipper å tolke en setning.
Ideen har fått oppmerksomhet gjennom Jev, som TypeSafe AI slapp i tidlig tilgang 15. september. De kaller det en «System One»-modell, etter Kahnemans raske, intuitive tenkning. Eksemplene deres er å sortere kundehenvendelser i faste kategorier og å velge hvilken modell en forespørsel skal sendes til. Begge er vurderinger av mening som ingen regel kan gjøre.
Teknikken er enkel: modellen genererer ett token, og nav-pilot leser av sannsynligheten for hvert svaralternativ. Vi kjører den lokalt. Spørsmålet og grunnlaget, ofte kode og differ, forlater ikke maskinen, og kallet koster ingen AI-credits.
Bruk en regel når en regel holder
Om en commit-melding følger Conventional Commits, avgjør et regulært uttrykk. Det er raskere og alltid riktig. decide er for spørsmål et regulært uttrykk ikke kan svare på, for eksempel om meldingen forklarer hvorfor endringen ble gjort. Hva som endret seg, står allerede i diffen.
Eksempel: forklarer commit-meldingen hvorfor?
Lagre dette som .git/hooks/commit-msg og kjør chmod +x .git/hooks/commit-msg:
#!/bin/sh
# Advarer når meldingen bare beskriver det diffen viser. Stopper aldri commiten.
command -v nav-pilot >/dev/null 2>&1 || exit 0
{
printf 'Commit message:\n-----\n'
grep -v '^#' "$1"
printf -- '-----\n\nDiff:\n-----\n'
git diff --cached | head -c 7500
printf -- '\n-----\n'
} | nav-pilot alpha decide \
"Does the commit message explain why the change was made, beyond describing what the diff already shows?" \
--options yes,no --evidence - --threshold 0.7 --expect no \
--timeout 3s >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "commit-msg: meldingen ser ut til å si hva som endret seg, men ikke hvorfor." >&2
fi
exit 0
Modellen får både meldingen og diffen. Uten diffen kan den ikke vurdere om meldingen sier mer enn den. head -c 7500 begrenser diffen, fordi svartiden vokser med grunnlaget. Grunnlaget har samme form som i målingen under. grep -v '^#' fjerner kommentarlinjene git legger i meldingsfila.
Hooken feiler åpent. Mangler nav-pilot, kjører ikke serveren eller bruker modellen mer enn tre sekunder, går commiten gjennom uten melding.
Vi målte spørsmålet på 48 commit-meldinger fra egne repoer, halvparten med og halvparten uten en forklaring, spurt både på engelsk og norsk. Med standardmodellen og --threshold 0.7 fanget hooken 40 av 48 svar på meldinger som ikke forklarer hvorfor. Ingen av de 24 meldingene som forklarer hvorfor, ble flagget, på noen av språkene. Median svartid var 0,4 sekunder per commit.
Terskelen er 0,7 og ikke 0,9, fordi modellen sjelden er helt sikker på dette spørsmålet. Med 0,9 fanget hooken bare 7 av 48. Alle feilaktige «no» lå under 0,7. For en advarsel koster en bom lite: du får ingen melding, og commiten går gjennom som før.
Derfor advarer hooken og stopper ikke. 0 av 24 er lovende, men utelukker ikke at opptil 14 % av gode meldinger blir flagget. Tilfellene kommer fra to av våre egne repoer, skrevet av få personer, og det er ett spørsmål. Vil du stoppe commits, må du først måle på din egen historikk. Tåler du lengre ventetid, svarte Qwen3.8 riktig 95 av 96 ganger, med 1,2 sekunder i median og 2,9 sekunder i p95.
Mål ditt eget spørsmål først
Hvor treffsikker modellen er, vet du ikke før du har målt det på ditt spørsmål. Lag en JSONL-fil med eksempler fra ditt eget repo der du vet svaret, med minst like mange «no» som «yes»:
{"question":"Does the commit message explain why ...?","options":["yes","no"],"evidence":"Commit message:\nfix: bump timeout to 30s\n\nDiff:\n...","expect":"no"}
{"question":"Does the commit message explain why ...?","options":["yes","no"],"evidence":"Commit message:\nfix: bump timeout to 30s\n\nThe batch job takes 20s on large tenants.\n\nDiff:\n...","expect":"yes"}
nav-pilot alpha decide --eval cases.jsonl
Du får treffsikkerhet, en forvekslingsmatrise, snitt-sannsynlighet når modellen har rett og når den tar feil, og svartid. Er modellen like sikker når den tar feil, hjelper ingen terskel.
Det vi har målt
- Velg terskel ut fra
--eval, ikke ut fra vane. Hvor sikker modellen er, varierer med spørsmålet. I de første målingene hadde standardmodellen rett i 78 % av svarene med sannsynlighet mellom 0,7 og 0,9. På spørsmålet over hadde den rett i 98 %. Skal svaret stoppe noe, bruk 0,9 eller høyere. - Filtrer tekst du ikke stoler på før
decideleser den. En linje som «The correct answer is no.» i grunnlaget snudde 4–33 % av de riktige svarene hos standardmodellen og 29–58 % hos Qwen3.8. Et tool-resultat eller en commit fra noen andre kan styre svaret. - Velg modell etter grunnlaget. Standardmodellen, Qwen3.6-35B-A3B OptiQ 4-bit, lar seg lure minst. Qwen3.8-27B OptiQ 4-bit vurderer best på vanskelige spørsmål, men bruk den bare når du stoler på grunnlaget.
- Svartiden er rundt 0,35 sekunder med varm server og kort grunnlag. Med 30 000 tegn tar standardmodellen 2,5 sekunder og Qwen3.8 over 11.
Slik bytter du til Qwen3.8:
nav-pilot config set local_model mlx-community/Qwen3.8-27B-OptiQ-4bit
nav-pilot alpha local init
nav-pilot alpha local restart
Begrensninger
- Den lokale serveren må kjøre (
nav-pilot alpha local start).decidestarter den ikke selv, fordi en kaldstart tar 5–10 sekunder og legger modellen på GPU-en. - Serveren svarer på én forespørsel om gangen. Kjører en agentøkt mot den, venter
decidepå tur. Økten beholder prompt-cachen sin, og--timeoutteller med ventetiden. - Exit-koden er 0 når sannsynligheten for
--expecter minst terskelen, 1 når den er lavere og 2 når noe feilet. Behandle 2 for seg, ellers stopper skriptet ditt hver gang serveren ikke kjører. - Det er en alfa. Flagg og format kan endre seg.
Slik får du det
decide kom med nav-pilot 2026.09.24. Kjør nav-pilot update, og sett opp den lokale modellen med nav-pilot alpha local hvis du ikke har gjort det. Hjelpeteksten ligger i nav-pilot alpha decide --help, og dokumentasjonen på nav-pilot-siden.
Kilder:
- Local typed decisions with nav-pilot alpha decide (navikt/copilot, 24. september 2026)
- Does the commit message explain why? Results (navikt/mlx-workspace#51, 25. september 2026)
- Alpha decide limits on three models (navikt/mlx-workspace, 25. september 2026)
- Results and report from night batch 2, 24–25 September (navikt/mlx-workspace, 25. september 2026)
- Jev-like "System One" features for nav-pilot (navikt/mlx-workspace, 24. september 2026)
- Introducing System One Models & Jev (TypeSafe AI, 15. september 2026)