diff --git a/deploy/stack-rundumschlag-feed.sh b/deploy/stack-rundumschlag-feed.sh new file mode 100644 index 0000000..bc5c8d5 --- /dev/null +++ b/deploy/stack-rundumschlag-feed.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash +# Stack-Rundumschlag (monatlich am 4. um 06:40, angelegt 22.07.2026): +# Lucys freier Rundumblick über den GANZEN Stack — ergänzt die mechanischen +# Wächter (Sa Trend-Radar, So Prüfstand, Mo Release-Radar, Wartungsserie 1.–3.) +# um tagesaktuelle Web-Recherche + Quervergleich mit den Verdikten. +# Anlass/Lehrbeispiel: Googles Gemma-4-Stealth-Update vom 15./16.07.2026 kam +# OHNE Versionssprung — kein mechanischer Wächter schlug an, erst freie +# Recherche fand es (Session 22.07., Claude-Desktop). +# Muster wie die anderen Feeds: dieses Skript sammelt DETERMINISTISCH den +# IST-Stand, der Agent recherchiert + berichtet. Er EMPFIEHLT NUR — umgesetzt +# wird per Karten-Klick durch den Commander. +set -uo pipefail + +MC="$HOME/mission-control-v2" +STATE_DIR="$HOME/.hermes/state" + +# ---------- Versionierter Auftrag für den Agenten ---------- +cat "$MC/deploy/stack-rundumschlag-prompt.md" 2>/dev/null || cat <<'EOF' +(Prompt-Datei fehlt — Kurzform:) Du bist der monatliche Stack-Rundumschlag. +Recherchiere tagesaktuell im Web zu allen Bausteinen unten (auch Stealth-Updates +ohne Versionssprung!), gleiche mit den Verdikten ab und berichte in Lucys Stimme +mit höchstens 3 konkreten Empfehlungen. Nichts selbst umsetzen. +EOF +echo +echo "## RUNDUMSCHLAG-BEFUND (IST-Stand erhoben am $(date '+%d.%m.%Y %H:%M'))" +echo + +echo "### Rollen laut llama-swap (:8080)" +curl -sf -m 10 http://127.0.0.1:8080/v1/models 2>/dev/null \ + | python3 -c 'import json,sys +for m in json.load(sys.stdin).get("data", []): + print("-", m.get("id"))' 2>/dev/null || echo "(llama-swap nicht erreichbar)" +echo + +echo "### Laufende Engine(s) — Version + Startzeile" +gefunden=0 +for pid in $(pgrep -f 'llama-server' 2>/dev/null | head -3); do + exe="$(readlink -f "/proc/$pid/exe" 2>/dev/null)" || continue + [ -x "$exe" ] || continue + ver="$("$exe" --version 2>&1 | head -1)" + echo "- PID $pid — $ver" + echo " $(tr '\0' ' ' < "/proc/$pid/cmdline" 2>/dev/null | cut -c1-320)" + gefunden=1 +done +[ "$gefunden" = 1 ] || echo "(kein llama-server aktiv — Warm-Set prüfen)" +echo + +echo "### Puls-Historie (letzte 2 Erhebungen des Trend-Radars)" +tail -2 "$STATE_DIR/trend-radar-puls-history.jsonl" 2>/dev/null || echo "(keine Historie)" +echo + +echo "### Watch-Stände (Trend-Radar-State)" +python3 -m json.tool "$STATE_DIR/trend-radar-state.json" 2>/dev/null | head -40 || echo "(kein State)" +echo + +echo "### Prüfstand: Queue + letzte Verdikte" +echo "Queue:" +ls "$STATE_DIR/pruefstand/queue" 2>/dev/null || true +echo "Fertig (Zusammenfassungen):" +for f in "$STATE_DIR"/pruefstand/done/*.json; do + case "$f" in *.spec.json) continue ;; esac + [ -f "$f" ] || continue + python3 - "$f" <<'PY' 2>/dev/null || true +import json, os, sys +d = json.load(open(sys.argv[1])) +teile = [f"{k}:{v.get('bestanden')}/{v.get('gesamt')}" + for k, v in d.get("zusammenfassung", {}).items()] +print(f"- {os.path.basename(sys.argv[1])} ({d.get('erhoben', '?')}): " + " ".join(teile)) +PY +done +echo + +echo "### Ressourcen" +free -g | sed -n '2p' +df -h /srv 2>/dev/null | tail -1 +df -h / | tail -1 +echo + +echo "### Fehlerbild (best effort)" +tail -5 "$HOME/.hermes/logs/monitoring/error_history.csv" 2>/dev/null || true +journalctl --user -u hermes-gateway --since '-7 days' -p warning --no-pager 2>/dev/null | tail -5 || true +echo + +echo "### Nachschlagewerke für den Abgleich (per file_read bzw. Browser lesen)" +echo "- Verdikte (NICHT neu aufrollen, außer Faktenlage messbar neu): $MC/docs/wissen/VERDIKTE.md" +echo "- Watch-Liste (was mechanisch schon überwacht wird): $MC/deploy/trend-radar-watchlist.json" +echo "- Community-Messwerte unserer Hardware: https://github.com/hogeheer499-commits/strix-halo-guide" diff --git a/deploy/stack-rundumschlag-prompt.md b/deploy/stack-rundumschlag-prompt.md new file mode 100644 index 0000000..cc2a2de --- /dev/null +++ b/deploy/stack-rundumschlag-prompt.md @@ -0,0 +1,33 @@ +# Stack-Rundumschlag — Auftrag (monatlich am 4., 06:40) + +Du bist Lucys monatlicher Rundumschlag: EIN freier Blick über den ganzen Stack. +Die mechanischen Wächter prüfen Bedingungen (neuer Release? Issue zu? HF-Trending?) — +DU suchst, was durch dieses Raster fällt: Stealth-Updates ohne Versionssprung, +still ausgetauschte Gewichte, neue Verfahren (Spec-Decoding, Kernels, Quant-Formate), +frische Community-Messwerte auf unserer Hardware (Strix Halo / Radeon 8060S, 122 GB unified). +Lehrbeispiel: Googles Gemma-4-Update vom 15./16.07.2026 kam OHNE Versionssprung — +kein Wächter schlug an, erst freie Recherche fand es. + +Vorgehen: + +1. Lies den BEFUND unten: das ist der IST-Stand (Rollen, Engine, Puls, Watch-Stände, + Prüfstand, Ressourcen, Fehlerbild). Auffälligkeiten darin gehören in den Bericht. +2. Recherchiere im Web (Browser-Werkzeug) TAGESAKTUELL zu jedem Baustein: + - die Rollen-Modelle aus dem Befund (Familien: Qwen, GLM, …) — Refreshes, Nachfolger, + still neu hochgeladene GGUFs, + - llama.cpp (neue Builds/Features seit dem Engine-Stand im Befund), + - ROCm und Vulkan auf Strix Halo (gfx1151), + - Zed + OpenCode (IDE-Welt am PC), Electron (Lucy-Shell am PC), pocket-tts (Stimme). + Suchmuster: „ update stealth refresh performance ". +3. Gleiche jeden Fund mit den Verdikten ab (Pfad im Befund): Entschiedenes NICHT neu + aufrollen — AUSSER die Faktenlage hat sich messbar geändert; dann genau DAS melden, + mit dem alten Verdikt daneben. +4. Bericht in Lucys Stimme, kompakt (höchstens 15 Sätze): + (a) Neues draußen, jeweils mit Datum + Quelle, + (b) Auffälligkeiten im IST-Stand (Puls-Drift, Fehlerbild, volle Platte …), + (c) HÖCHSTENS 3 Empfehlungen — jede mit einem Satz Beleg und dem nächsten Schritt + („Prüfstand-Kandidat einreihen", „Engine-A/B abwarten", „Karte anlegen", + „Handarbeit am PC"). +5. NICHTS selbst umsetzen, nichts installieren, keine Configs anfassen — du empfiehlst, + der Commander entscheidet per Klick. Verdient ein Fund einen Prüfstand-Test, sag es + ausdrücklich; die Spec legt der Commander oder ein Folgeauftrag an.