fix(brain): tools nach auto_scaffold neu bauen — sonst halluziniert ARIA Tool-Tags
Beobachtung beim ersten Live-Test (00:58:33): Auto-Scaffold legte den spotify-Skill mid-chat() an, all_skills + active_skills wurden refreshed, ABER die `tools=`-Liste die an den Proxy/claude-CLI geschickt wird nicht. Folge: ARIA sah im System-Prompt-Skills-Block dass `spotify` existiert und wusste sie soll `run_spotify` nutzen — aber claude-CLI kannte das Tool nicht weil dessen tool-schema noch ohne run_spotify war. Sie hat dann <tool_call name="run_spotify">...</tool_call> als XML in den Text geschrieben, das wurde nirgends ausgefuehrt (siehe "Pausiert" / "Restricted & NIKSTER" Antworten waren halluziniert). Fix in 4 Zeilen: nach scaffolded_any auch `tools = list(META_TOOLS) + [_skill_to_tool(s) for s in active_skills]` neu bauen. Damit kennt der CLI-Subprocess den frischen Skill-Tool sofort und kann ihn echt aufrufen. Beim naechsten chat-Turn waere es eh richtig (Tools werden neu gebaut), aber genau der erste Turn nach Auto-Scaffold ist der wichtigste — da soll's klappen. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -990,6 +990,10 @@ class Agent:
|
|||||||
# Skills-Liste refresh damit der frische Skill im Prompt sichtbar ist
|
# Skills-Liste refresh damit der frische Skill im Prompt sichtbar ist
|
||||||
all_skills = skills_mod.list_skills(active_only=False)
|
all_skills = skills_mod.list_skills(active_only=False)
|
||||||
active_skills = [s for s in all_skills if s.get("active", True)]
|
active_skills = [s for s in all_skills if s.get("active", True)]
|
||||||
|
# WICHTIG: tools NEU bauen, sonst kennt der claude-CLI-
|
||||||
|
# Subprocess den frisch gescaffoldeten `run_<name>` NICHT
|
||||||
|
# und ARIA muss `<tool_call>`-Tags halluzinieren.
|
||||||
|
tools = list(META_TOOLS) + [_skill_to_tool(s) for s in active_skills]
|
||||||
_ah.invalidate_cache()
|
_ah.invalidate_cache()
|
||||||
# Heuristik neu rechnen — die scaffold-targets sind jetzt weg
|
# Heuristik neu rechnen — die scaffold-targets sind jetzt weg
|
||||||
hints = _ah.compute_hints(existing_skills=all_skills, force=True)
|
hints = _ah.compute_hints(existing_skills=all_skills, force=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user