doku: Wissen auf den Box-Wart-Stand (STACK, VERDIKTE, FALLEN, ARBEITSWEISE, OFFENE-FAEDEN)
- STACK.md: Stand 24.09. - Dienste mit Zustand (Konsole und Spracherkennung schlafen), Units im Repo und nur auf der Box, Modelltabelle aus der Config vom 24.09. (Hirn, Coder, zwei Bild-Zwillinge, brains mit exclusive: false), Hermes v0.21.4 mit MCP-Stand nach der Diaet, vollstaendiger Automatik-Fahrplan (Timer, Hermes-Crons, NerdQuiz 03:00), Coding-Bahn OpenChamber, Sicherheit in einem Satz. - VERDIKTE.md: Box-Wart-Verdikte vom 23./24.09. ergaenzt (Umbau statt Neubau, zwei Instanzen, Homelab-Rechte und -Updates, keine Anmeldung, Nachtruhe, Timer, Box-Diaet, Radar-Leitplanken, Bild-Zwillinge, exclusive: false); Ueberholtes in eine Tabelle "Ueberholt (mit Datum)"; Formatfehler (Zeilen mit "|-") beseitigt. - FALLEN.md: neue Fallen (Persistent=true, Abzug ueberschreibt lebende Config, Jobs sterben bei MC2-Neustart, exclusive, Draft+Bild=500, Hermes-Cron als Updater, write_file, web_extract, Gitea-SSH-Benutzer); Werkstatt-, Kritiker-, Delegations- und Desktop-Fallen gestrichen. - ARBEITSWEISE.md mit GRENZEN.md zusammengelegt; Flaechen-Tabelle fuer Box-Wart, Homelab-Teil, Lucy, Hermes, Telegram, OpenChamber, Android-App. - OFFENE-FAEDEN.md neu: Phasen 0-5 laut Plan (Phase 1 laeuft, Oberflaeche und Doku offen) und 13 offene Einzelpunkte, alle am Code in main belegt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
59631601b9
commit
24e6dd81ba
+64
-54
@@ -1,65 +1,75 @@
|
||||
# Arbeitsweise — wer der User ist und wie hier gearbeitet wird
|
||||
# Arbeitsweise — wer der User ist, wie hier gearbeitet wird, was wohin gehört
|
||||
|
||||
_Kuratiert 10.07.2026. Gilt für JEDEN Agenten, der an diesem System arbeitet
|
||||
(Box-Hermes, Hermes Desktop, Gemini/Antigravity, künftige)._
|
||||
_Stand 24.09.2026. Gilt für jeden Agenten, der an diesem System arbeitet (Claude Code, OpenChamber/OpenCode,
|
||||
Lucy auf der Box). Enthält seit 24.09. auch die frühere Grenzen-Landkarte._
|
||||
|
||||
## Der User (Hitonabi / „Commander")
|
||||
## 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.
|
||||
- **Kein Software-Entwickler.** Er fasst keine Konsole an und macht keine Updates von Hand. Alles muss ohne ihn
|
||||
laufen oder per Knopf, Lucy oder Telegram bedienbar sein.
|
||||
- **GUI-first:** klickbare Oberflächen statt Terminal. Sein Wunsch-Erlebnis: Aufträge verteilen, zusehen, Ergebnisse
|
||||
abnicken.
|
||||
- **Produkt-Instinkt ernst nehmen:** Seine einfachen Fragen treffen oft den Kern. Vorschläge ernsthaft prüfen, nie
|
||||
abtun.
|
||||
- **Sprache:** Deutsch, locker, direkt. Er schreibt oft roh und knapp. Lucy nennt ihn „Commander".
|
||||
- **Nordstern (wörtlich):** „Das komplette System muss AUTONOM funktionieren — in 6 Monaten ohne Claude darf nichts
|
||||
brachliegen." Robustheit und Autonomie schlagen Features.
|
||||
|
||||
## Die nicht verhandelbaren Regeln
|
||||
## Die 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 geht als Branch nach Gitea; gemergt wird nur vom User (Ampel grün).
|
||||
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: …"
|
||||
1. **Verifizieren vor Behaupten.** Vor jeder Aussage oder Änderung an der Box messen (SSH, Logs, `curl`, Messlauf),
|
||||
statt aus Doku, Gedächtnis oder Web zu schließen. Der Erzählung eines Agenten (auch der eigenen) nie glauben:
|
||||
Protokolle, Git-Stand und Messwerte sind Beweise.
|
||||
2. **Scope challengen.** Ein Technik-Vorschlag (auch vom User) ist kein Bauauftrag: erst den Zweck klären, bei einer
|
||||
erkennbaren Fehlannahme kurz stoppen und warnen. Lehrbuch-Praxis ist nicht automatisch unser Fall.
|
||||
3. **Branch, Prüftor, dann Merge.** Nie direkt auf `main` arbeiten. `bash deploy/pruefen.sh` muss grün sein.
|
||||
Claude darf bei grünen Prüfläufen selbst mergen und deployen (User-Entscheid 23./24.09.). Ein Direkt-Push auf
|
||||
`main` ohne Branch braucht ein ausdrückliches Ja.
|
||||
4. **Security-Config nie ohne ausdrückliches User-Ja** (approvals, Tokens, ufw, sudoers, command_allowlist).
|
||||
5. **Endgültig löschen nur per User-Klick** (Modelle, Dateien und Reste auf der Box). Vorschlagen ja, selbst löschen nein.
|
||||
6. **Hermes-first vor Eigenbau.** Vor jedem Neubau prüfen, ob Hermes es kann (`hermes --help`, Config, Plugins).
|
||||
Hermes-Quellcode wird nie gepatcht oder geforkt.
|
||||
7. **Alles reversibel:** Branch, Sicherung, Festhalten (Pin-Register). Nichts bauen, was Lucys Sprech-Latenz oder das
|
||||
warme Hirn gefährdet.
|
||||
8. **Deutsch für alles, was der User sieht** (Oberfläche, Meldungen, Skills, Zusammenfassungen, Commit-Messages).
|
||||
Die erste Zeile einer Meldung sagt am besten, ob er etwas tun muss.
|
||||
9. **Doku folgt dem Code.** Wer Verhalten ändert, zieht README, `docs/` und `deploy/jobs/README.md` im selben Branch
|
||||
nach (Pflegeregeln: [docs/README.md](../README.md)).
|
||||
|
||||
## Rollen-Abgrenzung der Türen
|
||||
## Die Flächen — was gehört wohin
|
||||
|
||||
- **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, Ideen, Chronik/Zeitmaschine, Wissen.
|
||||
**Steuerpult, kein Chat** — Gesprächs-/Voice-Funktionen gehören zu Lucy/Telegram, nicht in MC2.
|
||||
- **Gemini/Antigravity** = Notfall + Außen-Review, siehe [GEMINI_BRIEFING](../GEMINI_BRIEFING.md).
|
||||
**Kern in einem Satz:** Box-Wart = Steuerpult (anschauen, klicken) · Lucy = Stimme und Gespräch · Hermes = das
|
||||
Agenten-Fundament darunter (Quelle tabu) · Telegram = mobil melden · OpenChamber = Coding am PC.
|
||||
|
||||
**Bevor du ein Feature baust: [GRENZEN.md](GRENZEN.md)** — die volle „was gehört wohin"-Landkarte
|
||||
inkl. Code-Ebenen (MC2 vs. Lucy vs. Hermes-Config/Skill/Hook, Quelle tabu) und der roten Linien.
|
||||
| Fläche | Ort | Gehört hierhin | Gehört nicht hierhin |
|
||||
|---|---|---|---|
|
||||
| **Box-Wart** (MC2) | dieses Repo, `:9001` | Updates, Wächter-Hinweise, Modelle, Radar, Aufräumen, Dienste und Protokolle, Sicherungen, Einstellungen | ein Chat- oder Gesprächsfenster |
|
||||
| **Homelab-Teil** (ab Phase 2) | gleiche Software als Container auf dem Proxmox-PC | Homelab-Geräte, deren Updates per Knopf, Erreichbarkeit | Dinge der KI-Box (die bleiben beim Box-Wart) |
|
||||
| **Lucy** (Desktop-App) | Repo `F:\Coding Stuff\lucy` (Electron) | Sprache, Gespräch, proaktive Meldungen aus dem Briefkasten | Verwaltungs- und Update-Knöpfe |
|
||||
| **Hermes** (Agent „Lucy" auf der Box) | `~/.hermes/` | Verhalten über `config.yaml`, `SOUL.md`, Skills, Plugins, MCP-Server | Änderungen am Quellcode in `~/.hermes/hermes-agent/` |
|
||||
| **Telegram** | Hermes-Plattform | Meldungen empfangen, mit Lucy schreiben | eigene Oberflächen |
|
||||
| **OpenChamber** | PC, Dateien unter `F:\Coding Stuff\…` | Coding; Modelle kommen von der Box über `:9001/v1` | Box-Verwaltung |
|
||||
| **Android-App** (Phase 5) | noch offen | Push, Cockpit, Updates freigeben, Lucy per Sprache | – |
|
||||
|
||||
**Schnell-Entscheid „Ich will X bauen":**
|
||||
|
||||
- etwas anzeigen, verwalten, per Knopf auslösen → Box-Wart (Backend-Router dünn, Logik in `backend/services/`).
|
||||
- reden, hören, proaktiv melden → Lucy.
|
||||
- wie der Agent sich verhält (Werkzeug, Prompt, Fähigkeit) → Hermes-Config, `SOUL.md`, Skill, Plugin oder MCP-Server.
|
||||
- etwas mobil melden → `deploy/notify.sh` (Telegram und Briefkasten in einem Aufruf).
|
||||
- Wissen oder Doku ablegen → `docs/` in diesem Repo.
|
||||
|
||||
**Rote Linien:**
|
||||
|
||||
- Kein Chat im Box-Wart. Keine Update-Knöpfe in Lucy.
|
||||
- Nie den Hermes-Quellcode ändern.
|
||||
- Nie im Box-Checkout `~/mission-control-v2` von Hand ändern oder committen; neuer Code kommt nur über Gitea und
|
||||
`deploy/deploy.sh`.
|
||||
- Keine Doku in Lucys Gedächtnis kippen: Es lernt selbst und ist kein Ablageort.
|
||||
|
||||
## 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.
|
||||
- `docs/` in diesem Repo = kuratierte Projekt-Wahrheit für alle Agenten (Index: [docs/README.md](../README.md)).
|
||||
- `AGENTS.md` (hier und im Lucy-Repo) = verbindliche Bau-Regeln; OpenCode und Claude Code lesen sie selbst.
|
||||
- `~/.hermes/memories/` = Lucys Gedächtnis; Hermes führt es selbst.
|
||||
- Das Claude-Gedächtnis am PC = Arbeitsnotizen der Claude-Sitzungen, nicht verbindlich. Was bleiben soll, gehört hierher.
|
||||
|
||||
+116
-127
@@ -1,140 +1,129 @@
|
||||
# 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._
|
||||
_Stand 24.09.2026. Jede Falle hat mindestens einmal real Zeit gekostet. Neue Fallen hier eintragen, mit Datum
|
||||
und Symptom; Erledigtes streichen (die Git-Historie behält es)._
|
||||
|
||||
## Git & Deploy
|
||||
## Git und 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 <tmp> 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 …'`.
|
||||
- **Werkstatt-Orphan-Branches („refusing to merge unrelated histories"):** macht ein
|
||||
Worker `git init`/Shallow statt voll zu klonen, entsteht ein Branch OHNE gemeinsamen
|
||||
Vorfahren — Erkennungsmuster auf der Karte: **Diff „0 Dateien" + „hinter main" ≈ ganze
|
||||
Historie** (z. B. 386). Merge ist NIE möglich; oft ist der Inhalt obendrein Müll
|
||||
(~/.hermes-Dateien statt Repo-Dateien). (Historisch: das Auftragsbuch markierte solche Branches; es ist seit 04.09.2026
|
||||
ausgebaut.) Erkennung heute: `git merge-base main <branch>` leer → Branch verwerfen. Prävention steht in der werkstatt-SOUL (voll klonen + merge-base-Selbstcheck).
|
||||
- **Ehrlich-veraltete Branches (echter Merge-Konflikt):** vor dem Merge `git rebase main`
|
||||
auf dem Branch; kollidiert auch das, Branch verwerfen und die Idee frisch aufsetzen.
|
||||
- **Timer mit `Persistent=true` holen verpasste Läufe beim ersten Einschalten sofort nach (24.09.).**
|
||||
`mc2-autoupdate.timer` war seit August aus; beim `enable --now` lief der Sonntagslauf an einem Donnerstag um 14:51
|
||||
und startete die Box neu. Seitdem startet `autoupdate.sh` die Box nur So 04:00–06:59 neu, und `deploy.sh` startet
|
||||
den Timer nur, wenn er nicht schon läuft.
|
||||
- **Wer den llama-swap-Abzug im Repo ändert, überschreibt beim Deploy die lebende Config komplett (24.09.).**
|
||||
Was Oberfläche oder Radar seitdem eingetragen haben, ist dann weg (Sicherung: `/etc/llama-swap/config.yaml.bak-*`,
|
||||
die letzten 5). Vorher `diff /etc/llama-swap/config.yaml deploy/llama-swap.config.yaml` und den lebenden Stand ins
|
||||
Repo holen. `MC_DEPLOY_SKIP_SWAP_CONFIG=1` lässt die Config ganz in Ruhe. Bis 24.09. überschrieb jeder Deploy sie
|
||||
bei jeder Abweichung und startete den Motor neu.
|
||||
- **Ein Neustart von MC2 bricht laufende Update- und Download-Jobs ab (24.09.).** Sie leben im MC2-Prozess.
|
||||
`deploy.sh` verschiebt den Deploy deshalb, solange ein Job läuft (`MC_DEPLOY_TROTZDEM=1` erzwingt).
|
||||
- **`deploy.sh` schaltet alles in `AKTIV` wieder ein.** Wer einen Dienst oder Timer dauerhaft aus haben will, nimmt
|
||||
ihn dort heraus, sonst dreht der nächste Deploy den User-Entscheid zurück (mit `mc2-autoupdate` schon passiert).
|
||||
Schlafende Units (`box-console`, `voice-service`) stehen nur in `UNITS`.
|
||||
- **Den Box-Checkout nie von Hand ändern.** Stufe 1 holt `main` nur per fast-forward; geänderte oder eigene Commits im
|
||||
Checkout lassen den Deploy scheitern, bevor er etwas umstellt.
|
||||
- **Paralleler Git-Zugriff auf den geteilten Checkout am PC:** Mehrere Agenten arbeiten zeitweise im selben
|
||||
`F:\`-Verzeichnis, HEAD kann wandern. Änderungen sofort committen; zum Landen einen isolierten Worktree nutzen
|
||||
(`git worktree add --detach <tmp> origin/main` → cherry-pick → `git push origin HEAD:main` → Worktree weg).
|
||||
- **Gitea-SSH: Benutzer `gitea`, nicht `git`, Port 2222 (21.08.).** Mit `git@` kommt nur
|
||||
`Permission denied (publickey)`, der Grund steht nur im Gitea-Log. Bei vielen Schlüsseln am PC `IdentitiesOnly yes`
|
||||
setzen, sonst bricht Gitea vorher ab. Bei Aussetzern: Push mit Retry.
|
||||
- **Repo-Name aus der Remote-URL, nicht aus dem Ordnernamen (21.08.):** lokal `mission-control-2`, auf Gitea
|
||||
`mission-control-v2` (`deploy/push-und-sync.ps1` liest die URL).
|
||||
- **CRLF:** `.gitattributes` erzwingt LF für `*.sh`, `*.service`, `*.timer` und `deploy/**/*.py`, sonst bricht bash an
|
||||
`pipefail\r`. Was per Pipe vom Windows-PC auf die Box geht: `sed 's/\r$//'`.
|
||||
- **Stale `index.lock`** im Box-Repo nach einem abgebrochenen Deploy: Alter prüfen, dann löschen.
|
||||
- **Veraltete Branches mit echtem Konflikt:** vor dem Merge `git rebase main`; kollidiert auch das, Branch verwerfen
|
||||
und neu aufsetzen.
|
||||
- **Untracked Dateien fehlen in `git diff`:** Wer Änderungen prüfen lässt, erst `git add -A`, dann `git diff --cached`.
|
||||
|
||||
## Box / systemd / llama-swap
|
||||
## 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).
|
||||
- **llama.cpp streicht Flags ohne Vorwarnung:** `--no-mmap` gibt es seit b10936 nicht mehr
|
||||
(`error: invalid argument`) → JEDES Modell stirbt 2 s nach dem Start, llama-swap meldet nur
|
||||
„upstream command exited prematurely", der Stack-Check nur „rot". Ersatz: `--load-mode none`
|
||||
(gleiche Leistung, gemessen 17.09.2026: Coder 32 t/s, Hirn 85 t/s). Vor einem Engine-Sprung
|
||||
jede Config-Kommandozeile mit dem neuen `llama-server` parsen lassen (Port 5899, `timeout 6`,
|
||||
`${PORT}` ersetzen) — Argumentfehler kommen sofort, vor dem Laden.
|
||||
- **User-Units über SSH:** erst `export XDG_RUNTIME_DIR=/run/user/$(id -u)`, sonst sieht `systemctl --user` nichts.
|
||||
- **Ohne `exclusive: false` ist eine llama-swap-Gruppe exklusiv (24.09.).** Jede Anfrage ans Hirn entlud den Coder
|
||||
samt Prompt-Cache; OpenChamber rechnete danach den ganzen Vorlauf neu.
|
||||
- **Draft und Bild in einem `llama-server` ergeben HTTP 500 (04.09., bestätigt 24.09.):** „failed to process
|
||||
speculative batch", geprüft mit b11057 und b11157, auch mit `speculative.n_max=0` je Anfrage. Lösung:
|
||||
Bild-Zwillinge ohne Draft.
|
||||
- **llama-swap versteht nur `persistent:`**, `persist:` ignoriert es still (MC2 liest `persist`, deshalb stehen beide
|
||||
in der Config). `persistent` schützt nur vor Verdrängung, nicht vor dem ttl-Entladen: Warm-Mitglieder brauchen
|
||||
`ttl: 0`. Nach jedem Config-Reload ist alles entladen; der Steward wärmt das Hirn nach.
|
||||
- **`warmup.sh` liegt als Root-Kopie** unter `/usr/local/bin/llama-swap-warmup.sh`; `deploy.sh` aktualisiert sie nicht.
|
||||
Nach einer Änderung: `sudo install -m 0755 deploy/warmup.sh /usr/local/bin/llama-swap-warmup.sh`.
|
||||
- **llama-swap nie ohne Not neu starten:** Alle Modelle sind danach entladen, Lucy antwortet langsam.
|
||||
- **Nie zwei ~70-GB-Messungen direkt nacheinander** (OOM-Kill beim zweiten).
|
||||
- **llama.cpp streicht Flags ohne Vorwarnung (17.09.):** `--no-mmap` gibt es seit b10936 nicht mehr; jedes Modell
|
||||
stirbt 2 s nach dem Start, llama-swap meldet nur „upstream command exited prematurely". Ersatz: `--load-mode none`.
|
||||
Vor einem Engine-Sprung jede Config-Kommandozeile mit dem neuen `llama-server` parsen lassen (Port 5899,
|
||||
`timeout 6`, `${PORT}` ersetzen).
|
||||
- **Die Box ist deutschsprachig (de_DE):** Parser von CLI-Ausgaben brauchen `LC_ALL=C` (apt sagt sonst
|
||||
„aktualisierbar von:").
|
||||
- **`pkill -f` über SSH trifft die eigene Remote-Shell** → Muster klammern (`'[g]en…'`).
|
||||
- **Einmal-Dienste hinter Timern fallen still aus (07.–23.09.):** `projekte-sync` scheiterte 16 Tage lang stündlich an
|
||||
einem leeren Gitea-Repo, niemand merkte es. Seit 23.09. meldet der Wächter gescheiterte Timer-Läufe.
|
||||
|
||||
## Hermes
|
||||
|
||||
- **Toolsets haben ZWEI Ebenen:** aktiv = NICHT in `agent.disabled_toolsets` UND in
|
||||
`platform_toolsets.<platform>`. 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 "<gleich>"` zum Neuberechnen) · Prompt/Positionsargumente
|
||||
MÜSSEN vor die Flags · `--script` allein reicht nicht (braucht Prompt oder Skill) ·
|
||||
Cron-Kontext hat `HERMES_CRON_SESSION=1` (`approvals.cron_mode` ist seit dem KISS-Umbau `auto`, nicht mehr `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).
|
||||
- **`hermes update` meldet Exit 1 trotz Erfolg:** nach seinem eigenen Gateway-Neustart erwartet es
|
||||
Zeilen vom „Fleet version check"; unter systemd kommen keine → Exit 1 (#93406). Der MC2-Job
|
||||
bricht dann die `&&`-Kette ab (kein doctor, UI ohne `/hermes-ui/`-Basis), autoupdate.sh rollt
|
||||
zurück und PINNT — obwohl der Gehirn-Check grün war (06. und 17.09.2026). Deshalb
|
||||
`--no-gateway-restart`: Neustart und Urteil gehören dem Job. Pins stehen in
|
||||
`/srv/models/mc2-pins.json` und werden NUR von Hand gelöst — gepinnt = still eingefroren.
|
||||
- **Ein Updater darf nicht als Kind von Hermes laufen (20.09.).** Der Hermes-Cron „Updates am Sonntag" startete beim
|
||||
Hermes-Update das eigene Gateway neu: 180 s Drain, dann Exit FAILURE. Seit 24.09. läuft das Update als eigener Timer.
|
||||
- **`hermes update` meldet Exit 1 trotz Erfolg (06. und 17.09.):** Nach dem eigenen Gateway-Neustart wartet es auf
|
||||
Zeilen des „Fleet version check", unter systemd kommen keine. Die Update-Kette brach ab, `autoupdate.sh` rollte
|
||||
zurück und hielt Hermes fest, obwohl der Gehirn-Check grün war. Deshalb `--no-gateway-restart`: Neustart und Urteil
|
||||
gehören dem Job.
|
||||
- **Festgehalten heißt still eingefroren (06.–17.09.):** Motor und Hermes bekamen elf Tage keine Updates. Seit 23.09.
|
||||
zeigt der Wächter jeden festgehaltenen Baustein als Hinweis mit Knopf „Freigeben".
|
||||
- **Werkzeugsätze haben zwei Ebenen:** aktiv ist, was nicht in `agent.disabled_toolsets` steht UND in
|
||||
`platform_toolsets.<platform>`. Cron-Jobs hatten bis 21.08. die volle Werkzeugkiste, weil
|
||||
`platform_toolsets.cron` fehlte (heute `[web, terminal]`). `hermes prompt-size` ist für die Allowlist blind; echte
|
||||
Kontrolle nur per Live-Aufruf.
|
||||
- **Wer einen Werkzeugsatz abschaltet, muss `SOUL.md` mitlesen (21.08.):** Dort standen noch Anweisungen, die auf
|
||||
abgeschaltete Werkzeuge zeigten.
|
||||
- **Cron-Fallen:** kein TZ-Feld (`next_run_at` = System-TZ beim Anlegen; nach einem TZ-Wechsel
|
||||
`hermes cron edit --schedule "<gleich>"`); Prompt und Positionsargumente vor die Flags; `--script` allein reicht nicht
|
||||
(braucht Prompt oder Skill); Cron-Kontext hat `HERMES_CRON_SESSION=1`. `hermes cron edit <id> "text"` speichert
|
||||
nichts, der Prompt muss über `--prompt` kommen (21.08.).
|
||||
- **`hermes` ist über SSH nicht im PATH** → `bash -lc 'hermes …'`.
|
||||
- **Hermes' `terminal`-Werkzeug bricht nach 30 s ab (22.08.):** Der Agent hielt den Aufruf für gescheitert und rief
|
||||
`news-melden.sh` ein zweites Mal auf, der Bericht kam doppelt. Das Skript kehrt deshalb sofort zurück und sperrt
|
||||
Doppelversand.
|
||||
- **Hermes' `write_file` überschreibt keine vorhandene Datei (23.09.):** Lag der Bericht vom Vortag noch in `/tmp`,
|
||||
scheiterte jeder Morgenlauf erst an „Refusing to overwrite". `news-melden.sh` räumt den Bericht jetzt weg.
|
||||
- **`web_extract` wertet kurze Seiten als Fehler (24.09.):** Hermes hängt an jedes Ergebnis ein leeres `"error"`-Feld
|
||||
und prüft nur die ersten 500 Zeichen. Der Wächter zählt mehrzeilige `"results"`-Treffer deshalb nicht als
|
||||
Werkzeugfehler.
|
||||
- **Lucys Stimme ist `lucy-stimme` auf `:8021`, nicht `voice-service` auf `:8650` (21.08.):** Dort sind nur
|
||||
Cloud-Stimmen geladen.
|
||||
- **Reasoning-Modelle:** `content` kommt nach `reasoning_content`; `max_tokens` großzügig setzen (für
|
||||
Werkzeug-Aufrufe ≥ 1500), sonst bleibt die Antwort leer.
|
||||
- **Hooks:** Die Zustimmung bleibt nur über einen CLI- oder Gateway-Start mit `HERMES_ACCEPT_HOOKS=1` erhalten;
|
||||
`hermes hooks test` schreibt die Allowlist nicht; eine Skript-Änderung macht die Zustimmung ungültig (mtime).
|
||||
- **Feed-Skripte: Pipe und Heredoc zugleich, dann gewinnt der Heredoc stdin** → JSON über eine Temp-Datei übergeben.
|
||||
Einen ehrlichen Ausfallpfad einbauen (API kaputt → „AUSGEFALLEN", nicht „0 Funde").
|
||||
|
||||
## Windows-PC
|
||||
|
||||
## Lucy / Windows-PC
|
||||
- **Git-Bash hat kein `python3` (Store-Alias, 24.09.):** `deploy/pruefen.sh` nimmt `backend/.venv/Scripts/python.exe`;
|
||||
`ruff` liegt global.
|
||||
- **`sed` mit `$` und `\n` über PowerShell zerlegt sich ohne Fehlermeldung (21.08.).** In einzelne Ersetzungen
|
||||
aufteilen und danach nachsehen.
|
||||
- **`Start-Process -ArgumentList` quotet nicht (PS 5.1):** Pfade mit Leerzeichen zerbrechen, die gestartete PowerShell
|
||||
stirbt still. Anführungszeichen ins Element einbetten: `'-File','"F:\Coding Stuff\…\skript.ps1"'`.
|
||||
- **`\"` in f-String-Ausdrücken ist seit Python 3.12 ein SyntaxError** (die Box hat 3.14). Werte vorher in Variablen
|
||||
ziehen.
|
||||
- **pythonw + subprocess ohne `CREATE_NO_WINDOW`:** Jedes gestartete Konsolenprogramm bekommt ein sichtbares Fenster.
|
||||
- **PC-Aufgabe `HermesPCExecutor`** (seit 24.09. aus) läuft aus dem Repo mit pythonw; nach einer Änderung an
|
||||
`executor.py` die Aufgabe neu starten. Logs in `%LOCALAPPDATA%\HermesPCExecutor\`.
|
||||
- **MSIX-Sandbox der Claude-Desktop-Werkzeuge:** Schreibzugriffe nach `AppData\Local\<app>` landen in
|
||||
`AppData\Local\Packages\Claude_*\LocalCache\`. Windows-Apps nie über Agent-Werkzeuge installieren; den Installer
|
||||
startet der User per Doppelklick.
|
||||
|
||||
- **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\`.
|
||||
- **`Start-Process -ArgumentList` quotet NICHT** (PS 5.1): Elemente werden mit Leerzeichen
|
||||
zusammengefügt — ein Pfad wie `F:\Coding Stuff\…` zerbricht, die gespawnte powershell
|
||||
stirbt STILL (kein Fenster, kein Log). → Anführungszeichen ins Element einbetten:
|
||||
`'-File','"F:\Coding Stuff\…\skript.ps1"'`. Kostete den ersten Lucy-Annahme-Lauf (12.07.).
|
||||
- **`\"` in f-String-AUSDRÜCKEN ist seit Python 3.12 ein SyntaxError** (Alt-Stil
|
||||
`f"{d.get(\"x\")}"` lief nur pre-3.12; Box hat 3.14). In bash-eingebetteten
|
||||
`python3 -c '…'`-Snippets braucht es die Escapes eh nicht (single-quoted) — Werte vorab
|
||||
in Variablen ziehen statt Quote-Akrobatik. Kostete denselben Lauf (Poll parste nie).
|
||||
- **pythonw + subprocess ohne `CREATE_NO_WINDOW`** = jedes gespawnte Konsolenprogramm
|
||||
bekommt ein SICHTBARES Fenster (Executor-Polling blitzte im 10-s-Takt auf dem Desktop).
|
||||
- **MSIX-Sandbox-Falle (Claude-Desktop-Tools):** Tools der Claude-App laufen im
|
||||
MSIX-Container — Writes nach `AppData\Local\<app>` 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.
|
||||
## Lucy (Desktop-App)
|
||||
|
||||
## 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.
|
||||
- **file://-Fallen im Electron-Build:** Asset-Pfade relativ; `import()` verzeiht keine relativen Präfixe
|
||||
(`new URL("vad/", document.baseURI)`).
|
||||
- **Lucy immer über `Lucy-Neustart.bat` neu starten:** Hartes Beenden hinterlässt Waisen auf `:8130`.
|
||||
- `LUCY_WORKERS=2` (User-Env): 4 Worker bedeuten ~4 × 1,9 GB Kopien des Stimm-Modells.
|
||||
- Gerade `"` in Prompt-Strings von `config.ts` zerschießen den String → „…" nutzen.
|
||||
- Zustands-Features immer mit sichtbarem Zustand und Sofort-Feedback bauen: Der User testet nach Produkt-Gefühl.
|
||||
- **Training der Mini-Stimme (Colab):** Drive-Sync je Epoche; Notebook-Zellen vor Abgabe per `ast` prüfen;
|
||||
synthetische Datensätze per STT-Rundlauf prüfen (der XTTS-Datensatz war unbrauchbar); Kokoro-Ausgabe auf 0,95
|
||||
normalisieren.
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
# Grenzen-Landkarte — was gehört wohin
|
||||
|
||||
_Angelegt 13.07.2026 (Faden 6). Für JEDEN Agenten, der hier baut: bevor du ein Feature
|
||||
umsetzt, kläre WOHIN es gehört. Das System hat mehrere Flächen mit klaren Aufgaben — eine
|
||||
Funktion an der falschen Fläche ist Murks, auch wenn sie „funktioniert"._
|
||||
|
||||
**Der Kern in einem Satz:** **MC2 = Steuerpult** (verwalten, klicken, zusehen) ·
|
||||
**Lucy = Chat & Stimme** (reden, begleiten) · **Hermes = das Agenten-Fundament darunter
|
||||
(Quelle TABU)** · **Telegram = mobil melden/freigeben** · **Hermes Desktop = am PC arbeiten**.
|
||||
|
||||
## Die Flächen — was gehört hin, was NICHT
|
||||
|
||||
| Fläche | Code/Ort | ✅ Gehört hierhin | ❌ Gehört NICHT hierhin |
|
||||
|---|---|---|---|
|
||||
| **MC2 – Steuerpult** | `~/mission-control-v2` (backend Py + frontend React) `:9001` | Verwaltung, Chronik/Zeitmaschine, Wissens-Tab, Modelle/Rollen, System-Status/Logs, Ideen-Queue-**Eingabe**, Wartung/Updates | **Ein Chat-/Gesprächsfenster** oder ein Konversations-Assistent — dafür ist Lucy/Telegram/Hermes-Desktop da. MC2 wird angeschaut und geklickt, nicht „zugetextet". |
|
||||
| **Lucy – Chat & Stimme** | eigenes Repo `F:\Coding Stuff\lucy` (Electron, `lucy-desktop/`+`lucy-tts/`) | Voice/Zuruf, Gespräch (innere Stimme, kein Avatar seit 04.09.2026), proaktive Meldungen, Wake-Word/Barge-in, Zettelkasten | **Verwaltungs-/Wartungs-Oberfläche** (Update-Knöpfe, System-Logs) — das ist MC2. Lucy bleibt schlank (~1-s-Sprech-Latenz schützen). |
|
||||
| **Hermes – Agenten-Fundament** | `~/.hermes/hermes-agent` (Framework), `~/.hermes/config.yaml`, `SOUL.md`, `skills/`, `agent-hooks/`, `mcp/` | Agenten-VERHALTEN ändern: über **Config, SOUL, Skills, Hooks, MCP-Server, Plugins** | **Quellcode patchen/forken — NIEMALS.** Kein Edit in `~/.hermes/hermes-agent/`. Fehlt ein Feature nativ → Config/Skill/Hook/MCP drumherum, nicht die Engine ändern. |
|
||||
| **Telegram** | Hermes-Platform-Lane | mobil: Meldungen empfangen, Freigaben/Zurufe, Alarmkette, Cron-Delivery | Kein Bau-Ziel für UIs. Ist ein Kanal, keine App. |
|
||||
| **Hermes Desktop** | PC-Hermes, Profil `pc`, Hirn = Box `:9001/v1` | Arbeit am PC: Projekte, Coding, Review, lange Threads. Faustregel „Repo oder >2 Min → Desktop". | Nicht mit Lucy verwechseln (Zuruf/Voice) — Desktop ist die Werkbank. |
|
||||
|
||||
## „Ich will X bauen — wohin?" (Schnell-Entscheid)
|
||||
|
||||
- **Etwas verwalten/anzeigen/klicken (Status, Logs, Modelle, Backups, Updates)** → **MC2** (backend + frontend).
|
||||
- **Reden/hören/begleiten (Sprache, Gespräch, Avatar, proaktiv melden)** → **Lucy** (eigenes Repo).
|
||||
- **Wie der Agent SICH VERHÄLT (Routing, Prompts, neue Fähigkeit, Werkzeug, Guardrail)** →
|
||||
**Hermes drumherum**: `config.yaml` / `SOUL.md` / ein **Skill** / ein **Hook** (`agent-hooks/`) /
|
||||
ein **MCP-Server** (`mcp/`). **Nie** die Hermes-Quelle. (Beispiel Faden 5: Box-Wissen kam per
|
||||
`pre_llm_call`-Hook — `deploy/agent-hooks/box-steckbrief-inject.sh` — in jeden Worker, nicht per Engine-Patch.)
|
||||
- **Etwas mobil melden/freigeben** → **Telegram**-Lane (Kanal, keine neue UI).
|
||||
- **Wissen/Doku ablegen** → `docs/wissen/` (Projekt-Wahrheit) oder `~/wissens-vault/` (Lucys
|
||||
Lernschicht). **Nicht** ins Mem0/Live-Gedächtnis (das ist auto-lernend, kein Ablageort).
|
||||
|
||||
## Häufige Grenz-Verwechslungen (die roten Linien)
|
||||
|
||||
- ❌ **Chat-UI/Assistent in MC2** → gehört zu Lucy/Telegram/Hermes-Desktop. MC2 ist Steuerpult.
|
||||
- ❌ **Verwaltungs-/Update-Buttons in Lucy** → gehören ins MC2-Steuerpult.
|
||||
- ❌ **Hermes-Quellcode ändern** (`~/.hermes/hermes-agent/…`) → nur Config/SOUL/Skill/Hook/MCP.
|
||||
- ❌ **Am Live-Checkout `~/mission-control-v2` schreiben/committen** → immer frischer Klon im
|
||||
Task-Workspace (siehe [FALLEN.md](FALLEN.md), werkstatt-SOUL).
|
||||
- ❌ **Doku ins Mem0 kippen** → `docs/wissen/` oder Vault.
|
||||
|
||||
Verwandt: [ARBEITSWEISE.md](ARBEITSWEISE.md) (Rollen-Abgrenzung der Türen), [STACK.md](STACK.md)
|
||||
(Dienste/Ports), [VERDIKTE.md](VERDIKTE.md) (Hermes-first, kein Fork).
|
||||
@@ -0,0 +1,79 @@
|
||||
# Offene Fäden — die eine Liste
|
||||
|
||||
_Stand 24.09.2026. Neues hier rein, Erledigtes raus (die Git-Historie behält es). Entschiedenes steht in
|
||||
[VERDIKTE.md](VERDIKTE.md), nicht hier. Die Liste bis 04.09.2026, samt den Lucy-Fäden, liegt im Archiv:
|
||||
[2026-09-04-offene-faeden-alt.md](../archiv/2026-09-04-offene-faeden-alt.md)._
|
||||
|
||||
## Fahrplan zum Homelab Orchestrator (Plan vom 24.09.2026)
|
||||
|
||||
Phase 1 läuft: Box-Diät, Backend, Deploy mit Prüftor und Rückweg und das Sonntags-Update als Timer sind live
|
||||
(`main` = `4cd856b`). Offen sind die Oberfläche (Branch `wartung/phase1d-frontend`) und die Doku (Branch
|
||||
`doku/phase1e-neuordnung`).
|
||||
|
||||
| Phase | Inhalt | Abnahme | Stand |
|
||||
|---|---|---|---|
|
||||
| 0 · Sofort | Nachtmeldungen sammeln und um 07:00 schicken, Dringendes sofort; Sicherung mit Lucys Gedächtnis, `SOUL.md`, Skills, Cron-Skripten und Box-Wart-Zustand; Token-Datei aus dem Repo; Git aufgeräumt | Testmeldung nachts landet in der 07:00-Meldung, dringende kommt sofort; Sicherung enthält das Gedächtnis; auf Gitea nur `main` und Archiv-Tags | erledigt 24.09. |
|
||||
| 1 · Box-Wart 1.0 | Ballast raus (tote Routen, Module, Deploy-Dateien, Skills); Konsole, Spracherkennung, PC-Fernsteuerung, Embedding und Reranker schlafen; riskante Stellen behoben; Deploy mit Rückweg und Prüftor; Sonntags-Update als Timer; Oberfläche; Doku neu | alle Prüfläufe grün, keine toten Routen; ein absichtlich kaputter Deploy rollt sich selbst zurück; Sonntags-Update ohne Hermes-Hänger; Doku beschreibt den Box-Wart | läuft (Oberfläche, Doku offen) |
|
||||
| 2 · Kern und zweite Instanz | zentrales Einstellungs-Objekt, SQLite, Worker mit Job-Engine, Adapter-Schnittstelle mit der Box als erstem Adapter; Oberfläche „Homelab Orchestrator" mit den Bereichen Box-Wart und Homelab; Container auf dem Proxmox-PC (nach User-OK), beide Instanzen prüfen sich gegenseitig | Box-Wart verhält sich wie vorher (Tests); ein Update-Lauf überlebt einen Neustart; stoppt eine Instanz, meldet die andere es auf Telegram | offen |
|
||||
| 3 · Homelab sehen | Proxmox-API mit Leseschlüssel (nach User-OK); Inventar: Host, 6 Container, Arcane-VM mit Docker; offene Updates je Gerät (Host-Pakete per Proxmox-Webhook, App-Versionen, Arcane-API); Erreichbarkeit je Dienst; Anzeige „Rückweg: Snapshot oder Backup"; neue Container per Etikett | Übersicht zeigt alle 8 Geräte mit Update-Stand; ein gestoppter Dienst erzeugt einen Hinweis | offen |
|
||||
| 4 · Jetzt updaten | Ausführer auf dem Proxmox-Host (nach User-OK) für Etikett `community-script` oder `watcher`, ohne `watcher-aus`; Knopf je Gerät: Snapshot, Update, Erreichbarkeits-Check, Erfolgsmeldung; rot → zurückrollen und melden; PBS mit Backup statt Snapshot; Host-Updates mit Warnung, Neustart getrennt; Docker über Arcane, zuerst als Probelauf | ein Update mit absichtlich rotem Check rollt sich selbst zurück und meldet es; nach einem Host-Neustart meldet die KI-Box, dass alles wieder läuft | offen |
|
||||
| 5 · Android-App | Push, Cockpit und Übersicht, Updates unterwegs freigeben, Lucy per Sprache mit Live-Modus; weckt Spracherkennung und Stimme | wird zu Beginn der Phase festgelegt | offen, eigenes Projekt |
|
||||
|
||||
Hintergrund zur Homelab-Technik: [ARCHITEKTUR.md](../ARCHITEKTUR.md), Abschnitt „Ausblick".
|
||||
|
||||
## Offene Einzelpunkte (Box-Wart)
|
||||
|
||||
1. **Der Wächter prüft die schlafende Spracherkennung weiter.** `pruefe_kern()` in
|
||||
`backend/services/waechter.py` fragt `voice-service` (`:8650/health`) ohne Schlaf-Ausnahme ab. Solange der Dienst
|
||||
schläft, ist ein roter Hinweis „Der Hör-Dienst antwortet nicht" samt Telegram-Meldung zu erwarten. Auf der Box
|
||||
prüfen, dann die Probe an `schlaeft()` koppeln.
|
||||
2. **Ein Modelltausch schreibt die llama-swap-Config mehrfach.** „Übernehmen" im Radar trägt das Modell unter einer
|
||||
Sperre ein; Hirn-Umstellung, Aliase `fast`/`heavy` und ttl folgen als eigene Schreibvorgänge. Jeder lädt
|
||||
llama-swap neu und entlädt alle Modelle. Ziel: ein Schreibvorgang je Tausch.
|
||||
3. **Jobs überleben noch keinen MC2-Neustart.** Update- und Download-Jobs sind Kindprozesse von MC2; `deploy.sh`
|
||||
verschiebt deshalb. Verschwindet der Hermes-Job, wartet `autoupdate.sh` 20 Minuten und geht dann in
|
||||
Selbstreparatur und Rückweg. Lösung in Phase 2 (Worker).
|
||||
4. **Session-Token des Hermes-Dashboards (nur mit User-Ja).** Das Drop-in
|
||||
`hermes-builtin-ui.service.d/session-token.conf` aus der früheren Desktop-Anbindung ist weiter gesetzt; `backup.sh`
|
||||
und `restore.sh` sichern es samt Kopie `desktop-gateway-token`. Entfernen ist Security-Config.
|
||||
5. **Rote Wächter-Hinweise warten nachts bis 07:00.** Der Wächter meldet mit Betreff „[Box-Problem]" ohne `-d`; zwischen
|
||||
00:00 und 06:59 landet das in der Morgenmeldung. Klären, ob Rot sofort raus soll.
|
||||
6. **Die gekürzte Morgenmeldung verweist auf „Cockpit unter Meldungen".** Diesen Bereich gibt es nicht. Der volle
|
||||
Stapel liegt in `~/.hermes/night-queue.txt.zuletzt-gesendet`, jede Meldung zusätzlich in Lucys Briefkasten.
|
||||
7. **Code verweist auf verschobene Doku:** `deploy/mc2-backup.service` (`Documentation=` auf `docs/BACKUP.md`),
|
||||
`backend/services/backup.py` (`docs/BACKUP.md`), `backend/services/maintenance.py` (`docs/BEDIENUNG.md`,
|
||||
sudoers-Hinweis), `backend/services/agent.py` (`docs/HERMES_SETUP.md`), `backend/services/llamaswap.py`
|
||||
(`docs/OPTIMIZATION_PLAN.md`). Beim nächsten Code-Commit auf `docs/BETRIEB.md`, `docs/ARCHITEKTUR.md` bzw.
|
||||
das Archiv umstellen.
|
||||
8. **Oberfläche (Phase 1d):** Updates-Seite mit Urteil und Paketliste, ehrliche Lade- und Fehlerzustände, Rückfragen,
|
||||
Aufträge aller Gruppen. Heute erscheinen Downloads nicht unter „Updates", obwohl die Modellsuche das ankündigt.
|
||||
9. **Units nur auf der Box:** `hermes-builtin-ui.service` samt Drop-ins und die llama-swap-Drop-ins (darunter
|
||||
`warmset.conf`) liegen nicht im Repo; seit 24.09. stehen sie als Kopie in jeder Sicherung.
|
||||
10. **Ungepinnte Abhängigkeiten:** `backend/requirements.txt` nur mit `>=`, jeder Deploy zieht die neueste Version.
|
||||
Was nachweislich zusammen lief, steht in `known-good/` jeder Sicherung.
|
||||
11. **Der Wächter hält das Hirn für bereit, sobald irgendein Modell läuft** (`pruefe_kern()`). Ein abgestürztes Hirn
|
||||
neben einem geladenen Coder bliebe unbemerkt. Klären, ob gewollt.
|
||||
12. **Radar „Jetzt suchen" läuft synchron** und kann Minuten dauern; `POST /api/models/{id}/load` meldet `ok`, egal
|
||||
was die Engine antwortet.
|
||||
13. **Kleinkram im Code:** `mcp/mcp_mc.py` (MCP aus) ruft die nie vorhandene Route `/api/routing/route`;
|
||||
`hermes-postcheck.sh` warnt bei jedem Lauf über den entfernten Patch-Träger; `voice_service/app.py` nennt
|
||||
faster-whisper statt Parakeet; `.aiexclude` gilt nur Antigravity.
|
||||
|
||||
## Aufräumen auf der Box (nur per User-Klick)
|
||||
|
||||
- Modelle ohne Rolle (Modelle-Seite, „Aufräumen"): gpt-oss-120b (60 GB), Qwen3-VL-30B-A3B (19 GB), Muse-Glimmer-30B,
|
||||
alte Drafts. Die Originale von Hirn und Coder sind der Rückweg, Nemotron ist Reserve: beides bewusst entscheiden.
|
||||
- Reste neben dem Betrieb (Prüfbericht 24.09.): rund 10 GB Test- und venv-Ordner im Home-Verzeichnis, alte Skripte in
|
||||
`~/.hermes/scripts` (`deploy.sh` legt neue dazu, räumt alte nicht weg), das inaktive Plugin `mc2-memory`,
|
||||
`~/.hermes/PINNED_VERSION` (veraltet; Pins stehen in `/srv/models/mc2-pins.json`), zwei fremde Dateien im
|
||||
Hermes-Quellbaum, alte Worktrees unter `~/.hermes/worktrees` und `~/projekte/mc2-referenz`, abgeschaltete
|
||||
Alt-Units in `~/.config/systemd/user`.
|
||||
|
||||
## Beobachten
|
||||
|
||||
- **25.09. 00:30:** Radar-Neutest Ornith-1.5-35B-A3B (Hirn), jetzt mit Draft-Varianten. **01.10.:** Qwen3.8-Flash-Next
|
||||
(Coder, passt nur knapp).
|
||||
- **So 27.09. 04:30:** erster regulärer Sonntagslauf über den Timer; der Bericht kommt mit der Morgenmeldung um 07:00,
|
||||
der Verlauf steht auf der Updates-Seite.
|
||||
- **Daily News 07:00:** Die `web_extract`-Werkzeugfehler sollten mit dem Plugin `mc2-web-lesen` verschwunden sein
|
||||
(Hermes am 24.09. neu gestartet).
|
||||
+121
-129
@@ -1,148 +1,140 @@
|
||||
# Stack-Wahrheiten — Infrastruktur, Dienste, Modelle
|
||||
# Stack-Wahrheiten — Maschinen, Dienste, Modelle, Automatik
|
||||
|
||||
_Live gegen die Box verifiziert am **19.08.2026** (Dienste-Liste, llama-swap-Config, hermes
|
||||
--version, /api/health); Engine, Hermes und llama-swap-Config nachgemessen am **17.09.2026**
|
||||
(llama.cpp b11026, Hermes v0.21.3, `--load-mode none`). Bei Widerspruch zu älteren Docs gewinnt
|
||||
diese Datei. Wer sie ändert: erst messen, dann schreiben._
|
||||
_Stand 24.09.2026. Quellen: Code in `main` (`4cd856b`: Units, `deploy/llama-swap.config.yaml`, Skripte)
|
||||
und die Prüfberichte vom 24.09.2026 (live auf der Box gelesen). Bei Widerspruch zu anderen Dokumenten
|
||||
gewinnt diese Datei. Wer sie ändert: erst messen, dann schreiben, Datum dazu._
|
||||
|
||||
## Maschinen & Zugänge
|
||||
## Maschinen und 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 |
|
||||
| Was | Wo | Stand |
|
||||
|---|---|---|
|
||||
| **KI-Box** — Bosgame M5, AMD Ryzen AI MAX+ 395 (gfx1151), 128 GB gemeinsamer Speicher (~122 GB nutzbar) | `hitonabi@192.168.178.151` (SSH) · Ubuntu 26.04.1 · Zeitzone Europe/Berlin | 24.09. |
|
||||
| **Windows-PC** (Dev-PC, OpenChamber) | `192.168.178.22` | 23.09. |
|
||||
| **Proxmox-Host** | `192.168.178.108` · Container 100 AdGuard, 101 NPMplus, 102 NetBird, 103 PVE Scripts Local, 104 Gitea, 105 PBS · VM 106 Arcane (Docker, u. a. NerdQuiz) | 24.09. |
|
||||
| **Gitea** | `192.168.178.153` · HTTP `:3000` · SSH `:2222`, Benutzer `gitea` | 21.08. |
|
||||
| **PBS** | `192.168.178.156:8007` | 07/2026, nicht neu geprüft |
|
||||
| **QNAP** | `192.168.178.62` | 07/2026, nicht neu geprüft |
|
||||
|
||||
## 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.
|
||||
- **Homelab Orchestrator / Box-Wart (dieses Repo):** PC `F:\Coding Stuff\mission-control-2` ↔ Gitea
|
||||
`Hitonabi/mission-control-v2` ↔ Box `~/mission-control-v2`. Auf Gitea nur `main` plus zwei
|
||||
Archiv-Tags (`git tag -l 'archiv/*'`). `frontend/dist` ist committet (die Box baut kein Frontend).
|
||||
- **Lucy (Desktop-App):** `F:\Coding Stuff\lucy` ↔ `Hitonabi/lucy` (Electron, eigenes Repo).
|
||||
|
||||
## Dienste auf der Box (live 19.08.2026)
|
||||
## Dienste auf der Box
|
||||
|
||||
| Dienst | Port | Zweck |
|
||||
|---|---|---|
|
||||
| `llama-swap` (System-Dienst) | `:8080` | Modell-Router; Engine = llama.cpp **Vulkan/RADV** (`/opt/llamacpp-vulkan`, b11026 seit 17.09.) |
|
||||
| `mission-control-2` (User) | `:9001` | MC2 Cockpit (FastAPI + React Frontend) & Steuerpult |
|
||||
| `mc2-gateway` (User) | `:9010` | `/v1`-Datenpfad (model:auto Routing + native Bildweiche) |
|
||||
| `mc2-steward` (User) | — | Hintergrundwächter (Re-Warm, Health-Sentry, Mem0-Dedupe) |
|
||||
| `hermes-gateway` (User) | `:8642` | Hermes Agent Core API (v0.21.3, Bot Mode) |
|
||||
| `hermes-builtin-ui` (User) | `:9119` (loopback) | Eingebaute Hermes-GUI; LAN-Zugang via MC2-Proxy `/hermes-ui/` |
|
||||
| `mem0-service` (User) | `:8765` | Semantischer Chroma-Gedächtnis-Sidecar |
|
||||
| `voice-service` (User) | `:8650` | STT (faster-whisper) + TTS (Piper/Chatterbox) |
|
||||
| `box-console` (User) | `:7682` | ttyd-Login-Shell hinter MC2-Proxy |
|
||||
| Unit | Art | Port | Aufgabe | 24.09. |
|
||||
|---|---|---|---|---|
|
||||
| `llama-swap` | System | `:8080` | Modell-Router, startet je Modell einen `llama-server` (Vulkan, `/opt/llamacpp-vulkan`), liest die Config mit `--watch-config` | läuft |
|
||||
| `mission-control-2` | User | `:9001` | Box-Wart: Oberfläche, 60 `/api`-Routen, `/v1`-Weiterleitung, `/hermes-ui/`, Erinnerungen | läuft |
|
||||
| `mc2-gateway` | User | `127.0.0.1:9010` | `/v1`-Datenpfad: `model: auto`, Bild-Weiche | läuft |
|
||||
| `mc2-steward` | User | – | Wächter und Re-Warm (hält das Hirn geladen) | läuft |
|
||||
| `hermes-gateway` | User | `:8642` | Hermes Agent „Lucy", Telegram | läuft |
|
||||
| `hermes-builtin-ui` | User | `:9119` | Hermes-Dashboard, in MC2 unter `/hermes-ui/` | läuft |
|
||||
| `lucy-stimme` | User | `127.0.0.1:8021` | Lucys Stimme (pocket-tts `german_24l`) | läuft |
|
||||
| `voice-service` | User | `127.0.0.1:8650` | Spracherkennung für Lucy-Desktop | schläft |
|
||||
| `box-console` | User | `7682` (nur lo) | Web-Konsole (ttyd) | schläft |
|
||||
|
||||
**Stillgelegt:** `hermes-terminal` (:7681), `hermes-webui` (:8787) und alter `governor` (:8100).
|
||||
⚠️ User-Units per SSH nur sichtbar mit `export XDG_RUNTIME_DIR=/run/user/$(id -u)` vor `systemctl --user`.
|
||||
„Schläft" = `systemctl --user disable --now` (User-Entscheid 24.09.): kein Fehler für den Wächter, in der
|
||||
Oberfläche grau mit Knopf „Wecken". Die Android-App (Phase 5) braucht die Spracherkennung wieder.
|
||||
Versionen (Prüfbericht 24.09.): llama.cpp b11147, llama-swap v257, Hermes Agent v0.21.4, Python 3.14 im
|
||||
Box-Wart-venv, Kernel 7.0.0-34 (seit dem Neustart am 24.09. 14:51).
|
||||
‼ User-Units per SSH nur mit `export XDG_RUNTIME_DIR=/run/user/$(id -u)` vor `systemctl --user`.
|
||||
|
||||
## Modell-Stack (llama-swap, live 19.08.2026)
|
||||
Units im Repo (`deploy/`, spielt `deploy.sh` aus): `mission-control-2` (+ Override), `mc2-gateway`,
|
||||
`mc2-steward` (+ Warm-Set-Drop-in), `lucy-stimme`, `voice-service`, `box-console` und die Paare
|
||||
`mc2-radar`, `mc2-backup`, `mc2-morgenmeldung`, `mc2-autoupdate`, `projekte-sync` (.service/.timer).
|
||||
Nicht im Repo: `llama-swap.service` samt Drop-ins (Inhalt: [WIEDERAUFBAU.md](../WIEDERAUFBAU.md), Anhang A),
|
||||
`hermes-gateway.service` (legt Hermes an) und `hermes-builtin-ui.service` samt Drop-ins. Seit 24.09. liegen
|
||||
alle User-Units und die llama-swap-Drop-ins als Kopie in jeder Sicherung.
|
||||
|
||||
**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.
|
||||
## Modelle (llama-swap, Config vom 24.09.2026)
|
||||
|
||||
| Alias/Rolle | Modell | ttl | Notizen |
|
||||
Warm ist nur das Hirn (Gruppe `brains`: `swap: false`, `persistent: true`, `exclusive: false`).
|
||||
Alles andere lädt bei Bedarf und geht nach Ablauf von `ttl` (Sekunden) wieder raus.
|
||||
|
||||
| Modell | Alias | Gruppe | ttl | Kontext | Tempo (13k Kontext) | Anmerkung |
|
||||
|---|---|---|---|---|---|---|
|
||||
| Qwen3.6-35B-A3B | `hermes`, `fast` | `brains` | 0 | 2 × 65 536 | 100,8 t/s (Prüfstand 17.09.) | **Hirn** (MoE, 3B aktiv), DFlash-Draft, KV q8_0, `--reasoning-budget 2048` |
|
||||
| Qwen3.6-35B-A3B, Bild-Zwilling (Eintrag `…-Bild`) | `vision` | `bild` | 900 | 65 536 | 67,9 t/s (Probe 24.09.) | gleiche Gewichte plus Projektor, ohne Draft |
|
||||
| Qwen3.8-27B | `coder`, `heavy` | – | 5400 | 131 072 | 30,4 t/s (Prüfstand 17.09.) | **Coder** (dicht), DFlash2-Draft; ohne Draft ~12,6 t/s |
|
||||
| Qwen3.8-27B, Bild-Zwilling (Eintrag `…-Bild`) | `coder-bild` | `bild` | 900 | 131 072 | 12,5 t/s (Probe 24.09.) | gleiche Gewichte plus Projektor, ohne Draft |
|
||||
| Muse-Glimmer-30B | `debugger` | – | 600 | 65 536 | – | Rolle entfällt (Entscheid 23.09.), Löschkandidat |
|
||||
| Qwen3-Embedding-0.6B | `embed` | – | 300 | 8 192 | – | schläft seit 24.09. (lädt bei Bedarf) |
|
||||
| Qwen3-Reranker-0.6B | `reranker` | – | 300 | 8 192 | – | schläft seit 24.09. (lädt bei Bedarf) |
|
||||
| gpt-oss-120b | – | – | 600 | 32 768 | – | ohne Rolle seit 04.09., Löschkandidat (60 GB) |
|
||||
| Qwen3-VL-30B-A3B | – | – | 900 | 32 768 | – | ohne Rolle seit 24.09., Löschkandidat |
|
||||
|
||||
- Hirn und Coder laufen seit 17.09. als Varianten der Basismodelle (Prüfstand: Hirn 100,8 statt 92,8 t/s,
|
||||
Coder 30,4 statt 26,2 t/s). Die Originale liegen als Rückweg auf der Platte
|
||||
(`Qwen3.6-35B-A3B-MTP-GGUF`, `Qwen3.8-27B-GGUF`).
|
||||
- Reserve-Hirn: Nemotron 3.5 Lightning 30B-A3B (Prüfstand 17.09.: 91,8 t/s, Werkzeuge 3/3), liegt unter
|
||||
`/srv/models/Nemotron-3.5-Lightning-30B-A3B-GGUF/`, ohne Eintrag.
|
||||
- Bilder: Das Gateway schickt eine Anfrage mit Bild im aktuellen Schritt an den Zwilling der Rolle;
|
||||
ältere Bilder beschreibt `vision` einmal als Text. Grund: llama.cpp kann Draft und Bild nicht zusammen
|
||||
(HTTP 500, b11057 und b11157 geprüft).
|
||||
- Speicherregel: Warm-Set plus größtes Bedarfsmodell ≤ ~115 GB. Schlimmster Fall heute laut Config:
|
||||
Warm-Set 27 + Coder 29 + ein Zwilling ~25 GB ≈ 81 GB.
|
||||
- Dichte Modelle sind bandbreitengebunden (~215 GB/s): 17 GB Gewichte ÷ 215 GB/s ≈ 12,6 t/s ohne Draft.
|
||||
- Clients sprechen Modelle nur über **Rollen-Aliase** an, nie über Eintragsnamen (die ändern sich beim Tausch).
|
||||
|
||||
Config: `/etc/llama-swap/config.yaml` ist die lebende Wahrheit (Oberfläche und Radar schreiben sie),
|
||||
`deploy/llama-swap.config.yaml` nur der Abzug im Repo. Regeln dazu: [ARCHITEKTUR.md](../ARCHITEKTUR.md).
|
||||
|
||||
## Hermes (Agent „Lucy")
|
||||
|
||||
- **v0.21.4** (Prüfbericht 24.09.), Git-Install in `~/.hermes/hermes-agent`, Config `~/.hermes/config.yaml`,
|
||||
Persona `~/.hermes/SOUL.md`, Gedächtnis `~/.hermes/memories/` (Hermes führt es selbst; alleinige
|
||||
Gedächtnis-Wahrheit).
|
||||
- Hirn über `mc2-gateway` (`:9010`); Bilder seit 24.09. über `model.supports_vision: true` und die Bild-Weiche.
|
||||
- `approvals.mode: 'off'`, `approvals.cron_mode: auto` — User-Entscheid, bestätigt 17.09.2026.
|
||||
- MCP-Server: aktiv `hermes-web-fetch` (`mcp/mcp_web.py`) und `mission-control-voice` (`mcp/mcp_voice.py`);
|
||||
aus seit 24.09. `hermes-pc-control` (`mcp/mcp_pc.py`, dazu die PC-Aufgabe `HermesPCExecutor`) und
|
||||
`mission-control-stack` (`mcp/mcp_mc.py`).
|
||||
- Plugin `mc2-web-lesen` (`deploy/hermes-plugins/`): liest Webseiten für `web_extract` lokal
|
||||
(`web.extract_backend: mc2-lesen`).
|
||||
- Skills aus dem Repo: `betrieb-playbook`, `pc-pfad-cache` (`deploy.sh` kopiert sie nach `~/.hermes/skills/`);
|
||||
abgelöste Skills liegen in `~/.hermes/skills-archiv/`.
|
||||
- Hermes-Crons (`bash -lc 'hermes cron list'`): „Daily News Report" (täglich 07:00), „KI und Stack Radar"
|
||||
(Sa 08:00). „Updates am Sonntag" ist seit 24.09. pausiert — das macht jetzt `mc2-autoupdate.timer`.
|
||||
|
||||
## Automatik (was von allein läuft)
|
||||
|
||||
| Wann | Was | Wie | Details |
|
||||
|---|---|---|---|
|
||||
| `hermes` + `fast` | Qwen3.6-35B-A3B **Uncensored** (HauhauCS Aggressive, Q4_K_M, giocom-DFlash) — seit 17.09.2026 | 0 | Agent-Hirn. `-c 131072 --parallel 2` → **65536/Slot**, KV **q8_0**, ~94–101 t/s (Prüfstand 17.09.). Original (MTP-GGUF UD-Q4_K_M) liegt daneben, Rückweg = Pfad |
|
||||
| `coder` | Qwen3.8-27B **Uncensored** (JonathanColetti/Heretic, Q4_K_M, eigene mmproj F16) — seit 17.09.2026 | 5400 | **131072 ctx** — `--parallel 1`, der Coder bekommt den ganzen Slot (34a9862). Multimodal, **~32 t/s mit DFlash2-Draft** (17.09.), ohne Draft 12,7 (dicht = bandbreitengebunden) |
|
||||
| `debugger` | Muse-Glimmer-30B (Q4_K_XL, DFlash) | 600 | 65536 ctx; Runtime-Diagnostik & Fehler-Debugger (multimodal) |
|
||||
| `vision` | Qwen3-VL-30B-A3B-Instruct (Q4_K_M) | 900 | 32768 ctx; Multimodal-Augen (On-Demand) |
|
||||
| `heavy` | **= Qwen3.8-27B** (zweiter Alias des Coders, seit 04.09.) | 5400 | Planen/Review (OpenChamber) + chat-Lane des Gateways. gpt-oss-120b (60 GB, AA-Index 24 vs 52) liegt ohne Rolle als Rollback bereit, direkt als `gpt-oss-120b` ansprechbar |
|
||||
| `reranker` | Qwen3-Reranker-0.6B (q8_0, Mungert) | 0 | Sortiert Suchtreffer nach echter Relevanz (`/v1/rerank`) |
|
||||
| `embed` | Qwen3-Embedding-0.6B (f16) | 0 | Vektorisierung für Suche/Sortierung |
|
||||
| jede Minute | Wächter: Dienste, Timer, Hermes-Jobs, Kern, Platte, festgehaltene Updates | `mc2-steward` | [BETRIEB.md](../BETRIEB.md) |
|
||||
| alle 90 s | Re-Warm: lädt das Hirn nach, wenn nichts geladen ist | `mc2-steward` | [ARCHITEKTUR.md](../ARCHITEKTUR.md) |
|
||||
| stündlich (+≤5 min) | `projekte-sync`: `~/projekte` mit Gitea abgleichen (nur fast-forward) | Timer | [BETRIEB.md](../BETRIEB.md) |
|
||||
| 00:30 | Modell-Radar: Suche (≤1× am Tag), Test im Fenster 00:30–02:30 | `mc2-radar.timer` | [RADAR.md](../RADAR.md) |
|
||||
| ~03:00 | NerdQuiz-Nachtlauf (Arcane) fragt das Hirn direkt über `:8080` | extern | [RADAR.md](../RADAR.md) |
|
||||
| 03:30 (+≤5 min) | Sicherung, danach Kopie auf den Proxmox-Host | `mc2-backup.timer` | [BETRIEB.md](../BETRIEB.md) |
|
||||
| So 04:30 (+≤10 min) | Updates: llama-swap → Motor → Hermes, Neustart nur So 04:00–06:59 | `mc2-autoupdate.timer` | [UPDATES.md](../UPDATES.md) |
|
||||
| 07:00 | Morgenmeldung: nachts Gesammeltes als eine Telegram-Nachricht | `mc2-morgenmeldung.timer` | [BETRIEB.md](../BETRIEB.md) |
|
||||
| 07:00 | Daily News Report (Text und Sprachnachricht) | Hermes-Cron | [deploy/jobs/README.md](../../deploy/jobs/README.md) |
|
||||
| Sa 08:00 | KI und Stack Radar | Hermes-Cron | [RADAR.md](../RADAR.md) |
|
||||
| laufend | OS-Sicherheitsupdates | unattended-upgrades | [UPDATES.md](../UPDATES.md) |
|
||||
|
||||
> **Diese sieben sind ALLES** — abgeglichen mit `/etc/llama-swap/config.yaml` am 27.08.2026 (Pfade 17.09.2026).
|
||||
>
|
||||
> **Prüfstand 17.09.2026** (`deploy/bench/pruefstand-hirn.py`; Kandidat auf `:5899`, Hermes spricht per `--provider pruefstand`
|
||||
> aus `providers:` der Hermes-Config dagegen — Live-Stack bleibt unberührt): Uncensored-3.6 = 100,8 t/s @13k (Original 92,8),
|
||||
> Tools 11/12, Hermes-Smoke grün · Uncensored-27B = 30,4 t/s @13k (Original 26,2), Tools 6/6, Coding 3/3 · **Nemotron 3.5 Lightning
|
||||
> 30B-A3B** (Q4_0 + MTP-Draft, `/srv/models/Nemotron-3.5-Lightning-30B-A3B-GGUF/`) = Hirn-Klasse: 10,5 s Prefill @13k, 91,8 t/s,
|
||||
> Tools 3/3, Hermes grün — liegt als Reserve-Kandidat bereit, nicht besetzt. ‼ **Bild + DFlash2 = HTTP 500** („failed to process
|
||||
> speculative batch") beim Coder — Vorbestand seit 04.09., unabhängig vom Modell; Bilder laufen über die Gateway-Bildweiche zu `vision`.
|
||||
> Frühere Tabellen führten zusätzlich `kritiker` (Devstral-Small-2-24B), `scout` (GLM-4.6V-Flash),
|
||||
> `dense-planer` und `doctor`. Die gibt es nicht mehr: die Modell-Konsolidierung (`9a35be9`, 19.08.)
|
||||
> warf sie aus llama-swap, und `fremdblick.sh` — der einzige Aufrufer des Kritikers — fiel mit dem
|
||||
> MC2-Kahlschlag (`1e68f62`). Gewollt so: **ein Coder, ein Agent-Hirn.** `kritiker` und `scout` stehen
|
||||
> weiterhin in `ROLE_IDS` (backend/services/llamaswap.py) — das ist die Liste besetzbarer Rollen,
|
||||
> keine Zusage, dass sie besetzt sind.
|
||||
## Coding-Bahn (OpenChamber)
|
||||
|
||||
Config: `/etc/llama-swap/config.yaml` (sudo zum Schreiben).
|
||||
- OpenChamber läuft am PC mit seiner eigenen OpenCode-CLI; die Dateien liegen lokal unter `F:\Coding Stuff\…`.
|
||||
- Von der Box kommt nur das Modell: Provider `aibox` → `http://192.168.178.151:9001/v1`, Rollen-Aliase
|
||||
(`build` = `coder`, `plan`/`review` = `heavy`, `explore` und `small_model` = `hermes`). Vorlage der PC-Config:
|
||||
`deploy/opencode-config/`.
|
||||
- Push nach Gitea über SSH (`:2222`, Benutzer `gitea`). `deploy/push-und-sync.ps1` stößt danach
|
||||
`projekte-sync` auf der Box sofort an.
|
||||
- `projekte-sync` zieht `mission-control-v2` absichtlich nicht: Der Box-Checkout wird nur über
|
||||
`deploy/deploy.sh` aktualisiert.
|
||||
|
||||
## Hermes (Agent)
|
||||
## Sicherheit (ein Satz)
|
||||
|
||||
- **v0.21.3** (2026.9.14; git-Install `~/.hermes/hermes-agent`, main @ dd13b475 vom 17.09.2026), Config `~/.hermes/config.yaml`, Persona `~/.hermes/SOUL.md` = **Lucy**.
|
||||
- **Bot-Roster: leer** (live geprüft 27.08.2026). Hermes *kann* mehrere Bots, genutzt wird es nicht —
|
||||
die Profile fahren `hermes`, `fast` und `vision`. Frühere Fassungen behaupteten hier einen Roster
|
||||
mit `Coder`/`Qwen3-Coder-Next` und `Debugger`; beides trifft nicht zu.
|
||||
- `approvals.mode: 'off'`, `approvals.cron_mode: auto` — **User-Entscheid** (so seit spätestens dem KISS-Umbau
|
||||
21.08.2026, bestätigt 17.09.2026: „approvals bleibt off"). Lucy fragt nicht nach Freigaben; die Grenze ziehen
|
||||
ufw, PC-Executor-Token und command_allowlist (siehe Security). Frühere Fassungen nannten `smart`/`deny` (Stand 03.07.).
|
||||
- Config-Schema **v45** (migriert 17.09.2026): `connections`-Toolset (Nous-Konnektoren, `manage_connections`) bewusst in
|
||||
`agent.disabled_toolsets`; Curator archiviert ungenutzte Skills nach 30 Tagen (`skills/.archive/`, `hermes curator restore`).
|
||||
- MCP-Server (aus `~/mission-control-v2/mcp/`): mission-control-stack, hermes-pc-control, hermes-web-fetch, mcp_voice.
|
||||
(`mission-control-memory` ist am 27.08.2026 entfallen — Hermes führt sein Gedächtnis selbst.)
|
||||
Der Box-Wart hat keine Anmeldung (User-Entscheid 24.09.), schreibende `/api`-Aufrufe fremder Webseiten lehnt
|
||||
die Herkunftsprüfung ab (`backend/services/herkunft.py`), und Security-Config (approvals, Tokens, ufw,
|
||||
command_allowlist, sudoers) ändert niemand ohne ausdrückliches User-Ja.
|
||||
|
||||
## Automatik-Fahrplan (was nachts von allein läuft)
|
||||
## Deploy und Sicherung (Kurzform)
|
||||
|
||||
| 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 (Configs+Secrets+`~/.hermes/cron`+state → `/srv/models/mc2-backups`, 14 Tage; rsync-Spiegel → Proxmox) |
|
||||
| 03:50 | PBS-Host-Backup der Box (`host/aibox`: 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.) |
|
||||
| 05:15 Sa | **Trend-Radar** (Live-Puls ALLER Modell-Rollen + Engine-A/B gegen neuen llama.cpp-Build + Watch-Liste [ROCm/MMQ/Community-Grid] + HF-Kandidaten-Suche → max. 1 Prüfstand-Kandidat/Woche; Frühwarnung vor dem So-Auto-Update) |
|
||||
| 01:00 So | **Prüfstand** (volles Programm für Modell-Kandidaten: echte Coding-/Agenten-/Recherche-/Deutsch-/Vision-Prüfungen + Tempo auf :5899 gegen die Amtsinhaber-Baseline; Download-Deckel 35 GB, Cache räumt sich selbst, Ergebnis = Karte — Rollen-Wechsel bleibt Commander-Klick. Erkennt Engine-Drift → Tempo-Baseline-Refresh) |
|
||||
| 06:40, 1. d. M. | **Restore-Probe** (stellt WIRKLICH wieder her: PBS-Canary aus hermes.pxar via --pattern + Tarball-Probe + Frische-Check < 36 h; ⚠️-Alarm, wenn ein Backup nicht zurückkommt) |
|
||||
| 06:40, 2. d. M. | **Venv-Audit** (pip outdated + pip-audit-CVEs für voice-venv; Funde = Karte, Update bleibt Commander-Entscheid) |
|
||||
| 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) |
|
||||
| 10 9, 16.08. | **Gedaechtnis-Check** (einmalig: Gedächtnis-Schutt räumen, alte Einträge bereinigen) |
|
||||
| So 04:30 | **Auto-Update** Router→Engine→Hermes (Fangnetz: Backup→Postcheck→Auto-Rollback+Pin) |
|
||||
|
||||
**Sonntags-Update = Hermes-Cron `0ec52231783b`** (`~/.hermes/scripts/sonntags-update.sh` →
|
||||
`deploy/autoupdate.sh`, seit dem KISS-Umbau 21.08.); `mc2-autoupdate.timer` ist disabled — gewollt.
|
||||
Fremd-Software-Updates (Router/Engine/Hermes) dürfen automatisch laufen (User-Entscheid 10.07.); der
|
||||
User klickt sie zusätzlich oft manuell im Wartungs-Drawer. Rot ⇒ Rollback + Pin in
|
||||
`/srv/models/mc2-pins.json`; gepinnte Ebenen werden **still übersprungen**, bis der Pin von Hand
|
||||
gelöst wird (06.–17.09.2026 stand die Box so zwei Wochen still). 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 ist **NOPASSWD: ALL** (live `sudo -n -l`, 04.09. und 17.09.2026); die alte Whitelist in
|
||||
`/etc/sudoers.d/mc2-autonomie` (update-engine/swap, Dienst-Restarts, journalctl) steht daneben weiter.
|
||||
**Security-Config (approvals/Tokens/ufw) NIE ohne explizites User-Ja ändern.**
|
||||
|
||||
## Deploy & Pipeline
|
||||
|
||||
- **Standard-Weg für Box-Arbeit (seit 04.09.2026 der EINZIGE):** Vorschlags-Branch auf Gitea
|
||||
(`wartung/*`, `doku/*`, `feature/*`) → Ampel-CI grün → **der User merged auf main** →
|
||||
`deploy.sh` auf der Box. Das Auftragsbuch (Karten-Klick, detached Annahme-Runner, Bagatell-
|
||||
Annahme, Lucy-Annahme über den PC-Executor) ist ausgebaut — es war seit 02.08. ungenutzt.
|
||||
- Deploy: 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`.
|
||||
- Deploy: `main` auf Gitea, dann auf der Box `bash ~/mission-control-v2/deploy/deploy.sh` — zweistufig,
|
||||
mit Prüftor, Rückweg und Log `/srv/models/mc2-deploy.log`. Details: [BETRIEB.md](../BETRIEB.md).
|
||||
- Sicherung: täglich, 14 Stück unter `/srv/models/mc2-backups/`, Kopie auf dem Proxmox-Host, Zurückspielen
|
||||
per Oberfläche oder `deploy/restore.sh`. Details: [BETRIEB.md](../BETRIEB.md).
|
||||
|
||||
+129
-135
@@ -1,149 +1,143 @@
|
||||
# Finale Verdikte — nicht neu aufrollen ohne neuen, belegten Anlass
|
||||
# Verdikte — entschieden, nicht neu aufrollen
|
||||
|
||||
_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)._
|
||||
_Stand 24.09.2026. Jedes Verdikt nennt Datum und Grund. Wer eines kippen will, braucht eine neue Messung
|
||||
oder einen User-Entscheid (siehe [ARBEITSWEISE.md](ARBEITSWEISE.md)). Abgelöstes steht unten unter
|
||||
„Überholt (mit Datum)": ersetzt, nicht gelöscht._
|
||||
|
||||
## Richtung & Architektur
|
||||
## Richtung
|
||||
|
||||
- **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 ENTFERNT (07.08.2026).** Hermes-Agent ist die Single Source of Truth für Gedächtnis und Autonomie.
|
||||
- **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.
|
||||
- **Box-Wart (23.09.):** MC2 ist nur noch Updater, Wächter und Modell-Radar der KI-Box. Coding läuft in
|
||||
OpenChamber; Ideen, Wissen, Chronik, Skills-Ansicht, Verbinden und Konsole sind aus der Oberfläche raus.
|
||||
Bedienung im Browser an PC und Handy, Oberfläche im Stil „Cockpit" (Warnlampen, Instrumente).
|
||||
- **Umbau statt Neubau (24.09.):** Wächter, Updates mit Rückweg und Festhalten, getrennte Prozesse, Cockpit und
|
||||
Gateway tragen. Neu gebaut wird hinter Schnittstellen: Job-Engine, Einstellungen, Verlauf (Plan:
|
||||
[OFFENE-FAEDEN.md](OFFENE-FAEDEN.md)). Einen Neubau („MC3") hatte der User schon am 03.07. verworfen.
|
||||
- **Homelab Orchestrator (24.09.):** zwei Instanzen, eine Oberfläche. Der Box-Wart bleibt auf der KI-Box, der
|
||||
Homelab-Teil läuft als Container auf dem Proxmox-PC, beide prüfen sich gegenseitig. „Box-Wart" bleibt der
|
||||
Name des Bereichs für die KI-Box.
|
||||
- **Homelab-Umfang und Rechte (24.09.):** Proxmox-Host, 6 Container, Arcane mit Docker, KI-Box, nichts weiter.
|
||||
Proxmox nur über eine Lese-API und einen kleinen Ausführer auf dem Host. Dabei ist, was das Etikett
|
||||
`community-script` oder `watcher` trägt; `watcher-aus` nimmt ein Gerät aus. Schlüssel und Ausführer erst nach
|
||||
User-OK.
|
||||
- **Homelab-Updates nur per Knopf (24.09.):** „Jetzt updaten" je Gerät, mit Erfolgsmeldung und
|
||||
Erreichbarkeits-Check; ist der Check rot, rollt der Homelab-Teil selbst zurück und meldet es. Host-Updates
|
||||
mit Warnung, Neustart getrennt; die KI-Box prüft danach, ob der Host wieder läuft.
|
||||
- **Keine Anmeldung (24.09.):** nur eine unsichtbare Herkunftsprüfung, damit fremde Webseiten keine Knöpfe
|
||||
auslösen (`backend/services/herkunft.py`).
|
||||
- **Android-App am Ende (24.09., Phase 5):** Push, Cockpit, Updates freigeben, Lucy per Sprache mit Live-Modus.
|
||||
- **Die Coding-Oberfläche heißt „OpenChamber" (24.09.).** Die Gemini-/Antigravity-Doku und SAVEPOINT liegen im
|
||||
Archiv.
|
||||
- **Merge und Deploy (23./24.09.):** Claude darf selbst mergen und deployen, sobald alle Prüfläufe grün sind.
|
||||
- **Agent-Runtime: Hermes bleibt (01.07.).** Ein ZeroClaw-Test wurde gebaut und wieder abgerissen; der
|
||||
Latenz-Gewinn kam vom Hirn, nicht von der Runtime ([Messwerte](../archiv/2026-06-30-zeroclaw-poc-ergebnis.md)).
|
||||
- **Hermes führt sein Gedächtnis selbst (07.08.).** Es ist die einzige Gedächtnis-Wahrheit; der Box-Wart hat
|
||||
keinen eigenen Gedächtnis-Dienst.
|
||||
- **Telegram bleibt der Mobil-Kanal, WhatsApp ist verworfen (09.07.):** Die inoffizielle Bridge bedeutet
|
||||
Bann-Risiko auf der Privatnummer und einen zusätzlichen Dauerprozess. Neu bewerten nur bei einer offiziellen
|
||||
Personal-Bot-API.
|
||||
|
||||
## Engine & Modelle (Box, gfx1151)
|
||||
## Betrieb des Box-Warts
|
||||
|
||||
- **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 DFlash-Spec-Draft (seit 22.07.)** — löste draft-mtp ab:
|
||||
A/B/C prod-gleich gemessen 61,7 (ohne) / 81–83 (MTP) / 86–90 t/s (DFlash), live eingependelt
|
||||
89–94. Draft: `giocom-…-DFlash-Q8_0.gguf` (Mainline-kompatibel; abhinand-Konvertierung ist es
|
||||
NICHT — fehlendes `target_layers`-Metadatum). Rollback-Backup `config.yaml.bak-dflash-*`.
|
||||
KV **q8_0** (Entscheid 07.07.: Qualität > ein paar GB; der q4_k-Commit lief nie live).
|
||||
`--parallel 2` = bewusster Trade (Lernen blockiert nie den nächsten Voice-Turn).
|
||||
- **DFlash je Rolle (gemessen 22.07., nicht neu aufrollen):** coder NEIN — 44–50 t/s mit Draft
|
||||
(Q8 wie BF16) vs. 59–60 ohne, trotz 68–76 % Akzeptanz: 3B-aktiv-Decode ist billiger als das
|
||||
Draften. heavy WARTET — gpt-oss-120b-Draft konvertiert (liegt in `/srv/models/DFlash-drafts/`),
|
||||
aber Engine b10087 lädt die Arch nicht („expected 123, got 91“ = Extra-Tensoren unbekannt);
|
||||
nach Engine-Update erneut probieren. vision/scout: keine Drafts veröffentlicht.
|
||||
Eigenbau-Rezept: z-lab-safetensors + `convert_hf_to_gguf.py --target-model-dir <Ziel-Tokenizer>`;
|
||||
⚠️ `llama-quantize` verwirft DFlash-Sondertensoren bei Nicht-Standard-Archs.
|
||||
- **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.
|
||||
|- **Vision-Rolle: GLM-4.6V-Flash bleibt Amtsinhaber.** Qwen-AgentWorld-35B geprüft (Prüfstand
|
||||
t_9daf088f, Speed: tg 26,8 t/s / pp 339,1, Vision: 0/1 korrekt). Qualität deutlich unter
|
||||
GLM-4.6V-Flash, kein Aufsteiger — **abgelehnt**. Wiedervorlage nur bei neuer Version mit
|
||||
nachweislich > 50 % Vision-Rate.
|
||||
|- **dist/ im Git ist ABSICHT.** Box hat kein Node; Deploy = `git reset --hard` + committetes
|
||||
`frontend/dist`. NICHT gitignoren.
|
||||
- **Der Wächter behebt Einfaches selbst (23.09.):** Abgestürzte Dienste (`failed`) startet er neu, höchstens 2× je
|
||||
Stunde. Gestoppte Dienste meldet er nur. Schlafende (abgeschaltet und nicht im Autostart, 24.09.) sind kein Befund.
|
||||
- **Updates automatisch sonntags 04:30 (23.09.),** seit 24.09. über `mc2-autoupdate.timer` statt Hermes-Cron: Als
|
||||
Kind des Hermes-Gateways hing der Lauf beim Hermes-Update am eigenen Neustart (20.09.: 180 s, Fehlschlag).
|
||||
- **Neustart der Box nur im Wartungsfenster So 04:00–06:59 (24.09.).** `MC_AUTOUPDATE_REBOOT_JETZT=1` erzwingt ihn.
|
||||
- **Nachtruhe für Meldungen (24.09.):** `notify.sh` sammelt 00:00–06:59, um 07:00 kommt eine Morgenmeldung.
|
||||
Dringendes geht sofort raus.
|
||||
- **Deploy zweistufig mit Prüftor und Rückweg (24.09.):** `deploy/pruefen.sh` ersetzt die CI-Ampel.
|
||||
- **llama-swap-Config (24.09.):** Die lebende Datei `/etc/llama-swap/config.yaml` ist die Wahrheit. Der Repo-Abzug
|
||||
überschreibt sie nur, wenn er sich im selben Deploy geändert hat. Geschrieben wird nur unter der Config-Sperre.
|
||||
- **Box-Diät (24.09.):** Konsole und Spracherkennung schlafen (nicht gelöscht). PC-Fernsteuerung (MCP
|
||||
`hermes-pc-control`, PC-Aufgabe `HermesPCExecutor`) und MCP `mission-control-stack` sind aus. 10 alte Skills liegen
|
||||
in `~/.hermes/skills-archiv`. Embedding und Reranker schlafen (ttl 300); warm ist nur das Hirn.
|
||||
- **Sicherung mit Lucys Gedächtnis (24.09.):** Der Tarball enthält `memories/`, `SOUL.md`, Skills, Cron-Skripte,
|
||||
Box-Wart-Zustand, Units und Stimmreferenz. `restore.sh` spielt Gedächtnis und Zustand nur zurück, wenn sie fehlen
|
||||
oder mit `--mit-gedaechtnis`.
|
||||
- **Endgültig gelöscht wird nur per User-Klick (23.09.):** Modelle im Aufräumen-Panel, Reste auf der Box ebenso.
|
||||
- **Git (24.09.):** nur `main` plus Archiv-Tags. Ungemergtes, das weg soll, erst als Tag `archiv/<name>` sichern.
|
||||
- **Approvals bleiben aus (17.09.):** `approvals.mode: 'off'`, `approvals.cron_mode: auto`.
|
||||
- **Erinnerungen und Wecker laufen im Box-Wart** (`backend/services/reminders.py`), nicht als Hermes-Cron.
|
||||
- **Hermes-Quellcode nie forken oder patchen; Hermes' interne Prompts bleiben Englisch (03.07.).** Deutsch kommt aus
|
||||
`SOUL.md`; alles, was der User sieht, ist Deutsch.
|
||||
- **Tool Search nicht auf `on` (04.07.):** Es spart Cloud-Tokens, kostet lokal Latenz (gemessen 15,1 s statt 5–7 s).
|
||||
|
||||
## Lucy (Voice-App)
|
||||
## Modell-Radar (23./24.09.)
|
||||
|
||||
- **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).
|
||||
- Zwei Rollen: Hirn und Coder. Höchstens drei Modelle; eine dritte Rolle nur bei nachgewiesenem Mehrwert. Der
|
||||
Debugger entfällt (23.09.).
|
||||
- Das Radar testet selbst: nachts 00:30–02:30 (um 03:00 braucht NerdQuiz das Hirn), höchstens ein neuer Kandidat
|
||||
pro Woche, nur was neben das Warm-Set passt. Durchgefallene werden gelöscht; getauscht wird erst per Knopf
|
||||
„Übernehmen" (23.09.).
|
||||
- Hirn und Coder müssen Bilder verstehen, auch mitten in Agenten-Aufgaben (23.09.).
|
||||
- Fairer Vergleich (24.09.): Jeder Kandidat misst mit seiner schnellsten Draft-Variante (ohne, eingebauter
|
||||
MTP-Kopf, Draft des heutigen Modells); das heutige Modell misst mit seinem Draft.
|
||||
- Jev (TypeSafe AI) ist nicht relevant (24.09.): nur Cloud-API, liefert nur Wahrscheinlichkeiten, passt in keine Rolle.
|
||||
|
||||
## Hermes-Betrieb
|
||||
## Engine und Modelle (Box, gfx1151)
|
||||
|
||||
- **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 bleiben AUS** (`approvals.mode: 'off'`, `cron_mode: auto`; so seit spätestens dem KISS-Umbau
|
||||
21.08.2026, vom User am 17.09.2026 bestätigt). Die Schutzlinie liegt außen — ufw, PC-Executor-Token,
|
||||
command_allowlist — nicht in der Freigabe-Frage. *Überholt damit:* „`approvals.cron_mode: deny` bleibt"
|
||||
(Autonomie-Härtung 1c, Option A: Gefahr-Befehle + execute_code im Cron-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.
|
||||
- **Vulkan/RADV schlägt ROCm** (+12–22 % Generierung, seit 27.06. mehrfach bestätigt). ROCm-Recheck 24.07.: Der
|
||||
Vulkan-Prefill hält bei 32k noch 488 t/s, kein ROCm-Bau. Wiedervorlage nur bei neuem Langkontext-Support der
|
||||
Engine oder einem reinen HIP-Modell. **Das Hirn bleibt in jedem Fall auf Vulkan.**
|
||||
- **hipEngine und strix-halo-toolboxes: beobachten, nicht übernehmen (03.07.).** Übernahme nur nach eigener Messung.
|
||||
- **Hirn: Qwen3.6-35B-A3B** (MoE, 3B aktiv) mit DFlash-Draft (seit 22.07.), KV q8_0 (07.07.: Qualität vor ein paar
|
||||
GB), `--parallel 2` = zwei Slots à 65k (Nebenlast blockiert keinen Sprach-Turn), `--reasoning-budget 2048` (17.09.).
|
||||
- **Dichte Modelle nie als Hirn (17.07.):** bandbreitengebunden, ~12 statt ~100 t/s. Das Radar lässt als Hirn nur
|
||||
Modelle mit höchstens 12B aktiven Parametern zu.
|
||||
- **Coder: Qwen3.8-27B mit DFlash2-Draft (04.09.):** 12,6 → 31 t/s. `heavy` ist seit 04.09. derselbe Coder.
|
||||
- **Varianten der Basismodelle (17.09.):** Hirn und Coder laufen als Varianten (Prüfstand: 100,8 statt 92,8 t/s bzw.
|
||||
30,4 statt 26,2 t/s). Die Originale bleiben als Rückweg. Nemotron 3.5 Lightning 30B-A3B ist eine gleichwertige
|
||||
Hirn-Reserve, nicht besetzt.
|
||||
- **Bild-Zwillinge (24.09.):** Bilder gehen an Zwillinge ohne Draft (`vision`, `coder-bild`), weil llama.cpp Draft
|
||||
und Bild nicht zusammen kann (HTTP 500, b11057 und b11157 geprüft).
|
||||
- **`brains` mit `exclusive: false` (24.09.):** Ohne den Schlüssel ist eine llama-swap-Gruppe exklusiv, und jede
|
||||
Hirn-Anfrage entlud den Coder. Gruppe `bild`: `swap: true` (höchstens ein Zwilling geladen), `exclusive: false`.
|
||||
- **Eine Gruppe für alles gleichzeitig Warme (25.07.):** Zwei ko-residente Gruppen verdrängen sich. Speicherregel:
|
||||
Warm-Set plus größtes Bedarfsmodell ≤ ~115 GB (bei 107 GB Warm-Set plus 20 GB folgte ein Kernel-OOM).
|
||||
- **`frontend/dist` im Git ist Absicht:** Die Box hat kein Node; der Deploy holt `main` per fast-forward.
|
||||
- **MoA-Preset nicht übernommen (09.07.):** lädt mehrere Modelle parallel, RAM ist der Engpass.
|
||||
|
||||
## Lucy (Desktop-App, eigenes Repo)
|
||||
|
||||
- **Electron, nicht Tauri:** Klick-Durchlass-Overlay, Capture, Loopback und Tray gibt es nur in Electron.
|
||||
- **Stimme: pocket-tts `german_24l` bleibt.** Qwen3-TTS-1.7B, Chatterbox und F5 sind verworfen (Latenz, kein
|
||||
Streaming). Seit 04.09. kommt Lucys Stimme von der Box (`lucy-stimme`, in MC2 unter `/api/lucy/stimme/*`), auch
|
||||
für die Sprachnachricht der Daily News.
|
||||
- **Spracherkennung läuft auf der Box** (Parakeet-TDT v3, 0,3–0,8 s), nicht am PC. Der Dienst schläft seit 24.09.
|
||||
bis zur Android-App.
|
||||
- **Kein Multi-Agent im Sprachweg** (dreifache Latenz).
|
||||
- **Smart Turn v3:** Audio links auffüllen; die Ausgabe ist empirisch P(unfertig). Läuft im Sprach-Sidecar (`/turn`).
|
||||
|
||||
## 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).
|
||||
- **LobeChat/WebUI-Ersatz verworfen** (Mehrbenutzer-Design passt nicht; Lehre: Scope challengen).
|
||||
- **Lokaler GPU-Klon (9070 XT):** wenn, dann llama.cpp-Vulkan + llama-swap, nicht Lemonade. Zweck offen.
|
||||
- **Aussortiert:** Kyutai-Streaming-STT (nur EN/FR), Unmute-Voll-Stack, openWakeWord (Wake-Gate ist STT-basiert).
|
||||
|
||||
## Prüfstand 24.07.2026 — Coder-Backend + Modell (ROCm-Recheck erledigt)
|
||||
## Überholt (mit Datum)
|
||||
|
||||
Gemessen mit llama-bench (Vulkan/RADV, Q4_K_M, -fa on) auf der Box (Ryzen AI Max+ 395):
|
||||
|
||||
| Test | Coder-Next 80B-A3B | Devstral Small 2 24B dense |
|
||||
| -------------- | ------------------ | -------------------------- |
|
||||
| pp2048 @ 0 | 702 t/s | 468 t/s |
|
||||
| tg64 @ 0 | 59 t/s | 15 t/s |
|
||||
| pp2048 @ 8192 | 638 t/s | 315 t/s |
|
||||
| tg64 @ 8192 | 55 t/s | 14 t/s |
|
||||
| pp2048 @ 32768 | 488 t/s | 63 t/s (7,7x langsamer) |
|
||||
| tg64 @ 32768 | 47 t/s | 11 t/s (4,2x langsamer) |
|
||||
|
||||
- **Backend bleibt Vulkan (ROCm-Recheck 24.07. erledigt).** Vulkan-Prefill haelt bei 32K
|
||||
noch 488 t/s — der einzige ROCm-Vorteil (Langkontext-Prefill) ist auf dieser Box kein
|
||||
Engpass. Der Autor des fuehrenden ROCm/Strix-Halo-Rezepts ist im Juli 2026 selbst zu
|
||||
Vulkan zurueckgekehrt (+28% Decode). Kein ROCm-Bau — Produktiv-Risiko fuer null Gewinn.
|
||||
Wiedervorlage nur bei neuem Engine-Langkontext-Support oder einem reinen HIP-Modell.
|
||||
- **Coder bleibt Qwen3-Coder-Next — jetzt gemessen bestaetigt.** Devstral Small 2 (einziger
|
||||
neuer agentisch trainierter Dense-Kandidat) ist 4x langsamer bei Generierung und bricht
|
||||
beim 32K-Prefill auf 63 t/s ein (~9 min um einen 32K-Kontext zu lesen). Fuer agentisches
|
||||
Coden auf dieser Box disqualifiziert — Reliabilitaet war nicht einmal noetig als Argument.
|
||||
- **Der Coder ist nicht langsam (59 t/s).** Das Fassaden-/Halluzinations-Problem ist kein
|
||||
Speed- und kein Backend-Problem und wird weder durch Modelltausch noch ROCm geloest. Es
|
||||
ist Reliabilitaet = Modellklasse + Harness. Naechster Hebel: Post-Edit-Verify-Hook,
|
||||
kleine Etappen/frische Threads, Eskalation der harten 20% an Frontier.
|
||||
- **Devstral Small 2 ist der KRITIKER, nicht der Coder — mit hartem 16k-Deckel (25.07.).**
|
||||
Das Verdikt „als Coder disqualifiziert" (24.07.) bleibt unveraendert richtig. Neu ist nur die
|
||||
ENGE Rolle: Gegenlesen einer Etappe. Gemessen am 25.07. auf der Box: Generierung 15,0 t/s
|
||||
(Coder 51,5), Prefill 265-318 t/s (Coder 754). Der Prefill bricht mit der Kontextlaenge ein
|
||||
(32k -> 63 t/s = ~9 min nur zum Lesen), deshalb ist der Kritiker in llama-swap UND in beiden
|
||||
opencode.json auf **16384** gedeckelt: schlimmster Fall je Review bleibt unter einer Minute.
|
||||
Der Nutzen liegt nicht im Tempo, sondern in der FREMDEN Modellfamilie — ein Mistral-Modell hat
|
||||
andere blinde Flecken als der Qwen-Coder. Alternative GLM-4.7-Flash (MoE, schnellerer Prefill)
|
||||
bleibt eine Zeile Config entfernt, kostet aber ~9 Punkte SWE-bench (59,2 vs. 68,0).
|
||||
- **llama-swap haelt nur EINE Gruppe resident, und `persistent: true` ist gefaehrlich (25.07.).**
|
||||
Zwei ko-residente Gruppen verdraengen sich gegenseitig — alles, was gleichzeitig warm sein muss,
|
||||
gehoert in DIESELBE Gruppe (`brains`). `persistent: true` hindert llama-swap daran, vor einem
|
||||
grossen On-Demand-Modell abzuraeumen: mit 107 GB Warm-Set + Vision (20 GB) folgte ein
|
||||
**Kernel-OOM** (llama-server abgeschossen). Regel: `Warm-Set + groesstes On-Demand-Modell
|
||||
<= ~115 GB` UND `persistent: false`. Danach lud vision in 10 s statt 117 s + Absturz.
|
||||
Kontext-Halbierung spart bei Qwen3-Next uebrigens **0 GB** (Hybrid-Attention, winziger KV).
|
||||
| Seit | Was galt | Was heute gilt |
|
||||
|---|---|---|
|
||||
| 24.09. | Sonntags-Update als Hermes-Cron (21.08.) | `mc2-autoupdate.timer`; der Hermes-Cron ist pausiert |
|
||||
| 24.09. | CI-Ampel in Gitea Actions (22.07.); der Runner war seit 28.08. tot | Prüftor `deploy/pruefen.sh` am PC und im Deploy |
|
||||
| 24.09. | `vision` = Qwen3-VL-30B-A3B (seit 20.08.), davor GLM-4.6V-Flash | Bild-Zwillinge von Hirn und Coder |
|
||||
| 24.09. | Regel `persistent: false` für `brains` (25.07., nach dem OOM mit 107 GB Warm-Set) | Warm-Set ist nur das Hirn; `brains` mit `persistent: true` und `exclusive: false` |
|
||||
| 24.09. | Embedding und Reranker immer warm (für die Gedächtnis-Suche) | schlafen, ttl 300 |
|
||||
| 24.09. | Hermes-Aufgabenbrett (Kanban) mit Verteiler im Gateway | Werkzeugsatz seit 21.08. aus, Verteiler (`kanban.dispatch_in_gateway`) seit 24.09. aus |
|
||||
| 24.09. | Werkstatt-Profil, `worker.sh`, Orchestrator- und Konzept-Skills, Agent-Hooks | Profile seit 19.08. archiviert, Dateien am 24.09. aus dem Repo |
|
||||
| 24.09. | Governor (erst Dienst `:8100`, dann OpenCode-Plugin `mc2-governor.ts`) | am PC seit 22.08. abgeschaltet, Plugin am 24.09. aus dem Repo |
|
||||
| 24.09. | Gemini über Antigravity als Notfall- und Review-Partner (10.07.) | Doku im Archiv |
|
||||
| 24.09. | Referenz-Branch des Gedächtnis-Ausbaus | Tag `archiv/referenz-mem0-ausbau` |
|
||||
| 23.09. | „MC2 lebt" (10.07.): Ideen-Queue → Karte → Klick, Auftragsbuch mit Bagatell-Annahme | Box-Wart; das Auftragsbuch war am 04.09. ausgebaut |
|
||||
| 23.09. | Pins nur von Hand lösen (`jq` per SSH) | Knopf „Freigeben" (Wächter-Hinweis und Updates-Seite) |
|
||||
| 04.09. | `heavy` = gpt-oss-120b (03.07.), „nie im heißen Pfad" | `heavy` = Qwen3.8-27B; gpt-oss-120b ohne Rolle |
|
||||
| 21.08. | Hermes Desktop als Arbeits-Tür (09.07.); davor Zed-Agent mit Box-Modell (04.07.: kein Zed ACP) | OpenChamber am PC |
|
||||
| 21.08. | Nachtprogramm aus Traum, Chef-Gutachter, Release- und Trend-Radar, Prüfstand-Cron, Restore-Probe, Selbsttest, Briefing | drei Hermes-Jobs (KISS-Umbau), seit 24.09. Timer für Updates und Morgenmeldung |
|
||||
| 21.08. | natives Fan-out mit `delegation.model: coder` (10.07.) | Werkzeugsatz `delegation` aus |
|
||||
| 21.08. | `approvals.cron_mode: deny` (Autonomie-Härtung, Juli) | `off`/`auto`, bestätigt 17.09. |
|
||||
| 21.08. | Box-Host-Sicherung nach PBS (`pbs-backup.timer`) | aus (lief rot); der Tarball ist die Sicherung |
|
||||
| 21.08. | Zwei-Kritiker-Gate (Coder-Next + GLM) über `fremdblick.sh` | entfallen mit Modell-Konsolidierung (19.08.) und KISS-Umbau |
|
||||
| 19.08. | Kritiker Devstral Small 2 mit 16k-Deckel (25.07.), Rollen `scout` und `dense-planer` | ein Coder, ein Hirn |
|
||||
| 19.08. | Coder Qwen3-Coder-Next „final" (24.07.); „Coder ohne DFlash" (22.07.) | Qwen3.8-27B, seit 04.09. mit DFlash2 |
|
||||
| 07.08. | Gedächtnis-Sidecar Mem0 (`:8765`) samt Memory-MCP und Plugin | Hermes führt sein Gedächtnis selbst; am 27.08. restlos ausgebaut |
|
||||
| 24.07. | ROCm-Recheck 20.–25.07. als Wiedervorlage | erledigt, Vulkan bleibt |
|
||||
|
||||
Reference in New Issue
Block a user