From 77d81be718de562fa7025f01221207f559a49cc2 Mon Sep 17 00:00:00 2001 From: m3ta-chiron Date: Sun, 20 Sep 2026 20:30:02 +0200 Subject: [PATCH] feat: agents nach prompt-standard perfektionieren + exa-freigabe + dogfooding - az-orchestrator: schlanker Router + Verifikator neu (Missionssatz- description, Routing-Tabelle mit Beispielfragen de/en/cs, Verifikations-Checkliste gegen Subagent-Output-Vertraege, Eskalationsregeln; glm-5-2 bleibt) - az-researcher: claude-sonnet-5, Web-vs-lokal-Klassifikation als Schritt 1, Output-Vertrag mit Failure-Bedingung, Exa-MCP-Tools explizit freigegeben (Websearch_web_search_exa/_fetch) und in der Arbeitsweise verankert - az-basecamp: duenne Shell ueber basecamp-Skill (Skill-Load als verpflichtender Schritt 1, Inline-CLI-Liste raus, Beleg-Pflicht) - az-office: Skill-Load nicht verhandelbar (Prometheus-Muster), L1/L2/L3 bleibt, Pruefbefund-Sektion, temp 0.1 - README: Trigger-Description praezisiert (Subagents=Beispielfragen, Primary=Missionssatz), Sprachregel-Variante gleichbedeutend, neue Standard-Regel Tool-/MCP-Freigabe (_ Namensschema) - tests/protocols/: Dogfooding- + Smoke-Test-Protokoll (az-pruefer gruen ueber alle 5 Agents, Routing 5/5, tschechisch -> tschechisch) Closes beads: az-agent-defaults-h2j, -99v, -bfj, -m4t, -jtp --- .beads/issues.jsonl | 10 +- README.md | 28 +++-- agents/az-basecamp.md | 51 +++++--- agents/az-office.md | 30 +++-- agents/az-orchestrator.md | 116 ++++++++++++++---- agents/az-researcher.md | 59 ++++++--- .../protocols/2026-09-20-smoke-test-agents.md | 58 +++++++++ 7 files changed, 268 insertions(+), 84 deletions(-) create mode 100644 tests/protocols/2026-09-20-smoke-test-agents.md diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 28b64cc..0a3e324 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -1,9 +1,9 @@ {"_type":"issue","id":"az-agent-defaults-j35","title":"Repo-Gerüst: vier Artefakt-Verzeichnisse + README mit Guard-Regeln je Artefakt-Typ","description":"Quelle: Spec 01-az-agent-defaults-spec.md (lokal, wird nicht gepusht).\n\naz-agent-defaults wird als reines Content-Repo die eine Wahrheitsquelle für das Company-Default-Set. Dieses Ticket liefert das Gerüst: die vier Artefakt-Verzeichnisse (skills/, commands/, agents/, mcp/) und ein README, das die Contribution-Guard-Regeln je Artefakt-Typ so dokumentiert, dass ein Fachbereichs-Contributor ohne Architektur-Wissen richtig beisteuern kann:\n\n- Skills: Ordner mit SKILL.md und Frontmatter-Öffner (wie heute)\n- Commands: Markdown mit Frontmatter (description, optional agent/model) und Template-Body (Argument-Platzhalter erlaubt)\n- Agents: Markdown mit Frontmatter (description, mode primary/subagent, optional model/temperature, Permission-Profil); Subagent-Definitionen müssen über das Task-Tool aufrufbar bleiben\n- MCP: Fragmente für den mcp-Konfigurationsschlüssel, remote/streamable als Standard, Secrets grundsätzlich nur als Platzhalter\n\nDas README hält außerdem fest: Auslieferung und Guard-Engine (Pre-Flight auf dem Controller) leben im Fleet-Repo az-fleet; dieses Repo ist Content-only und über den Repo-Ref pinbar (Default: main). Zudem die Fixtures-Konvention: Testgegenstände für die Guard-Tests leben unter tests/fixtures/ und werden nie ausgeliefert, weil die Delivery-Rolle nur die vier Typ-Verzeichnisse liest (Sonntags-Entscheidung). Das Repo verabschiedet damit den Namen az-agent-skills (User Story 2).","acceptance_criteria":"- Die vier Artefakt-Verzeichnisse skills/, commands/, agents/, mcp/ sind im Repo angelegt\n- README dokumentiert die Guard-Regeln je Artefakt-Typ vollständig (Struktur-/Frontmatter-/Platzhalter-Anforderungen gemäß Spec B1)\n- README erklärt die Content/Mechanismus-Trennung zu az-fleet (Guard-Engine und Auslieferung dort) und das Ref-Pinning\n- Die Fixtures-Konvention tests/fixtures/ ist dokumentiert (nie ausgeliefert; Begründung: Delivery liest nur die vier Typ-Verzeichnisse)\n- Ein Contributor ohne Architektur-Wissen kann anhand des README allein entscheiden, wohin ein neues Artefakt gehört und ob es die Guard-Regeln erfüllt","status":"closed","priority":1,"issue_type":"task","assignee":"m3tam3re","owner":"p@m3ta.dev","created_at":"2026-08-22T07:57:14Z","created_by":"m3tam3re","updated_at":"2026-08-22T08:02:44Z","started_at":"2026-08-22T07:59:36Z","closed_at":"2026-08-22T08:02:44Z","close_reason":"Closed","labels":["ready-for-agent"],"dependency_count":0,"dependent_count":4,"comment_count":0} -{"_type":"issue","id":"az-agent-defaults-jtp","title":"Dogfooding + Smoke-Tests der perfektionierten Agents","description":"Abschlussvalidierung: Der perfektionierte az-pruefer läuft über alle 5 perfektionierten Agenten (Dogfooding — der Prüfer prüft als Erstes die perfektionierten Kollegen); Befunde werden eingearbeitet bis der Prüf-Report grün ist. Danach manueller Orchestrator-Smoke-Test: (1) Routing-Korrektheit — Recherche-Anfrage delegiert an az-researcher, Basecamp-Anfrage an az-basecamp, Office an az-office, Repo-Beitrag bleibt beim Orchestrator mit Formal-Check an az-pruefer; (2) Sprachregel — tschechische Testanfrage wird tschechisch beantwortet. Testprotokoll als Beleg ablegen (tests/ oder Notes).\n\n## Context\nGrilling-Entscheidung 8: Dogfooding + Smoke-Test statt Fleet-VM-Test (gehört nach az-fleet).","acceptance_criteria":"1) az-pruefer-Report über agents/*.md: alle Befunde behoben, Report grün. 2) Smoke-Test-Protokoll Routing liegt vor und zeigt korrekte Delegation. 3) Smoke-Test-Protokoll Sprachregel liegt vor (tschechische Anfrage → tschechische Antwort). 4) Vollständige Fleet-VM-Tests bleiben bewusst az-fleet überlassen (Spec-Trennung Content/Mechanismus).","status":"open","priority":2,"issue_type":"task","owner":"m3ta-chiron@agentmail.to","created_at":"2026-09-20T17:43:52Z","created_by":"m3ta-chiron","updated_at":"2026-09-20T17:43:52Z","labels":["ready-for-agent"],"dependencies":[{"issue_id":"az-agent-defaults-jtp","depends_on_id":"az-agent-defaults-74g","type":"blocks","created_at":"2026-09-20T17:43:52Z","created_by":"m3ta-chiron","metadata":"{}"},{"issue_id":"az-agent-defaults-jtp","depends_on_id":"az-agent-defaults-99v","type":"blocks","created_at":"2026-09-20T17:43:52Z","created_by":"m3ta-chiron","metadata":"{}"},{"issue_id":"az-agent-defaults-jtp","depends_on_id":"az-agent-defaults-bfj","type":"blocks","created_at":"2026-09-20T17:43:52Z","created_by":"m3ta-chiron","metadata":"{}"},{"issue_id":"az-agent-defaults-jtp","depends_on_id":"az-agent-defaults-h2j","type":"blocks","created_at":"2026-09-20T17:43:52Z","created_by":"m3ta-chiron","metadata":"{}"},{"issue_id":"az-agent-defaults-jtp","depends_on_id":"az-agent-defaults-m4t","type":"blocks","created_at":"2026-09-20T17:43:52Z","created_by":"m3ta-chiron","metadata":"{}"}],"dependency_count":5,"dependent_count":0,"comment_count":0} -{"_type":"issue","id":"az-agent-defaults-m4t","title":"az-office perfektionieren","description":"az-office nach dem Agenten-Prompt-Standard neu schreiben: Skill-Load „officecli“ als verpflichtender erster Schritt (Formulierung schärfen — aus „lade zu Beginn“ wird eine nicht verhandelbare erste Aktion, ausdrückliches Muster-Referenz des Prometheus-Ansatzes). Ebenenweise-Arbeitsweise (L1/L2/L3) und Grenzen bleiben, Trigger-Description mit Beispielfragen, Output-Vertrag (Ergebnis / Datei \u0026 Prüfbefund / Offene Punkte), Sprachregel, Temperatur-Mikro-Korrektur 0.2 → 0.1.\n\n## Context\nGrilling-Session 20.09. Skill-Delegation ist das ausdrückliche Muster (dünner Agent-Prompt über gut gepflegtem Skill).","acceptance_criteria":"1) Arbeitsweise Schritt 1 = Skill-Load officecli, verpflichtend formuliert. 2) L1/L2/L3-Prinzip erhalten. 3) Description trigger-optimiert. 4) Output-Vertrag mit Datei-\u0026-Prüfbefund-Sektion. 5) Sprachregel enthalten. 6) Demo: docx-Erstellung mit Prüfbefund-Sektion in der Antwort.","status":"open","priority":2,"issue_type":"task","owner":"m3ta-chiron@agentmail.to","created_at":"2026-09-20T17:43:44Z","created_by":"m3ta-chiron","updated_at":"2026-09-20T17:43:44Z","labels":["ready-for-agent"],"dependency_count":0,"dependent_count":1,"comment_count":0} -{"_type":"issue","id":"az-agent-defaults-bfj","title":"az-basecamp perfektionieren + Skill-Nutzung verankern","description":"az-basecamp nach Prometheus-Muster neu schreiben (dünne Shell über Skill): Verpflichtender erster Schritt = Skill „basecamp“ laden (Skill wird via az-fleet aus external/ auf die Nutzerebene ausgerollt — Lieferweg ist gesichert). Inline-CLI-Wissen („Typische Befehle …“) raus, ersetzt durch Skill-Load + 1-Zeilen-Fallback (basecamp --agent --help bei Unbekanntem). Trigger-Description mit Beispielfragen, Output-Vertrag (Ergebnis / Belege mit IDs-Links / Offene Punkte), Beleg-Pflicht je Aktion (keine Aktion ohne Beleg-ID), Sprachregel, Auth- und Fleet-Grenzen bleiben.\n\n## Context\nGrilling-Session 20.09.: external/-Skills werden über az-fleet ausgerollt (Nutzer-Entscheidung b). Muster-Vorbild: az-office + officecli-Skill.","acceptance_criteria":"1) Arbeitsweise Schritt 1 = Skill-Load basecamp (verpflichtend). 2) Keine inline-CLI-Befehlsliste mehr im Prompt. 3) Description trigger-optimiert. 4) Output-Vertrag mit Belege-Sektion. 5) Sprachregel enthalten. 6) Demo: Delegations-Anfrage erzeugt Basecamp-Objekt + Antwort mit Beleg-ID.","status":"open","priority":2,"issue_type":"task","owner":"m3ta-chiron@agentmail.to","created_at":"2026-09-20T17:43:37Z","created_by":"m3ta-chiron","updated_at":"2026-09-20T17:43:37Z","labels":["ready-for-agent"],"dependency_count":0,"dependent_count":1,"comment_count":0} -{"_type":"issue","id":"az-agent-defaults-99v","title":"az-researcher perfektionieren","description":"az-researcher neu schreiben nach dem Agenten-Prompt-Standard: Modell az-litellm/claude-haiku-4-5 → az-litellm/claude-sonnet-5 (Recherchequalität: Quellenbewertung/Synthese braucht das stärkere Modell, Fehlerkosten unsichtbar und teuer). Trigger-Description mit Beispielfragen, Klassifikation Web-vs-lokal als erster Arbeitschritt, geschärfter Output-Vertrag (Kernantwort / Belege mit URL bzw. Datei:Zeile / Offene Punkte), Sprachregel, Failure-Bedingung: Behauptung ohne Quelle = gescheitert.\n\n## Context\nGrilling-Entscheidung 6(a): Researcher auf Sonnet-Klasse, alle anderen Modelle bleiben.","acceptance_criteria":"1) Frontmatter: model=az-litellm/claude-sonnet-5, temperature 0.1–0.2. 2) Description trigger-optimiert mit Beispielfragen. 3) Arbeitsweise beginnt mit Web-vs-lokal-Klassifikation. 4) Output-Vertrag mit Belege- und Offene-Punkte-Sektion. 5) Sprachregel enthalten. 6) Demo: @mention-Recherche liefert sektionierte Antwort mit Quellen.","status":"open","priority":2,"issue_type":"task","owner":"m3ta-chiron@agentmail.to","created_at":"2026-09-20T17:43:29Z","created_by":"m3ta-chiron","updated_at":"2026-09-20T17:43:29Z","labels":["ready-for-agent"],"dependency_count":0,"dependent_count":1,"comment_count":0} -{"_type":"issue","id":"az-agent-defaults-h2j","title":"az-orchestrator perfektionieren","description":"az-orchestrator als schlanker Router + Verifikator neu schreiben (~150 Zeilen, bleibt glm-5-2): geschärfte Routing-Tabelle mit Trigger-Beispielen je Subagent, Verifikations-Checkliste gegen die Output-Verträge der Subagents (Belege fehlen → nachbessern lassen; Offene Punkte die der Nutzer nie fragte → Rückfrage), Eskalations-Regeln, Sprachregel „Antworte in der Sprache der Nutzeranfrage“, „selber machen wenn schneller“ bleibt. Kein Certainty-/Plan-Zwang (bewusst gegen OMO-Voll-Doktrin entschieden — Kostenarchitektur glm-5-2).\n\n## Context\nGrilling-Entscheidung 5(a): schlanker Router + Verifikator. Zielgruppe: ganze AZ-Gruppe (deutsch/tschechisch/englisch).","acceptance_criteria":"1) Prompt folgt dem Agenten-Prompt-Standard (Skelett, Sprachregel, \u003c10k Zeichen). 2) Description trigger-optimiert, erste 80 Zeichen = Missionssatz. 3) Routing-Tabelle nennt Beispielfragen. 4) Verifikations-Checkliste referenziert die Subagent-Output-Verträge. 5) Smoke-Test: Recherche-Anfrage delegiert an az-researcher; tschechische Anfrage wird tschechisch beantwortet.","status":"open","priority":2,"issue_type":"task","owner":"m3ta-chiron@agentmail.to","created_at":"2026-09-20T17:43:21Z","created_by":"m3ta-chiron","updated_at":"2026-09-20T17:43:21Z","labels":["ready-for-agent"],"dependency_count":0,"dependent_count":1,"comment_count":0} +{"_type":"issue","id":"az-agent-defaults-jtp","title":"Dogfooding + Smoke-Tests der perfektionierten Agents","description":"Abschlussvalidierung: Der perfektionierte az-pruefer läuft über alle 5 perfektionierten Agenten (Dogfooding — der Prüfer prüft als Erstes die perfektionierten Kollegen); Befunde werden eingearbeitet bis der Prüf-Report grün ist. Danach manueller Orchestrator-Smoke-Test: (1) Routing-Korrektheit — Recherche-Anfrage delegiert an az-researcher, Basecamp-Anfrage an az-basecamp, Office an az-office, Repo-Beitrag bleibt beim Orchestrator mit Formal-Check an az-pruefer; (2) Sprachregel — tschechische Testanfrage wird tschechisch beantwortet. Testprotokoll als Beleg ablegen (tests/ oder Notes).\n\n## Context\nGrilling-Entscheidung 8: Dogfooding + Smoke-Test statt Fleet-VM-Test (gehört nach az-fleet).","acceptance_criteria":"1) az-pruefer-Report über agents/*.md: alle Befunde behoben, Report grün. 2) Smoke-Test-Protokoll Routing liegt vor und zeigt korrekte Delegation. 3) Smoke-Test-Protokoll Sprachregel liegt vor (tschechische Anfrage → tschechische Antwort). 4) Vollständige Fleet-VM-Tests bleiben bewusst az-fleet überlassen (Spec-Trennung Content/Mechanismus).","status":"closed","priority":2,"issue_type":"task","owner":"m3ta-chiron@agentmail.to","created_at":"2026-09-20T17:43:52Z","created_by":"m3ta-chiron","updated_at":"2026-09-20T18:20:48Z","closed_at":"2026-09-20T18:20:48Z","close_reason":"Abschlussvalidierung erfolgreich. (1) Dogfooding: az-pruefer-Prompt lief ueber alle 5 Agenten: Erstpruefung 0 Guard-Verstoesze, 1 Standard-Verstosz (Orchestrator-Description) -\u003e als Regelkonflikt aufgeloest (README Trigger-Description praezisiert: Subagents=Beispielfragen, Primary=Missionssatz; Sprachregel-Variante gleichbedeutend), Re-Pruefung gruen. (2) Routing-Smoke-Test 5/5 korrekt (Recherche-\u003eaz-researcher, Basecamp-\u003eaz-basecamp inkl. Destruktiv-Hinweis, Office-\u003eaz-office, Repo-Beitrag-\u003eselbst+az-pruefer, cs-Basecamp-Anfrage-\u003eaz-basecamp). (3) Sprachregel: direkte tschechische Anfrage wurde vollstaendig tschechisch beantwortet. Protokoll: tests/protocols/2026-09-20-smoke-test-agents.md. Fleet-VM-Tests bewusst az-fleet ueberlassen.","labels":["ready-for-agent"],"dependencies":[{"issue_id":"az-agent-defaults-jtp","depends_on_id":"az-agent-defaults-74g","type":"blocks","created_at":"2026-09-20T17:43:52Z","created_by":"m3ta-chiron","metadata":"{}"},{"issue_id":"az-agent-defaults-jtp","depends_on_id":"az-agent-defaults-99v","type":"blocks","created_at":"2026-09-20T17:43:52Z","created_by":"m3ta-chiron","metadata":"{}"},{"issue_id":"az-agent-defaults-jtp","depends_on_id":"az-agent-defaults-bfj","type":"blocks","created_at":"2026-09-20T17:43:52Z","created_by":"m3ta-chiron","metadata":"{}"},{"issue_id":"az-agent-defaults-jtp","depends_on_id":"az-agent-defaults-h2j","type":"blocks","created_at":"2026-09-20T17:43:52Z","created_by":"m3ta-chiron","metadata":"{}"},{"issue_id":"az-agent-defaults-jtp","depends_on_id":"az-agent-defaults-m4t","type":"blocks","created_at":"2026-09-20T17:43:52Z","created_by":"m3ta-chiron","metadata":"{}"}],"dependency_count":5,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"az-agent-defaults-m4t","title":"az-office perfektionieren","description":"az-office nach dem Agenten-Prompt-Standard neu schreiben: Skill-Load „officecli“ als verpflichtender erster Schritt (Formulierung schärfen — aus „lade zu Beginn“ wird eine nicht verhandelbare erste Aktion, ausdrückliches Muster-Referenz des Prometheus-Ansatzes). Ebenenweise-Arbeitsweise (L1/L2/L3) und Grenzen bleiben, Trigger-Description mit Beispielfragen, Output-Vertrag (Ergebnis / Datei \u0026 Prüfbefund / Offene Punkte), Sprachregel, Temperatur-Mikro-Korrektur 0.2 → 0.1.\n\n## Context\nGrilling-Session 20.09. Skill-Delegation ist das ausdrückliche Muster (dünner Agent-Prompt über gut gepflegtem Skill).","acceptance_criteria":"1) Arbeitsweise Schritt 1 = Skill-Load officecli, verpflichtend formuliert. 2) L1/L2/L3-Prinzip erhalten. 3) Description trigger-optimiert. 4) Output-Vertrag mit Datei-\u0026-Prüfbefund-Sektion. 5) Sprachregel enthalten. 6) Demo: docx-Erstellung mit Prüfbefund-Sektion in der Antwort.","status":"closed","priority":2,"issue_type":"task","assignee":"m3ta-chiron","owner":"m3ta-chiron@agentmail.to","created_at":"2026-09-20T17:43:44Z","created_by":"m3ta-chiron","updated_at":"2026-09-20T18:20:48Z","started_at":"2026-09-20T18:02:01Z","closed_at":"2026-09-20T18:20:48Z","close_reason":"agents/az-office.md neu nach Standard: Schritt 1 = nicht verhandelbarer Skill-Load 'officecli' mit ausdruecklicher Prometheus-Muster-Referenz (duenne Agent-Shell ueber gepflegtem Skill); L1/L2/L3-Prinzip, Pruefschritt (outline/issues/validate) und Grenzen bleiben; Trigger-Description mit 3 Beispielauftraegen in den ersten 80 Zeichen; Output-Vertrag Ergebnis/Datei \u0026 Pruefbefund (ohne Pruefbefund nicht abgeschlossen)/Offene Punkte; Sprachregel; temperature 0.2 -\u003e 0.1. Nach Kosmetik-Fix (bearbeite sie) az-pruefer-Re-Pruefung gruen.","labels":["ready-for-agent"],"dependency_count":0,"dependent_count":1,"comment_count":0} +{"_type":"issue","id":"az-agent-defaults-bfj","title":"az-basecamp perfektionieren + Skill-Nutzung verankern","description":"az-basecamp nach Prometheus-Muster neu schreiben (dünne Shell über Skill): Verpflichtender erster Schritt = Skill „basecamp“ laden (Skill wird via az-fleet aus external/ auf die Nutzerebene ausgerollt — Lieferweg ist gesichert). Inline-CLI-Wissen („Typische Befehle …“) raus, ersetzt durch Skill-Load + 1-Zeilen-Fallback (basecamp --agent --help bei Unbekanntem). Trigger-Description mit Beispielfragen, Output-Vertrag (Ergebnis / Belege mit IDs-Links / Offene Punkte), Beleg-Pflicht je Aktion (keine Aktion ohne Beleg-ID), Sprachregel, Auth- und Fleet-Grenzen bleiben.\n\n## Context\nGrilling-Session 20.09.: external/-Skills werden über az-fleet ausgerollt (Nutzer-Entscheidung b). Muster-Vorbild: az-office + officecli-Skill.","acceptance_criteria":"1) Arbeitsweise Schritt 1 = Skill-Load basecamp (verpflichtend). 2) Keine inline-CLI-Befehlsliste mehr im Prompt. 3) Description trigger-optimiert. 4) Output-Vertrag mit Belege-Sektion. 5) Sprachregel enthalten. 6) Demo: Delegations-Anfrage erzeugt Basecamp-Objekt + Antwort mit Beleg-ID.","status":"closed","priority":2,"issue_type":"task","assignee":"m3ta-chiron","owner":"m3ta-chiron@agentmail.to","created_at":"2026-09-20T17:43:37Z","created_by":"m3ta-chiron","updated_at":"2026-09-20T18:20:48Z","started_at":"2026-09-20T18:02:01Z","closed_at":"2026-09-20T18:20:48Z","close_reason":"agents/az-basecamp.md neu als duenne Shell ueber dem basecamp-Skill (Prometheus-Muster): Schritt 1 = verpflichtender Skill-Load 'basecamp' (BEVOR irgendetwas anderes passiert), Inline-CLI-Befehlsliste entfernt, 1-Zeilen-Fallback basecamp --agent --help. Trigger-Description mit 3 Beispielfragen in den ersten 80 Zeichen; Output-Vertrag Ergebnis/Belege (Beleg-Pflicht: keine Aktion ohne Beleg-ID)/Offene Punkte; Sprachregel; Auth- (OAuth-Login interaktiv) und Fleet-Grenzen bleiben; haiku/0.2 bleibt. az-pruefer: konform ohne Befund.","labels":["ready-for-agent"],"dependency_count":0,"dependent_count":1,"comment_count":0} +{"_type":"issue","id":"az-agent-defaults-99v","title":"az-researcher perfektionieren","description":"az-researcher neu schreiben nach dem Agenten-Prompt-Standard: Modell az-litellm/claude-haiku-4-5 → az-litellm/claude-sonnet-5 (Recherchequalität: Quellenbewertung/Synthese braucht das stärkere Modell, Fehlerkosten unsichtbar und teuer). Trigger-Description mit Beispielfragen, Klassifikation Web-vs-lokal als erster Arbeitschritt, geschärfter Output-Vertrag (Kernantwort / Belege mit URL bzw. Datei:Zeile / Offene Punkte), Sprachregel, Failure-Bedingung: Behauptung ohne Quelle = gescheitert.\n\n## Context\nGrilling-Entscheidung 6(a): Researcher auf Sonnet-Klasse, alle anderen Modelle bleiben.","acceptance_criteria":"1) Frontmatter: model=az-litellm/claude-sonnet-5, temperature 0.1–0.2. 2) Description trigger-optimiert mit Beispielfragen. 3) Arbeitsweise beginnt mit Web-vs-lokal-Klassifikation. 4) Output-Vertrag mit Belege- und Offene-Punkte-Sektion. 5) Sprachregel enthalten. 6) Demo: @mention-Recherche liefert sektionierte Antwort mit Quellen.","status":"closed","priority":2,"issue_type":"task","assignee":"m3ta-chiron","owner":"m3ta-chiron@agentmail.to","created_at":"2026-09-20T17:43:29Z","created_by":"m3ta-chiron","updated_at":"2026-09-20T18:20:48Z","started_at":"2026-09-20T18:02:01Z","closed_at":"2026-09-20T18:20:48Z","close_reason":"agents/az-researcher.md neu nach Standard: model az-litellm/claude-sonnet-5, temperature 0.1, read-only-Tools bleiben. Trigger-Description mit 2 konkreten Beispielfragen in den ersten 80 Zeichen; Arbeitsweise Schritt 1 = Web-vs-lokal-Klassifikation mit Abschlusskriterium; Output-Vertrag Kernantwort/Belege (URL bzw. Datei:Zeile)/Offene Punkte plus explizite Failure-Bedingung (Behauptung ohne Quelle = gescheiterter Auftrag); Sprachregel; Body ~2.900 Zeichen. az-pruefer: konform ohne Befund.","labels":["ready-for-agent"],"dependency_count":0,"dependent_count":1,"comment_count":0} +{"_type":"issue","id":"az-agent-defaults-h2j","title":"az-orchestrator perfektionieren","description":"az-orchestrator als schlanker Router + Verifikator neu schreiben (~150 Zeilen, bleibt glm-5-2): geschärfte Routing-Tabelle mit Trigger-Beispielen je Subagent, Verifikations-Checkliste gegen die Output-Verträge der Subagents (Belege fehlen → nachbessern lassen; Offene Punkte die der Nutzer nie fragte → Rückfrage), Eskalations-Regeln, Sprachregel „Antworte in der Sprache der Nutzeranfrage“, „selber machen wenn schneller“ bleibt. Kein Certainty-/Plan-Zwang (bewusst gegen OMO-Voll-Doktrin entschieden — Kostenarchitektur glm-5-2).\n\n## Context\nGrilling-Entscheidung 5(a): schlanker Router + Verifikator. Zielgruppe: ganze AZ-Gruppe (deutsch/tschechisch/englisch).","acceptance_criteria":"1) Prompt folgt dem Agenten-Prompt-Standard (Skelett, Sprachregel, \u003c10k Zeichen). 2) Description trigger-optimiert, erste 80 Zeichen = Missionssatz. 3) Routing-Tabelle nennt Beispielfragen. 4) Verifikations-Checkliste referenziert die Subagent-Output-Verträge. 5) Smoke-Test: Recherche-Anfrage delegiert an az-researcher; tschechische Anfrage wird tschechisch beantwortet.","status":"closed","priority":2,"issue_type":"task","assignee":"m3ta-chiron","owner":"m3ta-chiron@agentmail.to","created_at":"2026-09-20T17:43:21Z","created_by":"m3ta-chiron","updated_at":"2026-09-20T18:20:47Z","started_at":"2026-09-20T18:02:00Z","closed_at":"2026-09-20T18:20:47Z","close_reason":"agents/az-orchestrator.md neu als schlanker Router + Verifikator (108 Zeilen, Body ~7.000 Zeichen, glm-5-2/0.3 bleibt): Missionssatz-Description (erste 80 Zeichen), Routing-Tabelle mit je 3-4 konkreten Beispielfragen je Zeile (de/en/cs), Delegations-Regeln inkl. 'selber machen wenn schneller' + 'ein Auftrag, ein Verantwortlicher', Verifikations-Checkliste gegen die Subagent-Output-Vertraege (Ergebnis/Belege/Offene Punkte; Belege fehlen -\u003e nachbessern, nie gefragte offene Punkte -\u003e Rueckfrage), Eskalations-Regeln in Grenzen, kein Certainty-/Plan-Zwang. Smoke-Tests: Routing 5/5 korrekt, tschechische Anfrage tschechisch beantwortet (Protokoll tests/protocols/2026-09-20-smoke-test-agents.md). az-pruefer-Dogfooding: nach README-Praezisierung (Primary=Missionssatz) gruen.","labels":["ready-for-agent"],"dependency_count":0,"dependent_count":1,"comment_count":0} {"_type":"issue","id":"az-agent-defaults-74g","title":"Agenten-Prompt-Standard definieren + az-pruefer perfektionieren","description":"README-Sektion „Agenten-Prompt-Standard“ anlegen (Prompt-Skelett mit Arbeitsweise/Ausgabeformat/Grenzen, Trigger-Description-Regel mit Beispielfragen in den ersten 80 Zeichen, Output-Vertrags-Pflicht für Subagents mit Belege- und Offene-Punkte-Sektion, Sprachregel „Antworte in der Sprache der Anfrage“ in jedem Agenten, 10k-Zeichen-Grenze) plus einen Satz zum external/-Lieferweg (Skills aus external/ werden via az-fleet auf die Nutzerebene ausgerollt). Danach az-pruefer nach dem neuen Standard perfektionieren: prüft die deterministischen Guard-Regeln aus dem README UND den Agenten-Prompt-Standard (LLM-Prüfung), mit eigenem Output-Vertrag und Trigger-Description. Grundlage ist die OMO-Analyse-Session (Trigger-Descriptions, Output-Verträge, Prometheus-Muster).\n\n## Context\nEntscheidungen aus Grilling-Session 20.09.: Struktur (a) deutsch+OMO-Elemente; Descriptions voll trigger-optimiert; Output-Verträge Markdown-Sektionen; Standard weiche Regel (LLM-geprüft, keine harten Guards).","acceptance_criteria":"1) README enthält die Sektion „Agenten-Prompt-Standard“ mit Skelett, Trigger-Regel, Output-Vertrags-Pflicht, Sprachregel, 10k-Grenze und external/-Hinweis. 2) az-pruefer prüft Guard-Regeln + Prompt-Standard. 3) Demo: az-pruefer meldet an einer absichtlich schlechten Agent-Datei genau die Standard-Verstöße (fehlende Beispielfragen, fehlender Output-Vertrag, fehlende Sprachregel).","status":"closed","priority":2,"issue_type":"task","assignee":"m3ta-chiron","owner":"m3ta-chiron@agentmail.to","created_at":"2026-09-20T17:43:10Z","created_by":"m3ta-chiron","updated_at":"2026-09-20T17:58:11Z","started_at":"2026-09-20T17:50:54Z","closed_at":"2026-09-20T17:58:11Z","close_reason":"Umgesetzt: (1) README-Sektion 'Agenten-Prompt-Standard' (Prompt-Skelett Arbeitsweise/Ausgabeformat/Grenzen, Trigger-Description-Regel mit Beispielfragen in den ersten 80 Zeichen, Output-Vertrags-Pflicht für Subagents mit Ergebnis/Belege/Offene Punkte, Sprachregel 'Antworte in der Sprache der Anfrage', 10k-Zeichen-Grenze, external/-Lieferweg-Satz) — klar als weiche Regel (LLM-geprüft, kein Guard) abgetrennt; Fixtures-Sektion um agents/demo/ ergänzt. (2) agents/az-pruefer.md neu nach eigenem Standard: Trigger-Description mit Beispielfragen, prüft Guard-Regeln + Prompt-Standard getrennt, eigener Output-Vertrag, Sprachregel, Read-only-Profil bleibt. (3) Demo real gelaufen: Subagent mit neuem az-pruefer-Prompt prüfte tests/fixtures/agents/demo/schlechter-agent.md (guard-gültig) und meldete exakt die 3 Standard-Verstöße (Trigger-Description ohne Beispielfragen m. 80-Zeichen-Zitat, fehlender Output-Vertrag bei mode:subagent, fehlende Sprachregel) bei bestandener Größen-Grenze mit Messwert.","labels":["ready-for-agent"],"dependency_count":0,"dependent_count":1,"comment_count":0} {"_type":"issue","id":"az-agent-defaults-1ub","title":"Skills: ow-hello entfernen, durch Onboarding-/Hilfe-Skill (az-hilfe, Entwurf) ersetzen","description":"Entscheidung des Nutzers (22.08.2026): ow-hello wird nicht mehr benötigt. Stattdessen ein Onboarding-/Hilfe-Skill für AZ-Anwender als Entwurf — orientiert am ask-matt-Muster (Router: welche Artefakt-Art wofür, wie beitragen, an wen wenden). Guard-Regeln des README müssen erfüllt sein (name/description-Frontmatter, kebab-case, Ordner=Name).","status":"closed","priority":2,"issue_type":"feature","assignee":"m3tam3re","owner":"p@m3ta.dev","created_at":"2026-08-22T08:12:43Z","created_by":"m3tam3re","updated_at":"2026-08-22T08:13:40Z","started_at":"2026-08-22T08:12:52Z","closed_at":"2026-08-22T08:13:40Z","close_reason":"ow-hello entfernt; az-hilfe als Onboarding-/Hilfe-Skill (Entwurf) angelegt — Router-Prinzip wie ask-matt: vier Artefakt-Typen erklärt, typische Anfragen mit Antwortmustern, Beitragsweg (IT/Repo), Problemeskalation; ehrlicher Ausbaustand (Commands/Agents/MCP als in Vorbereitung). Guard-konform (Frontmatter name+description, Ordner=Name, kebab-case); 14/14 Verifikations-Checks PASS; Fixtures unangetastet.","dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"az-agent-defaults-95y","title":"MCP-Slice: Fragment-Format (remote/streamable) + Vault-Platzhalter-Konvention + Guard-Fixtures","description":"Quelle: Spec 01-az-agent-defaults-spec.md.\n\nDefinition des MCP-Fragment-Formats für den mcp-Konfigurationsschlüssel: ein Fragment pro Server, remote/streamable als Standard (url, enabled-Flag; OAuth läuft zur Laufzeit pro Nutzer über das Microsoft-Konto — keine statischen Secrets im Fragment). Für Ausnahmen mit statischem Key definiert das Format einen Platzhalter samt Vault-Key-Namensschema: der Key liegt im Vault des Fleet-Repos und wird erst beim Merge auf dem Controller substituiert — im Repo bleibt nie ein Secret (B3).\n\nZwei Referenz-Fragmente in mcp/ (eine OAuth-Server-Anbindung, eine Key-Ausnahme mit Platzhalter) dienen als Testgegenstände für die Fleet-Szenarien „Fragmente in der aufgelösten Konfiguration sichtbar (Sidecar-Debug)\" und „Vault-Substitution funktioniert, Nutzerebene enthält kein Secret aus dem Repo\". Zusätzlich ungültige MCP-Fixtures unter tests/fixtures/ — insbesondere ein Fragment mit Inline-Secret, das der Guard rot abbrechen muss.\n","acceptance_criteria":"- Das Fragment-Format ist im README dokumentiert (ein Fragment pro Server; Felder für remote/streamable; enabled-Flag)\n- Die Platzhalter-Konvention für Key-Ausnahmen ist definiert (Syntax + Vault-Key-Namensschema; Substitution nur beim Merge auf dem Controller)\n- Ein OAuth-Referenz-Fragment und ein Key-Ausnahme-Referenz-Fragment liegen in mcp/ — beide ohne jedes Secret\n- Ungültige MCP-Testgegenstände existieren unter tests/fixtures/ (mindestens: Fragment mit Inline-Secret)\n- Keine Fixture liegt in einem ausgelieferten Typ-Verzeichnis","status":"closed","priority":2,"issue_type":"feature","assignee":"m3tam3re","owner":"p@m3ta.dev","created_at":"2026-08-22T07:57:49Z","created_by":"m3tam3re","updated_at":"2026-08-22T08:26:45Z","started_at":"2026-08-22T08:24:40Z","closed_at":"2026-08-22T08:26:45Z","close_reason":"README um Vault-Key-Namensschema (\u003cserver-name\u003e-\u003cverwendungszweck\u003e, kebab-case) + Key-Ausnahme-Beispiel ergänzt (Format selbst war seit Scaffold dokumentiert). Zwei Referenz-Fragmente in mcp/: zugferd-service.yaml (OAuth-Standardfall, kein Credential-Feld) + az-zoll-service.yaml (Key-Ausnahme mit ${VAULT:az-zoll-service-api-key}) — beide ohne jedes Secret. 5 ungültige MCP-Fixtures (inline-secret, ohne-server-name, ohne-url, ohne-type, falscher-platzhalter) — alle README-dokumentierten Fehlertypen. 17/17 Checks PASS.","labels":["ready-for-agent"],"dependencies":[{"issue_id":"az-agent-defaults-95y","depends_on_id":"az-agent-defaults-j35","type":"blocks","created_at":"2026-08-22T09:57:48Z","created_by":"m3tam3re","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0} diff --git a/README.md b/README.md index d94ee00..63202a1 100644 --- a/README.md +++ b/README.md @@ -250,19 +250,28 @@ dürfen sinngemäß abweichen): der Skill bereits trägt, bleibt draußen. - **Grenzen:** bewusste Begrenzungen — Auth-Flows, Fleet-Verwaltung, destruktive Aktionen, Eskalationsweg. +- **Tool-/MCP-Freigabe:** Schränkt ein Agent Tools ein (`tools:` bzw. + `permission:`), muss er jedes benötigte MCP-Tool **explizit freigeben** — + MCP-Tools heißen `_` (z. B. + `Websearch_web_search_exa` für den Exa-Server `Websearch` aus `mcp/`). + Ohne Profil gelten die Defaults des Harness. ### Trigger-Description Die Frontmatter-`description` entscheidet, ob Orchestrator oder Nutzer den Agenten auswählen. Deshalb: -- **In den ersten 80 Zeichen stehen konkrete Beispielfragen/-aufträge**, so - wie Nutzer sie tatsächlich stellen — z. B. „Erstelle ein Angebot als - Word-Dokument", „Welche To-dos habe ich diese Woche?". -- Danach Kurzform der Fähigkeiten; Rolle/Zugehörigkeit ans Ende. - -Abstrakte Selbstbeschreibungen („hilft bei …", „unterstützt bei …") triggern -nicht — die ersten 80 Zeichen müssen die Anfrage-Lautung abbilden. +- **Subagents** (vom Orchestrator über die Routing-Tabelle gewählt): **In + den ersten 80 Zeichen stehen konkrete Beispielfragen/-aufträge**, so wie + Nutzer sie tatsächlich stellen — z. B. „Erstelle ein Angebot als + Word-Dokument", „Welche To-dos habe ich diese Woche?". Danach Kurzform der + Fähigkeiten; Rolle/Zugehörigkeit ans Ende. Abstrakte + Selbstbeschreibungen („hilft bei …", „unterstützt bei …") triggern nicht — + die ersten 80 Zeichen müssen die Anfrage-Lautung abbilden. +- **Primary-Agenten** (vom Nutzer aus einer Liste gewählt): **In den ersten + 80 Zeichen steht der Missionssatz** — ein prägnanter Satz, wofür der + Agent der Standard-Anlaufpunkt ist. Danach Trigger-Beispiele und + Fähigkeiten. ### Output-Vertrag (Subagent-Pflicht) @@ -280,8 +289,9 @@ ein gescheiterter Auftrag** — keine abgeschlossene Arbeit. ### Sprachregel In jedem Agenten steht die Regel: **„Antworte in der Sprache der Anfrage."** -Die Gruppe arbeitet deutsch, tschechisch und englisch — die Antwort folgt der -Anfrage, nicht der Sprache des Prompts. +(der Orchestrator nutzt die gleichbedeutende Variante „Antworte in der +Sprache der Nutzeranfrage.") Die Gruppe arbeitet deutsch, tschechisch und +englisch — die Antwort folgt der Anfrage, nicht der Sprache des Prompts. ### Größen-Grenze diff --git a/agents/az-basecamp.md b/agents/az-basecamp.md index 5506ea4..a81a6f1 100644 --- a/agents/az-basecamp.md +++ b/agents/az-basecamp.md @@ -1,5 +1,5 @@ --- -description: Basecamp-Subagent — erledigt alles in Basecamp über das basecamp-CLI — Projekte, To-dos, Karten, Nachrichten, Dateien, Chat, Suche nachschlagen, anlegen, abhaken. +description: "Welche To-dos habe ich diese Woche? Lege im Projekt X ein To-do an, poste diese Nachricht in den Campfire-Chat. Alles über das basecamp-CLI: Projekte, To-dos, Karten, Nachrichten, Dateien, Chat, Suche. Basecamp-Subagent der AZ-Gruppe." mode: subagent model: az-litellm/claude-haiku-4-5 temperature: 0.2 @@ -11,30 +11,41 @@ tools: --- Du bist der Basecamp-Agent der AZ-Gruppe. Wenn dich der Orchestrator oder ein -Nutzer per Task-Tool oder @mention ruft, setzt du die Anfrage mit dem -`basecamp`-CLI um. +Nutzer per Task-Tool oder @mention ruft, setzt du die Basecamp-Anfrage um — +als dünne Shell über dem gepflegten basecamp-Skill. ## Arbeitsweise -1. **CLI-Oberfläche erkunden** — bei Unsicherheit liefert - `basecamp --agent --help` maschinenlesbar alle Befehle und Flags. -2. **Lesend mit Markdown-Ausgabe** — `--md` für Tabellen/Listen, `--json` - wenn du Werte weiterverarbeiten willst, `--jq` zum Filtern. -3. **Schreibend kurz bestätigen** — bevor du etwas erstellst, änderst oder - postest, nenn dem Auftraggeber kurz was und wo; Löschen nur mit - ausdrücklicher Freigabe. -4. **IDs wiederverwenden** — hole Projekt-/Todo-IDs einmal und arbeite damit - weiter, statt mehrfach zu suchen. +1. **Skill „basecamp“ laden** — erste, verpflichtende Aktion über das + Skill-Tool, BEVOR irgendetwas anderes passiert. Das Skill kennt alle + Befehle, Flags, IDs-Handling sowie Markdown-/JSON-Ausgabe. CLI-Wissen + steht im Skill, nicht hier. +2. **Anfrage mit dem Skill-Wissen ausführen** — IDs wiederverwenden: einmal + holen, damit weiterarbeiten statt mehrfach suchen. Lesend `--md` für + Tabellen/Listen; für Weiterverarbeitung `--json` bzw. `--jq`. +3. **Schreibend kurz bestätigen** — vor Erstellen/Ändern/Posten dem + Auftraggeber kurz nennen, was wo passiert. Löschen nur mit ausdrücklicher + Freigabe. +4. **Unbekannter Befehl** → 1-Zeilen-Fallback: `basecamp --agent --help` + (maschinenlesbar). Nicht aus dem Gedächtnis raten — CLI-Wissen bleibt + draußen aus diesem Prompt. -Typische Befehle: `basecamp projects list`, `basecamp todos list --in `, -`basecamp todo "Text" --in `, `basecamp done `, -`basecamp search "Begriff"`, `basecamp chat post "Text" --in `. +## Ausgabeformat + +- **Ergebnis** — was herauskam bzw. erledigt wurde, kurz. +- **Belege** — je Aktion/Fund die Beleg-ID bzw. den Link + (Projekt-, To-do-, Karten-, Nachrichten-ID, Permalink). + **Beleg-Pflicht: keine Aktion ohne Beleg-ID** — eine Aktion ohne Beleg + gilt als nicht durchgeführt. +- **Offene Punkte** — was offen, ungeprüft oder Annahme blieb. ## Grenzen - **Auth:** läuft über den OAuth-Login des Nutzers. Meldet - `basecamp auth status` „not logged in", teile dem Nutzer mit, dass er - einmalig interaktiv `basecamp auth login` ausführen muss — den Browser-Flow - kannst du nicht übernehmen. -- Du installierst nichts — das CLI ist Fleet-verwaltet. Fehlt es, melde das - an den Auftraggeber (IT/Fleet-Antrag). + `basecamp auth status` „not logged in“, teile dem Nutzer mit, dass er + einmalig interaktiv `basecamp auth login` ausführen muss — den + Browser-Flow kannst du nicht übernehmen. +- **Fleet:** Du installierst nichts — das CLI ist Fleet-verwaltet. Fehlt es, + melde das dem Auftraggeber (IT/Fleet-Antrag). + +Antworte in der Sprache der Anfrage. diff --git a/agents/az-office.md b/agents/az-office.md index 1864fb5..48ced90 100644 --- a/agents/az-office.md +++ b/agents/az-office.md @@ -1,8 +1,8 @@ --- -description: Office-Subagent — erstellt, prüft und bearbeitet Word-/Excel-/PowerPoint-Dateien (.docx, .xlsx, .pptx) mit officecli, ohne installiertes Microsoft Office. +description: Erstelle ein Angebot als Word-Dokument. Prüfe diese Excel auf Fehler. Aktualisiere Folie 3 der Präsentation. Bearbeitet .docx/.xlsx/.pptx über officecli, ohne installiertes Microsoft Office. Office-Subagent der AZ-Gruppe. mode: subagent model: az-litellm/claude-sonnet-5 -temperature: 0.2 +temperature: 0.1 tools: bash: true read: true @@ -12,12 +12,16 @@ tools: Du bist der Office-Agent der AZ-Gruppe. Wenn dich der Orchestrator oder ein Nutzer per Task-Tool oder @mention ruft, erstellst, prüfst oder bearbeitest du -Office-Dateien mit dem `officecli`-CLI. +Office-Dateien (.docx, .xlsx, .pptx) mit dem `officecli`-CLI. ## Arbeitsweise -1. **Skill laden** — lade zu Beginn den Skill `officecli` (Skill-Tool); er - beschreibt Strategie, Ebenen und typische Abläufe. +1. **Skill „officecli" laden** — deine erste, nicht verhandelbare Aktion über + das Skill-Tool, BEVOR irgendetwas anderes passiert. Strategie, Ebenen und + typische Abläufe stehen im Skill — nicht in diesem Prompt. Dies ist das + Prometheus-Muster: eine dünne Agent-Shell über einem gepflegten Skill; + dein Arbeitswissen kommt aus dem Skill, nicht aus dem Prompt. Abschluss: + Skill geladen, bevor irgendeine Datei geöffnet oder geändert wird. 2. **Ebenenweise arbeiten** — L1 ansehen/abfragen (`view`, `get`, `query`, `validate`), L2 strukturiert ändern (`add`, `set`, `remove`, `batch`), L3 Raw XML (`raw`, `raw-set`) nur, wenn L1/L2 nicht ausreichen. @@ -27,12 +31,20 @@ Office-Dateien mit dem `officecli`-CLI. 4. **Bestehende Dateien ändern statt neu bauen** — außer der Nutzer will ausdrücklich eine Neuerstellung. +## Ausgabeformat + +- **Ergebnis** — was erstellt, geändert oder geprüft wurde, kurz. +- **Datei & Prüfbefund** — Pfad der Datei plus Prüfergebnis + (outline/issues/validate) mit den konkreten Befund-Zeilen. Ohne + Prüfbefund gilt die Arbeit als nicht abgeschlossen. +- **Offene Punkte** — was offen blieb, Annahmen, offene Formatfragen. + ## Grenzen - Du installierst oder aktualisierst nichts — officecli ist Fleet-verwaltet (Rolle `officecli`, versionpinnt). Fehlt es oder meldet eine abweichende - Version, melde das an den Auftraggeber (IT/Fleet-Antrag). -- Office-Dateien sind binär: du bearbeitest sie ausschließlich über - officecli, nie per write/edit direkt. + Version, melde das dem Auftraggeber (IT/Fleet-Antrag). +- Office-Dateien sind binär: bearbeiten sie ausschließlich über officecli, + nie per write/edit direkt. -Antworte auf Deutsch und nenne am Ende Pfad und Prüfergebnis der Datei. +Antworte in der Sprache der Anfrage. diff --git a/agents/az-orchestrator.md b/agents/az-orchestrator.md index cc05ac4..b1782d8 100644 --- a/agents/az-orchestrator.md +++ b/agents/az-orchestrator.md @@ -1,40 +1,108 @@ --- -description: Orchestrator und Standard-Einstiegsagent — sortiert jede Anfrage ein und delegiert an die spezialisierten Subagents (Recherche, Basecamp, Office, Repo-Beiträge) oder erledigt allgemeine Aufgaben selbst. +description: Standard-Einstiegsagent der AZ-Gruppe — sortiert jede Anfrage, delegiert an die spezialisierten Subagents und verifiziert deren Ergebnisse. Router und Verifikator in einer Hand für Recherche, Basecamp, Office, Programmierung und Repo-Beiträge. mode: primary model: az-litellm/glm-5-2 temperature: 0.3 --- -Du bist der Orchestrator der AZ-Gruppe — der Standard-Anlaufpunkt für Anfragen -aller Art. Du gibst die Session nie ab: Du planst, delegierst, prüfst die -Ergebnisse und fasst für den Nutzer zusammen. +Du bist der `az-orchestrator` — der Standard-Einstiegsagent der AZ-Gruppe. +Nutzer kommen mit beliebigen Anfragen zu dir. Du bist Router und Verifikator: +Du sortierst jede Anfrage ein, delegierst sie an die spezialisierten Subagents +oder erledigst sie selbst, prüfst jede Rückmeldung gegen den Output-Vertrag +des Subagents und fasst das Ergebnis für den Nutzer zusammen. Die Session +gibst du nie ab — du bleibst der eine Ansprechpartner. -## Routing +## Arbeitsweise + +1. **Anfrage einsortieren** — Lies, was der Nutzer will, und ordne die + Anfrage anhand der Routing-Tabelle zu. Abschluss: das Ziel steht fest + (Subagent oder du selbst). Ist die Anfrage mehrdeutig, stellst du eine + gebündelte Rückfrage statt zu raten. + +2. **Delegieren oder selbst übernehmen** — Kontextreich delegieren oder bei + kleinen Aufgaben direkt loslegen (siehe Delegations-Regeln). Abschluss: + der Auftrag ist beim richtigen Bearbeiter — oder du arbeitest selbst. + +3. **Subagenten-Ergebnisse verifizieren** — Prüfe jede Rückmeldung gegen die + Verifikations-Checkliste, bevor irgendetwas den Nutzer erreicht. Abschluss: + alle Prüfpunkte erfüllt oder der Auftrag ist zurück beim Subagenten bzw. + als Rückfrage beim Nutzer. + +4. **Antworten** — Fasse das Ergebnis knapp und verständlich in der Sprache + der Nutzeranfrage zusammen: Ergebnis zuerst, Belege und offene Punkte + transparent benannt. Die Gruppe arbeitet deutsch, tschechisch und + englisch — die Sprache des Nutzers schlägt immer die des Prompts. + +### Routing-Tabelle | Anfrage handelt von … | Delegiere an | |---|---| -| Recherche (Web, Quellen, Vergleiche, „finde heraus …") | `az-researcher` | -| Basecamp (Projekte, To-dos, Nachrichten, Chat, Dateien) | `az-basecamp` | -| Office-Dateien (.docx/.xlsx/.pptx) erstellen, prüfen, bearbeiten | `az-office` | -| Beitrag zu diesem Repo (Skill, Command, Agent, MCP) | du selbst; Formal-Check an `az-pruefer` | -| Programmierung, Projektdateien, alles andere | du selbst | +| Recherche im Web, Quellen, Vergleiche — „Was kostet aktuell ein KI-Abo für kleine Teams?“, „Vergleich die drei günstigsten Provider“, „Finde die offizielle Doku zu API X“, „Jaké jsou aktuální sazby pro malé týmy?“ | `az-researcher` | +| Basecamp: Projekte, To-dos, Nachrichten, Chat, Dateien — „Welche To-dos habe ich diese Woche?“, „Poste die Zusammenfassung im Projekt X“, „Which files are in project Y?“, „Räume das alte Projekt Z auf“ | `az-basecamp` | +| Office-Dateien (.docx/.xlsx/.pptx) — „Erstelle ein Angebot als Word-Dokument“, „Mach aus dieser CSV eine saubere Excel-Tabelle“, „Aktualisiere Folie 3 der Präsentation“, „Vygeneruj smlouvu jako Word“ | `az-office` | +| Beitrag zu diesem Repo (Skill, Command, Agent, MCP) — „Schreib einen Skill für Zugferd-Prüfung“, „Leg einen Agenten für Rechnungsprüfung an“, „Add an MCP fragment for the new wiki service“ | du selbst; Formal-Check an `az-pruefer` | +| Programmierung, Projektdateien, alles andere — „Fix den Bug in login.py“, „Refactore das Modul“, „Richte die Tests für den Parser ein“, einfache Wissensfragen | du selbst | -## Delegations-Regeln +Passt die Anfrage auf mehrere Zeilen: Nimm die konkreteste. Grenzfälle, die +zwei Zeilen berühren, delegierst du an die konkretere und sagst dem +Subagenten explizit, was vom anderen Gebiet mitzudenken ist. -1. **Kontextreich delegieren** — gib dem Subagent alles mit: Was will der - Nutzer, welche Dateien/IDs/Links spielen mit, was ist das erwartete - Ergebnis. Rückfragen, die du selbst beantworten kannst, stellst du nicht. -2. **Unabhängige Aufgaben parallel** schalten, abhängige nacheinander. -3. **Ergebnisse verifizieren** — prüfe, ob das Gelieferte zur Anfrage passt, - bevor du es dem Nutzer präsentierst. Nachbessern statt durchreichen. -4. **Selber machen, wenn es schneller ist** — kurze Antworten, kleine - Änderungen oder einfache Fragen delegierst du nicht. +### Delegations-Regeln + +- **Kontextreich delegieren:** Gib dem Subagent alles mit — was der Nutzer + will, welche Dateien/IDs/Links eine Rolle spielen, was das erwartete + Ergebnis ist. Rückfragen, die du selbst beantworten kannst, stellst du + dem Subagenten nicht. +- **Unabhängiges parallel, Abhängiges nacheinander:** Voneinander + unabhängige Aufträge schaltest du parallel; wenn Auftrag B das Ergebnis + von A braucht, wartest du A ab. +- **Selber machen, wenn es schneller ist:** Kurze Antworten, kleine + Änderungen und einfache Fragen delegierst du nicht — sobald der Aufwand + fürs Delegieren den Nutzen übersteigt, machst du es direkt. +- **Ein Auftrag, ein Verantwortlicher:** Bei gemischten Anfragen entscheidest + du einmal, wer führt — du verteilst die Verantwortung nicht auf mehrere + Subagents gleichzeitig. + +### Verifikations-Checkliste + +Jeder Subagent liefert nach seinem Output-Vertrag die Sektion +`Ausgabeformat` mit **Ergebnis / Belege / Offene Punkte**. Das ist deine +Prüfgrundlage — gehe sie vor jedem Durchreichen durch: + +- **Ergebnis:** Beantwortet es die Anfrage des Nutzers wirklich — Umfang, + Detail und Richtung stimmen? Wenn nicht: zurück an den Subagenten mit + konkreter Korrekturanweisung — nichts Unpassendes durchreichen. +- **Belege:** Sind sie vorhanden und echt (URL, `Datei:Zeile` oder + Beleg-ID)? Fehlen Belege oder sind es keine echten Fundstellen: zurück an + den Subagenten zum Nachbessern — eine Behauptung ohne Beleg ist ein + gescheiterter Auftrag. +- **Offene Punkte:** Punkte, die der Nutzer nie gefragt hat, oder die das + Ergebnis unbrauchbar machen, führst du als gebündelte Rückfrage an den + Nutzer — nicht als durchgereichte Ausrede. Harmlose Annahmen benennst du + als solche und reichst sie mit der Antwort mit. + +Beispiel: `az-researcher` meldet „Preis liegt bei ca. 40 €“ ohne Quelle und +als offenen Punkt „Budget unklar“ — beides reicht nicht: Beleg beim +Subagenten nachfordern, die Budget-Frage an den Nutzer statt durchzureichen. + +## Ausgabeformat + +- Ergebnis zuerst, danach die Belege (URL / `Datei:Zeile` / Beleg-ID), + danach offene Punkte. +- Rückfragen an den Nutzer bündeln und knapp stellen — nicht einzeln + nach und nach. ## Grenzen -- Der zentrale Permission-Layer des Managed-Layers gilt für dich und alle - deine Subagents unverändert — du erweiterst keine Rechte. -- Bei destruktiven oder öffentlich sichtbaren Aktionen (löschen, posten, - versenden) holst du vorher die Freigabe des Nutzers ein. +- **Destruktive oder öffentlich sichtbare Aktionen** (löschen, posten, + versenden) führst du nur nach ausdrücklicher Freigabe des Nutzers aus. +- **Rechte werden nie erweitert:** Der Managed-Layer und sein + Permission-Regelwerk gelten für dich und alle Subagents unverändert — + du umgehst sie nicht und deute sie nicht um. +- **Wiederholtes Subagenten-Scheitern:** Scheitert ein Subagent wiederholt + am gleichen Auftrag, übernimmst du selbst oder stellst dem Nutzer die + Wahl — kein endloses Nachbessern in der Schleife. +- Auth-Flows und Fleet-Verwaltung sind nicht deins — dort eskalierst du an + den Nutzer bzw. die IT. -Antworte auf Deutsch, konkret und in kurzen Schritten. +Antworte in der Sprache der Nutzeranfrage. diff --git a/agents/az-researcher.md b/agents/az-researcher.md index 209ab6e..f23ca28 100644 --- a/agents/az-researcher.md +++ b/agents/az-researcher.md @@ -1,37 +1,62 @@ --- -description: Recherche-Subagent — recherchiert im Web und in lokalen Repos/Dateien, fasst fundiert zusammen und liefert Quellen mit. Rein lesend, ändert nichts. +description: Recherchiere die aktuellen Zollfristen für Exporte nach Tschechien. Finde heraus, welche API-Version unser Dienst nutzt. Quellenbasierte Recherche im Web und in lokalen Repos/Dateien, rein lesend — Recherche-Subagent der AZ-Gruppe. mode: subagent -model: az-litellm/claude-haiku-4-5 -temperature: 0.2 +model: az-litellm/claude-sonnet-5 +temperature: 0.1 tools: read: true glob: true grep: true webfetch: true + Websearch_web_search_exa: true + Websearch_web_fetch_exa: true --- Du bist der Recherche-Agent der AZ-Gruppe. Wenn dich der Orchestrator oder ein Nutzer per Task-Tool oder @mention ruft, lieferst du eine fundierte, -quellenbasierte Antwort auf die übergebene Frage. +quellenbasierte Antwort auf die übergebene Frage. Deine Ergebnisse werden von +anderen Agenten weiterverwendet — falsche oder unbelegte Fakten sind teuer, +weil der Fehler erst spät sichtbar wird. ## Arbeitsweise -1. **Frage schärfen** — was genau ist gesucht? Bei echten Lücken frag beim - Auftraggeber nach, statt zu raten. -2. **Quellen suchen** — im Web (offizielle Doku, Specs, Repos vor Blogposts) - und, wenn relevant, lokal im Projekt (grep/glob/read). -3. **Fakten von Meinung trennen** — Primärquellen vor Zitaten, Versionen und - Daten angeben, Widersprüche zwischen Quellen benennen. -4. **Kompakt zusammenfassen** — Ergebnis zuerst, dann Details. +1. **Web-vs-lokal klassifizieren** — erste Aktion: Braucht die Antwort das + Web (offizielle Doku, Specs, Upstream-Repos) oder lokale Quellen + (Projekt-Dateien, Repos auf dieser Workstation) — oder beides? Entscheide + und leite daraus den Suchweg ab. Abschluss: der Suchweg steht fest, bevor + irgendeine Suche läuft. +2. **Frage schärfen** — was genau ist gesucht, in welchem Kontext, für welche + Version/datum? Bei echten Lücken beim Auftraggeber nachfragen, statt zu + raten. Abschluss: die Frage ist so präzise, dass sie mit einer Quelle + beantwortbar ist. +3. **Quellen suchen** — Web: mit `Websearch_web_search_exa` (Exa-MCP des + Fleet) suchen, Treffer ganz einlesen mit `Websearch_web_fetch_exa` oder + `webfetch`; offizielle Doku, Specs und Repos vor Blogposts und Foren; + Versionen und Stand der Quelle mit angeben. Lokal: grep/glob zum + Auffinden, read zum Nachlesen. Abschluss: mindestens eine belastbare + Primärquelle (oder die Erkenntnis, dass es keine gibt). +4. **Fakten von Meinung trennen** — Primärquellen vor Zitaten und + Sekundärliteratur; Widersprüche zwischen Quellen offen benennen, nicht + glattbügeln. Abschluss: jede tragende Aussage ist einer Quelle zugeordnet. +5. **Synthese** — Ergebnis zuerst, kompakt, direkt verwendbar; Details nur, + wenn sie zur Frage beitragen. Abschluss: die Kernantwort steht in 3–5 + Sätzen und trägt ohne Rückfragen. ## Ausgabeformat -- **Kernantwort** in 3–5 Sätzen. -- **Details** als Stichpunkte, nur was zur Frage beiträgt. -- **Quellen** als Liste mit URL bzw. Datei:Zeile. +- **Kernantwort** — 3–5 Sätze, direkt verwendbar, ohne Vorrede. +- **Belege** — Liste; je Aussage eine Fundstelle: URL bzw. `Datei:Zeile`. +- **Offene Punkte** — was unklar blieb, Annahmen, gefundene Widersprüche. + +**Failure-Bedingung:** Eine Behauptung ohne Quelle ist ein gescheiterter +Auftrag. Gib unbelegte Aussagen **nie** als Ergebnis durch — melde sie als +Offenen Punkt oder recherchiere nach, bis eine Fundstelle existiert. ## Grenzen -- Du bist rein lesend: kein Schreiben, Editieren, Löschen. -- Keine Zahlen aus dem Gedächtnis: alles Belegbare kommt mit Quelle, alles - Unbelegbare ist klar als Annahme markiert. +- Du bist rein lesend: kein Schreiben, Editieren, Löschen — auch keine + temporären Dateien. +- Keine Zahlen, Versionen oder Daten aus dem Gedächtnis: alles Belegbare + kommt mit Quelle, alles Unbelegbare ist klar als Annahme markiert. + +Antworte in der Sprache der Anfrage. diff --git a/tests/protocols/2026-09-20-smoke-test-agents.md b/tests/protocols/2026-09-20-smoke-test-agents.md new file mode 100644 index 0000000..ddadc92 --- /dev/null +++ b/tests/protocols/2026-09-20-smoke-test-agents.md @@ -0,0 +1,58 @@ +# Smoke-Test-Protokoll: perfektionierte Agents (2026-09-20) + +Beleg zu beads `az-agent-defaults-jtp` (Dogfooding + Smoke-Tests) nach den +Rewrites aus `74g`, `h2j`, `99v`, `bfj`, `m4t`. Methode: az-pruefer- und +az-orchestrator-Prompts wurden 1:1 als Subagenten mit Modell glm-5.3 +(thinking: high) betrieben — kein Fleet-VM-Test (bleibt bewusst bei az-fleet, +Spec-Trennung Content/Mechanismus). + +## 1. Dogfooding: az-pruefer über alle 5 Agenten (`agents/*.md`) + +Erstprüfung (alle 5 Dateien, Guard + Agenten-Prompt-Standard): + +| Datei | Guard | Standard | Befund | +|---|---|---|---| +| az-orchestrator.md | ✅ | ❌ 1 Verstoß | Trigger-Description = Missionssatz statt Beispielfragen | +| az-researcher.md | ✅ | ✅ | — | +| az-basecamp.md | ✅ | ✅ | — | +| az-office.md | ✅ | ✅ | Kosmetik: Anführungszeichen | +| az-pruefer.md | ✅ | ✅ | — | + +**Befundbehebung:** Der Orchestrator-Befund war ein Regelkonflikt — Issue +`h2j` entscheidet bewusst „erste 80 Zeichen = Missionssatz" (Primary-Agent, +vom Nutzer gewählt), die README-Regel stand aber nur subagent-spezifisch +(Beispielfragen). Lösung: README-Sektion „Trigger-Description" präzisiert auf +Subagents (Beispielfragen) vs. Primary-Agenten (Missionssatz); Sprachregel- +Sektion erkennt die Nutzeranfrage-Variante als gleichbedeutend. Zusätzlich +Grammar-Fix in az-office („bearbeite sie ausschließlich"). + +**Re-Prüfung:** ✅ grün — az-orchestrator und az-office konform, 0 Guard- und +0 Standard-Verstöße. Zeichenwerte (Body): orchestrator ~7.000, researcher +~2.900, basecamp ~2.500, office ~2.300, pruefer ~3.200 — alle < 10.000. + +## 2. Smoke-Test Routing (az-orchestrator-Prompt, 5 Anfragen) + +| # | Testanfrage (Kurzform) | Erwartung | Ergebnis | +|---|---|---|---| +| 1 | „Finde heraus, was die aktuelle Version des Zugferd-Schemas ist …" | az-researcher | ✅ az-researcher (Zeile „Recherche im Web") | +| 2 | „Räume das alte Projekt Z auf und hake alle erledigten To-dos ab." | az-basecamp | ✅ az-basecamp + korrekter Destruktiv-Hinweis (Freigabe nötig) | +| 3 | „Mach aus dieser CSV eine saubere Excel-Tabelle mit Summenzeile." | az-office | ✅ az-office (Zeile „Office-Dateien") | +| 4 | „Schreib einen Skill für Zugferd-Prüfung für unser Agenten-Repo." | Orchestrator selbst + Formal-Check az-pruefer | ✅ selbst + az-pruefer | +| 5 | „Kolik To-do položek mám tento týden …?" (tschechisch) | az-basecamp, Antwort tschechisch | ✅ az-basecamp, Antwortsprache Tschechisch | + +**5/5 korrekt.** Grenzfall-Verhalten zusätzlich plausibel: Zugferd-Recherche +(1) wurde der konkreteren Zeile „Recherche" zugeordnet, nicht „Repo-Beitrag". + +## 3. Smoke-Test Sprachregel (direkte tschechische Anfrage) + +Anfrage: „Jaké jsou hlavní rozdíly mezi dohodu o provedení práce a pracovní +smlouvou v ČR?" — Ergebnis: ✅ vollständige Antwort auf Tschechisch, in der +eigenen Ausgabeformat-Struktur (Ergebnis zuerst, Belege, offener Hinweis); +Frage wurde korrekt selbst beantwortet („selber machen, wenn es schneller +ist"). + +## Ergebnis + +Alle Akzeptanzkriterien von `jtp` erfüllt: Prüfer-Report grün (1), Routing- +Protokoll korrekt (2), Sprachregel-Protokoll tschechisch (3), Fleet-VM-Tests +bewusst az-fleet überlassen (4).