e7f143823e
Verhindert das "Chat-in-MC2"-Muster und Ebenen-Verwechslungen: neue docs/wissen/GRENZEN.md mappt die fuenf Flaechen (MC2=Steuerpult, Lucy=Chat/Stimme, Hermes=Fundament/Quelle-tabu, Telegram, Hermes-Desktop) mit "gehoert hin / gehoert NICHT hin", den Code-Ebenen-Grenzen und einer "ich will X bauen - wohin?"-Entscheidungshilfe + roten Linien. Eingewoben: README-Lesereihenfolge, ARBEITSWEISE (Rollen-Abgrenzung zeigt auf GRENZEN + "MC2 = Steuerpult, kein Chat"), und der pre_llm_call-Worker- Hook (box-steckbrief-inject.sh) gibt jedem Worker die Kurz-Grenzen inline (MC2=Steuerpult/kein Chat-UI, Lucy=Chat, Hermes-Quelle tabu) + Zeiger auf GRENZEN.md. Verifiziert: Hook injiziert 1236 Z inkl. Grenzen, Lucy-UUID No-op. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
38 lines
3.0 KiB
Bash
38 lines
3.0 KiB
Bash
#!/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).
|
|
# 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
|
|
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 <<EOF
|
|
[BOX-ORIENTIERUNG — du bist ein Hintergrund-Worker auf der lokalen AI-Box (Linux, Zeit UTC / lokal Europe/Berlin, locale de_DE), NICHT Lucy und kein Dev-Laptop. Du arbeitest EINE Kanban-Aufgabe ab.]
|
|
Die Modelle / das "Hirn" laufen ausschliesslich ueber den Router llama-swap auf 127.0.0.1:8080 (startet je Modell einen llama-server) bzw. das OpenAI-kompatible Gateway von MC2 auf 127.0.0.1:9001/v1 — es gibt KEINEN anderen Modell-Server, also nicht danach suchen. Weitere Dienste: hermes-gateway :8642, mem0-Gedaechtnis :8765. Der MC2-Live-Checkout ~/mission-control-v2 ist nur zum LESEN da (Schreiben/committen TABU — Code-Arbeit immer im frischen Klon deines Task-Workspaces). Grenzen (was gehoert wohin): MC2 = Steuerpult (verwalten/klicken/zusehen, KEIN Chat-UI), Lucy = Chat & Stimme (eigenes Repo), Hermes-Quelle ist TABU (Agenten-Verhalten nur ueber Config/SOUL/Skill/Hook/MCP aendern). Feste Entscheide/Verbote + volle Grenzen-Landkarte: ~/mission-control-v2/docs/wissen/ (GRENZEN/VERDIKTE/FALLEN/STACK) + ~/wissens-vault/eigenbau-landkarte.md.${hint}
|
|
EOF
|
|
)"
|
|
|
|
jq --null-input --arg c "$ctx" '{context:$c}'
|