Files
mission-control-v2/docs/AUTONOMIE_PLAN.md
T
Hitonabi 41aeb111d7 Kickoff-Paket Kapitel 0: Autonomie-Plan (E1-E6) + Bench-Harnesses ins Repo
- docs/AUTONOMIE_PLAN.md: 3 Saeulen + Werkstatt, Etappen mit Verifikation, Leitplanken,
  Definition-of-Done, Session-Start-Checkliste — naechste Session startet mit 'leg los'
- deploy/bench/{model-bench,brain-bench}.sh: die 02.07.-Benches als versionierte Harnesses
  (Grundlage der Modell-Selbst-Evaluation E5; Quoting-/pipefail-Lehren eingebaut)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 17:20:22 +02:00

112 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AUTONOMIE-PLAN — „Die Box wartet sich selbst" (Kapitel 0)
**Erstellt:** 02.07.2026, abends — als Kickoff-Paket für die Bau-Session („leg los").
**Nordstern (User):** Haushaltsgerät, kein Dev-Projekt. Der User macht KEINE Updates, fasst keine
Konsole an. Er bekommt Meldungen von Lucy (Telegram) und sagt höchstens „mach". In 6 Monaten ohne
KI-Hilfe darf nichts brachliegen — schlimmster erlaubter Zustand: „selbst-gepinnt und läuft".
**Kontext-Quellen:** Memory `open-threads.md` (Kapitel 0, Bausteine ak) · `verdicts.md` ·
`project-stack-state.md` · dieser Plan. Review-Historie: docs/REVIEW_2026-07-02.md.
---
## Architektur: 3 Säulen + Werkstatt
1. **Stabilität** — eigene Software (MC2, Lucy) EINGEFROREN + Selbsterhaltung. Gitea = Tresor, kein Update-Kanal.
2. **Frische** — Fremd-Software (OS/Engine/Router/Hermes) updatet sich per Timer, mit Gate + Auto-Rollback + Selbst-Pinning.
3. **Evolution** — Radar (Hermes-cron + Web-Suche) findet Sprünge/neue Tools; Modelle bencht die Box selbst.
4. **Werkstatt** — Box-KIs setzen Wartung/Migrationen selbst um: Telegram-Ping → User „mach" → Branch → Code → Gate → Deploy → Bericht.
**Leitplanken (nicht verhandelbar):** Merge/Deploy nie ohne grünes Gate · Security-Config
(approvals/Tokens/ufw) nie ohne explizites User-Ja · alles reversibel (Backup+Branch+Pin) ·
kleine Wartung autonom, große nur vorbereitet+freigegeben.
---
## Was schon existiert (nutzen, nicht neu bauen!)
| Baustein | Wo |
|---|---|
| Update-Pipeline je Ebene mit Backup+Checks | UI-Buttons: OS/Engine (`deploy/update-engine.sh` — hat schon stack-postcheck+Auto-Rollback!), Router (`update-swap.sh`), Hermes (`POST /api/maintenance/hermes-update` → backup→update→doctor→Postcheck) |
| Qualitäts-Gate (Abnahmetest für ALLES) | `deploy/hermes-postcheck.sh`: Mem0+Plugin+Config-Drift-Scan+Tool-Smoke+Voice-Smoke, E2E grün. ⚠️ pipefail-Lektion: Stream-Probes brauchen `set +o pipefail`-Subshell |
| Tägliches Backup + Restore | `deploy/backup.sh` (Timer 03:30) / `restore.sh` |
| Telegram | Hermes-Gateway läuft mit Telegram; CLI `hermes send` (Syntax in Session verifizieren: `hermes send --help`) |
| Cron | `hermes cron` (Subcommand existiert) |
| Coding-KI | Qwen3-Coder-Next (coder-Lane, 131k ctx); Hermes v0.18 hat „Coding Projects mit git-worktree-Management" |
| PC-Fernsteuerung | `client/hermes-pc` Executor (Token `HERMES_PC_TOKEN`) — für Lucy-Builds auf dem Windows-PC |
| Bench-Harnesses | `deploy/bench/brain-bench.sh` + `deploy/bench/model-bench.sh` (mit diesem Kickoff ins Repo gelegt) |
| Health/Repair | LucyHealthCard + `/api/health` brain-Check; systemd `Restart=on-failure` überall |
---
## Etappen (in dieser Reihenfolge bauen)
### E1 · Nervensystem: Meldeweg (klein, zuerst — alles Weitere nutzt ihn)
- `deploy/notify.sh "<Nachricht>"`: primär `hermes send` (Telegram), Fallback: Logfile + `wall`.
Syntax von `hermes send` zuerst auf der Box verifizieren (`bash -lc 'hermes send --help'`).
- Verifikation: Testnachricht landet beim User auf Telegram.
### E2 · Frische: Auto-Update-Timer + Rollback + Pin-Register
- **Pin-Register:** `/srv/models/mc2-pins.json``{komponente: {pinned: bool, version, grund, datum}}`.
Gepinnte Ebene wird vom Timer übersprungen; Pin-Meldung ging via E1 raus.
- `deploy/autoupdate.sh` (Reihenfolge: swap → engine → hermes; Modelle NICHT auto):
je Ebene: Update-Check → wenn Update: bestehenden Pfad nutzen (update-engine.sh / update-swap.sh /
hermes-update-Job via API + Job-Polling) → Postcheck rot ⇒ Rollback (existiert je Pfad) + Pin
setzen + notify; grün ⇒ notify „eingespielt: X→Y".
- systemd-User-Timer `mc2-autoupdate.timer` (wöchentlich So 04:30, nach Backup), Unit nach
`~/.config/systemd/user/`, in `deploy/deploy.sh` registrieren (Muster: mc2-backup.timer).
- **OS-Ebene:** apt braucht sudo → `unattended-upgrades` (nur Security) in der EINMALIGEN
sudo-Session einrichten (zusammen mit Faden C14: stale v1-Unit weg). Bis dahin: OS aus dem Timer raus.
- Verifikation: Timer-Dry-Run (`bash autoupdate.sh`), einmal echt durchlaufen lassen, Telegram-Meldungen prüfen; künstlichen Fehlschlag provozieren (Postcheck-FAIL faken) → Rollback+Pin+Meldung.
### E3 · Stabilität: Lucy-Produktiv-Build (einfrieren)
- Im Lucy-Repo (`F:\Coding Stuff\lucy`): electron-builder ergänzen (portable oder NSIS),
**asar-Caveat:** `app.getAppPath()` zeigt im Build woanders hin → `LUCY_TTS_DIR` absolut setzen
(Installer-Config oder Start-BAT) — siehe Kommentar in `lucy-desktop/src/main/index.ts`.
- Verknüpfung auf den Build; `Lucy-Neustart.bat` auf Build umstellen; Dev-Modus bleibt für Wartung.
- Verifikation: Build starten → Worker-Pool bereit, Sprech-Roundtrip.
- Danach gilt Lucy als EINGEFROREN (Änderungen nur noch via Werkstatt-Kreislauf).
### E4 · Evolution: Radar
- Hermes-cron (monatlich, z. B. 1. des Monats 09:00): Prompt-Job —
„Inventar von `/api/maintenance/updates` + `/v1/models` + Versionsliste einlesen; per web_search
Changelogs/Neuigkeiten zu: llama.cpp, llama-swap, hermes-agent, pocket-tts, onnx-asr/Parakeet,
Silero, smart-turn, Electron, three-vrm + Kategorie-Scan (bessere lokale Coder-/Vision-/TTS-
Modelle für Strix Halo 128 GB); gegen [[verdicts]] halten (Verworfenes nicht wieder vorschlagen);
Ergebnis als kurzer deutscher Report → notify.sh".
- Ablage des Prompts versioniert: `deploy/radar-prompt.md`, cron ruft ihn.
- Verifikation: Cron einmal manuell feuern, Telegram-Report prüfen (Qualität grob checken).
### E5 · Evolution: Modell-Selbst-Evaluation
- `deploy/bench/model-bench.sh <gguf-pfad> [extra-flags]` (liegt bei) → pp/tg-Zahlen.
- Workflow (halbautonom v1): Radar meldet Kandidat → User „mach" → Hermes lädt (hf CLI im
backend-venv existiert) → bencht → notify mit Vergleichstabelle → User-Entscheid → Config-Eintrag.
- Verifikation: einmal mit vorhandenem Modell durchspielen.
### E6 · Werkstatt: Wartungs-Workflow (der Schachzug — zuletzt, auf E1E5 aufbauend)
- Hermes-Skill/Workflow „wartung": Auftrag (aus Radar oder User) → `git worktree` im Box-Checkout
(MC2) bzw. via PC-Executor (Lucy) → Änderung durch coder-Lane → Gate = Postchecks + Build →
Branch-Push zu Gitea → notify mit Diff-Zusammenfassung → User „merge"/„verwerfen" via Telegram
(Hermes approvals-Mechanik nutzen) → bei merge: Deploy-Pfad + Backup + Postcheck.
- Scope v1 BEWUSST klein: Config-Schlüssel-Migrationen, Dependency-Bumps (Lockfile), Ein-Datei-
Patches. Architektur-Umbauten: nur Plan+Branch vorbereiten.
- Verifikation: einen echten Klein-Fall durchspielen (Kandidat: ServicesCard-Restart-Bug, Faden B9
— perfekte Werkstatt-Gesellenprüfung: 1 Datei, klarer Fix, Gate vorhanden).
---
## Definition of Done (Kapitel 0)
1. Wöchentlicher Auto-Update-Lauf mit Telegram-Meldung, verifiziertem Rollback+Pin-Pfad.
2. Lucy läuft als gebaute, eingefrorene App.
3. Monatlicher Radar-Report kommt auf Telegram an.
4. Ein Modell-Kandidat wurde einmal selbst gebencht + gemeldet.
5. Die Werkstatt hat EINEN echten Klein-Fix eigenständig bis zum Merge-Vorschlag gebracht.
6. Runbook-Seite existiert (`docs/RUNBOOK.md`, 1 Seite Mensch-Anleitung).
## Session-Start-Checkliste („leg los")
1. `git -C ~/mission-control-v2 log --oneline -1` auf der Box == origin/main? (SSH: hitonabi@192.168.178.151)
2. Health: `curl -s http://192.168.178.151:9001/api/health` → brain ready?
3. `bash -lc 'hermes send --help'` → Syntax für E1 klären.
4. Dann E1 → E6 der Reihe nach; jede Etappe committen + deployen + real verifizieren (Telegram!).
Gitea-Push: PowerShell, Auth flatterhaft → einmal Retry.