From 8c1476c2cad67c8f081d6b73efb7ca37e36ce585 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sat, 30 May 2026 01:56:53 +0200 Subject: [PATCH] =?UTF-8?q?fix(brain):=2015.=20seed=5Frule=20=E2=80=94=20B?= =?UTF-8?q?rain-Tools=20per=20XML-Tag,=20nicht=20als=20native=20Tool-Use?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Beobachtung beim Hook-Deploy-Test (30.05.2026, 01:51-52): ARIA versucht run_spotify zuerst als nativen Tool-Use → 'No such tool available' weil claude-CLI nur seine eigenen Tools (Bash/Read/Write/etc.) kennt; Brain-Tools sind als Prompt-Instruction injiziert. Erst nach dem 'No such tool'-Fehler wechselt ARIA aufs XML-Tag-Format {...}, das der proxy parsed und ans Brain weiterleitet. Dieser Lernzyklus pro Anfrage kostet ~30s. Die Regel erklaert die Architektur (claude-CLI vs Proxy vs Brain) und gibt das richtige Format vor — direkt XML-Tag, nicht native Tool-Use. Beilaeufige Bestaetigung an Stefan: seed_rules.py ist System-Code, wird bei jedem Brain-Lifespan-Start aufgespielt — frische DB nach Wipe wird beim ersten Boot mit den 15 Regeln gesetzt, idempotent ueber migration_key. Im Gegensatz zu brain-import/ (gitignored, manuelle Migration via Diagnostic-Klick). Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 2 +- aria-brain/seed_rules.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a8965d..1d5983e 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 14 `type=rule, pinned=true, +`aria-brain/seed_rules.py` enthaelt 15 `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 4140dad..1c780c6 100644 --- a/aria-brain/seed_rules.py +++ b/aria-brain/seed_rules.py @@ -296,6 +296,40 @@ SEED_RULES: List[dict] = [ "Brain-Resources: erst denken, sonst Brain-Tool nehmen." ), }, + { + "migration_key": "seed/architecture/brain-tools-xml-tag", + "type": "rule", + "title": "Architektur: Brain-Tools per -XML-Tag, nicht als native Tool-Use", + "category": "architektur", + "content": ( + "Brain-Tools (run_*, oauth_*, memory_*, trigger_*, skill_*, " + "flux_*) sind KEINE nativen claude-CLI-Tools wie Bash/Read/" + "Write. Sie sind ueber eine Prompt-Injection-Pipeline an " + "claude-max-api-proxy gekoppelt:\n" + "\n" + " - claude-CLI kennt nur Bash/Read/Write/Grep/Glob/etc. nativ\n" + " - Brain-Tools werden im System-Prompt als '# Verfuegbare " + "Tools'-Block mit ihrem Schema injiziert\n" + " - Der Proxy parsed {json}-" + "XML-Tags im Antwort-Text und konvertiert sie zu OpenAI " + "tool_call-Format das ans Brain zurueckgeht\n" + "\n" + "Konkret heisst das: Wenn Du `run_spotify` benutzen willst, " + "schreib es als TEXT in Deine Antwort:\n" + "\n" + " {\"path\":\"/v1/me/player\"}\n" + "\n" + "NICHT als nativen Tool-Use. Wenn Du es als nativen Tool-Use " + "versuchst, bekommst Du 'No such tool " + "available: run_spotify' — claude-CLI hat das " + "Tool gar nicht im Schema, nur als Prompt-Beschreibung.\n" + "\n" + "Antipattern (Stefan beobachtete das am 30.05.2026): ARIA " + "versucht erst `run_spotify` nativ → 'No such tool' → " + "31 Sekunden verschwendet bis sie das XML-Tag-Format probiert. " + "Beim ersten Versuch direkt XML-Tag ergibt 3-5s statt 30s+." + ), + }, { "migration_key": "seed/skill-rule/scaffold-reflex", "type": "rule",