disclaw/tasks/DIS-153.md
Nick Tabeling f4677c8a10
Some checks failed
CI / build-and-test (ubuntu-latest) (pull_request) Has been cancelled
CI / build-and-test (windows-latest) (pull_request) Has been cancelled
CI / lint (pull_request) Has been cancelled
update task
2026-04-13 09:47:16 +02:00

2.3 KiB

id status phase priority labels branch assignee started pr merged
DIS-153 in-progress 1.5 p2
phase:1.5
type:feat
priority:p2
refinement/model-selection developer-agent 2026-04-13 null null

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 StringSelectMenuBuilder mit den 3 Modellen als Optionen
  • Nach Auswahl: model in agent.yaml speichern
  • Kein Freitext-Feld — nur Auswahl aus der Allowlist

src/agent/runner.ts

  • agent.yaml lesen und model-Feld auslesen
  • --model <id> zu den Claude-CLI-Args hinzufügen
  • Fallback: wenn kein Model in agent.yamlclaude-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.yaml hat model-Feld (Zod-validiert, Allowlist)
  • /new-agent zeigt 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 test grün

Dateien (erwartet)

  • src/agent/schema.ts
  • src/agent/identity.ts
  • src/commands/new-agent.ts
  • src/agent/runner.ts
  • src/config/models.ts (Allowlist)
  • tests/unit/runner-model.test.ts

Abhängigkeiten

Keine harten. Kann parallel zu DIS-151 laufen.