fix(satellite): ARIA nutzt Satelliten fuer Geraete in fremden Netzen — statt zu fabulieren
Symptom: Frage nach dem Patronenstand des Heim-Druckers -> ARIA antwortet "da komm ich nicht ran", obwohl im Heimnetz ein Satellit online ist, der den Drucker findet UND http.get kann. Sie zieht Drucker-Fakten aus dem Gedaechtnis und gibt auf, ohne den Satelliten zu nutzen. Ursachen + Fixes: - Claude-Pfad: die Seed-Regel triggerte nur auf Formulierungen wie "im Buero"/ "im Netz X". Eine schlichte Geraetefrage (Patronenstand) griff sie nicht. -> Regel umformuliert: IMMER wenn ein Geraet/Host in einem Netz liegt, auf dem ARIA nicht direkt sitzt (Zuhause/Buero/private IP), ZUERST satellite_list pruefen; NIEMALS "erreiche ich nicht" sagen, bevor satellite_list lief. Drucker-http.get-Beispiel ergaenzt. - satellite_list-Tool-Beschreibung als dauerhaften Anker verstaerkt (gilt auch, wenn ein Seed mal driftet). - Lokales Tier hatte gar keine Satelliten-Tools (_LOCAL_TOOL_NAMES) -> konnte strukturell kein Geraet im fremden Netz erreichen und fabulierte. satellite_ list/devices/command ergaenzt, damit auch das lokale Qwen Satelliten nutzt. Greift beim naechsten Brain-Neustart (seed_rules.apply im Lifespan, idempotent per migration_key). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+11
-6
@@ -1184,9 +1184,11 @@ META_TOOLS = [
|
||||
"description": (
|
||||
"Zeigt welche ARIA-Satelliten (Aussenposten-Container in FREMDEN Netzen, "
|
||||
"z.B. 'Buero') gerade ONLINE sind und was sie koennen (discover / "
|
||||
"dial.launch / wol / http). Nutze das ZUERST, wenn Stefan etwas 'im "
|
||||
"Buero' / 'im Netz X' / 'auf dem <Geraet> dort' machen will — so weisst "
|
||||
"Du welche Netze erreichbar sind."
|
||||
"dial.launch / wol / http). Nutze das ZUERST, wenn es um ein Geraet/einen "
|
||||
"Host in einem Netz geht, auf dem Du nicht direkt sitzt (Zuhause, Buero, "
|
||||
"jede private IP wie 192.168.x) — z.B. Drucker-Fuellstand, NAS, Smart-TV. "
|
||||
"Rufe es IMMER auf, BEVOR Du sagst ein Geraet sei nicht erreichbar — ein "
|
||||
"Satellit im Zielnetz ist der Weg hinein."
|
||||
),
|
||||
"parameters": {"type": "object", "properties": {}},
|
||||
},
|
||||
@@ -1718,9 +1720,12 @@ class Agent:
|
||||
return False
|
||||
|
||||
# Kuratierte Tool-Auswahl fuers lokale Tier (B1b): web_search (local-only,
|
||||
# SearXNG) + memory_search/trigger_timer (aus META_TOOLS) + Spotify-Skill.
|
||||
# Bewusst klein (Speed + Sicherheit); alles andere → Claude.
|
||||
_LOCAL_TOOL_NAMES = {"memory_search", "trigger_timer"}
|
||||
# SearXNG) + memory_search/trigger_timer (aus META_TOOLS) + Spotify-Skill +
|
||||
# die Satelliten-Tools (Augen/Haende in fremden Netzen — auch das lokale Tier
|
||||
# muss ein Geraet im Heim-/Buero-Netz erreichen koennen, statt zu fabulieren).
|
||||
# Sonst bewusst klein (Speed + Sicherheit); alles andere → Claude.
|
||||
_LOCAL_TOOL_NAMES = {"memory_search", "trigger_timer",
|
||||
"satellite_list", "satellite_devices", "satellite_command"}
|
||||
|
||||
def _build_local_tools(self) -> list:
|
||||
tools = [WEB_SEARCH_TOOL]
|
||||
|
||||
@@ -475,13 +475,27 @@ SEED_RULES: List[dict] = [
|
||||
"zeigt UND steuerbar macht. So erreichst Du Netze, in denen der Haupt-Stack "
|
||||
"NICHT steht.\n"
|
||||
"\n"
|
||||
"Wenn Stefan etwas 'im Buero' / 'im Netz X' / 'auf dem <Geraet> dort' will:\n"
|
||||
"WICHTIG — nicht nur bei 'im Buero'/'im Netz X': IMMER wenn eine Anfrage ein "
|
||||
"GERAET oder einen HOST betrifft, das/der in einem Netz lebt, auf dem Du NICHT "
|
||||
"direkt sitzt (Stefans Zuhause, Buero, Werkstatt, irgendein LAN mit privater "
|
||||
"IP wie 192.168.x/10.x) — z.B. Drucker-Fuellstand, NAS, Smart-TV, ein Host per "
|
||||
"IP — dann pruefe ZUERST `satellite_list`, ob ein Satellit dieses Netz abdeckt. "
|
||||
"Sage NIEMALS 'da komm ich nicht ran' / 'bin nicht im Netz', BEVOR Du "
|
||||
"`satellite_list` aufgerufen hast — ein Satellit im Zielnetz ist genau der Weg "
|
||||
"hinein. Nur wenn wirklich keiner online ist, ist 'erreiche ich nicht' korrekt.\n"
|
||||
"\n"
|
||||
"Ablauf:\n"
|
||||
" 1. `satellite_list` — welche Satelliten/Netze sind online + was koennen sie.\n"
|
||||
" 2. `satellite_devices(satellite='Buero')` — welche Geraete gibt es dort "
|
||||
"(Fire TV, Chromecast, Smart-TVs, Drucker, NAS ...). Nutze es um das "
|
||||
"gemeinte Geraet zu finden, BEVOR Du steuerst.\n"
|
||||
" 3. `satellite_command(...)` — Aktion ausfuehren.\n"
|
||||
"\n"
|
||||
"Beispiel 'Patronenstand vom Drucker zuhause': satellite_list -> Satellit im "
|
||||
"Heimnetz online? -> satellite_command(satellite='<Heim>', action='http.get', "
|
||||
"params={'url':'http://<drucker-ip>/general/status.html'}) -> Fuellstaende "
|
||||
"(BK/C/M/Y) aus dem HTML vorlesen. NICHT aus dem Gedaechtnis raten.\n"
|
||||
"\n"
|
||||
"Beispiel 'spiel YouTube-Video auf dem Buero-Stick':\n"
|
||||
" satellite_command(satellite='Buero', device='Fire TV', "
|
||||
"action='dial.launch', params={'app':'YouTube','v':'<videoId>'})\n"
|
||||
|
||||
Reference in New Issue
Block a user