Agentiskt arbetsflöde

Modell- och leverantörsoberoende

Modeller ändras varje vecka; arkitekturen gör det inte. Därför routar CAIRE via adaptrar istället för leverantörers SDK:er.

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.db men är ännu inte nyckeln per role.

Mål-tillägg: callModel(role, …)-adaptern som beskrivs nedan som en modul under be-agent-service, routningskonfigurationen role → providerSlug, och migrering av befintliga claude-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:

  1. Publika benchmarkar: SWE-bench Verified, polyglot, agentiska sviter — nuvarande pass@1-tal per modell.
  2. Intern kostnad-per-mergad-PR per roll under föregående kvartal (loggat i .compound-state/agent-service.db).
  3. Tillförlitlighetsdata: andel misslyckade verktygsanrop, timeout-andel, vägransandel per modell.
  4. 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

Vad detta tillåter

Migrationsväg från idag

Idag anropar många agenter claude-CLI:t direkt (be-agent-service/agents/<name>.sh). Migrationen är inkrementell:

  1. Introducera adaptern som en ny modul.
  2. Migrera den billigaste, högvolyms-rollen först (sannolikt cheap via Ollama). Hög volym = största kostnadsvinsten vid rotation.
  3. Migrera Editor härnäst.
  4. Migrera Architect sist, eftersom spec-kvaliteten är mest känslig för den underliggande modellen.
  5. Behåll claude-CLI-shells som en tillfällig fallback tills varje roll är adapter-routad; ta sedan bort.

Korsreferenser