diff --git a/deploy/deploy.sh b/deploy/deploy.sh index f620067..8163003 100644 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -76,6 +76,8 @@ mkdir -p "$HOME/.hermes/scripts" cp "$SRC/deploy/radar-feed.sh" "$HOME/.hermes/scripts/radar-feed.sh" # Selbstkritik-Cron (Faden 11b): Zwilling des Radars, Blick nach INNEN (Latenzen/Journal/Skills). cp "$SRC/deploy/selbstkritik-feed.sh" "$HOME/.hermes/scripts/selbstkritik-feed.sh" +# Monats-Review-Wrapper (Cron 1. d. M. 09:00): Radar + Selbstkritik in EINEM Lauf. +cp "$SRC/deploy/radar-selbstkritik-wrapper.sh" "$HOME/.hermes/scripts/radar-selbstkritik-wrapper.sh" # Traum-Cron (Dreaming, Phase 2): Blick auf das GELERNTE → Wissens-Vault. Bootstrappt ~/wissens-vault. cp "$SRC/deploy/dreaming-feed.sh" "$HOME/.hermes/scripts/dreaming-feed.sh" # Fremdblick-Helfer: Ein-Schuss-Zweitmeinung von einem anderen Modell (umgeht 64K-Delegations-Floor). @@ -87,7 +89,7 @@ cp "$SRC/deploy/chef-gutachter-feed.sh" "$HOME/.hermes/scripts/chef-gutachter-fe # Release-Radar-Cron (10.07.2026): hält neue hermes-agent-Releases wöchentlich gegen die # Eigenbau-Landkarte im Wissens-Vault ("mehr Hermes nativ, weniger Eigenkreationen"). cp "$SRC/deploy/hermes-release-radar-feed.sh" "$HOME/.hermes/scripts/hermes-release-radar-feed.sh" -chmod +x "$HOME/.hermes/scripts/fremdblick.sh" "$HOME/.hermes/scripts/dreaming-feed.sh" "$HOME/.hermes/scripts/worker.sh" "$HOME/.hermes/scripts/chef-gutachter-feed.sh" "$HOME/.hermes/scripts/hermes-release-radar-feed.sh" +chmod +x "$HOME/.hermes/scripts/fremdblick.sh" "$HOME/.hermes/scripts/dreaming-feed.sh" "$HOME/.hermes/scripts/worker.sh" "$HOME/.hermes/scripts/chef-gutachter-feed.sh" "$HOME/.hermes/scripts/hermes-release-radar-feed.sh" "$HOME/.hermes/scripts/radar-selbstkritik-wrapper.sh" # Werkstatt-Skill (Autonomie E6): Selbstwartungs-Kreislauf für Hermes. mkdir -p "$HOME/.hermes/skills/wartung" cp "$SRC/deploy/skills/wartung/SKILL.md" "$HOME/.hermes/skills/wartung/SKILL.md" @@ -126,10 +128,10 @@ systemctl --user enable mem0-service >/dev/null 2>&1 || true systemctl --user enable voice-service >/dev/null 2>&1 || true systemctl --user enable hermes-builtin-ui >/dev/null 2>&1 || true systemctl --user enable --now mc2-backup.timer >/dev/null 2>&1 || true -# mc2-autoupdate.timer wird BEWUSST NICHT enabled (User-Entscheid 04.07.2026: Updates nur -# bestätigt). Die frühere enable-Zeile hier hat den Entscheid bei jedem Deploy still -# rückgängig gemacht (aufgefallen 09.07. nach der Annahme-Kaskade). Wer Auto-Updates will: -# einmalig manuell `systemctl --user enable --now mc2-autoupdate.timer`. +# mc2-autoupdate.timer wird hier BEWUSST NICHT geschaltet — der Zustand wird nur von Hand +# geändert (Lehre 09.07.: die frühere enable-Zeile hat einen User-Entscheid bei jedem Deploy +# still rückgängig gemacht). Aktueller User-Entscheid (10.07.2026): Timer ist AN — +# Router/Engine/Hermes dürfen So 04:30 automatisch (Fangnetz Backup→Postcheck→Rollback+Pin). systemctl --user enable --now mc2-selfsmoke.timer >/dev/null 2>&1 || true loginctl enable-linger "$USER" >/dev/null 2>&1 || true # Mem0-Sidecar VOR dem Backend (re)starten, damit /api/memory sofort bedient wird. diff --git a/deploy/radar-selbstkritik-wrapper.sh b/deploy/radar-selbstkritik-wrapper.sh new file mode 100755 index 0000000..87eafad --- /dev/null +++ b/deploy/radar-selbstkritik-wrapper.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# Wrapper: Evolution-Radar + Selbstkritik zusammen +# Wird vom Hermes-Cron "Monats-Review" (1. des Monats, 09:00) als --script referenziert. +# Ins Repo geholt 10.07.2026 (Übergabe S1) — lag vorher NUR auf der Box. +set -uo pipefail +echo "==============================" +echo "## EVOLUTION-RADAR" +echo "==============================" +"$HOME/.hermes/scripts/radar-feed.sh" +echo +echo "==============================" +echo "## SELBSTKRITIK" +echo "==============================" +"$HOME/.hermes/scripts/selbstkritik-feed.sh" diff --git a/docs/GEMINI_BRIEFING.md b/docs/GEMINI_BRIEFING.md new file mode 100644 index 0000000..219ae7c --- /dev/null +++ b/docs/GEMINI_BRIEFING.md @@ -0,0 +1,84 @@ +# GEMINI-BRIEFING — Notfall- & Review-Partner für dieses System + +_Für: Gemini via Google Antigravity (F:\-Checkout dieses Repos). Geschrieben 10.07.2026 +in der Übergabe-Session, als das Claude-Abo auslief. Du bist der externe Zweit-Blick — +lies das hier KOMPLETT, bevor du irgendetwas empfiehlst oder änderst._ + +## Deine Rolle (User-Entscheid, bewusst eng) + +**Notfall + Außen-Review. KEIN Großbau-Partner.** +Den Alltag (Features bauen, Wartung, Ideen umsetzen) macht die Box selbst über ihre +Queue→Karte→Klick-Pipeline. Du wirst gerufen, wenn: + +1. **Notfall** — etwas ist kaputt und die Box kann sich nicht selbst heilen. +2. **Außen-Review** — ein Fremd-Blick auf Code/Architektur ist gewünscht + (das hast du am 05.07.2026 schon einmal sehr gut gemacht: 0 halluzinierte Funde). + +Der User ist **kein Entwickler** (GUI-first, Terminal = Fremdkörper, Deutsch). Er kann dir +keine technischen Rückfragen beantworten — formuliere Optionen so, dass er mit +Ja/Nein/Klick entscheiden kann. Details: `docs/wissen/ARBEITSWEISE.md`. + +## Pflicht-Lektüre in dieser Reihenfolge + +1. `AGENTS.md` — verbindliche Projekt-Regeln (dist committen, Deploy-Weg, Deutsch-Regel …). +2. `docs/wissen/` — die kuratierte Projekt-Wahrheit: + [ZIELBILD](wissen/ZIELBILD.md) · [ARBEITSWEISE](wissen/ARBEITSWEISE.md) · + [STACK](wissen/STACK.md) · [VERDIKTE](wissen/VERDIKTE.md) · + [FALLEN](wissen/FALLEN.md) · [OFFENE-FAEDEN](wissen/OFFENE-FAEDEN.md). +3. Für Reviews zusätzlich: `docs/ANTIGRAVITY_REVIEW.md` (dein Review-Prompt) und + `SAVEPOINT.md` (Snapshot vom 05.07. — bei Widerspruch gewinnt `docs/wissen/STACK.md`). + +## Was das System ist (ein Absatz) + +Eine 100 % lokale KI-Appliance („die Box", AMD Strix Halo, 128 GB) mit llama.cpp-Vulkan + +llama-swap als Engine, Hermes-Agent als Runtime (Persona „Lucy"), MC2 (dieses Repo: FastAPI ++ React) als Web-Admin-Konsole, Mem0 als Gedächtnis, und einer Electron-Voice-Begleiterin +„Lucy" auf dem Windows-PC (EIGENES Repo `F:\Coding Stuff\lucy`). Die Box wartet sich selbst +(nächtliche Crons: Traum, Chef-Gutachter, Radar; Backups in 3 Schichten; Auftragsbuch mit +Ein-Klick-Annahme). Der Mensch ist das Gate für jede Code-Zeile. + +## Harte Leitplanken (nicht verhandelbar) + +- **Verdikte nicht neu aufrollen** ohne Messung/neuen Anlass — `docs/wissen/VERDIKTE.md`. + Insbesondere: keine Cloud, kein Rewrite, keine schweren Frameworks, kein Engine-Wechsel + ohne Bench, Hermes-Quellcode nie forken. +- **Security-Config (approvals/Tokens/ufw/sudoers) nur MELDEN, nie ändern.** +- **`frontend/dist` ist ABSICHT im Git** (Box hat kein Node) — kein Fehler. +- **Propose-only:** Änderungen als Branch/Diff vorschlagen; Merge+Deploy läuft über das + Auftragsbuch (User-Klick) oder ein explizites User-Ja. +- **Verifizieren vor Behaupten:** Behauptungen über Live-Verhalten nur nach echter Messung + auf der Box. Am 07.07. hat ein Gemini-Umbau Lucys STT still von Box-Parakeet auf + einkernigen PC-Whisper umgestellt und das Gegenteil behauptet — die Messung entlarvte es. + Das darf nicht wieder passieren: sag ehrlich, was du getestet hast und was nicht. +- Alles User-Sichtbare auf **Deutsch**. + +## Notfall-Playbook (wenn du als Feuerwehr gerufen wirst) + +1. **Erst Zustand lesen, nichts anfassen:** + `ssh hitonabi@192.168.178.151` · `curl -s http://127.0.0.1:9001/api/health` · + `export XDG_RUNTIME_DIR=/run/user/$(id -u); systemctl --user status` · + `journalctl --user -u -n 100`. Alle IPs/Ports/Dienste: `docs/wissen/STACK.md`. +2. **Die Box hat Selbstheilungs-Netze — nutze sie, bevor du selbst baust:** + Zeitmaschine/Restore (`bash deploy/restore.sh --list`), Pin-Register + (`/srv/models/mc2-pins.json`), PBS-Backups, `docs/RUNBOOK.md` (Mensch-Anleitung), + `docs/DISASTER_RECOVERY.md` (Bare-Metal). +3. **Bekannte Stolperfallen zuerst prüfen** (`docs/wissen/FALLEN.md`): deploy.sh-Selbst-Reset, + leeres Warm-Set nach Config-Reload, XDG_RUNTIME_DIR, CRLF, stale index.lock, 64k-Floor. +4. Fix als kleinsten reversiblen Eingriff; vorher Backup (`bash deploy/backup.sh`); + danach `/api/health` + betroffene Funktion LIVE verifizieren; dem User in 2 Sätzen + auf Deutsch sagen, was war und was du getan hast. + +## Review-Playbook + +`docs/ANTIGRAVITY_REVIEW.md` als Prompt verwenden (P0–P3, „was NICHT ändern", Deutsch). +`.aiexclude` hält venv/node_modules/dist aus dem Kontext. Befunde mit `datei:zeile` + +konkretem Fehlszenario; bewusste Entscheidungen (dist im Git, flache JSON-Stores, +sync-Subprozesse, User-Units statt sudo) NICHT als Fehler werten. + +## Wo du NICHT ran sollst + +- `~/.hermes/config.yaml`-Security-Keys, ufw, sudoers, Tokens (nur melden). +- Lucys Voice-Lane-Diät (`platform_toolsets.api_server`) und das Warm-Set/brains — + Lucys ~1-s-Sprech-Latenz ist heilig. +- llama-swap-Neustarts ohne Not (Warm-Set weg = Lucy stumm/langsam). +- Der Wissens-Vault (`~/wissens-vault/`) gehört Lucys Lernkreislauf — lesen ja, umbauen nein. diff --git a/docs/RUNBOOK.md b/docs/RUNBOOK.md index a586905..5f99cea 100644 --- a/docs/RUNBOOK.md +++ b/docs/RUNBOOK.md @@ -11,7 +11,7 @@ höchstens „mach". Dieses Blatt ist NUR für den Fall, dass etwas klemmt. | „… zurückgerollt … GEPINNT" | Update war schlecht, alte Version läuft wieder | keiner (läuft stabil weiter) | | „KRITISCH: …" | Update UND Rollback kaputt | siehe „Box tot?" unten | | „🛰️ Evolution-Radar …" | monatlicher Chancen-Report | lesen; bei Interesse „mach" antworten | -| „[Werkstatt] … merge oder verwerfen?" | Box hat einen Fix vorbereitet | mit „merge" oder „verwerfen" antworten | +| „[Werkstatt] … Vorschlag liegt bereit" | Box hat einen Fix vorbereitet | im Web-UI → **Auftragsbuch** → Karte ansehen → „Annehmen" oder „Ablehnen" klicken | ## Box tot / Weboberfläche weg? @@ -30,8 +30,12 @@ höchstens „mach". Dieses Blatt ist NUR für den Fall, dass etwas klemmt. ## Automatik-Fahrplan (läuft ohne dich) -- **Täglich 03:30** Backup · **So 04:30** Auto-Update (Router→Engine→Hermes) mit Rollback+Pin -- **Monatlich 1., 09:00** Evolution-Radar-Report auf Telegram +- **Nachts:** 03:15 Traum (Wissens-Vault) · 03:30 Backup · 03:50 PBS-Backup · + 04:30 Chef-Gutachter (Morgenlage) · 07:15 Selbsttest · 08:00 Daily-Briefing +- **So 04:30** Auto-Update (Router→Engine→Hermes) mit Rollback+Pin-Fangnetz (dein Ok 10.07.; + manuell geht's jederzeit über den Wartungs-Drawer) +- **Mo 05:15** Release-Radar (Hermes-Neuerungen) · **Monatlich 1., 09:00** Monats-Review + (Evolution-Radar + Selbstkritik) auf Telegram ## Pinnwand: eine Ebene ist „GEPINNT" — was heißt das? @@ -42,14 +46,29 @@ ein STABILER Dauerzustand, kein Fehler. Pin ansehen / lösen (per SSH): jq 'del(.hermes)' /srv/models/mc2-pins.json > /tmp/p && mv /tmp/p /srv/models/mc2-pins.json # (statt .hermes: .engine oder .swap) — nächster So-Lauf versucht das Update erneut -## Einmalige sudo-Session (steht noch aus — schaltet Engine/Router-Auto-Update frei) +## Wann Gemini rufen (der Notfall- und Review-Partner) - ssh hitonabi@192.168.178.151 - sudo install -m 0440 -o root -g root ~/mission-control-v2/deploy/sudoers-mc2-autonomie /etc/sudoers.d/mc2-autonomie && sudo visudo -c - sudo apt-get install -y unattended-upgrades && sudo dpkg-reconfigure -plow unattended-upgrades - sudo systemctl disable --now mission-control.service # alte v1-Leiche entfernen +Seit dem Claude-Abo-Ende ist **Gemini (in der Antigravity-App am PC)** dein externer Helfer. +Du brauchst ihn NUR in zwei Fällen — den Alltag macht die Box selbst: -Bis dahin meldet der So-Lauf Engine/Router-Updates nur („wartet — sudo-Freischaltung fehlt"). +1. **Notfall:** Die Box ist kaputt UND die Schritte unter „Box tot?" (oben) haben nicht + geholfen — oder Lucy/Telegram melden wiederholt „KRITISCH". +2. **Außen-Review:** Du willst einen Fremd-Blick auf die Arbeit der Box (z. B. alle paar + Monate oder vor einem großen Umbau). + +**So rufst du ihn:** Antigravity öffnen → Projektordner `F:\Coding Stuff\mission-control-2` +→ als erste Nachricht schreiben: **„Lies docs/GEMINI_BRIEFING.md und dann [dein Problem]."** +Für ein Review stattdessen: „Lies docs/GEMINI_BRIEFING.md und führe das Review aus +docs/ANTIGRAVITY_REVIEW.md durch." + +**Grenzen (stehen auch in seinem Briefing):** Gemini schlägt vor, DU klickst/entscheidest. +Er darf Security-Sachen nur melden, nie ändern. Wenn er etwas über die Box behauptet, +darf er es nur nach echtem Test behaupten — im Zweifel nachfragen „hast du das gemessen?". + +## Einmalige sudo-Session — ✅ erledigt (02.07.2026) + +Sudo-Freischaltung für Engine/Router-Updates, unattended-upgrades und v1-Aufräumen sind +durch (`/etc/sudoers.d/mc2-autonomie` liegt). Nichts mehr zu tun. ## Nützliche Handgriffe (SSH) diff --git a/docs/memory/project-hermes-setup.md b/docs/memory/project-hermes-setup.md index 42dff4e..834b593 100644 --- a/docs/memory/project-hermes-setup.md +++ b/docs/memory/project-hermes-setup.md @@ -1,3 +1,7 @@ +> ⚠️ **TEILS VERALTET (Juni 2026, Archiv).** Aktueller Hermes-Stand (v0.18.2, delegation, +> Toolset-Diät, Desktop): [docs/wissen/STACK.md](../wissen/STACK.md) + +> [docs/wissen/FALLEN.md](../wissen/FALLEN.md). Der Zwei-Ebenen-Toolset-Gotcha hier gilt weiter. + --- name: project-hermes-setup description: "Hermes Agent — vollständige Verdrahtung, MCP-Server, Telegram, PC-Executor (Stand 2026-06-27)" diff --git a/docs/memory/project-mc2-architecture.md b/docs/memory/project-mc2-architecture.md index a67f072..e15ffad 100644 --- a/docs/memory/project-mc2-architecture.md +++ b/docs/memory/project-mc2-architecture.md @@ -1,3 +1,7 @@ +> ⚠️ **TEILS VERALTET (Juni 2026, Archiv).** Aktuelle Dienste/Ports/Modelle: +> [docs/wissen/STACK.md](../wissen/STACK.md) · Fallen: [docs/wissen/FALLEN.md](../wissen/FALLEN.md). +> Die Schichten-/Key-File-Übersicht hier stimmt im Kern noch. + --- name: project-mc2-architecture description: "MC2 Architektur — Schichten, Key-Files, API-Endpunkte, wichtige Eigenheiten" diff --git a/docs/memory/project-pending-tasks.md b/docs/memory/project-pending-tasks.md index a76cd5c..85b7ebb 100644 --- a/docs/memory/project-pending-tasks.md +++ b/docs/memory/project-pending-tasks.md @@ -1,3 +1,6 @@ +> ⚠️ **VERALTET (Stand 27.06.2026, Archiv).** Die einzige gepflegte Liste offener Punkte ist +> [docs/wissen/OFFENE-FAEDEN.md](../wissen/OFFENE-FAEDEN.md). + --- name: project-pending-tasks description: Offene Tasks und bekannte Baustellen im MC2-Projekt (Stand 2026-06-27) diff --git a/docs/memory/project-stack-state.md b/docs/memory/project-stack-state.md index cae71da..347b4ae 100644 --- a/docs/memory/project-stack-state.md +++ b/docs/memory/project-stack-state.md @@ -1,3 +1,6 @@ +> ⚠️ **VERALTET (Stand 27.06.2026, Archiv).** Die aktuelle, live-verifizierte Wahrheit +> steht in [docs/wissen/STACK.md](../wissen/STACK.md). Diese Datei nur noch als Historie lesen. + --- name: project-stack-state description: "Aktueller Stand des MC2-Projekts — Infrastruktur, Modelle, Dienste, Git-State (Stand 2026-06-27)" diff --git a/docs/wissen/ARBEITSWEISE.md b/docs/wissen/ARBEITSWEISE.md new file mode 100644 index 0000000..7962cd2 --- /dev/null +++ b/docs/wissen/ARBEITSWEISE.md @@ -0,0 +1,61 @@ +# Arbeitsweise — wer der User ist und wie hier gearbeitet wird + +_Kuratiert 10.07.2026. Gilt für JEDEN Agenten, der an diesem System arbeitet +(Box-Hermes, Hermes Desktop, Gemini/Antigravity, künftige)._ + +## Der User (Hitonabi / „Commander") + +- **Kein Software-Entwickler.** Selbstbild: „ich mache keine Updates". Er fasst keine + Konsole an und drückt keine Update-Knöpfe — alles muss ohne ihn funktionieren oder + per Knopf/Lucy/Telegram bedienbar sein. +- **GUI-first / „klicki bunti":** visuelle, klickbare Oberflächen sind sein Geschmack; + Terminal-Lösungen sind Fremdkörper. Sein Referenz-Erlebnis ist der + Antigravity-Agent-Manager-Stil: Aufträge verteilen, Agenten zuschauen, Diffs abnicken. +- **Produkt-Instinkt ernst nehmen:** seine „naiven" Fragen treffen oft den Kern + (Marketing-Filter → Fan-out-Kritiker; „alles autonom" → Appliance-Prinzip; + „Update verpassen?" → Radar). Vorschläge ernsthaft prüfen, nie abtun. +- Sprache: **Deutsch**, locker, direkt. Lucy nennt ihn „Commander". +- **Nordstern (wörtlich):** „Das komplette System muss AUTONOM funktionieren — in 6 Monaten + ohne Claude darf nichts brachliegen." Robustheit/Autonomie schlägt Features. + +## Die nicht verhandelbaren Regeln + +1. **Verifizieren vor Behaupten.** Vor jeder Aussage/Änderung auf der Box messen + (SSH, Logs, curl, bench) statt aus Doku/Memory/Web zu schließen. Der Agenten-Erzählung + (auch der eigenen) nie glauben — Transcripts, worker.log, git-Status sind Beweise. + Mehrere erste Befunde kippten erst bei sauberer Gegenprobe. +2. **Scope challengen.** Ein Tool-/Technik-Vorschlag (auch vom User) ist kein + Umsetzungsbefehl: erst Use-Case klären, bei erkennbarer Fehlannahme kurz stoppen und + warnen. Lehrbuch-Best-Practice ≠ unser Use-Case (Beispiele: LobeChat, Tool Search). +3. **Propose-only + Mensch-Gate.** Jede Code-Zeile ist Klick-pflichtig (Auftragsbuch-Karte). + Merge/Deploy NIE ohne grünes Gate. Bagatell-Klassen ohne Klick sind ausschließlich: + Doku/Wiki/Vault/Chronik/tote Dateien — nichts mit Code-Logik, immer Morgenlage-Bericht. +4. **Security-Config NIE ohne explizites User-Ja** (approvals, Tokens, ufw, sudoers, + command_allowlist). Direkt-Push auf main braucht ebenfalls ein explizites Ja. +5. **Fremd-Modell-Kritiker als Korrektiv.** Wer baut, benotet nicht selbst. + Zwei-Kritiker-Gate (Coder-Next + GLM), Urteil nach der Regel + **REPRODUZIERT-ODER-ABGELEHNT** — Freispruch nur mit belegtem Vorher/Nachher. +6. **Hermes-first vor Eigenbau.** Vor jedem Neubau prüfen, ob Hermes es nativ kann + (Eigenbau-Landkarte im Vault → `hermes --help`); Befund in den Vorschlag schreiben. + Hermes-Quellcode wird NIE gepatcht/geforkt. +7. **Alles reversibel:** Branch + Backup + Zeitmaschine + Pin-Register. Nichts bauen, + was Lucys ~1-s-Sprech-Latenz oder das Warm-Set gefährdet. +8. **Deutsch für alles User-Sichtbare** (Meldungen, Skills, Summaries, Karten). + Erste Zeile von Meldungen idealerweise: „Musst du etwas tun? NEIN/JA: …" + +## Rollen-Abgrenzung der Türen + +- **Lucy (Electron-App)** = Zuruf, Voice, Begleitung — schlanke api_server-Lane, nicht mästen. +- **Hermes Desktop** = Arbeit: Projekte, Coding, Review, lange Threads (cli-Lane). + Faustregel: „Repo oder >2 Minuten → Desktop". +- **Telegram** = mobil + Melde-/Freigabe-Kanal (Alarmkette, Cron-Delivery). +- **MC2-Web-UI** = Verwaltung, Auftragsbuch (Karten-Klicks), Chronik/Zeitmaschine, Wissen. +- **Gemini/Antigravity** = Notfall + Außen-Review, siehe [GEMINI_BRIEFING](../GEMINI_BRIEFING.md). + +## Wissens-Orte + +- `docs/wissen/` (dieses Verzeichnis) = kuratierte Projekt-Wahrheit für alle Agenten. +- `AGENTS.md` (beide Repos) = verbindliche Bau-Regeln je Repo (lesen Zed/Kilo/Hermes nativ). +- `~/wissens-vault/` = Lucys Lernschicht (Träume, Radar, Eigenbau-Landkarte) — git-versioniert, + im MC2-UI als Wissens-Tab. +- Mem0 (`:8765`) = das LIVE-Gedächtnis (auto-lernend, semantisch) — kein Ablageort für Doku. diff --git a/docs/wissen/FALLEN.md b/docs/wissen/FALLEN.md new file mode 100644 index 0000000..4f07e26 --- /dev/null +++ b/docs/wissen/FALLEN.md @@ -0,0 +1,121 @@ +# Betriebs-Fallen — hart erarbeitet, nicht nochmal reintreten + +_Kuratiert 10.07.2026. Jede Falle hat hier mindestens einmal real Zeit gekostet. +Neue Fallen: hier eintragen, mit Datum und Symptom._ + +## Git & Deploy + +- **deploy.sh resettet sich SELBST mitten im Lauf.** Es macht früh `git reset --hard + origin/main`; bash liest aber aus dem alten File-Descriptor weiter → neue Install-Schritte + (z. B. neue `cp`-Zeilen) greifen beim ERSTEN Deploy nach der Änderung NICHT. + → deploy.sh ein ZWEITES Mal laufen lassen oder Artefakte von Hand nachinstallieren. + Danach IMMER verifizieren, dass die neuen Dateien/Units wirklich da sind. +- **deploy.sh-enable-Zeilen können User-Entscheide zurückdrehen.** Beispiel mc2-autoupdate: + „einmalig deaktiviert" wurde von jedem Deploy still re-enabled, bis die Zeile raus war. + Bei Entscheiden der Form „X bleibt aus" immer deploy.sh gegenprüfen. +- **Paralleler Git-Zugriff auf den Shared-Checkout:** Mehrere Agenten/Sessions arbeiten + zeitweise im selben `F:\`-Verzeichnis — HEAD kann unter einem wandern, uncommittete Edits + verschwinden. → Änderungen sofort committen; zum Landen auf main einen ISOLIERTEN Worktree + nutzen: `git worktree add --detach origin/main` → cherry-pick → rebase → + `git push origin HEAD:main` → Worktree weg. +- **Gitea-Push:** nur via PowerShell/GCM (Bash-Tool scheitert an der Credential-Auth); + „Failed to authenticate user" heißt oft nur „3 s warten, Retry" — Auth ist flatterhaft. + Wenn der nicht-interaktive Push hart scheitert: User pusht EINMAL interaktiv, danach geht's. +- **CRLF:** Box-git hat `core.autocrlf false` + `.gitattributes` erzwingt LF für + `*.sh/*.service/*.timer` — sonst `pipefail\r`-Abbrüche. Windows-Pipe auf die Box: + CR-Falle (`sed 's/\r$//'`). +- **Stale `index.lock`** im Box-Repo nach Deploy-Abbruch: Alter prüfen, dann löschen. +- **`hermes` ist über SSH nicht im PATH** → immer `bash -lc 'hermes …'`. + +## Box / systemd / llama-swap + +- **User-Units über SSH:** erst `export XDG_RUNTIME_DIR=/run/user/$(id -u)`, sonst sieht + `systemctl --user` nichts. +- **llama-swap:** Schutz-Key heißt **`persistent:`** — `persist:` wird still ignoriert + (dieser Tippfehler hat wochenlang den Verdrängungsschutz deaktiviert). `persistent` + schützt NUR gegen Verdrängung, NICHT gegen ttl-Selbstentladen → **jedes brains-Mitglied + braucht ttl:0.** Nach jedem Config-Reload (auch scp!) ist das Warm-Set LEER → Mini-Requests + an hermes/embed(/reranker) schicken. +- **`warmup.sh` liegt als Root-Kopie** unter `/usr/local/bin/llama-swap-warmup.sh` und wird + vom sudo-freien deploy.sh NICHT aktualisiert → nach Änderung manuell `sudo install`. +- **llama-swap NIE neustarten**, wenn es nicht sein muss (Warm-Set weg = Lucy-Latenz). +- **Nie zwei ~70-GB-Benches direkt nacheinander** (OOM-Kill beim zweiten). +- **Box ist deutschsprachig (de_DE):** jeder CLI-Output-Parser braucht `LC_ALL=C` + (apt sagt sonst „aktualisierbar von:" statt „upgradable from:"). +- **`pkill -f` über SSH matcht die eigene Remote-Shell** → Muster als `'[g]en…'` klammern. +- **Deploy restartet voice-service** → Übernacht-Jobs mit STT-QA-Gate brauchen + Wiederanlauf-Logik (Backoff-Retry im hear()-Pfad). + +## Hermes + +- **Toolsets haben ZWEI Ebenen:** aktiv = NICHT in `agent.disabled_toolsets` UND in + `platform_toolsets.`. api_server (Voice) hat eine bewusste Diät-Allowlist; + MCP-Server sind namentlich allowlistbar (Key `mcp_servers`, snake_case). + `hermes prompt-size` ist Allowlist-BLIND — echte Kontrolle nur per Live-Call. +- **`MINIMUM_CONTEXT_LENGTH = 64000`:** Modelle mit kleinerem Kontext (heavy 32k, vision 32k) + sind als delegate_task-Ziel tot — der Fehler kann STILL ausfallen. Fremd-Kritik deshalb via + fremdblick.sh (Ein-Schuss), nie via Delegation. +- **delegate_task läuft top-level IMMER background** → in `hermes -z`/Cron-Ein-Schuss stirbt + das Kind mit dem Prozess. Nur langlebige Sessions (Chat/Desktop/Telegram) profitieren. +- **Cron-Fallen:** kein TZ-Feld (next_run_at = System-TZ zum Anlege-Zeitpunkt; nach + TZ-Wechsel `cron edit --schedule ""` zum Neuberechnen) · Prompt/Positionsargumente + MÜSSEN vor die Flags · `--script` allein reicht nicht (braucht Prompt oder Skill) · + Cron-Kontext hat `HERMES_CRON_SESSION=1` und `approvals.cron_mode: deny`. +- **Feed-Skripte: Pipe + Heredoc gleichzeitig = Heredoc gewinnt stdin** → JSON via Temp-Datei + übergeben. Außerdem ehrlichen Blind-Pfad einbauen (API kaputt → „AUSGEFALLEN", nicht „0 Funde"). +- **Hooks:** Consent persistiert NUR über CLI-/Gateway-Start mit `HERMES_ACCEPT_HOOKS=1`; + `hermes hooks test` schreibt die Allowlist NICHT; Skript-Änderung invalidiert Consent (mtime). +- **GLM-Modelle sind Reasoning-Modelle:** content kommt NACH reasoning_content → + max_tokens großzügig (fremdblick: FREMDBLICK_MAXTOK bis 4500), sonst leeres Urteil. +- **Manager-Konfabulation:** Das Hirn überspringt Delegation gern „aus Bequemlichkeit" mit + erfundener Begründung („worker.sh existiert nicht"). Gegenmittel: worker.log als harter + Nachweis + Skill-Regel „du baust NICHT selbst" + Transcript prüfen, nie der Erzählung glauben. +- **Kritiker == Worker = blinder Fleck** („benotet eigene Hausaufgaben") → Zwei-Kritiker-Gate, + Urteil REPRODUZIERT-ODER-ABGELEHNT. +- **stage-vor-Diff:** untracked Dateien → `git diff origin/main` leer → Kritiker prüfen NICHTS. + Erst `git add -A`, dann `git diff --cached`, „Diff leer → STOPP". +- **Werkstatt-Gate:** `git -C ~/mission-control-v2 status --porcelain -uno` MUSS leer sein + (curl /api/health allein ist ein Loch — alter Code läuft im RAM weiter). + +## Mem0 / Gedächtnis + +- `mem0_service/requirements.txt` ist GEPINNT (wir nutzen Interna: NoThink-Swap, Roh-Chroma) — + blindes Upgrade bricht still; vorher/nachher `smoke_test.py`, Prozedur `docs/UPGRADE.md`. +- Qwen3.6 ist ein Thinking-Modell: JSON-Extraktion nur mit `enable_thinking:false` + (NoThinkLLM im Sidecar), sonst leere Extraktion. +- **Delete-Resurrection:** gelöschter Fakt kann beim nächsten learn() wieder auftauchen, + solange die Original-Nachricht in history.db liegt (mem0-Design, kein Bug). +- `sync_turn` läuft im Hintergrund → in kurzlebigen Prozessen (`hermes -z`) verpufft das + Lernen; nur langlebige Sessions lernen zuverlässig. +- Frontend: `reagraph` auf 4.22.0 gepinnt (4.23+ zieht React 19 → Crash). + +## Lucy / Windows-PC + +- **file://-Fallen im Electron-Build:** Asset-Pfade relativ; `import()` verzeiht KEINE + relativen Prefixe (onnxruntime-WASM brauchte `new URL("vad/", document.baseURI)`) — + fetch täuscht, import() nicht. +- **Lucy IMMER über `Lucy-Neustart.bat` neu starten** — hartes Kill hinterlässt + pocket_server-Waisen auf :8130 („Stimme startet nicht"); die BATs killen Waisen mit. +- `LUCY_WORKERS=2` (User-Env) — 4 Worker = ~4×1,9 GB Stimm-Modell-Kopien. +- Gerade `"` in config.ts-Prompt-Strings zerschießen den String → immer „…" nutzen. +- Zustands-Features IMMER mit sichtbarem Zustand + Sofort-Feedback bauen — der User testet + blind per Produkt-Gefühl. +- **Executor-Task** `HermesPCExecutor` läuft aus dem Repo mit pythonw → nach + executor.py-Änderung Task neu starten; Logs in `%LOCALAPPDATA%\HermesPCExecutor\`. +- **MSIX-Sandbox-Falle (Claude-Desktop-Tools):** Tools der Claude-App laufen im + MSIX-Container — Writes nach `AppData\Local\` landen in + `AppData\Local\Packages\Claude_*\LocalCache\` (Merge-Read täuscht!). Windows-Apps NIE über + Agent-Tools nach AppData installieren/verwalten; Installer startet der USER per Doppelklick. + Die Packages-Kopie ist KEINE Dublette, sondern die virtualisierte echte Install. +- **Hermes Desktop:** NIE „Update / Repair install" klicken (pullt main, desynchronisiert + das Runtime-Repo → Boot-Fehler). Bei „tot": `git status -uno` im Runtime-Repo; Fehler + stehen in `logs/bootstrap-*.log`, nicht in desktop.log. + +## Colab / Training (Mini-Stimme) + +- Live-Drive-Sync JE Epoche einbauen (Session-Tod frisst sonst das Training). +- Notebook-Zellen vor Abgabe ast-prüfen; Colab-Patches nie durch Shell-Heredocs. +- **QA-Gate für synthetische Datensätze:** jeden Clip durch STT-Roundtrip — der ungeprüfte + XTTS-Datensatz war komplett unbrauchbar (sogar whisper-medium verstand ihn falsch). +- Kokoro-Output peakt >1.0 → Peak-Normalisierung 0.95 + Onset-Trim/Fade-In gehören in + JEDE künftige KokoroTtsEngine. diff --git a/docs/wissen/OFFENE-FAEDEN.md b/docs/wissen/OFFENE-FAEDEN.md new file mode 100644 index 0000000..6701ad8 --- /dev/null +++ b/docs/wissen/OFFENE-FAEDEN.md @@ -0,0 +1,68 @@ +# Offene Fäden — DIE eine Liste + +_Stand 10.07.2026 (Übergabe-Session S1). Regel: Neues hier rein, Erledigtes hier raus, +keine zweite Liste anlegen. Verdikte werden NICHT als „offen" geführt → [VERDIKTE.md](VERDIKTE.md)._ + +## Termine (auch als Box-Reminder hinterlegt) + +- **Mo 13.07., 05:15** — erster echter Release-Radar-Cron-Lauf → Morgenlage/Chronik prüfen. +- **20.–25.07. — ROCm-Recheck** (Anlass: Ryzen-AI-Halo-Launch 06.07., ROCm 7.13 Preview). + Fragen: neue Halo-Community-Benches? llama.cpp-Issue #21284 (gfx1151-Prefill) gemerged? + kyuz0-Grid aktualisiert (kyuz0.github.io/amd-strix-halo-toolboxes)? Falls ROCm dann + Langkontext-Prefill-Bedarf trifft: NUR Hybrid für heavy/coder erwägen — + **Hirn bleibt auf Vulkan, kein Voll-Cut.** +- **hipEngine-Watch** (shisa-ai/hipEngine, natives HIP gfx1151, nur Qwen3.6, >2× Prefill): + reif genug? Dann mit `deploy/bench/brain-bench.sh` gegen Vulkan messen. + +## Das Ablösungs-Paket (Kurs, siehe [ZIELBILD.md](ZIELBILD.md)) + +- **S2 „leg los queue":** Kanban-Probe (`auto_decompose` liegt ungenutzt in der Config) → + Queue-Entscheid nativ vs. Auftragsbuch-Ausbau → Türen verdrahten (Telegram/Desktop-Idee → + Queue) → Morgenlage meldet Queue-Stand → Bagatell-Nacht-Deploy-Pfad. +- **S3 „leg los lucy-pipeline":** PC-Annahme-Weg (Auftragsbuch-Gegenstück für Lucy: + Karte → Klick = dist-Build + Neustart am PC) bauen + E2E-Beweis. Erster echter Auftrag: + **A4-Turncheck-Auswertung** (`C:\Users\TobisPC\lucy-turncheck.log` sammelt seit 07.07.; + danach HOLD_BELOW_P justieren). +- **S4 „leg los zuendung":** Idle-Radar / Fehler→Auftrag (Traum-Funde + Journal-Muster → + Queue-Kandidaten) · Großbau-Etappen-Regeln in Skills · Generalprobe ohne Claude. + +## Lucy + +- **Mini-Stimme v2:** Übernacht-Datensatz v2 (DE-Tech + EN) war für 10.07. armiert; + User-Schritte: Zip → Drive → `Lucy_Stimme_Training_v2.ipynb` auf Colab T4 → Hörtest. + Danach: Lexikon-Injektion in kokoro_server + Modell-Tausch. **pocket bleibt Default, + bis v2 den Live-Test gewinnt** (Umschalter „Neue Stimme (Mini-Lucy)" in der Steuerung). +- Saber-/XTTS-Altlasten in lucy-tts/ (untracked venvs, Datasets, tote Notebooks) — + aufräumen nur mit User-Ja (v2-Pipeline ersetzt sie). +- „Lucy light"-Experiment: ungestartet, Idee geparkt. +- Frechheit-Regler Phase 3 ist LIVE; weitere Animations-Wünsche nur auf Zuruf. +- Emotions-Stimme = Zukunftsfaden (Klon-DNA ist ruhig; warten auf Qwen-instruct-Clone o. ä.). + +## Box / MC2 (Kleinkram + Politur) + +- D16-Reste: c) System-Logs ausbauen (alle Dienste, Fehler-Filter) · e) Mem0-Dubletten + automatisch (an Curator/Selbstkritik hängen) · f) Politur (Cockpit Zone C entflechten, + Faden 6 Voice-Sidecar-Diät: Lucy-Reste aus dem Web-UI). +- C13 Bare-Metal-Bootstrap/First-Run-Wizard (Konzept: docs/DISASTER_RECOVERY.md) · + C14 sudo-Kleinkram (stale v1-Unit `mission-control.service`, alter :9000-Rest) · + C15 Docs-Refresh (README, STATUS.md, CUTOVER.md, HERMES_SETUP.md). +- Tarball-Backup-Schicht nach ~2 Wochen grüner PBS-Verifys in Rente schicken (ab ~23.07.). +- Embedding-A/B-Bench (0.6B vs 4B/8B) als ruhiger Bench-Job; Discover.ROLE_METADATA hat + für neue Rollen (kritiker/reranker) nur Fallback-Texte. +- radar-feed.sh + selbstkritik-feed.sh haben keinen EIGENEN Cron mehr (laufen im + Monats-Review-Wrapper) — Aufräum-Kandidat, bewusst liegen gelassen. +- Orchestrator-Härtungs-Kandidaten (erst beobachten, ob es wieder passiert): + Schreibziel-Pflicht /tmp/orch-/ vor jedem write_file · große Artefakte nie in die + Antwort (Output-Limit-Tod). +- Selbstkritik-Cron in die Morgenlage falten (Empfehlung steht, Eingriff braucht Ja). +- pve-root-Passwort unverändert (User-Entscheid 09.07., „nur LAN") — bei Gelegenheit ändern. + +## Beobachten (kein Handlungsbedarf) + +- Erste Nächte des neuen Stacks weiter im Blick: Traum 03:15 / Chef-Gutachter 04:30 / + Briefing 08:00 / self-smoke 07:15 — Morgenlage lesen. +- Telegram-Hänger-Verdacht: NICHT der Prompt (gecacht) — echte Verdächtige sind kalter + Cache nach Modell-Reload oder Mem0/Session-Resume beim 1. Turn; braucht echte + Telegram-Log-Messung, falls es wieder auffällt. +- GLM-4.7-Flash tauchte 08.07. ~17:00 warm auf (irgendwas nutzte den Kritiker aktiv) — + unkritisch, nicht weiter verfolgt. diff --git a/docs/wissen/README.md b/docs/wissen/README.md new file mode 100644 index 0000000..c5e5ffa --- /dev/null +++ b/docs/wissen/README.md @@ -0,0 +1,37 @@ +# docs/wissen/ — Die Wissens-Heimat für ALLE Agenten + +_Angelegt 10.07.2026 (Übergabe-Session S1). Dieses Verzeichnis ist die kuratierte Übergabe +des Claude-Projektwissens ins Repo — damit Box-Hermes, Hermes Desktop, Gemini/Antigravity +und jeder künftige Agent dieselbe Wahrheit lesen._ + +**Warum hier:** Die Box liest `~/mission-control-v2/docs/wissen/`, Antigravity liest den +`F:\`-Checkout — versioniert, deploybar, kein Agent-privates Gedächtnis. Der Wissens-Vault +(`~/wissens-vault/`) bleibt Lucys LERNSCHICHT (Träume, Radar-Funde, Eigenbau-Landkarte); +hier liegt das kuratierte PROJEKT-Wissen. + +## Die Dateien (Lese-Reihenfolge für einen frischen Agenten) + +| Datei | Inhalt | Wann lesen | +|---|---|---| +| [ZIELBILD.md](ZIELBILD.md) | Richtungs-Entscheid 10.07.: Box übernimmt alles, 4-Session-Paket | Immer zuerst — das ist der Kurs | +| [ARBEITSWEISE.md](ARBEITSWEISE.md) | Wer der User ist + die nicht verhandelbaren Arbeitsregeln | Vor JEDER Arbeit | +| [STACK.md](STACK.md) | IPs, Ports, Dienste, Modelle, Backups, Security (live verifiziert) | Vor SSH/Deploy/Config | +| [VERDIKTE.md](VERDIKTE.md) | Finale Technik-Entscheide mit Warum — NICHT neu aufrollen | Bevor man etwas "Besseres" vorschlägt | +| [FALLEN.md](FALLEN.md) | Hart erarbeitete Betriebs-Fallen (Git, Deploy, llama-swap, Hermes, Mem0, PC) | Bevor man in eine davon läuft | +| [OFFENE-FAEDEN.md](OFFENE-FAEDEN.md) | Die EINE Liste offener Punkte + Termine | Bei "was ist noch zu tun?" | + +Dazu im Repo-Wurzelverzeichnis bzw. docs/: `AGENTS.md` (verbindliche Projekt-Regeln), +`docs/GEMINI_BRIEFING.md` (Notfall-/Review-Briefing für Gemini), `docs/RUNBOOK.md` +(1-Seiten-Mensch-Anleitung), `docs/ANTIGRAVITY_REVIEW.md` (Review-Prompt). + +## Pflege-Regeln + +1. **Erledigtes raus, Neues rein** — OFFENE-FAEDEN.md ist die einzige offene Liste, + keine neuen "pending"-Dateien anlegen. +2. **Verdikte werden nur mit neuem, belegtem Anlass wieder geöffnet** (Messung, Release, + User-Entscheid) — dann in VERDIKTE.md den alten Eintrag ERSETZEN, nicht löschen. +3. **Verifizieren vor Behaupten:** Stand-Angaben tragen ein Datum; wer STACK.md ändert, + hat live auf der Box gemessen/gelesen, nicht vermutet. +4. Änderungen laufen wie alles über die Pipeline: Branch → Karte im Auftragsbuch → Klick. + Reine Doku hier gehört zu den "Bagatellen ohne Klick"-Klassen (siehe ZIELBILD.md), + erscheint aber immer in Morgenlage/Chronik. diff --git a/docs/wissen/STACK.md b/docs/wissen/STACK.md new file mode 100644 index 0000000..965f5cf --- /dev/null +++ b/docs/wissen/STACK.md @@ -0,0 +1,127 @@ +# Stack-Wahrheiten — Infrastruktur, Dienste, Modelle + +_Live gegen die Box verifiziert am **10.07.2026** (Dienste-Liste, llama-swap-Config, hermes +--version, /api/health). Bei Widerspruch zu älteren Docs (SAVEPOINT.md, docs/memory/) gewinnt +diese Datei. Wer sie ändert: erst messen, dann schreiben._ + +## Maschinen & Zugänge + +| Was | Wo | +|---|---| +| **AI Box** (Bosgame M5, Ryzen AI MAX+ 395, 128 GB unified) | `hitonabi@192.168.178.151` (SSH); Zeitzone **Europe/Berlin** | +| **Windows-PC** („Tobis PC", 9070 XT) | `192.168.178.98` — PC-Executor `:7777` (Task `HermesPCExecutor`, Bearer-Token) | +| **Proxmox** | `root@192.168.178.108:8006` (PW in Keepass) — LXCs: adguard(100), npmplus(101), netbird(102), gitea(104), PBS(105) | +| **PBS** (Proxmox Backup Server) | `192.168.178.156:8007`, Datastore `qnap` | +| **QNAP TS-228A** „TobiNAS" | `192.168.178.62` — Freigabe `/Backup` per NFSv3 exklusiv an pve | +| **Gitea** | `git.tobisniceshomelab.ddnsfree.com` (lokal `192.168.178.153:3000`); Push-to-Create AUS | + +## Repos + +- **MC2:** `F:\Coding Stuff\mission-control-2` ↔ Gitea `Hitonabi/mission-control-v2` ↔ Box + `~/mission-control-v2` (nur Branch `main`). Enthält backend, frontend (dist committet!), + Sidecars, deploy, hermes-Plugin, `client/hermes-pc`. +- **Lucy:** `F:\Coding Stuff\lucy` ↔ `Hitonabi/lucy` (privat; lucy-desktop/ + lucy-tts/). +- **Wissens-Vault:** `~/wissens-vault/` auf der Box (eigenes git; Lucys Lernschicht: + Träume, Radar-Funde, **Eigenbau-Landkarte**, Skill-Kandidaten). Im MC2-UI als Wissens-Tab. + +## Dienste auf der Box (live 10.07.2026) + +| Dienst | Port | Zweck | +|---|---|---| +| `llama-swap` (System-Dienst) | `:8080` | Modell-Router; Engine = llama.cpp **Vulkan/RADV** (`/opt/llamacpp-vulkan`) | +| `mission-control-2` (User) | `:9001` | MC2 Backend+Frontend; `/v1` = OpenAI-Gateway; `/hermes-ui/` = Desktop-Gateway-Proxy | +| `hermes-gateway` (User) | `:8642` | Hermes Agent API (Lucys Lane) | +| `hermes-builtin-ui` (User) | `:9119` (loopback) | Eingebaute Hermes-GUI; LAN-Zugang NUR via MC2-Proxy `/hermes-ui/` (statischer Token im systemd-Drop-in) | +| `mem0-service` (User) | `:8765` (loopback) | Mem0-Sidecar (Gedächtnis), Py 3.12 `~/.mem0/venv` | +| `voice-service` (User) | `:8650` | STT (Parakeet/Whisper) + Turn-Check für Lucy | +| `box-console` (User) | `:7682` | ttyd-Login-Shell hinter MC2-Proxy | + +**Stillgelegt (Diät 09.07.):** `hermes-terminal` (:7681) und `hermes-webui` (:8787) — nicht +wiederbeleben. ⚠️ User-Units per SSH nur sichtbar mit +`export XDG_RUNTIME_DIR=/run/user/$(id -u)` vor `systemctl --user`. + +## Modell-Stack (llama-swap, live 10.07.2026) + +**Warm-Set (Gruppe `brains`, swap:false, persistent:true, alle ttl 0):** +Qwen3.6-35B-A3B + Qwen3-Embedding-0.6B + Qwen3-Reranker-0.6B. Sonst NICHTS dauerhaft warm. + +| Alias/Rolle | Modell | ttl | Notizen | +|---|---|---|---| +| `hermes` + `fast` | Qwen3.6-35B-A3B (UD-Q4_K_M, MTP) | 0 | Agent-Hirn. `-c 131072 --parallel 2` → **65536/Slot**, KV **q8_0**, `--spec-draft-n-max 3` | +| `embed` | Qwen3-Embedding-0.6B (Q8_0) | 0 | Mem0-Embeddings (1024 dim) | +| `reranker` | Qwen3-Reranker-0.6B (q8_0, **Mungert-GGUF**) | 0 | Gedächtnis-Sortierer (`/v1/rerank`); Community-GGUFs liefern oft Nullscores | +| `coder` | Qwen3-Coder-Next (Q4_K_M) | 600 | 131k ctx; Werkstatt-/Orchestrator-Worker + IDE „bauen"; auch `delegation.model` | +| `heavy` | gpt-oss-120b (mxfp4) | 600 | 32k ctx! Planer/Chef-Gutachter/Radar-Analyst — nur Ein-Schuss, lädt seit der LLM-Diät in ~28 s | +| `vision` | Qwen3-VL-30B-A3B (Q4_K_M) | 900 | Augen, ON-DEMAND; Lucy-App wärmt beim Start + alle 10 min | +| `kritiker` | GLM-4.7-Flash (UD-Q4_K_XL) | 600 | Fremdblick-Prosa + Chef-Gutachter-Vertretung | +| `scout` | GLM-4.6V-Flash (Q4_K_M) | 300 | Vision+Tools-Allrounder | + +Config: `/etc/llama-swap/config.yaml` (sudo zum Schreiben). Qwen3.5-122B und VL-8B sind +ENTFERNT (07.07.) — die alten Rollback-Pfade existieren nicht mehr. +**Merkregeln:** Schutz-Key heißt `persistent:` (nicht `persist:`) · jedes brains-Mitglied +MUSS ttl:0 haben · nach JEDEM Config-Reload ist das Warm-Set leer → hermes/embed (+reranker) +per Mini-Request anwärmen (direkt curlen ist zuverlässiger als warmup.sh). + +## Hermes (Agent) + +- **v0.18.2** (git-Install `~/.hermes/hermes-agent`, Py 3.11), Config `~/.hermes/config.yaml` + (IMMER Backup vor Änderung), Persona `~/.hermes/SOUL.md` = **Lucy** (alle Kanäle, Anrede + „Commander"). +- Hirn: `model.default` UND `model.model` = `fast`. `delegation.model: coder` (seit 10.07.). +- `approvals.mode: smart`, `approvals.cron_mode: deny` · `platform_toolsets.api_server` = + Voice-Diät (NICHT mästen!) · cli-Bucket = volles Coding-Set (auch Hermes Desktop). +- MCP-Server (aus `~/mission-control-v2/mcp/`): mission-control-memory, mission-control-stack + (mcp_mc.py, 23 Tools), hermes-pc-control, hermes-web-fetch, mcp_voice (dünn, für Voice-Lane). +- **Hermes Desktop am PC:** lokales PC-Hermes mit Box-Gateway als Hirn (`:9001/v1`), Profil + `pc` für F:\-Arbeit, geteiltes Mem0 via mc2-memory-Plugin. Remote-Gateway der Box = + `http://192.168.178.151:9001/hermes-ui`. + +## Automatik-Fahrplan (was nachts von allein läuft) + +| Zeit | Was | +|---|---| +| 02:30 | PBS sichert alle Proxmox-LXCs | +| 03:15 | **Traum-Cron** (dreaming-feed.sh → Wissens-Vault, fremdblick-Gate, propose-only) | +| 03:30 | Tarball-Backup (mem0+Configs+Secrets+`~/.hermes/cron`+state → `/srv/models/mc2-backups`, 14 Tage; rsync-Spiegel → Proxmox) | +| 03:50 | PBS-Host-Backup der Box (`host/aibox`: mem0+hermes+vault+llamaswap.pxar) | +| 04:30 | **Chef-Gutachter** (gpt-oss richtet über die autonome Arbeit → Morgenlage) | +| 05:15 Mo | **Release-Radar** (hermes-Releases gegen die Eigenbau-Landkarte; erster Lauf 13.07.) | +| 07:00 | QNAP-Volume-Snapshot (7 behalten) | +| 07:15 | self-smoke (Gateway/Tools/Voice/:9119; Alarm nur bei Rot) | +| 08:00 | Daily-Briefing | +| 09:00, 1. d. M. | Monats-Review (radar-selbstkritik-wrapper.sh = Evolution-Radar + Selbstkritik) | +| So 04:30 | **Auto-Update** Router→Engine→Hermes (Fangnetz: Backup→Postcheck→Auto-Rollback+Pin) | + +**`mc2-autoupdate.timer` ist AN (User-Entscheid 10.07.,** ersetzt „nur bestätigt" vom 04.07.): +Fremd-Software-Updates (Router/Engine/Hermes) dürfen automatisch laufen; der User klickt sie +zusätzlich oft manuell im Wartungs-Drawer. deploy.sh enablet den Timer bewusst NICHT selbst — +der Schaltzustand wird nur von Hand geändert. Manueller Lauf: `bash deploy/autoupdate.sh`. +OS-Sicherheitsupdates laufen separat via unattended-upgrades. + +## Security (Stufe 0, live) + +PC-Executor nur mit Bearer `HERMES_PC_TOKEN` (fail-closed) · ufw default deny, nur +LAN→22/9001/8080 (+Alt-Port 7681) · Prompt-Injection-Guard `mcp/guard.py` (wrappt +Web-/Bildschirm-Text) · mc2-memory lernt nicht aus untrusted Turns · command_allowlist = +5 exakt gepinnte curls (fnmatch; Shell-Operatoren hart geblockt — NIE offenes `curl *`) · +Box-sudo braucht Passwort; NOPASSWD nur für update-engine/swap (`/etc/sudoers.d/mc2-autonomie`). +**Security-Config (approvals/Tokens/ufw) NIE ohne explizites User-Ja ändern.** + +## Deploy & Pipeline + +- **Standard-Weg für Box-Arbeit = Auftragsbuch:** Vorschlags-Branch auf Gitea + (`wartung/*`, `orchestrator/*`, `doku/*`, `feature/*`) → Karte in der UI → User-Klick = + Merge + Deploy + Health + Auto-Revert (detached Runner). +- Manuell: main auf Gitea pushen → `ssh … 'bash ~/mission-control-v2/deploy/deploy.sh'` + ODER `POST :9001/api/system/self-update` (restart meldet ok:false — harmlos, /api/health prüfen). +- deploy.sh macht `git reset --hard origin/main` (main MUSS vorher auf Gitea liegen) und baut + KEIN Frontend → dist lokal bauen + committen. Fallen: [FALLEN.md](FALLEN.md). + +## Backup/Restore (3 Schichten, alle live) + +1. **Tarball** täglich 03:30 → `/srv/models/mc2-backups/` + rsync-Spiegel auf Proxmox; + Restore: `bash deploy/restore.sh --list | latest` (macht vorher Sicherheits-Backup). + In der UI: Zeitmaschine (Ein-Klick-Restore). +2. **PBS** (LXCs 02:30, Box-Host 03:50), Prune 7d/4w/3m, Verify So 06:00. +3. **QNAP-Snapshots** täglich 07:00 als Ransomware-Netz. +Bare-Metal: `docs/DISASTER_RECOVERY.md`. Mensch-Anleitung: `docs/RUNBOOK.md`. diff --git a/docs/wissen/VERDIKTE.md b/docs/wissen/VERDIKTE.md new file mode 100644 index 0000000..8f3bb8a --- /dev/null +++ b/docs/wissen/VERDIKTE.md @@ -0,0 +1,91 @@ +# Finale Verdikte — nicht neu aufrollen ohne neuen, belegten Anlass + +_Kuratiert 10.07.2026 aus dem Claude-Projektgedächtnis. Jedes Verdikt trägt sein Warum und +(wo sinnvoll) die Wiedervorlage-Bedingung. Wer eines kippen will, braucht eine MESSUNG oder +einen User-Entscheid — kein „Best Practice sagt aber…" (siehe ARBEITSWEISE.md)._ + +## Richtung & Architektur + +- **MC3-Neubau VERWORFEN (03.07.), „MC2 Final" ERSETZT durch „MC2 lebt" (10.07.).** + Kein Basisstation-Neubau; seit dem Ablösungs-Entscheid wird MC2 über die + Queue→Karte→Klick-Pipeline weiterentwickelt statt eingefroren. Siehe [ZIELBILD.md](ZIELBILD.md). +- **Agent-Runtime: Hermes bleibt.** ZeroClaw-PoC gebaut + abgerissen (01.07.) — der echte + Latenz-Fix war das Hirn (gemma→Qwen3.6), nicht die Runtime. (ZeroClaw-Messwerte für den + Fall „Hermes-Latenz wird wieder Thema": `docs/ZEROCLAW_POC_RESULTS.md`.) +- **Memory-Layer: Mem0 bleibt.** Zep/Letta/Hindsight benchen höher, sind aber schwerer/teils + closed; Mem0 = beste Framework-Integration + v3-Algorithmus + läuft deployt. +- **Telegram bleibt DER Mobil-Kanal; WhatsApp VERWORFEN (09.07.).** Baileys-Bridge = Meta-ToS- + Verstoß mit Bann-Risiko auf der Privatnummer + fragiler Dauerprozess; Alarmkette/Crons sind + simple Bot-API-Calls. Neu bewerten nur bei offizieller Personal-Bot-API. +- **Multi-Profil Lucy/Werkstatt auf der Box: NICHT nötig (09.07.).** `tui_gateway` lädt hart den + `cli`-Bucket, Lucy läuft über `api_server` — die Trennung existiert auf Platform-Ebene. + (Das PC-Profil des Hermes Desktop ist ein ANDERER Fall: eigene Maschine.) +- **MoA-Preset NICHT adoptiert.** Lädt mehrere Modell-Slots parallel — RAM ist der Engpass. + Das sequenzielle Zwei-Kritiker-Gate (Coder-Next + GLM) ist E2E-bewährt und RAM-schonend. +- **worker.sh bleibt; natives `delegate_task` nur für interaktive Arbeit (10.07.).** + delegate_task kann KEINE Modellwahl pro Aufruf und läuft top-level IMMER background + (stirbt in der `-z`-Lane mit dem Prozess). `delegation.model: coder` ist live — + Fan-out funktioniert E2E in langlebigen Sessions (Desktop/Telegram/Chat). +- **Kein heavy/gpt-oss im heißen Pfad.** heavy läuft mit 32k (< Hermes-Floor 64k) und 60 GB + Kaltladen. Als Ein-Schuss-Completion (Chef-Gutachter, Radar-Analyst, Orchestrator-Planung) + ok — als delegate_task-Ziel oder Pro-Schritt-Worker nie. + +## Engine & Modelle (Box, gfx1151) + +- **Vulkan/RADV schlägt ROCm** (+12–22 % tg, Cutover 27.06., mehrfach bestätigt; Recheck-Stand + 09.07.: hält weiter, einziger ROCm-Vorteil = Langkontext-Prefill auf gpt-oss). + **Wiedervorlage: ROCm-Recheck 20.–25.07.2026** (Box-Reminder gesetzt) — falls dann Bedarf: + NUR Hybrid für heavy/coder erwägen, **das Hirn bleibt in jedem Szenario auf Vulkan.** +- **Lucys Hirn: Qwen3.6-35B-A3B mit MTP-Spec-Draft n-max 3** (+26 %; n-max 4 lohnt nicht). + KV **q8_0** (Entscheid 07.07.: Qualität > ein paar GB; der q4_k-Commit lief nie live). + `--parallel 2` = bewusster Trade (Mem0-Lernen blockiert nie den nächsten Voice-Turn). +- **coder-Lane: Qwen3-Coder-Next, FINAL** („bleiben bei dem was wir haben, nachweislich + besser"). Qwen3.6-27B dense gebencht + verworfen (tg 12,7 t/s = 4–7× langsamer). +- **hipEngine + strix-halo-toolboxes/TheRock: beobachten, nicht adoptieren.** hipEngine + (natives HIP, nur Qwen3.6, >2× Prefill) ist jung; kyuz0-Toolboxes lösen ein Problem, das + die Box nicht hat. Radar/Reminder wachen; Adoption nur nach eigenem brain-bench. +- **dist/ im Git ist ABSICHT.** Box hat kein Node; Deploy = `git reset --hard` + committetes + `frontend/dist`. NICHT gitignoren. + +## Lucy (Voice-App) + +- **Shell: Electron, nicht Tauri.** Alle harten Features (Klick-Durchlass-Overlay, Capture, + Loopback, Tray, TTS-Spawn) existieren in Electron; Tauri fehlt Region-Klick-Durchlass. +- **Stimme: pocket-tts bleibt Default, bis die Mini-Lucy (Kokoro-Finetune) den Live-Test + gewinnt.** Qwen3-TTS-1.7B (RTF ~14), Chatterbox („zu delayed"), F5 (nicht streamfähig) — + alle verworfen. Mini-Lucy v1 gewann alles Messbare (TTFB 0,45 s vs 1,72 s), scheiterte aber + am Live-K.o. „nicht multilingual" → v2-Training läuft (Stand 10.07.). Umschalter in der App. +- **STT läuft auf der BOX** (Parakeet-TDT v3, 0,3–0,8 s, praktisch fehlerfreies Deutsch), + lokaler Whisper nur als Lazy-Fallback. Gemini hatte das 07.07. still auf PC-CPU umgebaut — + zurückgedreht, Messung gewann. +- **Kein Multi-Agent in der Voice-Lane** (3× Latenz-Falle). Multi-Agent JA für Radar + (Fan-out) und Werkstatt (Worker/Reviewer). + +## Hermes-Betrieb + +- **Hermes-Quellcode NIE forken/patchen; interne Prompts bleiben ENGLISCH.** Deutsch kommt + aus SOUL.md (verifiziert); alles User-Sichtbare (Meldungen, Skills, Summaries) = deutsch. +- **Tool Search NICHT auf `on`** (steht auf `auto`, schläft de facto). Es optimiert + Cloud-Token-Kosten; wir optimieren lokale Latenz mit Prompt-Caching — `on` war gemessen + LANGSAMER (15,1 s statt 5–7 s). +- **Zed ACP / Hermes-im-Editor: NICHT machen.** Editor-Agent + Box-coder-Modell + AGENTS.md + ist der Sweet Spot; Hermes dazwischen = 70-KB-Prompt-Overhead. (Zed selbst ist inzwischen + vom PC entfernt — Hermes Desktop übernahm.) +- **`approvals.cron_mode: deny` bleibt** (Autonomie-Härtung 1c, User wählte Option A): + Gefahr-Befehle + execute_code sind im Cron-/Autonom-Kontext geblockt, interaktiv `smart`. +- **Fremd-Kritik via `fremdblick.sh`** (Ein-Schuss an leichtes Fremdmodell), NIE via + delegate_task→heavy (64k-Floor + Lade-Tod). Raster: prose=GLM-4.7-Flash (kritiker), + code=Coder-Next. Harte Regel: **REPRODUZIERT-ODER-ABGELEHNT** — Freispruch nur mit + belegtem Vorher/Nachher. +- **Erinnerungen/Wecker laufen deterministisch in UNSERER Schicht** (services/reminders.py), + bewusst ohne Hermes-cron. + +## Sonstiges + +- **LobeChat/WebUI-Ersatz verworfen** (Multi-User-Fehlpassung — Lehre: Scope challengen). +- **Smart Turn v3:** Audio LINKS padden; Output ist empirisch **P(unfertig)** — Doku behauptet + das Gegenteil. Läuft im Voice-Sidecar (/turn, ~110 ms). +- **Lokaler GPU-Klon (9070 XT):** Stack = llama.cpp-Vulkan + llama-swap, NICHT Lemonade + (deprecated Python, Server blockiert, Hybrid unsupported). Zweck/Umfang offen. +- **Aussortiert (tot):** Kyutai-Streaming-STT (nur EN/FR) · Unmute-Voll-Stack · LXC 105 (alt) · + WebUI-Update-Checks · openWakeWord (Wake-Gate ist STT-basiert). diff --git a/docs/wissen/ZIELBILD.md b/docs/wissen/ZIELBILD.md new file mode 100644 index 0000000..96934e8 --- /dev/null +++ b/docs/wissen/ZIELBILD.md @@ -0,0 +1,55 @@ +# Zielbild: Die Ablösung (Richtungs-Entscheid 10.07.2026) + +_Quelle: User-Interview in 3 Fragerunden, 10.07.2026. Überschreibt ältere Richtungs-Entscheide +(insbesondere D16 „MC2 Final/einfrieren")._ + +**Kernsatz des Users:** „Wenn ich neue Ideen habe, soll es die Box selbst machen und nicht du." + +Das Claude-Abo wird **nicht verlängert**. Danach ist **Gemini via Antigravity** der Notfall- und +Review-Partner (siehe [GEMINI_BRIEFING](../GEMINI_BRIEFING.md)). Zeitfenster unklar → knapp +planen, **jede Session hinterlässt einen sauberen Stand**. + +## Die 7 Entscheide (überschreiben ältere Verdikte!) + +1. **MC2-Freeze AUFGEHOBEN** — „Freeze aufgehoben, MC2 lebt." Die Box baut neue Features direkt + in MC2, über die Queue→Karte→Klick-Pipeline. „MC2 Final/einfrieren" (D16) ist Geschichte; + Stabilität kommt aus **Gates + Zeitmaschine**, nicht aus Stillstand. +2. **Lucy (Electron-Voice-App) lebt weiter + volle Pipeline:** Idee → Queue → PC-Hermes baut/testet + auf F:\ → Karte → Klick = dist-Build + Neustart. Der PC-Annahme-Weg (Auftragsbuch-Gegenstück + für Lucy) muss GEBAUT und E2E BEWIESEN werden (Session S3). **LucyWatchdog bleibt WEG** + (User: „brauchen wir nicht mehr" — er startet sie selbst). +3. **EINE Ideen-Queue, Türen egal** — Telegram/Desktop/MC2 münden alle dort. Mechanik: Entscheid + nach Probe — erst natives Hermes-Kanban (`auto_decompose`, liegt ungenutzt in der Config) + ernsthaft testen, dann nativ vs. Auftragsbuch-Ausbau festlegen (Hermes-first-Regel). +4. **Bau-Ambition: auch Großes versuchen** — in Etappen über Tage, rauere Qualität ok, der User + ist das Gate, die Zeitmaschine fängt. Aus Fehlversuchen lernen (Skills destillieren). +5. **Bagatellen ohne Klick** — „Harmloses darf selbst". Konservative Klassen: Doku/Wiki/Vault/ + Chronik/tote Dateien — **NICHTS mit Code-Logik; jede Code-Zeile bleibt Klick-pflichtig.** + Immer Morgenlage-Bericht + Zeitmaschine. +6. **Gemini-Rolle: Notfall + Außen-Review** — kein Großbau-Partner. Briefing-Paket liegt IM REPO + (`docs/GEMINI_BRIEFING.md`), nicht in Agent-Gedächtnissen. +7. **Wissens-Heimat für ALLE Agenten = `docs/` im MC2-Repo** (Box liest `~/mission-control-v2`, + Antigravity liest den F:\-Checkout — versioniert + deploybar). Der Vault bleibt Lucys + Lernschicht. + +## Recherche-Fundament (10.07., Web) + +Das Industrie-Muster 2026 ist exakt unsere Architektur: Issue → Agent → PR → Mensch-Gate, nie +Auto-Merge (GitHub Agentic Workflows; Stripe fährt ~1300 Agent-PRs/Woche über kontinuierliche +Pflege-Agenten aus einer Task-Queue). Lokal-Konsens: „supervised assistant" schlägt +Vollautonomie. → Uns fehlte nur die QUEUE davor + kontinuierliche Selbst-Aufträge. + +## Das Ablösungs-Paket (4 Sessions, nach Unersetzlichkeit sortiert) + +| Session | Inhalt | Stand | +|---|---|---| +| **S1 „uebergabe"** | Claude-Wissen kuratiert → docs/wissen/ · GEMINI_BRIEFING · Runbook „Wann Gemini rufen" · Termine als Box-Reminder · radar-selbstkritik-wrapper.sh ins Repo | ✅ 10.07.2026 (diese Session) | +| **S2 „queue"** | Kanban-Probe → Queue-Entscheid → Türen verdrahten (Telegram/Desktop-Idee → Queue) · Morgenlage meldet Queue-Stand · Bagatell-Nacht-Deploy-Pfad | offen | +| **S3 „lucy-pipeline"** | PC-Annahme-Weg bauen + E2E-Beweis. Kandidat für den ersten echten Auftrag: A4-Turncheck-Auswertung (Log liegt seit 07.07. in `C:\Users\TobisPC\lucy-turncheck.log`) | offen | +| **S4 „zuendung"** | Idle-Radar/Fehler→Auftrag (Traum-Funde + Journal-Muster → Queue-Kandidaten) · Großbau-Etappen-Regeln in Skills · Generalprobe ohne Claude | offen | + +## Scan-Restposten (10.07., in die Sessions eingeplant) + +Lucy-Repo-Hygiene (untracked venvs/Datasets, 2 tote Branches) · C13/0f Runbook/First-Run-Wizard · +C14 stale v1-Unit · D16 c (System-Logs) / e (Mem0-Dubletten automatisch) / f (Politur) · +Voice-Sidecar-Diät (Faden 6). **Watchdog = bewusst NICHT wiederherstellen.**