doku: Einstieg neu (README, docs/README, BEDIENUNG), Jobs-Uebersicht, AGENTS korrigiert
- README.md: eine Seite zum Homelab Orchestrator - Bereiche Box-Wart und Homelab, zwei Instanzen, Seiten der Oberflaeche, was von allein laeuft, Dienste und Ports, Entwickeln mit Prueftor, Links. Ersetzt die alte MC2-Seite (Mem0, Ideen-Queue, entfernte Routen, alte Modelltabelle, kaputte Tabellen). - docs/README.md (loest docs/wissen/README.md ab): Index, Lesereihenfolge, Archiv-Uebersicht, Pflegeregeln. - docs/BEDIENUNG.md: fuer den User neu geschrieben - Start, Updates, Modelle, Dienste, Einstellungen, jede Telegram-Nachricht mit Bedeutung und Handgriff, "wenn etwas hakt". - deploy/jobs/README.md: alle Jobs und Timer (Modell-Radar, NerdQuiz-Nachtlauf 03:00, Updates wieder per Timer), Ausbringen macht deploy.sh, Daily-News-Kette auf dem Stand vom 23./24.09. - AGENTS.md: Coding-Oberflaeche heisst OpenChamber; der Verweis auf .agents/mcp_config.json (am 24.09. geloescht) ersetzt durch den tatsaechlichen Weg ueber :9001/v1; Titel mit dem neuen Produktnamen. - Archivdatei der Referenzaufgabe umbenannt (…-gedaechtnis-ausbau.md), damit der Index keine Altnamen traegt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
f4bbdad311
commit
424aaada27
@@ -1,4 +1,4 @@
|
||||
# AGENTS.md — Mission Control 2.0
|
||||
# AGENTS.md — Homelab Orchestrator (vormals Mission Control 2.0)
|
||||
|
||||
Projekt-Geschmack für Coding-Agenten (Kilo Code, Claude Code lesen diese Datei).
|
||||
Kurz gehalten, nur die Wahrheiten, die man sonst schmerzhaft lernt. Details: `README.md`, `docs/`.
|
||||
@@ -34,9 +34,9 @@ Engine (llama-swap) · Builtin-Routing-Gateway (`model: auto`) · MC2 (FastAPI +
|
||||
- **Nie direkt auf `main` arbeiten.** Immer Branch (`wartung/...`), Gate grün, dann Merge/Deploy.
|
||||
|
||||
## Agentic IDE & Vibe Coding
|
||||
- **Zero Middle-Layers:** Coding passiert zu 100% lokal auf dem Dev-PC in der **OpenCode Desktop IDE**.
|
||||
- **Zero Middle-Layers:** Coding passiert zu 100% lokal auf dem Dev-PC in **OpenChamber** (mit eigener OpenCode-CLI).
|
||||
- Es gibt keinen Zed-Workflow, keine OpenCode-CLI-Mittelschicht und keinen Governor mehr.
|
||||
- Der Agent in OpenCode Desktop nutzt via MCP (`.agents/mcp_config.json`) die API der Box (`:9001/v1`), um autonom Projekte zu bauen.
|
||||
- Der Agent in OpenChamber nutzt die Modelle der Box über `http://192.168.178.151:9001/v1` (Provider `aibox`, nur Rollen-Aliase; Vorlage der PC-Config: `deploy/opencode-config/`).
|
||||
- **Prüftor:** `bash deploy/pruefen.sh` (Shell-/Python-Syntax, ruff, Importe, pytest) muss vor jedem Push grün sein.
|
||||
Der Deploy auf der Box führt es vor dem Umschalten noch einmal aus; rot = automatisch zurück auf den alten Stand.
|
||||
|
||||
|
||||
@@ -1,148 +1,89 @@
|
||||
# Mission Control 2.0
|
||||
# Homelab Orchestrator
|
||||
|
||||
Steuerzentrale des lokalen KI-Stacks auf dem **Bosgame M5** (AMD Ryzen AI MAX+ 395 „Strix Halo",
|
||||
122 GB Unified Memory, **keine dedizierte GPU** — llama.cpp über **Vulkan/RADV**). Läuft live als
|
||||
sudo-freier systemd-User-Dienst und ist auf **Autonomie** ausgelegt: Die Box wartet sich selbst,
|
||||
prüft sich selbst und meldet sich, wenn etwas nicht stimmt.
|
||||
Ein Steuerpult fürs Heimnetz, das sich selbst wartet. Zwei Bereiche, eine Oberfläche:
|
||||
|
||||
> **100 % lokal.** Kein Cloud-Modell, kein externer Dienst im Datenpfad.
|
||||
- **Box-Wart** betreut die KI-Box (Bosgame M5, AMD Ryzen AI MAX+ 395, 128 GB gemeinsamer Speicher, llama.cpp über
|
||||
Vulkan): hält sie aktuell, passt auf sie auf und sucht bessere Modelle. Live seit 23.09.2026.
|
||||
- **Homelab** soll den Proxmox-PC mit seinen Containern und Arcane (Docker) betreuen: offene Updates zeigen, per
|
||||
Knopf einspielen, danach die Erreichbarkeit prüfen. In Arbeit ([Fahrplan](docs/wissen/OFFENE-FAEDEN.md)).
|
||||
|
||||
## Die drei Bahnen
|
||||
Dieselbe Codebasis läuft als zwei Instanzen: auf der KI-Box (Rolle `box`) und später als Container auf dem
|
||||
Proxmox-PC (Rolle `homelab`); beide prüfen sich gegenseitig. Repo, Dienste und Dateien tragen noch den alten Namen
|
||||
„Mission Control 2" (`mission-control-v2`, `mission-control-2`, `mc2-*`). Alles läuft lokal, kein Cloud-Modell im
|
||||
Datenpfad.
|
||||
|
||||
| Bahn | Was sie tut | Wo |
|
||||
## Oberfläche
|
||||
|
||||
Im Heimnetz `http://192.168.178.151:9001`, am PC oder am Handy.
|
||||
|
||||
| Seite | Inhalt |
|
||||
|---|---|
|
||||
| **Start** | Warnlampen, Instrumente (Speicher, Temperatur, Platte, Laufzeit), Checkliste mit den Hinweisen des Wächters und ihren Knöpfen, Flugplan (was lief, was kommt), Radar-Kasten |
|
||||
| **Updates** | Bausteine Betriebssystem, Motor (llama.cpp), llama-swap und Hermes; Verlauf der Update-Läufe; Sicherungen |
|
||||
| **Modelle** | Speicher, Rollen Hirn und Coder, wer die Modelle nutzt, Modell-Radar, Aufräumen, Modelle selbst suchen |
|
||||
| oben rechts bzw. „Mehr" | Hermes-Dashboard, Dienste und Protokolle, Einstellungen |
|
||||
|
||||
Anleitung für den Alltag: [docs/BEDIENUNG.md](docs/BEDIENUNG.md).
|
||||
|
||||
## Was von allein läuft
|
||||
|
||||
- **Wächter** (jede Minute): Dienste, Timer, Hermes-Jobs, Kern, Platte, festgehaltene Updates und die
|
||||
Partner-Instanz. Abgestürzte Dienste startet er selbst neu (höchstens 2× je Stunde), Rotes meldet er per Telegram.
|
||||
- **Updates** sonntags 04:30: llama-swap → Motor → Hermes, danach Prüfung; rot → zurück und festhalten. Die Box
|
||||
startet nur sonntags zwischen 04:00 und 06:59 neu.
|
||||
- **Modell-Radar** nachts 00:30–02:30: sucht Kandidaten für Hirn und Coder und testet höchstens einen pro Woche;
|
||||
übernommen wird nur per Knopf.
|
||||
- **Sicherung** täglich gegen 03:30, 14 Stück, Kopie auf dem Proxmox-Host.
|
||||
- **Meldungen** gehen an Telegram und in Lucys Briefkasten; nachts gesammelt, um 07:00 als eine Morgenmeldung,
|
||||
Dringendes sofort.
|
||||
|
||||
Alle Zeiten: [docs/wissen/STACK.md](docs/wissen/STACK.md), Abschnitt „Automatik".
|
||||
|
||||
## Dienste und Ports (KI-Box)
|
||||
|
||||
| Port | Unit | Aufgabe |
|
||||
|---|---|---|
|
||||
| **Steuerzentrale** | Modelle, Routing, Wartung, Gedächtnis, Ideen-Queue | MC2 `:9001` |
|
||||
| **Coding** | Agentic IDE (z.B. OpenCode Desktop) auf Dev-PC via lokaler API + MCP | 100% lokal |
|
||||
| **Lucy** | Innere Stimme am PC (HUD, kein Avatar) und auf Telegram — eine Stimme, ein Hirn | eigenes Repo `Hitonabi/lucy` |
|
||||
| `9001` | `mission-control-2` | Oberfläche, `/api`, `/v1` für Lucy und OpenChamber, Hermes-Dashboard unter `/hermes-ui/` |
|
||||
| `9010` (nur lokal) | `mc2-gateway` | `/v1`-Datenpfad: `model: auto`, Bild-Weiche |
|
||||
| – | `mc2-steward` | Wächter und Re-Warm |
|
||||
| `8080` | `llama-swap` (System-Dienst) | Modell-Router, startet je Modell einen `llama-server` |
|
||||
| `8642` | `hermes-gateway` | Hermes Agent „Lucy", Telegram |
|
||||
| `9119` | `hermes-builtin-ui` | Hermes-Dashboard |
|
||||
| `8021` (nur lokal) | `lucy-stimme` | Lucys Stimme |
|
||||
| `8650` (nur lokal) | `voice-service` | Spracherkennung (schläft seit 24.09.) |
|
||||
| `7682` (nur lokal) | `box-console` | Web-Konsole (schläft seit 24.09.) |
|
||||
|
||||
Lucy holt ihr Hirn direkt über das MC2-Gateway (`:9010/v1`) mit nativer Bildweiche und Voice-Streaming.
|
||||
|
||||
## Ports & Dienste
|
||||
|
||||
| Port | Dienst | Erreichbar |
|
||||
|---|---|---|
|
||||
| `9001` | **MC2** (FastAPI + React) — Cockpit, API, Konsole | LAN |
|
||||
| `8080` | **llama-swap** — Modell-Router | LAN |
|
||||
| `9010` | `mc2-gateway` — `/v1`-Datenpfad (`model: auto`, Bild-Weiche) | loopback |
|
||||
| `8642` · `9119` | Hermes-Gateway · Hermes-Web-UI | loopback |
|
||||
| `8765` · `8650` | Mem0-Sidecar · Voice-Sidecar (STT/TTS) | loopback |
|
||||
| `7682` | ttyd — Box-Konsole, same-origin unter `/console/` | loopback |
|
||||
|
||||
Units in [`deploy/`](deploy/): `mission-control-2` · `mc2-gateway` · `mc2-steward` ·
|
||||
`mem0-service` · `voice-service` · `box-console` · `hermes-builtin-ui` + Timer für Backup,
|
||||
Auto-Update und Self-Smoke. `llama-swap` läuft als System-Unit.
|
||||
|
||||
## Die Bau-Pipeline
|
||||
|
||||
```
|
||||
Idee in MC2 → Gitea-Repo (mit CI-Ampel + VERIFY) → in Agentic IDE bauen → Ampel → main
|
||||
└── autonomes Vibe Coding via OpenCode Desktop + MCP
|
||||
```
|
||||
|
||||
Jedes neue Repo wird von [`deploy/gitea-repo-create.sh`](deploy/gitea-repo-create.sh) **mit beiden
|
||||
Wächtern geboren**:
|
||||
|
||||
- **`.gitea/workflows/ci.yml`** — die Außen-Prüfung nach dem Push (Gitea Actions)
|
||||
- **`VERIFY`** — die Innen-Prüfung: eine Zeile, wie man das Projekt testet. Die Agentic IDE
|
||||
führt sie im Mix-Ansatz vor jedem Push aus, um Code-Fehler ("Quality Gap") abzufangen.
|
||||
Keine `VERIFY`-Datei = Prüf-Tor aus.
|
||||
|
||||
## Modelle & Rollen
|
||||
|
||||
Gemessen auf der Box (Stand: 27.08.2026, Vulkan b10653):
|
||||
|
||||
| Rolle | Modell | Tempo | Aufgabe |
|
||||
|---|---|---|---|
|
||||
| `coder` | Qwen3.8-27B (dicht, 27B) | **12,7 t/s** | Plant und baut — der Haupt-Coder. **131k Kontext** (ganzer Slot), multimodal |
|
||||
| `hermes` / `fast` | Qwen3.6-35B-A3B | **69,6–90 t/s** | Lucys Hirn **und** Sucher-Subagent. Immer warm, 65k/Slot |
|
||||
| `debugger` | Muse-Glimmer-30B | **40–50 t/s** (DFlash) | Runtime-Debugger & Fehler-Diagnostiker (multimodal) |
|
||||
| `vision` | Qwen3-VL-30B-A3B | auf Abruf | Lucys Augen (On-Demand) |
|
||||
| `heavy` | gpt-oss-120b | nur nachts | Chef-Gutachter (4:30 Uhr). **Nie tagsüber** — verdrängt das warme Set |
|
||||
| `embed` · `reranker` | Qwen3 0.6B | immer warm | Vektorsuche + Feinsortierung |
|
||||
|
||||
> Sieben Rollen, mehr nicht. Frühere Fassungen listeten hier auch `kritiker`, `scout` und
|
||||
> `dense-planer` — die Modell-Konsolidierung vom 19.08. hat sie entfernt (ein Coder, ein
|
||||
> Agent-Hirn). Der dichte 27B ist seither nicht mehr „Planer" neben dem Coder, sondern **ist**
|
||||
> der Coder. Details: `docs/wissen/STACK.md`.
|
||||
|
||||
‼️ **Dichte Modelle sind auf dieser Box bandbreitengebunden.** Der Prefill bricht mit wachsendem
|
||||
Kontext ein — beim früheren Kritiker (Devstral, dicht) waren bei 32k gemessene 63 t/s ≈ **9 Minuten
|
||||
nur zum Lesen**, weshalb er hart auf 16k gedeckelt war. Das gilt weiter für jedes dichte Modell:
|
||||
`coder` (Qwen3.8-27B) liefert ~12,7 t/s gegen ~90 t/s des MoE-Hirns — **kein Konfigfehler, sondern
|
||||
das 215-GB/s-Limit der Plattform.** Der Kritiker selbst ist seit dem 19.08. nicht mehr im Stack.
|
||||
|
||||
‼️ **Speicher-Regel:** `Warm-Set + größtes On-Demand-Modell ≤ ~115 GB`. Die ko-residente Gruppe
|
||||
(`groups.brains`) steht auf **`persistent: true`** (Verdrängungsschutz; live gegengeprüft
|
||||
27.08.2026). Wichtig ist nicht der Schalter, sondern: **alles, was gleichzeitig warm sein muss,
|
||||
gehört in DIESELBE Gruppe** — zwei Gruppen verdrängen sich gegenseitig, und `persistent` schützt
|
||||
nicht davor (gemessen 25.07.). Details und
|
||||
Messwerte: [`docs/wissen/VERDIKTE.md`](docs/wissen/VERDIKTE.md).
|
||||
|
||||
## Qualitäts-Tore
|
||||
|
||||
1. **Prüf-Tor** — `VERIFY` nach jeder Etappe; rot → der Agent (OpenCode Desktop) repariert lokal nach.
|
||||
2. **CI-Ampel** — Lint (ruff) · Import/Syntax (compileall) · Frontend-Build. Läuft in Gitea.
|
||||
|
||||
Gemeinsame Lehre dahinter: **Wissen lebt in Datei + git, nicht im schrumpfenden Chat-Kontext.**
|
||||
Kontext-Komprimierung löscht still die Regeln mit.
|
||||
|
||||
## Selbsterhaltung
|
||||
|
||||
- **Health-Wächter** (`sentry`) + **Warm-Set-Wächter** (`warmer`, per Env abschaltbar)
|
||||
- **Updates mit Fangnetz** — Backup → Update → Postcheck → bei Fehler **Auto-Rollback + Pin**
|
||||
- **Melde-Briefkasten** (`/api/voice/announce`) — alles, was die Box von sich aus sagen will;
|
||||
Lucy pollt ihn und spricht es. Absender `loop` = Coding-Ereignisse
|
||||
- **Gedächtnis** — Mem0-Sidecar, auto-lernend, semantisch, mit Auto-Dedupe
|
||||
- Tägliche Self-Smokes, Zeitmaschine (Snapshot + Ein-Klick-Restore), Chronik der autonomen Taten
|
||||
|
||||
## API (Auswahl)
|
||||
|
||||
`health · models/* · discover · fit · groups · routing/* · system/* · maintenance/* · connect ·
|
||||
memory/* · agent/* · ideen/* · lucy/stimme/* · chronik · eigenleben · wissen ·
|
||||
zeitmaschine/* · reminders/* · voice/* · events (SSE)`
|
||||
OpenAI-kompatibel: `/v1/chat/completions`, `/v1/completions`. MCP-Server: [`mcp/`](mcp/).
|
||||
Dazu die Timer `mc2-radar`, `mc2-backup`, `mc2-morgenmeldung`, `mc2-autoupdate` und `projekte-sync`. Die Unit-Dateien
|
||||
liegen in [`deploy/`](deploy/).
|
||||
|
||||
## Entwickeln
|
||||
|
||||
```bash
|
||||
# Backend
|
||||
# Backend lokal auf :9000 (Windows)
|
||||
cd backend
|
||||
python -m venv .venv && .venv/Scripts/python -m pip install -r requirements.txt # Windows
|
||||
python -m venv .venv
|
||||
.venv/Scripts/python -m pip install -r requirements.txt -r requirements-dev.txt
|
||||
.venv/Scripts/python -m uvicorn app:app --port 9000
|
||||
|
||||
# Frontend (Dev, proxyt /api → :9000)
|
||||
cd frontend && npm install && npm run dev # http://localhost:5173
|
||||
|
||||
# Frontend (Build → wird vom Backend ausgeliefert)
|
||||
cd frontend && npm run build # → frontend/dist
|
||||
# Frontend (Vite leitet /api an :9000 weiter; MC_API_TARGET=http://192.168.178.151:9001 zeigt auf die Box)
|
||||
cd frontend && npm ci && npm run dev
|
||||
```
|
||||
|
||||
`frontend/dist` **wird mitcommittet** — die Box hat kein Node; Deploy ist ein `git pull` plus
|
||||
Dienst-Neustart. Vor jedem Commit lohnt der Ampel-Vorlauf: `ruff check .` und `npm run build`.
|
||||
Vor jedem Push: `bash deploy/pruefen.sh` (Shell- und Python-Syntax, `ruff check .`, Importe, `pytest backend/tests`);
|
||||
bei Frontend-Änderungen zusätzlich `npm run lint`, `npm test` und `npm run build` in `frontend/`, und das neue
|
||||
`frontend/dist` mitcommitten, denn die Box baut kein Frontend. Gearbeitet wird auf einem Branch; `main` liegt auf
|
||||
Gitea (`ssh://gitea@192.168.178.153:2222/Hitonabi/mission-control-v2.git`), danach auf der Box
|
||||
`bash ~/mission-control-v2/deploy/deploy.sh`. Regeln für Agenten: [AGENTS.md](AGENTS.md).
|
||||
|
||||
## Env-Vars (Auswahl)
|
||||
## Doku
|
||||
|
||||
| Variable | Default | Zweck |
|
||||
| Dokument | Für | Inhalt |
|
||||
|---|---|---|
|
||||
| `MC_PORT` | `9000` | MC-Backend-Port (**die Unit auf der Box setzt `9001`**) |
|
||||
| `MC_LLAMA_SWAP_URL` | `http://127.0.0.1:8080` | Engine/Router |
|
||||
| `MC_CONFIG_PATH` | `/etc/llama-swap/config.yaml` | llama-swap-Config |
|
||||
| `MC_V1_UPSTREAM` | – | gesetzt → `/v1` geht an `mc2-gateway` (`:9010`) statt in-process |
|
||||
|
||||
| `MC_ENGINE_PATH` | `/opt/llamacpp-vulkan` | aktive Engine (Vulkan-Build) |
|
||||
| `MC_REWARM_ENABLED` | `1` | Warm-Set-Wächter (auf der Box bewusst `0`) |
|
||||
| `MC_DRAFTS_DIR` · `MC_SPEC_TYPE` | `$MODELS/drafts` · `draft-simple` | Spekulatives Dekodieren |
|
||||
|
||||
|
||||
|
||||
## Weiterlesen
|
||||
|
||||
| Dokument | Inhalt |
|
||||
|---|---|
|
||||
| [`docs/BEDIENUNG.md`](docs/BEDIENUNG.md) | Wie man MC2 benutzt |
|
||||
| [`docs/RUNBOOK.md`](docs/RUNBOOK.md) · [`docs/DISASTER_RECOVERY.md`](docs/DISASTER_RECOVERY.md) | Betrieb, Störungen, Wiederherstellung |
|
||||
| [`docs/HERMES_SETUP.md`](docs/HERMES_SETUP.md) | Hermes-Agent, Profile, Crons |
|
||||
| [`docs/wissen/VERDIKTE.md`](docs/wissen/VERDIKTE.md) | **Finale Technik-Entscheide — nicht neu aufrollen** |
|
||||
| [`docs/wissen/FALLEN.md`](docs/wissen/FALLEN.md) · [`docs/wissen/OFFENE-FAEDEN.md`](docs/wissen/OFFENE-FAEDEN.md) | Stolpersteine · offene Punkte |
|
||||
|
||||
| [`AGENTS.md`](AGENTS.md) | Arbeitsregeln für Agenten in diesem Repo |
|
||||
| [docs/README.md](docs/README.md) | alle | Index, Lesereihenfolge, Pflegeregeln |
|
||||
| [docs/BEDIENUNG.md](docs/BEDIENUNG.md) | User | Oberfläche und Telegram-Nachrichten |
|
||||
| [docs/ARCHITEKTUR.md](docs/ARCHITEKTUR.md) | Agenten, Technik | Prozesse, Rollen, Datenwege, wer was schreibt |
|
||||
| [docs/BETRIEB.md](docs/BETRIEB.md) | Agenten, Technik | Handgriffe, Meldungen, Wächter, Deploy, Sicherung, Notfall |
|
||||
| [docs/UPDATES.md](docs/UPDATES.md) | Agenten, Technik | Sonntags-Update, Festhalten, Freigeben |
|
||||
| [docs/RADAR.md](docs/RADAR.md) | Agenten, Technik | Modell-Radar, Stack-Radar, Prüfstand |
|
||||
| [docs/WIEDERAUFBAU.md](docs/WIEDERAUFBAU.md) | Technik | die KI-Box von null aufbauen |
|
||||
| [docs/wissen/](docs/wissen/) | Agenten | Stand, Verdikte, Fallen, Arbeitsweise, offene Fäden |
|
||||
|
||||
+81
-177
@@ -1,199 +1,103 @@
|
||||
# Die drei Jobs (KISS-Umbau, 21.08.2026)
|
||||
# Automatik der Box: Hermes-Jobs und Timer
|
||||
|
||||
Vorher: **4 Hermes-Crons + 6 systemd-Timer**, verteilt auf zwei Mechanismen.
|
||||
Deshalb fiel am 20.08. tagelang niemandem auf, dass ein Waechter fehlte —
|
||||
niemand schaut an zwei Orten nach.
|
||||
_Stand 24.09.2026 (erster Stand: KISS-Umbau 21.08.2026)._
|
||||
|
||||
Jetzt: **drei Jobs, ein Ort.** `hermes cron list` zeigt die gesamte Automatik.
|
||||
Bis zum 20.08. liefen 4 Hermes-Crons und 6 systemd-Timer nebeneinander; dass ein Wächter fehlte, fiel tagelang
|
||||
niemandem auf, weil niemand an zwei Orten nachsah. Seitdem gibt es wenige, klar getrennte Jobs, und die Startseite
|
||||
des Box-Warts zeigt Hermes-Jobs und Timer zusammen im **Flugplan**.
|
||||
|
||||
| Job | Wann | Art | Skript |
|
||||
|---|---|---|---|
|
||||
| **Daily News Report** | taeglich 07:00 | Agent + Websuche | — |
|
||||
| **KI und Stack Radar** | samstags 08:00 | `--no-agent` | `stack-radar.sh` → `stack-ist.sh` |
|
||||
| **Updates am Sonntag** | sonntags 04:30 | `--no-agent` | `sonntags-update.sh` → `autoupdate.sh` |
|
||||
## Was läuft
|
||||
|
||||
Daneben laufen als stille Rohrleitung weiter: `mc2-backup` (03:33) und
|
||||
`projekte-sync` (stuendlich). Die melden sich nie, die sichern und synchronisieren nur.
|
||||
| Job | Wann | Mechanismus | Skript | Meldet |
|
||||
|---|---|---|---|---|
|
||||
| **Daily News Report** | täglich 07:00 | Hermes-Cron, Agent mit Websuche | `news-melden.sh` | Text und Sprachnachricht |
|
||||
| **KI und Stack Radar** | samstags 08:00 | Hermes-Cron, `--no-agent` | `stack-radar.sh` → `stack-ist.sh`, `stack-upstream.py` | immer, Betreff `[Stack-Radar]` |
|
||||
| **Updates am Sonntag** | sonntags 04:30 (+≤10 min) | systemd-Timer `mc2-autoupdate.timer` | `sonntags-update.sh` → `deploy/autoupdate.sh` | `[Box-Update]` |
|
||||
| Modell-Radar | täglich 00:30, Test bis 02:30 | systemd-Timer `mc2-radar.timer` | `backend/radar_lauf.py` | nur „bestanden" (`[Modell-Radar]`) |
|
||||
| Sicherung | täglich 03:30 (+≤5 min) | systemd-Timer `mc2-backup.timer` | `deploy/backup.sh` | nein; einen Fehlschlag meldet der Wächter |
|
||||
| Morgenmeldung | täglich 07:00 | systemd-Timer `mc2-morgenmeldung.timer` | `deploy/morgenmeldung.sh` | die Sammelmeldung der Nacht |
|
||||
| projekte-sync | stündlich | systemd-Timer `projekte-sync.timer` | `deploy/projekte-sync.sh` | nein |
|
||||
| NerdQuiz-Nachtlauf | ~03:00 | extern: NerdQuiz auf Arcane fragt das Hirn direkt über llama-swap (`:8080`) | – | – |
|
||||
|
||||
- **Updates laufen seit 24.09. wieder per Timer.** Der Hermes-Cron „Updates am Sonntag" ist pausiert: Als Kind des
|
||||
Hermes-Gateways hing der Updater am eigenen Neustart, wenn er Hermes aktualisierte (20.09.: 180 s, Fehlschlag).
|
||||
- **Das Modell-Radar endet um 02:30,** weil der NerdQuiz-Nachtlauf um 03:00 das Hirn braucht. Den Nachtlauf erkennt
|
||||
der Flugplan an den nächtlichen Anfragen (Modell-Nutzung aus dem Journal von llama-swap).
|
||||
- Übersicht auf der Box: `bash -lc 'hermes cron list'` (Hermes-Jobs), `systemctl --user list-timers` (Timer).
|
||||
|
||||
## Der Entwurfsgrundsatz
|
||||
|
||||
> **Fakten sammelt ein Skript, Prosa schreibt das Modell.**
|
||||
|
||||
Der alte Selbsttest war am 20.08. gruen, waehrend vier Dinge kaputt waren: das
|
||||
Kritiker-Gate zeigte seit einem Tag auf ein umbenanntes Modell (404), Lucys
|
||||
`SOUL.md` war blockiert, das Dashboard stand ohne Passwort offen, die CI war rot.
|
||||
Er hatte geprueft, ob Dienste **antworten** — nicht, ob sie **stimmen**.
|
||||
Der alte Selbsttest war am 20.08. grün, während vier Dinge kaputt waren: Das Kritiker-Gate zeigte seit einem Tag auf
|
||||
ein umbenanntes Modell (404), Lucys `SOUL.md` war blockiert, das Dashboard stand ohne Passwort offen, die CI war rot.
|
||||
Er hatte geprüft, ob Dienste **antworten**, nicht, ob sie **stimmen**.
|
||||
|
||||
`stack-ist.sh` prueft deshalb Ergebnisse: loesen die Rollen-Aliase noch auf? Ist
|
||||
der letzte Timer-Lauf gutgegangen? Ist eine Sicherung juenger als zwei Tage?
|
||||
Liefert die oeffentliche Adresse Daten ohne Anmeldung? Beim ersten Lauf hat es
|
||||
sofort zwei echte Befunde gefunden.
|
||||
`stack-ist.sh` prüft deshalb Ergebnisse: Lösen die Rollen-Aliase noch auf? Ist der letzte Timer-Lauf gutgegangen?
|
||||
Ist eine Sicherung jünger als zwei Tage? `stack-upstream.py` vergleicht Neuigkeiten draußen (Releases, gemergte PRs,
|
||||
neue Entwurfsmodelle) mit dem letzten Lauf.
|
||||
|
||||
## Kugelsicher heisst konkret
|
||||
## Kugelsicher heißt konkret
|
||||
|
||||
- **Das Modell steht nicht im kritischen Pfad.** Antwortet es nicht, gehen die
|
||||
Rohbefunde trotzdem raus. Nur die Prosa faellt weg, nie die Meldung.
|
||||
- **Es meldet immer.** „Alles gruen" ist ein Ergebnis, kein Grund zu schweigen.
|
||||
- **Kein `set -e`.** Ein einzelner fehlschlagender Test darf den Bericht nicht
|
||||
abschneiden.
|
||||
- **Ein Melderweg:** `deploy/notify.sh` erreicht Telegram **und** Lucys
|
||||
Briefkasten (aus dem sie spricht) in einem Aufruf. Die Jobs laufen mit
|
||||
`--deliver local`, damit Hermes nicht ein zweites Mal sendet.
|
||||
- **Kein Fuellmaterial.** Die Prompts verbieten ausgedachte Vorschlaege
|
||||
ausdruecklich — ein Bericht mit Fuellmaterial wird nicht gelesen, und dann
|
||||
auch der echte Befund nicht.
|
||||
- **Das Modell steht nicht im kritischen Pfad.** Antwortet es nicht, gehen die Rohbefunde trotzdem raus; nur die
|
||||
Prosa fällt weg, nie die Meldung.
|
||||
- **Es meldet immer.** „Alles grün" ist ein Ergebnis, kein Grund zu schweigen.
|
||||
- **Kein `set -e`.** Ein einzelner fehlschlagender Test darf den Bericht nicht abschneiden.
|
||||
- **Ein Meldeweg:** `deploy/notify.sh` erreicht Telegram **und** Lucys Briefkasten in einem Aufruf; scheitert
|
||||
`hermes send`, geht es direkt an die Telegram-Bot-API. Nachts (00:00–06:59) sammelt es bis zur Morgenmeldung um
|
||||
07:00, Dringendes geht sofort. Die Hermes-Jobs laufen mit `--deliver local`, damit Hermes nicht ein zweites Mal
|
||||
sendet.
|
||||
- **Kein Füllmaterial.** Die Prompts verbieten ausgedachte Vorschläge: Ein Bericht mit Füllmaterial wird nicht
|
||||
gelesen, und dann auch der echte Befund nicht.
|
||||
- **Werkzeuge der Cron-Jobs:** `platform_toolsets.cron` = `[web, terminal]`; mehr braucht der Nachrichtenbericht nicht.
|
||||
|
||||
## Ausbringen
|
||||
|
||||
Die Skripte muessen unter `~/.hermes/scripts/` liegen (Vorgabe von `hermes cron --script`).
|
||||
Quelle ist dieses Verzeichnis:
|
||||
Die Skripte müssen unter `~/.hermes/scripts/` liegen (Vorgabe von `hermes cron --script`). Das macht seit 24.09.
|
||||
`deploy/deploy.sh` (Stufe 2): Es installiert `deploy/jobs/*.sh` und `deploy/jobs/*.py` aus dem Box-Checkout nach
|
||||
`~/.hermes/scripts/`, ausführbar und mit LF-Zeilenenden. Kopieren per `scp` von Hand entfällt. Alte Skripte in
|
||||
`~/.hermes/scripts/` räumt der Deploy nicht weg.
|
||||
|
||||
```bash
|
||||
scp deploy/jobs/*.sh hitonabi@192.168.178.151:/home/hitonabi/.hermes/scripts/
|
||||
ssh hitonabi@192.168.178.151 'cd ~/.hermes/scripts && sed -i "s/\r$//" *.sh && chmod +x *.sh'
|
||||
```
|
||||
## Daily News: Text und Stimme
|
||||
|
||||
‼️ Das `sed` ist Pflicht: vom Windows-PC kopierte Dateien haben CRLF, und bash
|
||||
scheitert daran mit unverstaendlichen Meldungen.
|
||||
- **Persona statt Stilvorgaben:** Der Job-Prompt bleibt kurz. Emojis, Ton und die Anrede „Commander" kommen aus
|
||||
`~/.hermes/SOUL.md`. Wer im Prompt Stil verbietet, überstimmt die Persona (21.08. so passiert).
|
||||
- **Ablauf:** Der Agent schreibt zwei Dateien, `/tmp/news-text.md` (mit Emojis, Links, Formatierung) und
|
||||
`/tmp/news-sprich.txt` (3–4 Sätze zum Vorlesen), und ruft einmal `news-melden.sh` auf. Das Skript schickt den Text
|
||||
über `notify.sh`, räumt den Bericht weg und startet die Stimme abgekoppelt: `lucy-stimme` (`:8021`, pocket-tts
|
||||
`german_24l`) → WAV → OGG/Opus mit ffmpeg → `hermes send --to telegram "MEDIA:…"` (eine echte Sprachnachricht).
|
||||
- **Sofort zurück:** Hermes' `terminal`-Werkzeug bricht nach 30 s ab. Das Skript kehrt deshalb sofort zurück und
|
||||
sperrt denselben Bericht 2 Stunden gegen Doppelversand (22.08.: der Text kam einmal doppelt).
|
||||
- **Aufräumen:** Hermes' `write_file` überschreibt keine vorhandene Datei. Bliebe der Bericht vom Vortag liegen,
|
||||
scheiterte der nächste Lauf (23.09.).
|
||||
- **Nicht `voice-service` (`:8650`) nehmen:** Dort sind nur Cloud-Stimmen geladen, nicht Lucy.
|
||||
- Fällt die Stimme aus, geht der Text trotzdem raus.
|
||||
|
||||
## Abgeschaltet am 21.08.
|
||||
## Kugelsicher-Regeln für Hermes-Crons
|
||||
|
||||
- `hermes cron edit <id> "text"` speichert nichts; der Prompt muss über `--prompt` kommen. Nach jeder Änderung in
|
||||
`~/.hermes/cron/jobs.json` nachsehen.
|
||||
- Alte Job-Fassungen liegen in jeder Sicherung:
|
||||
`tar -xzf /srv/models/mc2-backups/mc2-state-*.tar.gz ./hermes/cron/jobs.json`.
|
||||
- Tagesaktualität muss man erzwingen: Datum per `date` feststellen lassen, mehrere Suchen verlangen, Meldungen ohne
|
||||
belegbares Datum verwerfen.
|
||||
- Wer einen Werkzeugsatz abschaltet, muss `SOUL.md` mitlesen: Dort standen am 21.08. noch Anweisungen auf
|
||||
abgeschaltete Werkzeuge.
|
||||
|
||||
## Abgeschaltet am 21.08. (KISS-Umbau)
|
||||
|
||||
| Weg | Warum |
|
||||
|---|---|
|
||||
| Cron `morgen-digest` | geht im Daily News Report auf |
|
||||
| Cron `tech-radar` | geht im Stack Radar auf |
|
||||
| Cron `nacht-wartung` | pruefte Lebenszeichen, nicht Ergebnisse |
|
||||
| Cron `wissens-sync` | **war nie gelaufen** — kein `last_run_at` |
|
||||
| Timer `mc2-bagatell` | **15 Naechte hintereinander „0 eingespielt"** |
|
||||
| Timer `mc2-selfsmoke` | geht in `stack-ist.sh` auf |
|
||||
| Timer `pbs-backup` | doppelt zu `mc2-backup` und seit 21.08. rot (`/srv/models/mem0` gibt es nicht mehr) |
|
||||
| Timer `mc2-autoupdate` | wird jetzt vom Cron „Updates am Sonntag" gestartet |
|
||||
| Cron `morgen-digest` | ging im Daily News Report auf |
|
||||
| Cron `tech-radar` | ging im Stack-Radar auf |
|
||||
| Cron `nacht-wartung` | prüfte Lebenszeichen, nicht Ergebnisse |
|
||||
| Cron `wissens-sync` | war nie gelaufen (kein `last_run_at`) |
|
||||
| Timer `mc2-bagatell` | 15 Nächte hintereinander „0 eingespielt" |
|
||||
| Timer `mc2-selfsmoke` | ging in `stack-ist.sh` auf |
|
||||
| Timer `pbs-backup` | doppelt zu `mc2-backup` und seit 21.08. rot (sein Quellordner fiel mit dem alten Gedächtnis-Dienst weg) |
|
||||
| Timer `mc2-autoupdate` | vom 21.08. bis 24.09. startete der Cron „Updates am Sonntag" das Update; seit 24.09. wieder der Timer |
|
||||
|
||||
Die Unit-Dateien liegen noch da, nur `disable`d — Rueckbau ist ein Befehl.
|
||||
|
||||
---
|
||||
|
||||
## Nachtrag 21.08.: Persona, Quellen-Links und Stimme
|
||||
|
||||
**Fehler, den ich gemacht hatte:** Mein erster Prompt fuer den Daily News Report
|
||||
schrieb woertlich *„keine Emojis, keine Aufzaehlungspunkte, keine
|
||||
Ueberschriften-Deko"* — und hat damit genau das wegoptimiert, was den Bericht
|
||||
vorher gut machte.
|
||||
|
||||
★★ **Die Formatierung kam nie aus dem Job-Prompt.** Die alten Prompts waren
|
||||
kurz (*„eine praegnante 3-Punkte-Zusammenfassung an den Commander"*). Emojis,
|
||||
Ton und die Anrede stehen in **`~/.hermes/SOUL.md`** — Lucys Persona:
|
||||
|
||||
> Du sprichst den Nutzer IMMER mit **Commander** an.
|
||||
> Locker, herzlich, schlagfertig, charmant, selbstbewusst.
|
||||
|
||||
**Lehre: den Job-Prompt kurz halten und die Persona arbeiten lassen.** Wer im
|
||||
Prompt Stil verbietet, ueberstimmt die Persona — und merkt es erst, wenn die
|
||||
Nachricht seelenlos ankommt.
|
||||
|
||||
### Stimme in Telegram
|
||||
|
||||
`hermes send` kann **`MEDIA:<pfad>`**. Damit geht eine fertige Audiodatei als
|
||||
Anhang nach Telegram. `deploy/jobs/news-melden.sh` macht daraus einen Aufruf:
|
||||
|
||||
```
|
||||
Agent schreibt zwei Dateien
|
||||
/tmp/news-text.md (Emojis, Links, Formatierung) -> notify.sh -> Telegram + Briefkasten
|
||||
/tmp/news-sprich.txt (3-4 Saetze, nichts Vorlesbares fehlt) -> :8650/tts -> WAV -> hermes send MEDIA:
|
||||
```
|
||||
|
||||
‼️ **Nicht Hermes' eingebautes TTS nehmen.** Das steht auf `tts.provider: edge`
|
||||
mit `en-US-AriaNeural` — englisch. Lucys echte Stimme ist MC2s `voice-service`
|
||||
auf `:8650` (Piper `de_DE-thorsten-medium`). Deshalb ruft das Skript den
|
||||
Sidecar direkt per curl.
|
||||
|
||||
‼️ **Kein ffmpeg noetig.** Telegram nimmt die WAV direkt an. Fuer eine echte
|
||||
Sprachnachricht mit Wellenform braeuchte es OGG/Opus und damit ffmpeg — bewusst
|
||||
nicht installiert, eine Abhaengigkeit weniger.
|
||||
|
||||
Der Agent ruft **einen** Befehl auf, alles danach ist deterministisch. Faellt
|
||||
die Stimme aus, geht der Text trotzdem raus.
|
||||
|
||||
### ‼️ Folgefehler der Werkzeug-Abschaltung — gefunden und behoben
|
||||
|
||||
Nach dem Abschalten von `kanban` und `delegation` standen in `SOUL.md` noch
|
||||
zwei Anweisungen, die ins Leere zeigten: *„rufst du sofort dein Werkzeug
|
||||
delegate_task auf"* und *„Ideen traegst du sofort im Kanban-Auftragsbuch ein"*.
|
||||
Genau die Klasse stiller Defekt, die am 19.08. das Kritiker-Gate zerlegt hat.
|
||||
Beide Abschnitte ersetzt (Sicherung: `~/.hermes/SOUL.md.bak-20260821`).
|
||||
|
||||
**Merke: wer einen Werkzeugsatz abschaltet, muss `SOUL.md` mitlesen.**
|
||||
|
||||
### Kugelsicher-Regeln, die dazugekommen sind
|
||||
|
||||
- `hermes cron edit <id> "text"` **speichert nichts** — der Prompt muss ueber
|
||||
**`--prompt`** kommen. Ohne Flag gibt der Befehl den Text nur aus und die
|
||||
alte Fassung bleibt stehen. Nach jeder Aenderung in `jobs.json` nachsehen.
|
||||
- Alte Job-Fassungen liegen im Zustands-Backup:
|
||||
`tar -xzf /srv/models/mc2-backups/mc2-state-*.tar.gz ./hermes/cron/jobs.json`
|
||||
- Tagesaktualitaet muss man erzwingen: Datum per `date` feststellen lassen,
|
||||
mehrere Suchen verlangen, und Meldungen ohne belegbares Datum verwerfen.
|
||||
|
||||
---
|
||||
|
||||
## Nachtrag 3 (21.08.): Lucys ECHTE Stimme, echte Sprachnachricht
|
||||
|
||||
### Der Fehler: :8650 ist nicht Lucy
|
||||
|
||||
Ich hatte `/tts` auf MC2s `voice-service` (`:8650`) ohne Angabe von Engine und
|
||||
Stimme aufgerufen. Dessen `/health` sagt:
|
||||
|
||||
```
|
||||
"engines":["elevenlabs","edge"]
|
||||
```
|
||||
|
||||
Piper und Chatterbox sind dort **gar nicht geladen** — die Vorgabe fiel auf die
|
||||
erste verfuegbare: ElevenLabs *„Artoria DE · Saber · Hermes-Stimme"*. Das ist
|
||||
**Hermes' Stimme**, nicht Lucys. Deutsch und weiblich, deshalb faellt es nicht
|
||||
sofort auf. Beide verfuegbaren Engines sind ausserdem **Cloud** — gegen die
|
||||
100-%-lokal-Praemisse.
|
||||
|
||||
### Lucys Stimme: `lucy-stimme.service` auf `:8021`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| Engine | **Kyutai pocket-tts 2.1.0** (neueste, seit 04.05. unveraendert) |
|
||||
| Modell | **`german_24l`** — die volle Fassung, nicht die destillierte |
|
||||
| Stimme | geklont aus `ref.mp3`, gecacht in `lucy_voice.safetensors` (44 MB) |
|
||||
| Laeuft | `~/.lucy-stimme/`, systemd-**user**-Dienst, `enable`d, CPU |
|
||||
| Start | ~48 s Ladezeit, danach ~5 s fuer 3,7 s Audio |
|
||||
|
||||
Mitgezogen wurde die **ganze Abstimmung**, nicht nur das Modell: `text_norm.py`
|
||||
(Symbole/Pfade/URLs → Zahlen → Akronyme), Emotions-Voreinstellungen mit
|
||||
Anlaufwoertern, Umlaut-Wortliste, Hochpass auf der Referenz, kalibrierter Pegel.
|
||||
Ohne die klingt pocket nicht wie Lucy.
|
||||
|
||||
‼️ Der Sweep im TTS-Plan (*„seriell schlaegt parallel"*) wurde auf einem **9700X**
|
||||
gemessen. Die Box ist ein Ryzen AI MAX+ 395 — das Ergebnis ist **nicht
|
||||
uebertragen**, nur uebernommen. Wer Tempo braucht, misst neu.
|
||||
|
||||
### Recherche 21.08.: pocket bleibt
|
||||
|
||||
Nichts seit Mai schlaegt es auf dieser Achse. Die Alternativen sind 5–17× groesser:
|
||||
Qwen3-TTS 0,6–1,7 Mrd. (Apache 2.0, Deutsch, 3-Sekunden-Klon), NeuTTS Air 0,5 Mrd.
|
||||
(GGUF), CosyVoice2 0,5 Mrd. — gegen pockets **100 Mio.** Fuer einen taeglichen
|
||||
Sprachnachrichten-Job auf CPU ist das der falsche Handel.
|
||||
**Ihr wart bereits auf dem neuesten Stand** — nichts zu aktualisieren.
|
||||
|
||||
### Echte Sprachnachricht braucht OGG/Opus
|
||||
|
||||
Eine WAV kommt in Telegram als **Dateianhang** an. Fuer das runde Sprachmemo mit
|
||||
Wellenform braucht es OGG/Opus — dafuer wurde **ffmpeg installiert** (8.0.1):
|
||||
|
||||
```bash
|
||||
ffmpeg -y -i ton.wav -c:a libopus -b:a 32k -ar 48000 -ac 1 ton.ogg
|
||||
hermes send --to telegram "MEDIA:ton.ogg"
|
||||
```
|
||||
|
||||
Ganze Kette (Text + Stimme + Versand) gemessen: **10 Sekunden**.
|
||||
|
||||
### Altlast am Rande
|
||||
|
||||
`F:\Coding Stuff\lucy\lucy-tts\Lucy-Startklar.bat` zeigt auf
|
||||
`mission-control-2\client\lucy-tts` — den Ordner gibt es seit der Repo-Trennung
|
||||
nicht mehr.
|
||||
Die Unit-Dateien der abgeschalteten Timer liegen auf der Box noch (disabled), im Repo nicht mehr; `mc2-autoupdate`
|
||||
läuft wieder und liegt im Repo. Die Morgenmeldung um
|
||||
07:00 (`mc2-morgenmeldung.timer`, seit 24.09.) ersetzt den alten Morgen-Digest nicht inhaltlich: Sie liefert nur die
|
||||
nachts gesammelten Meldungen aus.
|
||||
|
||||
+104
-52
@@ -1,64 +1,116 @@
|
||||
# Mission Control 2.0 — Bedienung (kurz & klartext)
|
||||
# Bedienung — der Box-Wart im Alltag
|
||||
|
||||
**Öffnen:** `http://192.168.178.151:9001` (vom Windows-PC im LAN). Dark/Light-Umschalter oben rechts,
|
||||
**Cmd/Strg+K** springt zu jedem Bereich.
|
||||
_Stand 24.09.2026. Für dich als Nutzer. Technische Einzelheiten stehen in [BETRIEB.md](BETRIEB.md)._
|
||||
|
||||
> Im Alltag fasst du MC kaum an: `model: auto` + Auto-Swap laden Modelle selbst. Du öffnest es, um ein
|
||||
> Modell zu installieren/tauschen, die Auslastung zu prüfen, Gedächtnis zu pflegen oder ein Tool zu verbinden.
|
||||
**Kurz gesagt:** Die KI-Box kümmert sich selbst um sich. Du bekommst Nachrichten auf Telegram. Handeln musst du nur,
|
||||
wenn eine Nachricht es sagt oder auf der Startseite etwas gelb oder rot leuchtet.
|
||||
|
||||
## Die Bereiche (Sidebar, Stand 09.07.2026)
|
||||
- **Cockpit** — deine Box auf einen Blick (Status, Leistung, Morgenlage, Erinnerungen).
|
||||
- **Modelle** — Speicherleiste, installierte Modelle + neue finden/laden, Rollen (hermes/fast/heavy/…).
|
||||
- **Gedächtnis** — geteilte Fakten/Regeln, die ALLE Tools (Hermes, Desktop, PC) via MCP lesen/schreiben.
|
||||
- **Wissen** — Lucys Wissens-Vault (Traum-Notizen, `[[verlinkt]]` navigierbar).
|
||||
- **Chronik** — was die Box von allein getan hat + Zeitmaschine (Ein-Klick-Restore).
|
||||
- **Verbinden** — fertige Anbindungs-Snippets (Hermes Desktop · Kilo Code · Claude Code).
|
||||
- **Hermes** — Agent-Status & Verdrahtung; „Hermes-GUI öffnen" zeigt die eingebaute Weboberfläche.
|
||||
- **Konsole** — direkte Box-Shell (SSH-artig) im Browser.
|
||||
- **Anleitung** — Schritt-für-Schritt-Einrichtung.
|
||||
Der Homelab Orchestrator bekommt später einen zweiten Bereich für den Proxmox-PC („Homelab"). Heute gibt es nur den
|
||||
Bereich für die KI-Box, den Box-Wart.
|
||||
|
||||
> **Zum Arbeiten mit dem Agenten** (Coding, Projekte, lange Threads) nutzt du die
|
||||
> **Hermes-Desktop-App am PC** — MC2 ist der Maschinenraum der Box. Wie die App andockt:
|
||||
> `docs/HERMES_SETUP.md`, Abschnitt „Hermes Desktop (PC) anbinden".
|
||||
## So kommst du hin
|
||||
|
||||
## Modell installieren
|
||||
**Tab „Modelle & Routing" → „Modelle finden":**
|
||||
- **Kuratiert:** auf einer Empfehlungs-Karte „Installieren" klicken (⭐ = beste Wahl je Kategorie).
|
||||
- **Eigenes (HuggingFace):** oben **HF-URL oder `org/repo`** einfügen → „Quants laden" → Quant wählen →
|
||||
„Installieren". Oder die **Suchleiste** nutzen → Treffer anklicken → Quant → Installieren.
|
||||
- Der Download läuft als Job mit **Fortschrittsbalken** oben; llama-swap pflegt das Modell automatisch ein.
|
||||
Im Heimnetz im Browser `http://192.168.178.151:9001` öffnen, am PC oder am Handy. Oben (am Handy unten) stehen die
|
||||
drei Seiten **Start**, **Updates** und **Modelle**. Rechts oben (am Handy unter **Mehr**) findest du das
|
||||
Hermes-Dashboard, **Dienste und Protokolle** und die **Einstellungen**.
|
||||
|
||||
## LLM tauschen (z.B. anderes „fast"-Hirn)
|
||||
„Modelle & Routing" → **„Installiert"**: in der Zeile des Modells im **Rollen-Dropdown**
|
||||
`fast` (bzw. `heavy`/`coder`/`vision`/`scout`) wählen → der Alias wandert auf dieses Modell.
|
||||
- `model: auto` nutzt ab sofort dieses Modell als schnelles/schweres Hirn — für Hermes **und** Vibe Coding.
|
||||
- **Kontext** ändern: auf die Kontext-Zahl (✎) klicken. **Entfernen:** 🗑 (GGUF-Datei bleibt erhalten).
|
||||
- „Auto-Swap" = llama-swap lädt automatisch, was gerade angefragt wird; du musst nichts laden/entladen.
|
||||
Wichtige Knöpfe fragen vorher nach. Was du auslöst, bestätigt eine kurze Meldung unten rechts.
|
||||
|
||||
## Agent/IDE verbinden (Arbeiten am eigenen PC)
|
||||
„Verbinden" → Eintrag wählen → Snippet/Anleitung kopieren. **Hermes Desktop** (Standard) dockt
|
||||
remote an die Box an (Gateway-URL über den MC2-Proxy, Token liegt auf der Box —
|
||||
siehe `docs/HERMES_SETUP.md`). **Kilo Code** und **Claude Code** zeigen auf
|
||||
`http://192.168.178.151:9001/v1`. Memory-MCP-Snippet separat einfügen → geteiltes Gedächtnis.
|
||||
(Zed ist abgeschafft — Hermes Desktop hat die IDE-Rolle übernommen, 09.07.2026.)
|
||||
## Start
|
||||
|
||||
## Gedächtnis pflegen
|
||||
„Gedächtnis": Fakt/Regel hinzufügen (Kategorie wählen), suchen/filtern, **🧹 Aufräumen** entfernt Dubletten.
|
||||
Das ist die geteilte „Verfassung" für alle Tools.
|
||||
- **Große Leuchte oben links:**
|
||||
- grün „Alles in Ordnung": nichts zu tun;
|
||||
- gelb „Achtung" mit der Zahl der Hinweise: bei Gelegenheit ansehen;
|
||||
- rot „Störung": jetzt ansehen;
|
||||
- blau „Update läuft": die Box aktualisiert sich gerade, Hinweise ruhen bis zum Ende;
|
||||
- grau „Wächter schweigt": der Aufpasser der Box hat sich seit über 5 Minuten nicht gemeldet.
|
||||
Ein Klick auf die gelbe oder rote Leuchte springt zur Checkliste.
|
||||
- **Warnlampen:** Motor (die Software, die die KI-Modelle rechnet), Hirn (Lucys Modell), Coder (das Modell zum
|
||||
Programmieren; „auf Abruf" ist normal), Hermes (Lucys Agent), Jobs, Sicherung (gelb, wenn die letzte älter als
|
||||
36 Stunden ist), Platte (gelb ab 80 %, rot ab 90 %), Updates.
|
||||
- **Instrumente:** Speicher, Temperatur, Platte und die Zeit seit dem letzten Neustart.
|
||||
- **Checkliste:** alles, was der Wächter gefunden hat. „Jetzt" heißt sofort ansehen, „Prüfen" heißt bei Gelegenheit.
|
||||
Unter jedem Punkt stehen Knöpfe, zum Beispiel „Neu starten", „Protokoll" (was der Dienst zuletzt geschrieben hat),
|
||||
„Erneut ausführen", „Freigeben" oder „Ausblenden bis zum nächsten Lauf". Einen abgestürzten Dienst startet die Box
|
||||
meist schon selbst neu.
|
||||
- **Flugplan:** was heute schon lief und was als Nächstes kommt, etwa Sicherung, Modell-Radar, Morgenmeldung und die
|
||||
Updates am Sonntag.
|
||||
- **Radar-Kasten:** ob das Modell-Radar gerade einen Kandidaten hat; „Ansehen" führt zur Seite Modelle.
|
||||
|
||||
## Wartung & Backup
|
||||
„System" → **Wartung & Updates**: Badge (offene OS-Pakete / Engine / Modell-Upgrades), Buttons
|
||||
**OS aktualisieren · Engine aktualisieren · Engine neu starten · Reboot**, Modell-Upgrade-Vorschläge
|
||||
(1-Klick), **Backup jetzt** (Gedächtnis-DB + Configs), Dienste-Health.
|
||||
## Updates
|
||||
|
||||
`Engine neu starten`, Logs & Modell-Upgrades laufen sofort (NOPASSWD vorhanden). **OS-Update + Reboot**
|
||||
brauchen einmalig erweiterte sudoers — `sudo visudo`, ergänze:
|
||||
```
|
||||
hitonabi ALL=(root) NOPASSWD: /usr/bin/apt-get, /usr/sbin/reboot
|
||||
```
|
||||
(Engine-Update: `MC_ENGINE_UPDATE_CMD` in der mc2-Unit setzen — Befehl, der /opt/llamacpp aktualisiert.)
|
||||
Danach ist die komplette Wartung klicki-bunti, ohne Passwort.
|
||||
- Jede Zeile ist ein Baustein: Betriebssystem, Motor (llama.cpp), llama-swap, Hermes. Du siehst, was läuft, was neu
|
||||
wäre und was sich ändert.
|
||||
- Jeden Sonntag um 04:30 aktualisiert sich die Box von selbst; vorher sichert sie, danach prüft sie. Du musst nichts
|
||||
tun.
|
||||
- „Nach Neuem suchen" schaut sofort nach. „Aktualisieren" spielt einen Baustein sofort ein, „Alles jetzt
|
||||
aktualisieren" alle nacheinander. Lucy ist dabei ein paar Minuten nicht erreichbar.
|
||||
- **Festgehalten:** Ging ein Update schief, hat die Box die alte Version zurückgeholt und hält den Baustein fest. Sie
|
||||
läuft stabil weiter, bekommt für diesen Baustein aber keine Updates mehr. „Freigeben" heißt: am nächsten Sonntag
|
||||
noch einmal versuchen.
|
||||
- **Prüfung unklar:** Die Box konnte nicht nachsehen, zum Beispiel ohne Internet. Später „Nach Neuem suchen" drücken.
|
||||
- **Verlauf:** was die letzten Update-Läufe gebracht haben, je Baustein.
|
||||
- **Sicherungen:** täglich gegen 03:30, mit Kopie auf einem zweiten Gerät. „Jetzt sichern" macht sofort eine.
|
||||
„Zurückspielen" setzt die Einstellungen von Hermes und llama-swap auf den Stand dieser Sicherung; vorher sichert die
|
||||
Box den jetzigen Stand. Lucys Gedächtnis bleibt dabei erhalten.
|
||||
|
||||
## Modelle
|
||||
|
||||
- **Speicher:** wie voll der Arbeitsspeicher ist. Die gelbe Linie bei etwa 115 GB ist die Grenze; darüber wird es eng.
|
||||
- **Hirn** (für Lucy, NerdQuiz und OpenChamber bei Kleinkram) und **Coder** (für OpenChamber zum Planen und Bauen):
|
||||
welches Modell die Rolle hat, ob es gerade geladen ist und ob es Bilder versteht. „Jetzt laden" lädt es vorab. Die
|
||||
„Dritte Rolle" bleibt frei, bis ein Modell dort nachweislich etwas bringt.
|
||||
- **Wer nutzt die Modelle:** Anfragen der letzten 7 Tage je Absender und je Stunde.
|
||||
- **Modell-Radar:** Die Box sucht selbst nach besseren Modellen und testet nachts zwischen 00:30 und 02:30 höchstens
|
||||
eines pro Woche. „Bestanden" heißt: besser als das heutige Modell. Dann entscheidest du:
|
||||
- „Übernehmen" tauscht das Modell. Beim Hirn ist Lucy etwa eine Minute weg; das alte Modell bleibt auf der Platte.
|
||||
- „Verwerfen" löscht die Dateien, und das Radar testet dieses Modell nie wieder.
|
||||
- „Jetzt suchen" sucht sofort (das kann ein paar Minuten dauern).
|
||||
- **Weitere Einträge:** alle übrigen Modelle. „Modelle selbst suchen" findet Modelle auf Hugging Face und lädt sie.
|
||||
- **Aufräumen:** Modelle und Ordner, die gerade niemand nutzt, mit Größe und Hinweis. Die Box löscht nie von selbst.
|
||||
„Löschen" ist endgültig; zurück ginge es nur mit einem neuen Download.
|
||||
|
||||
## Dienste und Protokolle
|
||||
|
||||
Die Liste aller Dienste der Box: grün = läuft, rot = antwortet nicht, grau = schläft (bewusst abgeschaltet).
|
||||
„Protokoll" zeigt, was der Dienst zuletzt geschrieben hat. „Neu starten" startet ihn neu; „Wecken" weckt einen
|
||||
schlafenden Dienst bis zum nächsten Neustart der Box. Die Spracherkennung und die Konsole schlafen seit 24.09. mit
|
||||
Absicht; die Android-App wird sie später wieder brauchen.
|
||||
|
||||
## Einstellungen
|
||||
|
||||
- **Hugging-Face-Zugang:** nötig für gesperrte Modelle und für schnellere Downloads. Eintragen, speichern, bei Bedarf
|
||||
löschen.
|
||||
- **Hermes-Dashboard:** öffnet die eigene Oberfläche von Hermes (Chat, Sitzungen, Cron-Jobs). Hermes fragt nach
|
||||
seiner eigenen Anmeldung.
|
||||
|
||||
## Nachrichten auf Telegram
|
||||
|
||||
Nachts zwischen 0 und 7 Uhr sammelt die Box alles und schickt es um 7 Uhr als eine Nachricht („Guten Morgen,
|
||||
Commander. Heute Nacht gab es …"). Sofort kommen nachts nur dringende Nachrichten.
|
||||
|
||||
| Nachricht | Bedeutung | Was du tust |
|
||||
|---|---|---|
|
||||
| „[Morgenmeldung] Guten Morgen, Commander …" | alles aus der Nacht in einer Nachricht | lesen |
|
||||
| „[Box-Update] … aktualisiert … alles läuft" | Update eingespielt und geprüft | nichts |
|
||||
| „[Box-Update] Commander, die Wochenpflege der Box ist durch" | Sonntagsbericht, eine Zeile je Baustein | lesen |
|
||||
| „[Box-Update] … fehlgeschlagen … zurückgerollt … GEPINNT" | Update ging schief, die alte Version läuft wieder, der Baustein ist festgehalten | nichts nötig; bei Gelegenheit unter Updates „Freigeben" |
|
||||
| „[Box-Update] KRITISCH: …" (sofort, auch nachts) | Update und Rückweg sind gescheitert | Box ansehen (unten), Hilfe holen |
|
||||
| „[Box-Update] Neustart steht an … Wartungsfenster" | ein Neustart wartet auf Sonntag früh | nichts |
|
||||
| „[Box-Update] Die Box startet jetzt neu …" | geplanter Neustart am Sonntag früh | nichts; sie ist ein paar Minuten weg |
|
||||
| „[Box-Update] Sonntags-Update mit Fehler beendet" oder „Auto-Update abgebrochen" | der Update-Lauf selbst ist abgebrochen, nichts wurde eingespielt | Seite Updates ansehen, Hilfe holen |
|
||||
| „[Box-Problem] …" | der Wächter hat etwas Rotes gefunden | Startseite öffnen, in der Checkliste den Knopf drücken |
|
||||
| „[Box wieder ok] Erledigt: …" | das Problem ist weg | nichts |
|
||||
| „[Modell-Radar] … hat den Nachttest bestanden" | ein besseres Modell wartet | Seite Modelle: „Übernehmen" oder „Verwerfen" |
|
||||
| „[Stack-Radar] …" (samstags) | Wochenbericht über die Box und Neuigkeiten | lesen |
|
||||
| Daily News (07:00, Text und Sprachnachricht) | die Nachrichten des Tages von Lucy | lesen oder hören |
|
||||
| „[Alarm] Deploy …" (sofort) | eine neue Version des Box-Warts ließ sich nicht einspielen, die alte läuft wieder | nichts sofort; Bescheid geben |
|
||||
|
||||
## Wenn etwas hakt
|
||||
- Modell antwortet nicht → „System" → Dienste-Health (Engine online?) + Engine-Logs-Link (llama-swap `/ui`).
|
||||
- Hermes langsam/komisch → im Hermes-WebUI **neuen Chat** starten (frische Session); Details: `docs/CUTOVER.md`.
|
||||
|
||||
- **Die Seite lädt nicht:** die Box einmal mit dem Knopf am Gerät neu starten, 2–3 Minuten warten, die Seite neu
|
||||
laden. Hilft das nicht: Hilfe holen (für Techniker: [BETRIEB.md](BETRIEB.md), Abschnitt „Notfall").
|
||||
- **Die Leuchte ist rot:** in der Checkliste den ersten Knopf drücken, meist „Neu starten". Nach einer Minute prüft
|
||||
der Wächter erneut.
|
||||
- **Lucy antwortet nicht:** die Lampen Hirn und Hermes ansehen; unter „Dienste und Protokolle" Hermes neu starten.
|
||||
- **Ein Baustein bleibt festgehalten:** unter Updates „Freigeben".
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
# Doku — Index, Lesereihenfolge, Pflegeregeln
|
||||
|
||||
_Stand 24.09.2026. Das Projekt heißt „Homelab Orchestrator"; der Bereich für die KI-Box heißt „Box-Wart", der für
|
||||
den Proxmox-PC „Homelab". Bei Widerspruch gilt: Code vor Doku, [wissen/STACK.md](wissen/STACK.md) vor anderen
|
||||
Dokumenten, aktuelle Doku vor dem Archiv._
|
||||
|
||||
## Lesereihenfolge
|
||||
|
||||
**Frischer Agent:**
|
||||
|
||||
1. [../AGENTS.md](../AGENTS.md): verbindliche Bau-Regeln.
|
||||
2. [wissen/ARBEITSWEISE.md](wissen/ARBEITSWEISE.md): wer der User ist, die Regeln, was wohin gehört.
|
||||
3. [wissen/STACK.md](wissen/STACK.md): Maschinen, Dienste, Modelle, Automatik.
|
||||
4. [ARCHITEKTUR.md](ARCHITEKTUR.md): wie die Teile zusammenhängen.
|
||||
5. [wissen/VERDIKTE.md](wissen/VERDIKTE.md): was entschieden ist.
|
||||
6. [wissen/FALLEN.md](wissen/FALLEN.md): vor jeder Änderung an der Box.
|
||||
7. [wissen/OFFENE-FAEDEN.md](wissen/OFFENE-FAEDEN.md): was als Nächstes ansteht.
|
||||
|
||||
**Betrieb und Störungen:** [BETRIEB.md](BETRIEB.md), dann je nach Thema [UPDATES.md](UPDATES.md),
|
||||
[RADAR.md](RADAR.md), [WIEDERAUFBAU.md](WIEDERAUFBAU.md) und [../deploy/jobs/README.md](../deploy/jobs/README.md).
|
||||
|
||||
**User:** [BEDIENUNG.md](BEDIENUNG.md).
|
||||
|
||||
## Die Dateien
|
||||
|
||||
| Datei | Für | Inhalt |
|
||||
|---|---|---|
|
||||
| [BEDIENUNG.md](BEDIENUNG.md) | User | Oberfläche, Telegram-Nachrichten, was tun, wenn etwas hakt |
|
||||
| [ARCHITEKTUR.md](ARCHITEKTUR.md) | Agenten, Technik | Prozesse, Rollen und Partner-Instanz, Modell-Rollen, wer was schreibt, Meldeweg, Schnittstellen |
|
||||
| [BETRIEB.md](BETRIEB.md) | Agenten, Technik | Handgriffe, Meldungen, Wächter-Regeln, Deploy und Prüftor, Sicherung, Notfall |
|
||||
| [UPDATES.md](UPDATES.md) | Agenten, Technik | Sonntags-Kette, Prüfungen, Festhalten und Freigeben, Handbetrieb |
|
||||
| [RADAR.md](RADAR.md) | Agenten, Technik | Modell-Radar, Prüfstand, Stack-Radar |
|
||||
| [WIEDERAUFBAU.md](WIEDERAUFBAU.md) | Technik | die KI-Box von null; Anhang A: llama-swap-Unit |
|
||||
| [wissen/STACK.md](wissen/STACK.md) | Agenten | Stand-Wahrheit: Maschinen, Dienste, Modelle, Automatik |
|
||||
| [wissen/VERDIKTE.md](wissen/VERDIKTE.md) | Agenten | Entscheidungen mit Datum und Grund; Abschnitt „Überholt" |
|
||||
| [wissen/FALLEN.md](wissen/FALLEN.md) | Agenten | Fallen mit Datum und Symptom |
|
||||
| [wissen/ARBEITSWEISE.md](wissen/ARBEITSWEISE.md) | Agenten | User-Profil, Regeln, Flächen |
|
||||
| [wissen/OFFENE-FAEDEN.md](wissen/OFFENE-FAEDEN.md) | alle | Fahrplan und die eine Liste offener Punkte |
|
||||
| [../deploy/jobs/README.md](../deploy/jobs/README.md) | Agenten, Technik | Hermes-Jobs und Timer, Daily News |
|
||||
|
||||
## Archiv
|
||||
|
||||
`archiv/` hält historische Dokumente mit Datumspräfix. Sie werden nicht mehr gepflegt; Aussagen und Links darin
|
||||
können veraltet sein.
|
||||
|
||||
| Datei | Inhalt |
|
||||
|---|---|
|
||||
| `2026-06-30-optimierungsplan.md` | Audit und Plan zu Rollen, Warm-Set und Durchsatz (Juni) |
|
||||
| `2026-06-30-zeroclaw-poc-auftrag.md`, `…-ergebnis.md` | ZeroClaw-Test; Beleg für „Hermes bleibt" |
|
||||
| `2026-06-30-lucy-tts-plan.md` | Stimmen-Strategie für Lucy (Juni) |
|
||||
| `2026-07-02-autonomie-plan.md` | „Die Box wartet sich selbst", Etappen E1–E6 |
|
||||
| `2026-07-02-komplett-review.md` | Review von MC2 und Lucy |
|
||||
| `2026-07-06-antigravity-review-prompt.md` | Review-Auftrag für Gemini |
|
||||
| `2026-07-10-gemini-briefing.md` | Notfall-Briefing für Gemini |
|
||||
| `2026-07-10-zielbild-abloesung.md` | Richtungs-Entscheid vom 10.07. |
|
||||
| `2026-07-15-umbauplan-abloesung.md` | Abschluss-Review vom 15.07. mit Gateway- und Steward-Auszug |
|
||||
| `2026-07-19-uebergabe-drei-welten.md` | Übergabe des Umbaus vom 19.07. |
|
||||
| `2026-07-21-skill-gitea-workflow.md` | Beschreibung des früheren Skills gitea-workflow |
|
||||
| `2026-08-07-hermes-setup.md` | Hermes-Runbook aus der Anfangszeit |
|
||||
| `2026-08-20-savepoint.md` | Stand-Seite vom 20.08. |
|
||||
| `2026-08-20-referenzaufgabe-gedaechtnis-ausbau.md`, `2026-08-20-referenz-check.sh` | Messlatte des Referenzlaufs (Ausbau des alten Gedächtnis-Dienstes) |
|
||||
| `2026-08-21-hermes-werkzeuge.md` | Werkzeugsätze nach Bedarf; Kern steht in `wissen/FALLEN.md` |
|
||||
| `2026-08-21-umbau-openchamber.md` | Aufbau der Coding-Bahn mit OpenChamber, Gitea-SSH |
|
||||
| `2026-09-04-raphael-lucy-innere-stimme.md` | Lucy als innere Stimme (Entscheid 04.09.) |
|
||||
| `2026-09-04-offene-faeden-alt.md` | Liste offener Punkte bis 04.09., mit den Lucy-Fäden |
|
||||
| `gitea-host/` | Notizen zum Gitea-Host |
|
||||
| `hermes-api_server-vision-patch-verwaist.diff` | verwaister Patch am Hermes-`api_server` (Bilder), nur zur Erinnerung |
|
||||
|
||||
Ganz gelöschte Dokumente (STATUS, CUTOVER, UPGRADE, AUDIT_KICKOFF, die Kopien unter `docs/memory/` u. a.) stehen in
|
||||
der Git-Historie.
|
||||
|
||||
## Pflegeregeln
|
||||
|
||||
1. **Eine Wahrheit je Thema:** Stand → `wissen/STACK.md`; Entscheidungen → `wissen/VERDIKTE.md`; Fallen →
|
||||
`wissen/FALLEN.md`; offene Punkte → `wissen/OFFENE-FAEDEN.md` (die einzige Liste, keine zweite anlegen); Abläufe →
|
||||
`ARCHITEKTUR.md`, `BETRIEB.md`, `UPDATES.md`, `RADAR.md`.
|
||||
2. **Verifizieren vor Behaupten:** Jede Aussage gegen Code oder Messung prüfen. Stand-Angaben tragen ein Datum, am
|
||||
besten mit Commit. Was nicht geprüft ist, heißt „offen" oder „nicht geprüft".
|
||||
3. **Doku folgt dem Code im selben Branch:** Wer Units, Skripte, Routen, Meldungstexte oder Abläufe ändert, zieht die
|
||||
betroffenen Dokumente mit.
|
||||
4. **Verdikte** ändern sich nur mit neuem, belegtem Anlass (Messung, Release, User-Entscheid); das alte wandert mit
|
||||
Datum nach „Überholt".
|
||||
5. **Fallen** mit Datum und Symptom eintragen; Erledigtes streichen.
|
||||
6. **Historisches** mit eigenem Wissen nach `archiv/` (Präfix `JJJJ-MM-TT-`), sonst löschen; die Git-Historie
|
||||
behält alles.
|
||||
7. **Sprache:** Deutsch, knapp, Fakten statt Adjektive. `BEDIENUNG.md` in Alltagssprache ohne Fachjargon.
|
||||
8. **Keine Geheimnisse** (Tokens, Passwörter, Chat-IDs) in die Doku; Sicherheitshinweise in einem Satz.
|
||||
9. **Weg der Änderung:** Branch → `bash deploy/pruefen.sh` → Merge. Auf der Box kommt die Doku mit dem nächsten
|
||||
Deploy an.
|
||||
@@ -1,39 +0,0 @@
|
||||
# docs/wissen/ — Die Wissens-Heimat für ALLE Agenten
|
||||
|
||||
_Angelegt 10.07.2026 (Übergabe-Session S1). Dieses Verzeichnis ist die kuratierte Übergabe
|
||||
des Claude-Projektwissens ins Repo — damit Box-Hermes, Hermes Desktop, Gemini/Antigravity
|
||||
und jeder künftige Agent dieselbe Wahrheit lesen._
|
||||
|
||||
**Warum hier:** Die Box liest `~/mission-control-v2/docs/wissen/`, Antigravity liest den
|
||||
`F:\`-Checkout — versioniert, deploybar, kein Agent-privates Gedächtnis. Der Wissens-Vault
|
||||
(`~/wissens-vault/`) bleibt Lucys LERNSCHICHT (Träume, Radar-Funde, Eigenbau-Landkarte);
|
||||
hier liegt das kuratierte PROJEKT-Wissen.
|
||||
|
||||
## Die Dateien (Lese-Reihenfolge für einen frischen Agenten)
|
||||
|
||||
| Datei | Inhalt | Wann lesen |
|
||||
|---|---|---|
|
||||
| [ZIELBILD.md](ZIELBILD.md) | Richtungs-Entscheid 10.07.: Box übernimmt alles, 4-Session-Paket | Immer zuerst — das ist der Kurs |
|
||||
| [ARBEITSWEISE.md](ARBEITSWEISE.md) | Wer der User ist + die nicht verhandelbaren Arbeitsregeln | Vor JEDER Arbeit |
|
||||
| [GRENZEN.md](GRENZEN.md) | Was gehört wohin (MC2=Steuerpult, Lucy=Chat, Hermes-Quelle tabu) | Bevor man ein Feature baut — wohin? |
|
||||
| [STACK.md](STACK.md) | IPs, Ports, Dienste, Modelle, Backups, Security (live verifiziert) | Vor SSH/Deploy/Config |
|
||||
| [VERDIKTE.md](VERDIKTE.md) | Finale Technik-Entscheide mit Warum — NICHT neu aufrollen | Bevor man etwas "Besseres" vorschlägt |
|
||||
| [FALLEN.md](FALLEN.md) | Hart erarbeitete Betriebs-Fallen (Git, Deploy, llama-swap, Hermes, Mem0, PC) | Bevor man in eine davon läuft |
|
||||
| [RAPHAEL.md](RAPHAEL.md) | Lucy als innere Stimme (04.09.2026): kein Avatar, eine Stimme für PC + Telegram, Annahme-Reihenfolge, SOUL-Vorschlag | Bevor man Lucy anfasst |
|
||||
| [OFFENE-FAEDEN.md](OFFENE-FAEDEN.md) | Die EINE Liste offener Punkte + Termine | Bei "was ist noch zu tun?" |
|
||||
|
||||
Dazu im Repo-Wurzelverzeichnis bzw. docs/: `AGENTS.md` (verbindliche Projekt-Regeln),
|
||||
`docs/GEMINI_BRIEFING.md` (Notfall-/Review-Briefing für Gemini), `docs/RUNBOOK.md`
|
||||
(1-Seiten-Mensch-Anleitung), `docs/ANTIGRAVITY_REVIEW.md` (Review-Prompt).
|
||||
|
||||
## Pflege-Regeln
|
||||
|
||||
1. **Erledigtes raus, Neues rein** — OFFENE-FAEDEN.md ist die einzige offene Liste,
|
||||
keine neuen "pending"-Dateien anlegen.
|
||||
2. **Verdikte werden nur mit neuem, belegtem Anlass wieder geöffnet** (Messung, Release,
|
||||
User-Entscheid) — dann in VERDIKTE.md den alten Eintrag ERSETZEN, nicht löschen.
|
||||
3. **Verifizieren vor Behaupten:** Stand-Angaben tragen ein Datum; wer STACK.md ändert,
|
||||
hat live auf der Box gemessen/gelesen, nicht vermutet.
|
||||
4. Änderungen laufen wie alles über die Pipeline: Branch → Ampel grün → Merge durch den User → deploy.sh.
|
||||
Reine Doku hier gehört zu den "Bagatellen ohne Klick"-Klassen (siehe ZIELBILD.md),
|
||||
erscheint aber immer in Morgenlage/Chronik.
|
||||
Reference in New Issue
Block a user