fix(local-llm): Anti-Halluzination — behauptete Skill-Aktion ohne Tool → Claude

Local hat "Spotify: überspringe 3 Titel" / "Playlist X abspielen" geantwortet
OHNE run_spotify je zu rufen (Skill-Logs: kein Aufruf) — reine Fabrikation,
real passierte nichts. Zwei Ursachen behoben:
- Prompt: run_spotify-Beschreibung von "next/pause/weiter" auf JEDE
  Musiksteuerung erweitert (Playlist, Gerät, überspringen mehrerer, Lautstärke)
  + harte Anti-Halluzinations-Regel (nie eine Aktion behaupten ohne Tool-Call).
- Guard: sagt local eine Steuerbefehl-Quittung ('Spotify: …', 'Playlist …
  abspielen', 'überspringe … Titel') aber hat KEINEN run_*-Skill gerufen
  (_local_ran_skill=False) → eskalieren, Claude ruft das Tool zuverlässig.

_looks_like_skill_action bewusst eng (Doppelpunkt-Praefix / spezifische Verben),
trifft normale Musik-Konversation nicht.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-11 22:30:00 +02:00
co-authored by Claude Opus 4.8
parent 42678a3e69
commit 0a897c6a8a
2 changed files with 40 additions and 1 deletions
+9 -1
View File
@@ -153,10 +153,18 @@ def build_local_system_prompt(identity_anchor: str, has_tools: bool = False,
"GPS-Hinweis in der Nachricht.",
"- `memory_search`: in ARIAs Gedaechtnis nachsehen (lesen).",
"- `trigger_timer`: Timer/Erinnerung setzen ('in 10 Minuten…').",
"- `run_spotify`: Musik steuern (naechster Titel, Pause, weiter).",
"- `run_spotify`: JEDE Musiksteuerung — Titel wechseln/ueberspringen "
"(auch mehrere), Pause/Weiter, eine PLAYLIST abspielen, auf einem "
"GERAET abspielen, Lautstaerke, 'was laeuft gerade'. Fuer ALLES rund "
"um Musik/Spotify IMMER dieses Werkzeug rufen — nie selbst antworten.",
"WICHTIG: Bei reinem Smalltalk ('wie gehts', Begruessung, Meinung) "
"KEIN Werkzeug — einfach direkt antworten. Werkzeuge nur bei echtem "
"Bedarf; erfinde keine.",
"ANTI-HALLUZINATION (kritisch): Behaupte NIEMALS eine Aktion (Musik, "
"Timer, Suche) als erledigt, ohne das Werkzeug WIRKLICH aufgerufen zu "
"haben. Kein 'Spotify: …' / 'Playlist abspielen' o.ae. ohne echten "
"run_spotify-Aufruf. Kannst/willst du es nicht per Werkzeug tun, sag "
"es ehrlich oder eskaliere — erfinde keine Bestaetigung.",
]
parts += [
"",