#!/usr/bin/env bash # Feed für den Traum-Cron (Dreaming / Continual-Learning-Kreislauf, Phase 2 — Capstone). # Zwilling von radar-feed.sh (Blick nach draußen) und selbstkritik-feed.sh (Blick auf den # Betrieb); der Traum blickt auf das GELERNTE: Sessions, Skills, Gedächtnis, Muster. # Liegt in ~/.hermes/scripts/ (deploy.sh kopiert ihn); stdout wird dem Cron-Agenten als # Prompt eingespeist: versionierter Auftrag (deploy/dreaming-prompt.md) + Live-Schlaf-Daten. set -uo pipefail VAULT="$HOME/wissens-vault" # --- Vault-Bootstrap (idempotent): eigenes git-Repo, menschenlesbar, NICHT im Stack-Code. --- if [ ! -d "$VAULT/.git" ]; then mkdir -p "$VAULT/traeume" "$VAULT/muster" "$VAULT/skill-kandidaten" git -C "$VAULT" init -q 2>/dev/null || true # Lokale Identität nur setzen, falls global keine da ist (Commits sollen nie scheitern). git -C "$VAULT" config user.email >/dev/null 2>&1 || git -C "$VAULT" config user.email "lucy@box.local" git -C "$VAULT" config user.name >/dev/null 2>&1 || git -C "$VAULT" config user.name "Lucy (Traum)" if [ ! -f "$VAULT/INDEX.md" ]; then cat > "$VAULT/INDEX.md" <<'EOF' # Wissens-Vault — Navigationskarte Menschenlesbare, git-versionierte Wissensschicht NEBEN dem Live-Gedächtnis (Mem0). Angelegt von Lucys nächtlichem Traum. Verlinkung im Obsidian-Stil `[[dateiname]]`. ## Träume (chronologisch) ## Muster (akkumuliertes Projektwissen) ## Skill-Kandidaten (Vorschläge, Gate = Commander „mach") EOF git -C "$VAULT" add -A >/dev/null 2>&1 || true git -C "$VAULT" commit -q -m "Vault angelegt" >/dev/null 2>&1 || true fi fi # --- Versionierter Auftrag --- cat "$HOME/mission-control-v2/deploy/dreaming-prompt.md" echo echo "## SCHLAF-DATEN (automatisch erhoben am $(date '+%d.%m.%Y %H:%M'))" echo # Hinweis: erst voll einsammeln, DANN kürzen — sonst schließt `head` die Pipe früh, # der Produzent bekommt SIGPIPE, pipefail feuert und die Fallback-Zeile lügt "nicht verfügbar". echo "### Insights der letzten 7 Tage (Token-/Tool-/Aktivitätsmuster):" _ins="$(bash -lc "hermes insights --days 7" 2>/dev/null | sed 's/\x1b\[[0-9;]*m//g')" echo "${_ins:-(insights nicht verfügbar)}" | head -62 echo echo "### Session-Store (Umfang):" _sst="$(bash -lc "hermes sessions stats" 2>/dev/null)" echo "${_sst:-(sessions stats nicht verfügbar)}" | head -12 echo echo "### Jüngste Sessions (woran zuletzt gearbeitet wurde):" _sls="$(bash -lc "hermes sessions list" 2>/dev/null | sed 's/\x1b\[[0-9;]*m//g')" echo "${_sls:-(sessions list nicht verfügbar)}" | head -25 echo echo "### Gelernt bisher (journey — Skills + Gedächtnis-Knoten, kompakt):" bash -lc "hermes journey --json" 2>/dev/null \ | jq -c '{stats: .stats, skills: ([.nodes[]? | select(.kind=="skill" or .type=="skill") | .label // .name] | .[0:25]), cluster_labels: ([.clusters[]?.label] | .[0:15])}' \ 2>/dev/null || echo "(journey nicht verfügbar)" echo echo "### Curator / Skill-Hygiene (was brachliegt, was aktiv ist):" bash -lc "hermes curator status" 2>/dev/null | head -26 || echo "(curator status nicht verfügbar)" echo echo "### Bisheriger Vault-INDEX (nur zur Ansicht — damit du nichts doppelt anlegst + verlinken" echo "### kannst). Die echte Datei liegt unter ~/wissens-vault/INDEX.md; zwischen den Markern" echo "### steht ihr AKTUELLER Inhalt. Kopiere die Marker NICHT in die Datei zurück." echo "<<>>" cat "$VAULT/INDEX.md" 2>/dev/null | head -120 || echo "(noch kein INDEX — beim ersten Traum anlegen)" echo "<<>>" echo echo "### Letzte 3 Traum-Notizen (nur Briefing — NICHT in den INDEX kopieren):" ls -1t "$VAULT/traeume/"*.md 2>/dev/null | head -3 | while read -r f; do echo " $(basename "$f"): $(head -1 "$f" 2>/dev/null)" done