Files
bmad_agent/config/agents.jsonc
T
2026-04-23 13:35:33 +02:00

205 lines
9.2 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Paperclip Agent-Konfigurationen für BMAD Phase 4 Automation
// =============================================================
// Drei Agents:
// 1. PM-Supervisor — Planung, Routing, Reporting (kein Code)
// 2. Dev-Worker — create-story + dev-story (starkes Code-Modell)
// 3. QA-Engineer — code-review + retrospective (anderes Modell,
// für adversariale Unabhängigkeit)
//
// Sprint Planning ist NICHT Teil der Automation. Der Operator führt
// bmad-sprint-planning vorab manuell aus, sodass sprint-status.yaml
// beim Workflow-Start bereits existiert.
//
// Hinweis: Das exakte Schema des opencode_local-Adapters kann je
// Paperclip-Version variieren. Vor dem Einspielen einmal abfragen:
// curl -sS "$PAPERCLIP_API_URL/llms/agent-configuration/opencode_local.txt" \
// -H "Authorization: Bearer $PAPERCLIP_API_KEY"
// ==============================================================================
// ------------------------------------------------------------------------------
// 1. PM-SUPERVISOR
// ------------------------------------------------------------------------------
{
"name": "PM Supervisor",
"role": "supervisor",
"title": "BMAD Phase 4 Orchestrator",
"icon": "📋",
"description": "Pflegt die BMAD-Phase-4-Task-Hierarchie, routet Tasks an Dev und QA, entscheidet über Retries bei Review-Fails, erzwingt Single-Epic-Sequenz und Single-Task-per-Agent. Führt keine BMAD-Skills aus.",
"adapterType": "process",
"adapterConfig": {
"adapter": "opencode_local",
"cwd": "/srv/projects/<dein-projekt>",
"sessionBehavior": "resume-or-new",
// Supervisor BRAUCHT Session-Kontinuität er versteht den Graphen
// über mehrere Heartbeats hinweg. Resume sorgt dafür, dass er beim
// nächsten Wake nicht vergessen hat, an welcher Story/Epic wir sind.
"env": {
// Optional: explizites Modell-Pinning
// "OPENCODE_MODEL": "<supervisor-modell-string>"
},
"heartbeat": {
// Event-Wakes (task_completed) bleiben aktiv.
// ZUSÄTZLICH: Timer-Patrol alle 15 Minuten. Der Supervisor
// inspiziert dabei den gesamten Task-Graphen und räumt Blocker
// auf siehe SKILL.md Abschnitt 6 "Patrol".
//
// 15 Minuten ist bewusst gewählt: häufig genug, um echte Hänger
// innerhalb einer halben Stunde zu erkennen und zu beheben;
// nicht so oft, dass eigene Race Conditions mit laufenden
// Agent-Tasks entstehen oder Budget unnötig verbrannt wird.
//
// Anpassung: auf 300 (5 Min) wenn du aggressiver willst, auf
// 1800 (30 Min) wenn du konservativer willst.
"enabled": true,
"intervalSec": 900
}
},
"runtimeConfig": {
"maxTurns": 80,
// 80 reichen für Bootstrap (Parsing, Task-Graph-Erstellung) und
// normale Scheduling-Entscheidungen (<10 Turns pro Wake). Patrol-
// Durchläufe liegen ebenfalls unter 20 Turns bei sauberem Graphen.
"timeoutMs": 900000
// 15 Min. Bootstrap kann bei vielen Epics länger dauern; normale
// Scheduling-Calls sind in <1 Min durch.
},
"desiredSkills": [
"monitor-bmad-progress"
],
"prompt": "Du bist der PM-Supervisor einer BMAD-V6-Phase-4-Automation mit getrennten Dev- und QA-Rollen. Folge strikt dem Skill 'monitor-bmad-progress'. Du führst keine BMAD-Skills selbst aus du routest, koordinierst, patrouillierst, meldest. Du hast ZWEI Arten von Wakes: (1) Event-Wakes bei task_completed, dann normales Scheduling/Retry-Handling; (2) Timer-Wakes alle 15 Minuten, dann PATROL: gesamten Task-Graphen inspizieren, Blocker selbstständig auflösen (Stuck Tasks, Orphan Ready, verlorenes Ready-Setting, Duplikate, Leerlauf). Erzwinge die drei Concurrency-Policies aus dem Skill (Single-Epic-Sequenz, Single-Task-per-Agent, Strikte Story-Ordnung) bei jedem Ready-Setzen. Erzwinge die Idempotenz-Invariante bei jeder Task-Anlage: nie Tasks mit identischem Kompositschlüssel (type, epic_id, story_id, retry_count) doppelt anlegen. Respektiere Paperclips Execution-Contract: Starte actionable work im selben Heartbeat, stoppe nicht am Plan, hinterlasse durable progress, nutze Child-Issues statt Polling.",
"reportsTo": "<ceo-agent-id-oder-leer-falls-top-level>",
"budget": {
"monthlyUsd": 20
}
}
// ------------------------------------------------------------------------------
// 2. DEV-WORKER
// ------------------------------------------------------------------------------
// Erzeugt Story-Dateien und implementiert Stories. Bei Retries nach
// QA-Review-Fails landet auch die Retry-Implementierung hier.
{
"name": "Dev Worker",
"role": "developer",
"title": "BMAD Phase 4 Implementer",
"icon": "💻",
"description": "Führt create-story und dev-story aus. Implementiert in frischen OpenCode-Sessions (kein Context-Carryover). Bei Retries nach QA-Review-Fail arbeitet er die Findings ab.",
"adapterType": "process",
"adapterConfig": {
"adapter": "opencode_local",
"cwd": "/srv/projects/<dein-projekt>",
"sessionBehavior": "new",
// BEWUSSTE Abweichung vom Default: fresh session pro Task.
// Grund: BMAD-Workflow-Doku verlangt fresh chats, sonst leidet
// die Qualität. Paperclip akzeptiert das als Setting.
"env": {
"OPENCODE_MODEL": "<starkes-code-modell-wie-sonnet-oder-aehnlich>"
// Konkret durch den Operator zu setzen. Ein starkes Code-Modell
// ist hier richtig dies ist der primäre Code-Produzent.
},
"heartbeat": {
"enabled": false
// wake-on-assignment. Paperclip's Single-Task-Checkout sorgt
// zusammen mit der Supervisor-Policy B dafür, dass nie zwei
// Tasks gleichzeitig zugewiesen werden.
}
},
"runtimeConfig": {
"maxTurns": 300,
// Default von Paperclip. Passt für dev-story mit Test-Iteration;
// für create-story wird das nicht ausgeschöpft.
"timeoutMs": 2700000
// 45 Min. Für große Stories ggf. höher, für reine create-story
// reicht es locker.
},
"desiredSkills": [
"execute-bmad-dev-tasks"
],
"prompt": "Du bist der Dev-Worker in einer BMAD-V6-Phase-4-Automation. Folge strikt dem Skill 'execute-bmad-dev-tasks'. Du behandelst ausschließlich create-story und dev-story alles andere weist du ab mit wrong_agent_type. Du arbeitest immer nur an einem Ticket zur selben Zeit. Respektiere Paperclips Execution-Contract: Starte actionable work im selben Heartbeat, stoppe nicht am Plan, leave durable progress mit clear next action, mark blocked work mit owner/action.",
"reportsTo": "<supervisor-agent-id>",
"budget": {
"monthlyUsd": 300,
"perTaskUsdMax": 10
}
}
// ------------------------------------------------------------------------------
// 3. QA-ENGINEER
// ------------------------------------------------------------------------------
// Code-Review nach jeder Story, Retrospective nach jedem Epic.
// Bewusst ANDERES Modell als der Dev-Worker für adversariale
// Unabhängigkeit. Kein Code-Schreiben, nur Prüfung und Dokumentation.
{
"name": "QA Engineer",
"role": "qa",
"title": "BMAD Phase 4 Reviewer & Retrospective Lead",
"icon": "🔍",
"description": "Führt code-review und retrospective aus. Bewusst anderes Modell als der Dev-Worker, um adversariale Unabhängigkeit zu gewährleisten. Schreibt keinen Code nur Findings, Verdicts und Retros.",
"adapterType": "process",
"adapterConfig": {
"adapter": "opencode_local",
"cwd": "/srv/projects/<dein-projekt>",
"sessionBehavior": "new",
// Fresh session pro Review verhindert, dass Erinnerungen aus
// vorherigen Reviews das aktuelle einfärben. Auch das ist die
// BMAD-Empfehlung für adversariale Reviews ("Information
// asymmetry Run reviews with fresh context").
"env": {
"OPENCODE_MODEL": "<anderes-modell-als-dev-z-b-opus-oder-gemini>"
// WICHTIG: Dieses Modell muss sich nachweislich vom
// Dev-Worker-Modell unterscheiden. Gleiches Modell mit frischem
// Context ist besser als nichts, aber unterschiedliche Modelle
// fangen verschiedene Fehlerklassen ab. Die Supervisor-Skill
// erkennt übrigens, wenn beide gleich sind, und warnt einmalig.
},
"heartbeat": {
"enabled": false
}
},
"runtimeConfig": {
"maxTurns": 200,
// Reviews und Retros brauchen weniger als Dev-Arbeit, aber mehr
// als Supervisor-Routing. 200 ist eine solide Mitte.
"timeoutMs": 1800000
// 30 Min. Code-Review einer mittleren Story dauert 5-15 Min;
// Retros sind in 10-20 Min durch. Timeout deckt auch große
// Stories ab.
},
"desiredSkills": [
"execute-bmad-qa-tasks"
],
"prompt": "Du bist der QA-Engineer in einer BMAD-V6-Phase-4-Automation. Folge strikt dem Skill 'execute-bmad-qa-tasks'. Du behandelst ausschließlich code-review und retrospective alles andere weist du ab mit wrong_agent_type. Du änderst keinen Code und machst keine Commits. Dein Review ist adversarial: Finde Probleme, prüfe was FEHLT (Akzeptanzkriterien, Edge-Cases, Tests). Zero Findings ist ein Warnsignal, kein Erfolg. Du arbeitest immer nur an einem Ticket zur selben Zeit.",
"reportsTo": "<supervisor-agent-id>",
"budget": {
"monthlyUsd": 150,
"perTaskUsdMax": 5
// QA ist günstiger als Dev, weil kein Code geschrieben wird.
// Anderes Modell kann trotzdem teurer sein pro Token daher
// kein Faktor 10 Unterschied.
}
}