Routing modeli oparty na dowodach, nie na marce
Routing modeli to wersjonowana reguła, która przypisuje każdą klasę pracy agenta (eksplorację, implementację, review, masowe edycje) do modelu i poziomu rozumowania (effort) wybranych przez ewaluacje na własnym repozytorium. Zacznij od domyślnego modelu narzędzia, dostrój poziom rozumowania przed zmianą modelu i zmieniaj trasę tylko wtedy, gdy jakość zaakceptowanych zadań utrzymuje się przy niższym koszcie lub opóźnieniu.
Trzech programistów w twoim zespole używa trzech różnych modeli i nikt nie potrafi powiedzieć, który z nich wyprodukował zeszłotygodniową wadliwą migrację. Jedna osoba po jednej imponującej sesji przełączyła się na najdroższy model do wszystkiego. Inna pracuje na najtańszym i po cichu powtarza nieudane zadania po trzy razy. Ta strona jest dla programisty, który buduje tabelę routingu, oraz dla tech leada, który jest jej właścicielem i zatwierdza każdą zmianę.
Scorecard Q3 · Plan: Jak dobierasz model i środowisko wykonawcze do każdego zadania?
Odpowiedź za maksimum (3 punkty): „Routuję klasy zadań na podstawie wersjonowanych ewaluacji jakości, opóźnienia, błędów i kosztu ukończonej pracy”.
Co daje polityka routingu modeli
Dział zatytułowany „Co daje polityka routingu modeli”- Datowaną tabelę routingu w
docs/ai/model-routing.md, która dla każdej klasy zadań wskazuje jeden model, poziom rozumowania i fallback. - Te same trasy wpisane w konfigurację Claude Code, Codeksa i Cursora, dzięki czemu nikt nie kopiuje nazwy modelu do promptu.
- Ewaluację przed i po, która uzasadnia każdą trasę odsetkiem zaliczonych zadań, liczbą ponowień, opóźnieniem i kosztem na zaakceptowane zadanie.
- Cztery prompty do skopiowania: klasyfikacja pracy, uruchomienie kandydata, porównanie wyników i przygotowanie zmiany routingu.
- Ścieżkę naprawczą na dzień, w którym model zostanie wycofany, przemianowany albo zacznie odmawiać danej klasy zadań.
Aktualne nazwy modeli, ceny i okna kontekstu są w jednym miejscu: w porównaniu modeli AI. Ta strona wymienia modele tylko w datowanym przykładzie, a po liczby odsyła tam.
Dlaczego zacząć od domyślnego modelu i najpierw stroić poziom rozumowania?
Dział zatytułowany „Dlaczego zacząć od domyślnego modelu i najpierw stroić poziom rozumowania?”Reguła, której trzyma się ten serwis: zacznij od domyślnego modelu narzędzia, dostrój poziom rozumowania przed zmianą modelu i zmieniaj model tylko wtedy, gdy twoje ewaluacje tak mówią. Model domyślny to ten, od którego każdy dostawca każe zaczynać, a poziom rozumowania jest tańszą i odwracalną dźwignią niż zmiana modelu.
Stan na 2026-09-26:
| Narzędzie | Model domyślny | Domyślny poziom rozumowania | Zastrzeżenie |
|---|---|---|---|
| Claude Code | Claude Opus 5.5 | medium | Od v2.1.280 w kanale wydań latest. Kanał stable (v2.1.274 na 2026-09-26) nadal startuje na starszych modelach, a sesje w Microsoft Foundry domyślnie używają Claude Sonnet 4.5. |
| Codex | GPT-6 Astra | low | Domyślny w paczce od CLI 0.153.4 (2026-09-04). Serwer może to nadpisać dla zalogowanych kont. |
| Cursor | Niezweryfikowane | Niezweryfikowane | Strona cursor.com była niedostępna 2026-09-26. Sprawdź wybór modelu na własnym koncie i zapisz, co widzisz. |
Wynikają z tego dwie rzeczy. Po pierwsze, podnieś poziom rozumowania na modelu domyślnym (w Claude Code z medium na high lub xhigh, w Codeksie z low na medium lub high), zanim zaczniesz oceniać droższy model. Po drugie, zanim porównasz wyniki dwóch osób, sprawdź kanał wydań i dostawcę, bo to samo polecenie może wystartować na różnych modelach.
Które klasy zadań potrzebują własnej trasy?
Dział zatytułowany „Które klasy zadań potrzebują własnej trasy?”Routuj według klasy zadania, a nie według osoby czy nastroju. Klasa zasługuje na osobną trasę, gdy jej kryterium sukcesu różni się od pozostałych. Większości repozytoriów wystarczy od czterech do sześciu klas. Poniższy przykład to hipoteza startowa oparta na tym, jak dostawcy pozycjonowali swoje modele 2026-09-26, a nie wynik. Zastąp każdą komórkę tym, co pokażą twoje ewaluacje.
| Klasa zadań | Co decyduje o trasie | Przykładowa trasa startowa (2026-09-26) | Fallback | Pomiar |
|---|---|---|---|---|
| Eksploracja repozytorium | Znalezione właściwe pliki, szybkość | Subagent tylko do odczytu na Claude Haiku 4.5 lub GPT-6 Luna | Model domyślny sesji | Trafione pliki względem znanej listy, opóźnienie |
| Implementacja | Diff zaakceptowany po bramkach | Model domyślny z domyślnym poziomem rozumowania: Claude Opus 5.5 lub GPT-6 Astra | Ten sam model, poziom rozumowania o stopień wyżej | Odsetek przejść przez bramki, ponowienia, koszt na zaakceptowane zadanie |
| Długi horyzont, najtrudniejsze rozumowanie | Zadanie ukończone bez ratunku człowieka | Claude Fable 5.1 wybrany ręcznie albo GPT-6 Astra na max | Podziel zadanie i uruchom ponownie na modelu domyślnym | Ukończenie bez interwencji, koszt na zadanie |
| Review | Prawdziwe defekty, mało fałszywych alarmów | Osobna sesja, a inny model tam, gdzie ewaluacje pokazują, że znajduje więcej | Specjalista-człowiek | Zaakceptowane uwagi, odsetek fałszywych alarmów |
| Masowe edycje mechaniczne | Poprawne edycje w dużej liczbie | Claude Sonnet 5, GPT-6 Sol lub GPT-6 Luna | Model domyślny tylko na plikach, które nie przeszły | Odsetek przejść na plik, koszt na plik |
| Dane regulowane | Zatwierdzony dostawca, region, retencja | Wyłącznie trasa zatwierdzona przez politykę | Ścieżka wyłącznie ludzka | Naruszenia polityki (cel: zero) |
Tabelę trzymają w ryzach dwie zasady. Próg jakości musi zostać spełniony, zanim koszt lub szybkość rozstrzygną między kandydatami. A model flagowy bywa tańszy na zaakceptowane zadanie niż mały, jeśli unika ponowień, więc porównuj koszt na zaakceptowane zadanie, nigdy cenę za token.
Przeprowadź ewaluację routingu przed i po
Dział zatytułowany „Przeprowadź ewaluację routingu przed i po”Rób to dla jednej klasy zadań naraz. Zaplanuj co najmniej trzy przebiegi na zadanie dla każdego kandydata: zestaw 10 zadań z baseline’em i jednym kandydatem to 60 przebiegów. Jeśli nie masz jeszcze zestawu ewaluacyjnego, najpierw zbuduj go ze scalonych pull requestów.
-
Zamroź harness. Zapisz wersję CLI, commit
CLAUDE.mdlubAGENTS.md, skille i serwery MCP. Trasa porównana na dwóch wersjach harnessu nic nie mówi o modelu. -
Wybierz od 10 do 20 zadań z danej klasy. Każde zadanie potrzebuje commita bazowego i skryptu oceniającego, który kończy się kodem
0przy sukcesie: testy niewidoczne dla agenta, type checker, linter i kontrola zakresu zmienionych plików. -
Uruchom baseline i każdego kandydata po trzy razy na zadanie, w jednorazowym worktree. Dla każdego przebiegu używaj tego samego promptu. Jeden przebieg na zadanie ukrywa wariancję, przez którą tani model wygląda dobrze.
-
Oceń kodem, a potem wypełnij arkusz poniżej. Najpierw odsetek zaliczeń. Do porównania kosztu i opóźnienia przechodzą tylko kandydaci mieszczący się w progu jakości względem baseline’u.
-
Otwórz pull request, który zmienia jednocześnie
docs/ai/model-routing.mdi konfigurację narzędzia. Dołącz arkusz wyników. Tech lead przegląda liczby, nie prozę, i scala zmianę.
Żeby uruchomić macierz kandydatów z jednej konfiguracji zamiast pętli w shellu, użyj promptfoo (npm promptfoo, 0.123.1 na 2026-09-26), które obsługuje Claude Code i Codeksa jako dostawców: uruchom npx promptfoo@latest init, a potem promptfoo eval i promptfoo view.
Polecenia różnią się między narzędziami. Każdy przebieg poniżej działa bez interakcji, zostaje w repozytorium i zapisuje wynik czytelny dla maszyny.
# Terminal, inside a throwaway worktree for one taskclaude -p "$(cat evals/implementation/task-07/prompt.md)" \ --model claude-opus-5-5 --effort high \ --permission-mode acceptEdits \ --allowedTools "Bash(npm test *)" "Bash(npx tsc *)" "Bash(npm run lint *)" \ --max-budget-usd 5 \ --output-format json > runs/task-07-opus55-high-run1.json./evals/implementation/task-07/check.sh "$PWD"; echo "exit=$?"Wynik JSON zawiera total_cost_usd i rozbicie kosztu na modele. Oba są szacunkami po stronie klienta, więc raz w miesiącu uzgadniaj je z panelem zużycia. Dla każdego kandydata zmień --model i --effort.
# Terminal, inside a throwaway worktree for one taskcodex exec -m gpt-6-sol -c model_reasoning_effort="medium" \ -c default_permissions=":workspace" \ --json -o runs/task-07-sol-medium-run1.txt \ "$(cat evals/implementation/task-07/prompt.md)" > runs/task-07-sol-medium-run1.jsonl./evals/implementation/task-07/check.sh "$PWD"; echo "exit=$?"--json wypisuje przebieg jako zdarzenia JSONL; liczbę tokenów policzysz, sumując pole usage ze zdarzeń turn.completed, a -o zapisuje końcową odpowiedź. Profile uprawnień, takie jak :workspace, są w wersji beta (Codex CLI 0.138.0 i nowsze); nie łącz ich z --sandbox.
Wyboru modelu w Cursorze nie dało się zweryfikować 2026-09-26, więc ewaluacje Cursora uruchamiaj tam, gdzie da się je oskryptować: pakiet @cursor/sdk wymaga parametru model dla każdego lokalnego agenta, a identyfikatory dostępne na twoim koncie zwraca Cursor.models.list(). Zapisuj identyfikator zwrócony przez to wywołanie, nigdy nazwę z pamięci. Oceniaj tym samym check.sh.
Zapisuj każdy przebieg w jednym arkuszu
Dział zatytułowany „Zapisuj każdy przebieg w jednym arkuszu”date: 2026-09-26task_class: implementationharness: { claude_code: 2.1.283, codex: 0.157.1, agents_md_commit: 4f1c2e9 }tasks: 12runs_per_task: 3candidates: - route: claude-opus-5-5 @ medium # baseline: the default pass_rate: 0.83 median_retries: 0 median_latency_s: 410 cost_per_accepted_task_usd: 1.90 - route: claude-opus-5-5 @ high pass_rate: 0.92 median_retries: 0 median_latency_s: 520 cost_per_accepted_task_usd: 2.30decision: promote "@ high" for implementation; quality gain beats the cost risesigned_off_by: tech lead, 2026-09-26Liczby powyżej to wypełniacze pokazujące kształt arkusza; twoje pochodzą z twoich przebiegów.
Zapisz trasę w konfiguracji każdego narzędzia
Dział zatytułowany „Zapisz trasę w konfiguracji każdego narzędzia”Trasa, która istnieje tylko w dokumencie, rozjeżdża się z rzeczywistością. Zapisz ją tam, gdzie czyta ją narzędzie, i trzymaj tam pełne identyfikatory modeli zamiast aliasów. Aliasy takie jak opus i sonnet wskazują różne modele u różnych dostawców i przesuwają się, gdy wychodzi nowy model.
Model sesji ustaw w .claude/settings.json ("model": "claude-opus-5-5") albo zostaw pusty, żeby podążać za domyślnym. Klasy zadań routuj przez subagentów: każdy plik subagenta przyjmuje pola model i effort. Eksplorację przypisz do osobnego subagenta projektu na tańszym modelu, a potem wywołuj go po nazwie albo wskaż go w CLAUDE.md:
---name: explore-cheapdescription: Read-only codebase search. Use before any edit to find files, call sites, and tests.tools: Read, Grep, Globmodel: claude-haiku-4-5---Return file paths with one line each on why they matter. Never edit files.Claude Haiku 4.5 ma zobowiązanie, że nie zostanie wycofany przed 2026-10-15 (bez ogłoszenia wycofania na 2026-09-26); gdy pojawi się następca, uruchom ponownie ewaluację eksploracji.
Inne dźwignie: opusplan używa Opusa w trybie planowania, a Sonneta przy wykonaniu; fallbackModel w ustawieniach (albo --fallback-model) przyjmuje uporządkowaną listę modeli zapasowych, próbowanych po kolei, gdy model główny jest przeciążony lub niedostępny; administratorzy ograniczają wybór przez availableModels, a od v2.1.283 (kanał latest) także deniedModels. Uwaga: /model zapisuje wybór jako domyślny dla nowych sesji; w oknie wyboru modelu naciśnij s, żeby przełączyć model tylko w bieżącej sesji.
Domyślną trasę i trasę do /review zapisz w repozytorium, w pliku .codex/config.toml, objętym tą samą regułą CODEOWNERS co tabela routingu. Codex wczytuje ten plik tylko wtedy, gdy programista oznaczył projekt jako zaufany; w niezaufanym katalogu bez ostrzeżenia wraca do prywatnego ~/.codex/config.toml każdego programisty (oba zachowania sprawdzone w Codex CLI 0.157.1).
# .codex/config.toml — committed; default route and the /review routemodel = "gpt-6-astra"model_reasoning_effort = "medium"review_model = "gpt-6-sol"plan_mode_reasoning_effort = "high"Trasę eksploracji wybieraj flagami, nie profilem. --profile nakłada plik $CODEX_HOME/<nazwa>.config.toml, który leży poza repozytorium, a w 0.157.1 model z konfiguracji projektu i tak ma nad nim pierwszeństwo; flagi wygrywają z jednym i drugim:
codex -m gpt-6-luna -c model_reasoning_effort="medium"/model w TUI przełącza model i poziom rozumowania i zapisuje wybór w konfiguracji (sprawdzone w Codex CLI 0.157.1), więc po jego użyciu sprawdź ponownie /status. /status pokazuje konfigurację, którą sesja faktycznie wczytała; sprawdzaj go w każdym nowym klonie repozytorium, żeby potwierdzić, że wczytała się konfiguracja projektu, bo niezaufany projekt bez ostrzeżenia pomija .codex/config.toml.
Zapisz w tabeli routingu model używany w każdym workflow i wybierz go w selektorze modeli albo przekaż jako opcję model, gdy wywołujesz agenta Cursora z @cursor/sdk. Jeśli twoje konto Cursora oferuje automatyczny wybór modelu, traktuj go jako nieodtwarzalny i do CI oraz przebiegów podlegających audytowi przypinaj oceniony model (opcji modeli w Cursorze nie dało się zweryfikować 2026-09-26).
Prompty do skopiowania przy routingu modeli
Dział zatytułowany „Prompty do skopiowania przy routingu modeli”Skąd wiesz, że trasa jest dobra, bez czytania każdego diffa?
Dział zatytułowany „Skąd wiesz, że trasa jest dobra, bez czytania każdego diffa?”Trasę oceniasz po dowodach, a nie po lekturze kodu, który wyprodukowała.
- O zaliczeniu decydują skrypty oceniające. Każde zadanie ewaluacyjne ma
check.shz testami ukrytymi przed agentem, type checkerem, linterem i kontrolą zakresu. Trasa, która ich nie przechodzi, nie trafia do tabeli, niezależnie od kosztu. - Produkcja potwierdza ewaluację. Po zmianie trasy przez dwa tygodnie obserwuj odsetek akceptowanych pull requestów agenta i odsetek poprawek dla tej klasy, według definicji z metryk cyklu życia.
- Każda zmiana automatycznie uruchamia ewaluacje ponownie. Zmiana modelu lub poziomu rozumowania w tabeli routingu uruchamia ciągłe ewaluacje, a premiera nowego modelu u dostawcy uruchamia plan oceny nowego modelu.
- Pull request zapisuje trasę. Pakiet dowodów agenta podaje model i poziom rozumowania, które wytworzyły zmianę, więc regresję da się powiązać z trasą.
- Zatwierdza jedna osoba. Tech lead jest właścicielem
docs/ai/model-routing.mdievals/przezCODEOWNERSi tylko on scala zmianę trasy. Programista, który ją proponuje, dołącza arkusz wyników.
Co psuje się w routingu modeli i jak to naprawić
Dział zatytułowany „Co psuje się w routingu modeli i jak to naprawić”| Objaw | Przyczyna | Naprawa |
|---|---|---|
| Przypięty model znika albo zaczyna zawodzić | Dostawca go wycofał lub przemianował. Na przykład Claude Haiku 4.5 ma zobowiązanie, że nie zostanie wycofany przed 2026-10-15, bez ogłoszenia wycofania na 2026-09-26. | Wskaż w wierszu następcę nazwanego przez dostawcę, uruchom ponownie zestaw ewaluacyjny tej klasy i opatrz zmianę datą. Nigdy nie zgaduj następcy z materiałów marketingowych. |
| Dwie osoby dostają różne wyniki z tego samego polecenia | Różne kanały wydań, dostawcy albo zapisany wybór /model w którymkolwiek z narzędzi | Porównaj wynik /status w obu narzędziach. Przypnij model w ustawieniach projektu (.claude/settings.json albo .codex/config.toml w zaufanym projekcie) i zapisz wersję CLI w arkuszu. |
| Tania trasa wygląda dobrze, ale kosztuje więcej | Nie liczysz ponowień i ręcznych poprawek | Przelicz koszt na zaakceptowane zadanie z ponowieniami i czasem poprawek. Promuj trasę o niższej sumie. |
| Żądanie w Claude Code w trakcie zadania zmienia model | Klasyfikator bezpieczeństwa przeniósł oznaczone żądanie z obszaru cyberbezpieczeństwa lub biologii na model zapasowy albo przy awarii zadziałał fallbackModel | Przeczytaj komunikat w transkrypcie. Jeśli klasa często to wywołuje, świadomie przypisz ją do modelu zapasowego i oceń ją na nim. |
| Nie da się odtworzyć modelu użytego w przebiegu | Model nie był przypięty, więc wybrało go narzędzie lub ustawienie domyślne konta | Zapisuj identyfikator modelu w arkuszu. Do CI i przebiegów podlegających audytowi przypnij oceniony model. |
| Fallback przekracza granicę danych | Dostawca zapasowy nie jest zatwierdzony dla tych danych | Zostaw zadanie u zatwierdzonego dostawcy albo użyj ścieżki wyłącznie ludzkiej. Dostępność nigdy nie wygrywa z polityką danych. |
| Wszyscy przesiadają się na największy model | Jedna imponująca sesja, zero ewaluacji | Przeprowadź ewaluację dla tej klasy. Jeśli flagowiec wygrywa kosztem na zaakceptowane zadanie, promuj go tym samym pull requestem co każdą inną zmianę. |
Sprawdź swoją politykę routingu
Dział zatytułowany „Sprawdź swoją politykę routingu”- Każda ważna klasa zadań ma próg jakości, bieżącą trasę i fallback.
- Nazwy modeli występują w jednej datowanej tabeli routingu i w konfiguracji narzędzi, a nie w promptach.
- Każda trasa linkuje do arkusza wyników z tej samej wersji harnessu.
- Poziom rozumowania dostrojono na modelu domyślnym, zanim wypróbowano inny model.
- Przynajmniej jeden fallback przeszedł ten sam zestaw ewaluacyjny.
- Koszt na zaakceptowane zadanie obejmuje ponowienia i ręczne poprawki.
- Uprawnienia, sandbox i granice danych są takie same dla każdego kandydata.
- Tech lead jest właścicielem tabeli przez
CODEOWNERSi przegląda ją co najmniej raz na kwartał.
Co dalej z routingiem modeli
Dział zatytułowany „Co dalej z routingiem modeli”Przed tą stroną wybierz główny harness do inżynierii z AI (Q1) i dobierz plan do zmierzonego obciążenia (Q2) oraz poznaj ekosystem skilli, serwerów MCP i pluginów. Potem przenieś trasy do cyklu wytwarzania AI-native i porównaj harnessy w mapie narzędzi. Następny krok na ścieżce programisty: frameworki agentowe.
Oficjalne źródła: Claude Code, konfiguracja modeli i subagenci; Codex, schemat konfiguracji; pakiet @cursor/sdk.