From 6037b62612843d71f54a1e68c04dc89322ad95b9 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Fri, 15 May 2026 08:14:33 +0200 Subject: [PATCH] fix(brain): ARIA legt nicht mehr ungefragt Skills an MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prompt sagte 'Harte Regel — IMMER Skill anlegen wenn pip-Library noetig'. ARIA hat das wortwoertlich genommen: bei einer einfachen pdf-extract-Frage hat sie sofort skill_create gerufen → Brain blockiert 12 Min im venv+pip-Install-subprocess.run, App zeigt 'ARIA denkt', Diagnostic emitted nach 5 Min Timeout idle, Stefan blieb stundenlang ohne Antwort. Neue Regel: - Goldene Regel: NIE ungefragt Skills anlegen. - Aufgabe zuerst inline loesen (Bash, direkter pip install, Workaround). - Skill nur wenn Stefan EXPLIZIT sagt 'mach daraus einen Skill' / 'leg den als Skill an'. - Die vier Kriterien (wiederkehrend/nicht-trivial/parametrisierbar/ wiederverwendbar) sind jetzt Checkliste NACH expliziter Anfrage — fehlt eines, soll ARIA nachfragen statt blind anzulegen. - Begruendung steht jetzt im Prompt: Setup blockt Brain bis zu 12 Min. Greift auf der VM ohne Re-Build, prompts.py wird beim Start geladen (docker compose restart aria-brain reicht). Co-Authored-By: Claude Opus 4.7 (1M context) --- aria-brain/prompts.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/aria-brain/prompts.py b/aria-brain/prompts.py index 5d21cc4..9e47de8 100644 --- a/aria-brain/prompts.py +++ b/aria-brain/prompts.py @@ -164,15 +164,17 @@ def build_skills_section(skills: List[dict]) -> str: "static-ffmpeg, beautifulsoup4, …). Falls etwas WIRKLICH nur via apt geht: " "Stefan fragen ob es ins Brain-Dockerfile soll.") lines.append("") - lines.append("**Harte Regel — IMMER Skill anlegen wenn:** die Loesung erfordert eine " - "pip-Library. Begruendung: Brain-Container hat keinen persistenten State " - "ausser /data/skills/. Ohne Skill wuerde der Install bei jedem " - "Container-Restart wiederholt.") + lines.append("**Goldene Regel: NIE ungefragt Skills anlegen.** Selbst wenn die Aufgabe " + "eine pip-Library braucht — erst die Aufgabe loesen (mit Bash, `pip install` " + "im Brain ist ok, oder Workaround), und nur wenn Stefan EXPLIZIT sagt " + "'mach daraus einen Skill' / 'leg den als Skill an' / 'dafuer einen Skill' " + "rufst du `skill_create` auf. Begruendung: Skill-Setup (venv + pip install) " + "blockt das Brain bis zu 12 Minuten. Ein unaufgefordert angelegter Skill " + "macht ARIA stumm und nervt Stefan jedes Mal.") lines.append("") - lines.append("**Sonst — Skill nur wenn alle vier zutreffen:**") + lines.append("**Wenn Stefan einen Skill explizit moechte, pruef:**") lines.append("") - lines.append("1. **Wiederkehrend** — die Aufgabe wird realistisch nochmal gestellt. " - "Einmal-Faelle (\"wie spaet ist es jetzt\") kein Skill.") + lines.append("1. **Wiederkehrend** — die Aufgabe wird realistisch nochmal gestellt.") lines.append("2. **Nicht-trivial** — mehrere Schritte. Ein einzelner Shell-Befehl " "(`date`, `hostname`, `ls`) ist KEIN Skill — das macht Bash direkt.") lines.append("3. **Parametrisierbar** — der Skill nimmt Eingaben (URL, Datei, Suchbegriff) " @@ -180,9 +182,8 @@ def build_skills_section(skills: List[dict]) -> str: lines.append("4. **Wiederverwendbar als ganzes** — Stefan wuerde es zukuenftig per Name " "ansprechen (\"mach mir den YouTube zu MP3\") statt jedes Mal zu erklaeren.") lines.append("") - lines.append("Wenn nichts installiert werden muss UND nicht alle vier zutreffen: einfach " - "die Aufgabe loesen ohne Skill anzulegen. Stefan kann jederzeit sagen " - "'bau daraus einen Skill'.") + lines.append("Wenn auch nur EINE der vier nicht zutrifft: hoeflich nachfragen ob er " + "wirklich einen permanenten Skill will oder die Aufgabe einmalig reicht.") return "\n".join(lines)