Maskinöversatt från engelska — källa: model-and-vendor-agnosticism.md.
Implementeringsstatus: Designanteckning — implementerar visionsåtagande (b): "Ingen leverantörslojalitet. Endast prestanda, kostnad, tillförlitlighet och hävstång räknas."
Byggt idag: inget på adapter-sidan. Agenter anropar
claude-CLI:t direkt (be-agent-service/agents/<name>.sh) eller hårdkodar Anthropic-SDK-användning. Kostnadsloggningens form finns på.compound-state/agent-service.dbmen är ännu inte nyckeln perrole.Mål-tillägg:
callModel(role, …)-adaptern som beskrivs nedan som en modul underbe-agent-service, routningskonfigurationenrole → providerSlug, och migrering av befintligaclaude-shell-anrop till adaptern (billigast/högsta volym först).
Om vi låser oss till en leverantör förlorar vi rätten att rotera i samma stund som ett bättre/billigare alternativ levereras. Frontier-modell-ledarskap har bytt händer flera gånger på de senaste 18 månaderna; att satsa på status quo är fel form av satsning.
Regeln
Ingen agent-prompt, färdighet, regel eller hook får hårdkoda en enda leverantör.
Varje modellanrop går genom en adapter som tar en role (architect / test-writer / editor / verifier / reviewer) och dispatchar till den modell som routningskonfigurationen för tillfället mappar till. Att byta leverantör är då en konfigurationsändring, inte en kodändring.
Routnings-matris (nuvarande standard — uppdateras kvartalsvis)
| Roll | Nuvarande standard | Varför denna plats |
|---|---|---|
| Architect | Anthropic Opus 4.x | Starkaste spec-/planeringskvaliteten vid acceptabel latens för vår problemstorlek. |
| Test-writer | Anthropic Sonnet 4.x | Mekaniskt från en bra spec; pålitlig struktur på testfiler. |
| Editor | Anthropic Sonnet 4.x | Kostnadsdrivare; billig-och-bra är viktigare än bäst-och-dyrt. |
| Verifier | Anthropic Sonnet 4.x | Behöver tillförlitlighet över djup; billigt anrop dominerat av verktygskörningstid. |
| Granskningsloop | Anthropic Sonnet 4.x (eller lokalt) | Tillståndslös per körning; skulle kunna routas till Ollama för första triage för att spara tokens. |
| Billig routning | Ollama (phi eller liknande) | Triage / klassificera / konvertera. Gratis, lokal, snabb. |
Uppdateringskadens: kvartalsöversikt. CMO/CSO- och CPO/CTO-ledningsagenterna äger nästa uppdatering. Inputs till översikten:
- Publika benchmarkar: SWE-bench Verified, polyglot, agentiska sviter — nuvarande pass@1-tal per modell.
- Intern kostnad-per-mergad-PR per roll under föregående kvartal (loggat i
.compound-state/agent-service.db). - Tillförlitlighetsdata: andel misslyckade verktygsanrop, timeout-andel, vägransandel per modell.
- Nya aktörer: allt som inte fanns i den föregående matrisen (nya OSS-modeller, nya leverantörer).
Adapter-form
// Konceptuellt — den faktiska implementeringen bor i be-agent-service.
type ModelRole =
| "architect"
| "test-writer"
| "editor"
| "verifier"
| "reviewer"
| "cheap";
interface ModelCall {
role: ModelRole;
systemPrompt: string;
messages: Array<{ role: "user" | "assistant"; content: string }>;
tools?: ToolSpec[];
budgetTokens?: number;
budgetUsd?: number;
}
interface ModelResponse {
text: string;
toolCalls?: ToolCall[];
usage: {
promptTokens: number;
completionTokens: number;
usd: number;
latencyMs: number;
};
modelUsed: string; // för loggning — den faktiska modell som hanterade anropet
}
async function callModel(call: ModelCall): Promise<ModelResponse>;
Routningskonfigurationen är en enda JSON/YAML-karta från role → providerSlug. Leverantörsimplementeringar sitter bakom samma gränssnitt (Anthropic SDK, OpenAI SDK, Google AI SDK, Ollama HTTP, vLLM, osv.).
Vad detta utesluter
- Färdigheter / prompts som säger "Använd Claude Sonnet 4.6 för X." → Byt mot "Använd editor-rollen."
- Hooks som hårdkodar en Anthropic-API-ändpunkt. → Routa via adaptern.
- Kostnads-dashboards som är nycklade enbart på
claude-*-modellnamn. → Aggregera perrole, bryt sedan ned permodelUsed. - Verktygsdefinitioner som beror på Anthropic-specifika verktygsanvändningsfunktioner. → Använd den minsta gemensamma nämnarens verktygsform; opt-in till leverantörstillägg endast inuti adaptern, läcker aldrig ut.
Vad detta tillåter
- A/B-testning: routa 10 % av editor-anropen till en annan modell under en vecka, jämför pass-andel + kostnad.
- Auto-fallback: om primär leverantör returnerar 5xx, försöker adaptern den sekundära routen.
- Kostnadstak: per-anrop
budgetUsd; adaptern avvisar anropet innan det skickas om den löpande summan för denna PR skulle överskrida taket (kopplar in i scale-or-kill.md och throughput-and-business-signals.md). - Leverantörsspecifika optimeringar bakom feature-flags inuti adaptern (prompt caching, context caching, batch-APIer) — osynliga för anropare.
Migrationsväg från idag
Idag anropar många agenter claude-CLI:t direkt (be-agent-service/agents/<name>.sh). Migrationen är inkrementell:
- Introducera adaptern som en ny modul.
- Migrera den billigaste, högvolyms-rollen först (sannolikt
cheapvia Ollama). Hög volym = största kostnadsvinsten vid rotation. - Migrera Editor härnäst.
- Migrera Architect sist, eftersom spec-kvaliteten är mest känslig för den underliggande modellen.
- Behåll
claude-CLI-shells som en tillfällig fallback tills varje roll är adapter-routad; ta sedan bort.
Korsreferenser
- Vision och mandat — åtagande (b).
- Agentroller och modellroutning — rolldefinitionerna detta routar mot.
- Genomströmning och affärssignaler — hur kostnadsdata flödar in i modellroutningsbeslut.
- Optimerings-matematiker — agenten som konsumerar routnings-telemetri för att föreslå rotationer.