From 69537de304f6ff9901bb56a1cdd5a2261ede3585 Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Mon, 13 Jul 2026 21:18:16 +0200 Subject: [PATCH] Faden 5: Scope-Gate auf Kanban-Muster t_ verschaerfen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wichtige Korrektur vor dem Scharfschalten: Hermes setzt effective_task_id = task_id OR uuid4() (agent/turn_context.py:216) — Lucys interaktiver/Voice-Chat laeuft also mit einer NICHT-leeren UUID-Ersatz-task_id. Der urspruengliche "task_id nicht leer"-Check haette damit auch Lucy getroffen (Persona-/Latenz-Schaden). Fix: nur injizieren, wenn task_id dem echten Kanban-Muster t_ entspricht; UUIDs (mit Bindestrichen, nie t_-Prefix) fallen auf No-op. Verifiziert: t_-ID -> injiziert, UUID/leer/non-t_ -> No-op. Co-Authored-By: Claude Opus 4.8 --- deploy/agent-hooks/box-steckbrief-inject.sh | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/deploy/agent-hooks/box-steckbrief-inject.sh b/deploy/agent-hooks/box-steckbrief-inject.sh index 251f886..d752027 100644 --- a/deploy/agent-hooks/box-steckbrief-inject.sh +++ b/deploy/agent-hooks/box-steckbrief-inject.sh @@ -2,19 +2,25 @@ # pre_llm_call-Hook (Faden 5, 13.07.2026): verdrahtet Box-Selbstwissen MECHANISCH in # JEDEN Kanban-Worker — egal welches Profil (werkstatt, default=Lucys Persona als Worker, # kuenftige betrieb-/Ops-Profile). Der Kontext wird ephemer pro Turn an die User-Message -# angehaengt (agent/turn_context.py), NUR wenn eine Kanban-task_id gesetzt ist. Lucys -# interaktiver/Voice-Chat hat KEINE task_id → sofortiger No-op, kein Persona- oder -# Latenz-Eingriff. Loest Fallstrick #1 (Ops/Mess/Verify-Worker landen auf der am +# angehaengt (agent/turn_context.py), NUR wenn die task_id ein echtes Kanban-`t_` +# ist. Lucys interaktiver/Voice-Chat laeuft mit einer UUID-Ersatz-task_id (nicht `t_...`) +# → sofortiger No-op, kein Persona- oder Latenz-Eingriff. Loest Fallstrick #1 (Ops/Mess/Verify-Worker landen auf der am # schlechtesten geruesteten Persona und flailen, weil sie llama-swap :8080 nicht kennen). # Ausgabe {"context":"..."} = anhaengen; {} = durchlassen (No-op). set -u payload="$(cat -)" -# Scope-Gate: nur echte Kanban-Worker (task_id gesetzt). Alles andere (Lucy-Chat, Voice, -# CLI, Telegram) faellt hier sofort raus — der Hook feuert zwar pro Turn, kostet aber nur -# ein jq und ist damit fuer den Voice-Pfad vernachlaessigbar. +# Scope-Gate: NUR echte Kanban-Worker. ACHTUNG (agent/turn_context.py:216): +# Hermes setzt effective_task_id = task_id ODER — fuer Lucy-Chat/Voice/CLI/Telegram — +# eine zufaellige UUID. Ein blosser "nicht leer"-Check wuerde also auch Lucy treffen +# (Persona-/Latenz-Schaden). Kanban-IDs sind IMMER `t_`, UUIDs enthalten Bindestriche +# und beginnen nie mit t_ → das Muster trennt sauber. Alles andere: sofortiger No-op +# (ein jq, im Voice-Pfad vernachlaessigbar). task_id=$(printf %s "$payload" | jq -r '.extra.task_id // .task_id // ""' 2>/dev/null || echo "") -case "$task_id" in ""|null) printf '{}'; exit 0 ;; esac +case "$task_id" in + t_[0-9a-f][0-9a-f][0-9a-f][0-9a-f]*) : ;; # Kanban-Worker → Orientierung anhaengen + *) printf '{}'; exit 0 ;; # Lucy / UUID / leer → No-op +esac # Zeiger auf den vollen, naechtlich generierten Selbst-Steckbrief (nur wenn er existiert). STECKBRIEF="$HOME/.hermes/state/selbst-steckbrief.md"