2.3 KiB
2.3 KiB
| id | status | phase | priority | labels | branch | assignee | started | pr | merged | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| DIS-153 | done | 1.5 | p2 |
|
refinement/model-selection | developer-agent | 2026-04-13 | #62 | 2026-04-13 |
DIS-153: Model-Auswahl pro Agent
Ziel
Beim Erstellen eines Agents kann das Claude-Modell ausgewählt werden.
/new-agent zeigt ein Discord-Select-Menü mit verfügbaren Modellen.
Der Agent verwendet ausschließlich das konfigurierte Modell.
Kontext
Verschiedene Agents haben unterschiedliche Anforderungen: ein einfacher Research-Agent kommt mit Haiku aus, ein Code-Agent braucht Sonnet oder Opus.
Scope
Verfügbare Modelle (hardcodierte Allowlist)
export const ALLOWED_MODELS = [
{ id: "claude-opus-4-6", label: "Claude Opus 4.6 (leistungsstark, langsamer)" },
{ id: "claude-sonnet-4-6", label: "Claude Sonnet 4.6 (Standard, empfohlen)" },
{ id: "claude-haiku-4-5-20251001", label: "Claude Haiku 4.5 (schnell, günstig)" },
] as const;
export type AllowedModel = typeof ALLOWED_MODELS[number]["id"];
agent.yaml Erweiterung
name: my-agent
channel_id: "123456789"
role: Developer
model: claude-sonnet-4-6 # neu, default: claude-sonnet-4-6
/new-agent-Command (src/commands/new-agent.ts)
- Discord
StringSelectMenuBuildermit den 3 Modellen als Optionen - Nach Auswahl:
modelinagent.yamlspeichern - Kein Freitext-Feld — nur Auswahl aus der Allowlist
src/agent/runner.ts
agent.yamllesen undmodel-Feld auslesen--model <id>zu den Claude-CLI-Args hinzufügen- Fallback: wenn kein Model in
agent.yaml→claude-sonnet-4-6
Zod-Schema (src/agent/schema.ts)
model: z.enum([...ALLOWED_MODELS.map(m => m.id)]).default("claude-sonnet-4-6")
Definition of Done
agent.yamlhatmodel-Feld (Zod-validiert, Allowlist)/new-agentzeigt Select-Menü (kein Freitext)- Runner übergibt
--model <id>an Claude CLI - Ungültiges Modell in
agent.yaml→ klare Fehlermeldung beim Start - Unit-Test: Runner-Args enthalten
--model npm run build && npm testgrün
Dateien (erwartet)
src/agent/schema.tssrc/agent/identity.tssrc/commands/new-agent.tssrc/agent/runner.tssrc/config/models.ts(Allowlist)tests/unit/runner-model.test.ts
Abhängigkeiten
Keine harten. Kann parallel zu DIS-151 laufen.