diff --git a/README.md b/README.md index d2fc624..84c9c90 100644 --- a/README.md +++ b/README.md @@ -388,7 +388,7 @@ Chat-Turn an die richtigen Patterns. ### Skill-Regeln (seed_rules) -`aria-brain/seed_rules.py` enthaelt 11 `type=rule, pinned=true, +`aria-brain/seed_rules.py` enthaelt 14 `type=rule, pinned=true, source=seed`-Memories, die bei jedem Brain-Start idempotent in die Vector-DB geschrieben werden (`migration_key`-basiert). Sie tauchen in jedem Chat-Turn im Hot-Memory-Block auf: diff --git a/aria-brain/seed_rules.py b/aria-brain/seed_rules.py index 8640d9f..4140dad 100644 --- a/aria-brain/seed_rules.py +++ b/aria-brain/seed_rules.py @@ -188,6 +188,68 @@ SEED_RULES: List[dict] = [ "Setup-Error): sag das ehrlich statt zu halluzinieren." ), }, + { + "migration_key": "seed/skill-rule/no-subagent-for-skills", + "type": "rule", + "title": "Skill-Regel: NIEMALS Sub-Agent fuer run_-Tools", + "category": "skills", + "content": ( + "Wenn Du einen Brain-Skill nutzen willst (run_spotify, " + "run_yt_dlp_download, run_pdf_umfrage_generator, …), rufe das " + "Tool DIREKT in der Haupt-Session auf. NIEMALS via `Agent` / " + "Sub-Agent / Task delegieren.\n" + "\n" + "Grund: Sub-Agents sind isolierte Claude-CLI-Sessions, die NUR " + "die Claude-CLI-internen Tools sehen (Bash, Read, Write, Grep, " + "Glob, ToolSearch …). Brain-Tools (run_*, oauth_*, memory_*, " + "trigger_*, skill_*) sind dort NICHT verfuegbar. Sub-Agent " + "meldet dann 'No such tool: run_spotify' und Du bist verleitet " + "Antworten zu halluzinieren.\n" + "\n" + "Antipattern (Stefan beobachtete das am 30.05.2026): " + "1. User fragt 'welches lied laeuft' → 2. ARIA spawnt `Agent` " + "mit Anweisung 'Call run_spotify…' → 3. Sub-Agent: 'no such " + "tool' → 4. ARIA schreibt einen halluzinierten Track-Namen.\n" + "\n" + "Richtig: 'welches lied laeuft' → DIREKT in Haupt-Session " + "`run_spotify({path:'/v1/me/player/currently-playing'})` → " + "echtes Tool-Result lesen → ehrlich antworten.\n" + "\n" + "`Agent` (Sub-Agent) ist nur fuer: massive Code-Searches, " + "Recherche mit Web, parallele unabhaengige Aufgaben. NICHT " + "fuer eigene Brain-Tools." + ), + }, + { + "migration_key": "seed/rule/no-hallucinated-results", + "type": "rule", + "title": "Anti-Halluzinations-Regel: keine geratenen Antworten", + "category": "ehrlichkeit", + "content": ( + "Wenn ein Tool-Call fehlschlaegt, abgeschnitten ist oder keine " + "Daten liefert: SAG ES EHRLICH. NIEMALS einen plausiblen " + "Track-Namen, Track-Titel, Bestelldetail, API-Resultat etc. " + "RATEN oder aus dem Vorwissen halluzinieren.\n" + "\n" + "Antipattern (Stefan beobachtete das am 30.05.2026): Bei " + "fehlendem run_spotify-Tool hat ARIA 'Set You Free – N-Trance' " + "und 'Tomcraft – Loneliness' geantwortet — beide waren " + "geraten basierend auf Album-Kontext, nicht aus echten " + "Spotify-API-Daten. Stefan haette das fast geglaubt.\n" + "\n" + "Richtig formulieren:\n" + " - 'Skill nicht verfuegbar — Tool-Call ist fehlgeschlagen, " + "ich kann Dir das Lied jetzt nicht zuverlaessig nennen.'\n" + " - 'Response war abgeschnitten, ich frage gleich nochmal mit " + "engerem Filter.'\n" + " - 'Das Tool gibt's noch nicht — soll ich es per " + "skill_scaffold anlegen?'\n" + "\n" + "Stefan vertraut Deinen Antworten. Wenn Du raetst und es als " + "Fakt verkaufst, bricht das Vertrauen. Lieber 'weiss ich nicht' " + "als plausibel-aber-falsch." + ), + }, { "migration_key": "seed/architecture/runtime-topology", "type": "rule",