diff --git a/aria-brain/agent.py b/aria-brain/agent.py index eb9ade6..60985aa 100644 --- a/aria-brain/agent.py +++ b/aria-brain/agent.py @@ -1284,12 +1284,21 @@ class Agent: skill_name = cand_name break res = skills_mod.run_skill(skill_name, args=arguments) - snippet = (res.get("stdout") or "")[:2000] or "(kein stdout)" - err = (res.get("stderr") or "")[:500] + # 2000 Zeichen war viel zu wenig — Spotify-JSON ist 5-15 KB, + # da wurde der Track-Name regelmaessig abgeschnitten und ARIA + # hat aus dem Album-Kontext halluziniert. Claude kann hunderte + # KB Context, 50 KB pro Tool-Result sind locker drin. + stdout = (res.get("stdout") or "") + stderr = (res.get("stderr") or "") + if len(stdout) > 50000: + stdout = stdout[:50000] + f"\n...(abgeschnitten, original {len(res.get('stdout',''))} bytes)" + if len(stderr) > 4000: + stderr = stderr[:4000] + f"\n...(abgeschnitten)" + snippet = stdout or "(kein stdout)" marker = "OK" if res["ok"] else f"FEHLER (exit={res['exit_code']})" out = f"{marker} · {res['duration_sec']}s\nstdout:\n{snippet}" - if err: - out += f"\nstderr:\n{err}" + if stderr: + out += f"\nstderr:\n{stderr}" return out if name == "trigger_timer": fires_at_iso = arguments.get("fires_at")