#!/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 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 # 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. 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 # Zeiger auf den vollen, naechtlich generierten Selbst-Steckbrief (nur wenn er existiert). STECKBRIEF="$HOME/.hermes/state/selbst-steckbrief.md" hint="" [ -f "$STECKBRIEF" ] && hint=" Dein vollstaendiger Selbst-Steckbrief (aktuelle Versionen/Dienste/Modelle/Crons/offene Karten) liegt in $STECKBRIEF — dort nachlesen statt raten." # Stabile Anti-Flail-Orientierung: WER bin ich, WO laufen die Modelle, WAS ist tabu. ctx="$(cat <