Faden 8+5-Fix: Worker-Scope korrigieren + Profil-Hooks reproduzierbar
Zwei zusammenhaengende Bugs, beim echten Worker-Test entdeckt:
1) HOOKS FEUERTEN FUER WORKER NIE. Kanban-Worker laufen unter IHREM Profil
(HERMES_HOME=~/.hermes/profiles/<name>) und lesen dessen config.yaml, NICHT
die Top-Level ~/.hermes/config.yaml. Die neuen Hooks waren nur oben
registriert -> fuer Worker inaktiv. FIX: ensure-profile-hooks.py registriert
pre_llm_call + pre_tool_call in jeder Worker-Profil-config (idempotent,
validiert, Backup); deploy.sh ruft es je Profil auf -> reproduzierbar.
2) FALSCHER SCOPE. Beide Hooks scopeten auf task_id == t_<hex>. Aber Worker
tragen als effective_task_id den SESSION-Zeitstempel (z.B.
20260713_224206_267304), NICHT die Kanban-t_-ID -> der Check schlug immer
fehl -> box-steckbrief injizierte nie, tabu-guard liess alles durch.
FIX:
- tabu-pfade-guard.py: Schutz jetzt UNBEDINGT (kein Task-Scope) - kein
legitimer Hermes-Agent-Flow schreibt je in Live-Checkout/Hermes-Quelle
(Werkstatt arbeitet im Workspace-Klon, Wartung ist Shell nicht Agent-Tool).
- box-steckbrief-inject.sh: Scope jetzt cwd unter ~/.hermes/kanban/workspaces/
(zuverlaessiger Worker-Signal; Lucy/Voice/CLI laufen nie dort).
Verifiziert: echter betrieb-Worker versuchte in den Live-Checkout zu schreiben
-> GEBLOCKT, Datei nicht erstellt, TABU-Meldung im Log. 26 Guard-Unit-Faelle gruen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,25 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
# 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 die task_id ein echtes Kanban-`t_<hex>`
|
||||
# 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).
|
||||
# JEDEN Kanban-Worker — egal welches Profil (werkstatt, betrieb, default-als-Worker).
|
||||
# Der Kontext wird ephemer pro Turn an die User-Message angehaengt (agent/turn_context.py),
|
||||
# NUR wenn die Session in einem Kanban-Task-Workspace laeuft. Lucys interaktiver/Voice-Chat
|
||||
# laeuft NICHT dort → sofortiger No-op, kein Persona- oder Latenz-Eingriff. Loest
|
||||
# Fallstrick #1 (Ops/Mess/Verify-Worker flailen, weil sie llama-swap :8080 nicht kennen).
|
||||
# Ausgabe {"context":"..."} = anhaengen; {} = durchlassen (No-op).
|
||||
set -u
|
||||
payload="$(cat -)"
|
||||
|
||||
# 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_<hex>`, 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
|
||||
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
|
||||
# Scope-Gate: NUR echte Kanban-Worker — erkannt an der cwd im Task-Workspace.
|
||||
# ACHTUNG (Bug-Fund Faden 8, 13.07.): Worker tragen als task_id den SESSION-Zeitstempel
|
||||
# (z.B. 20260713_224206_267304), NICHT die Kanban-t_-ID — ein "nur t_"-Check feuerte also
|
||||
# NIE fuer Worker. Der zuverlaessige Signal ist die cwd unter kanban/workspaces/; Lucy/
|
||||
# Voice/CLI laufen nie dort.
|
||||
cwd=$(printf %s "$payload" | jq -r '.cwd // ""' 2>/dev/null || echo "")
|
||||
case "$cwd" in
|
||||
"$HOME/.hermes/kanban/workspaces/"*) : ;; # Kanban-Worker → Orientierung anhaengen
|
||||
*) printf '{}'; exit 0 ;; # Lucy / Voice / CLI / interaktiv → No-op
|
||||
esac
|
||||
|
||||
# Zeiger auf den vollen, naechtlich generierten Selbst-Steckbrief (nur wenn er existiert).
|
||||
|
||||
Reference in New Issue
Block a user