# ÜBERGABE: Drei-Welten-Umbau (19.07.2026) — letzter Claude-Stand

> [!WARNING]
> **UPDATE (August 2026):** Der hier beschriebene "Zed + OpenCode CLI"-Workflow wurde durch das "Zero Middle-Layers"-Prinzip ersetzt. Coding passiert jetzt zu 100% in der **OpenCode Desktop** Agentic IDE via MCP. Die technischen Entscheidungen zur Box und zu Gitea bleiben jedoch gültig.
**Dieses Dokument ist die finale Übergabe der externen Claude-Sessions an die Box.**
Alles Wichtige aus dem Umbau vom 19.07. steht HIER (nicht nur im Claude-Gedächtnis,
das mit dem Abo-Ende unlesbar wird). Bei Widerspruch zu älteren Dokumenten gilt dieses.

## Die Architektur: Drei Welten, eine Brücke

| Welt | Rolle | Darf | Darf NICHT |
|---|---|---|---|
| **AI-Box** | Rechenzentrum: llama-swap, MC2 :9001, Gateway :9010, Gitea, Backups | bedient beide Welten | — |
| **Lucy = Autonome Box** | Chat/Stimme, mem0, Crons, Kanban-Fangnetz, **Betrieb-Bahn** | als EINZIGE Infra anfassen (SSH, Deploys, LXCs) | — |
| **Agentic IDE (PC)** | Vibe Coding: **Zed** (einziges Fenster) + OpenCode-CLI als unsichtbarer ACP-Motor | Code bauen in F:\Coding Stuff, Modelle via :9001/v1 | SSH/Infra (deny), mem0 (hat keins), Direkt-Push main |

**Brücke:** Gitea-Repos + Kanban-Karten. Deploy-Wünsche der IDE = geheimnisfreie
Playbook-Karte an `betrieb`. Beweis 19.07.: Homepage-Deploy auf LXC 106 in 92 s
(Karte t_36117427) — nach Nächten voller Schleifen davor.

## Was am 19.07. gebaut wurde (MC2-Commits `903f3bc`, `a1d7a4b`, `6b03a2c`)

1. **No-Progress-Bremse** (`deploy/agent-hooks/no-progress-bremse.py`, pre+post_tool_call,
   registriert in Haupt-config + betrieb + werkstatt): 3× gleiches Ergebnismuster
   (Zahlen/Hex wegnormalisiert, KEINE hartkodierten Strings) → mechanischer Block mit
   Diagnose-Anweisung, Folgeversuch frei. terminal wird IMMER beobachtet (Fehler tarnen
   sich dort als Erfolg), andere Tools nur bei status=error. State:
   `~/.hermes/state/no-progress/`. **Neue Fehlermuster landen in
   `neue-signaturen.jsonl` — Traum/Radar sollen daraus Playbook-Ergänzungen verdichten.**
2. **Schärfere native Guardrails:** `max_turns` 200→40, `hard_stop same_tool_failure` 8→4.
3. **Betrieb-Playbook-Skill** (`betrieb-playbook`, in allen Profilen): Triage-Regel
   (Denken/Bauen/Betrieb) + SSH-Diagnose-Checkliste (Passphrase-Falle ZUERST:
   `ssh-keygen -y -f <key> </dev/null`) + Deploy-Checkliste. Triage-Zeile auch im
   Steckbrief-Hook.
4. **mem0 entlastet:** Lern-Extraktion gebündelt (4 Turns / 180 s idle = EIN Lauf statt
   pro Turn — konkurrierte mit Lucys Hirn-Slots). Monatliche **Konsolidierung**
   (`mem0-konsolidierung`, 3. um 06:40): legt Ähnliches zusammen, Widersprüche → neuester
   gewinnt; Leitplanken hart im Code. Erster Lauf: 459→420 Fakten.
5. **Gedächtnis-Bereiche** statt zweitem mem0: neue Fakten tragen `bereich: alltag|projekt`;
   `GET /memory?bereich=` filtert (Alt-Fakten laufen immer mit). Einmal-Cron
   `gedaechtnis-check` (16.08. 09:10) prüft Schutt und legt bei Bedarf SELBST die
   Werkstatt-Karte an — Bauauftrag komplett in [GEDAECHTNIS-BEREICHE.md](GEDAECHTNIS-BEREICHE.md).
6. **Sicherheit:** Gitea-Registrierung AUS (app.ini `[service]` in CT 104 — Achtung:
   `deploy/gitea_app.ini.example` setzt den Key fälschlich in `[security]`, Gitea ignoriert
   das stumm!). ~157 GB Müll von der Box (u. a. 103 GB HF-Cache), Hermes Desktop komplett
   vom PC (Persona-Backup: `F:\Coding Stuff\BAK\hermes-desktop-backup-2026-07-19`).

## Verdikte 19.07. (nicht neu aufrollen)

- **KEIN zweites mem0.** Coding-Gedächtnis = Repo (AGENTS.md, Code, Git, Karten).
- **EINE IDE-Umgebung = Zed.** OpenCode-Desktop wurde bewusst wieder entfernt.
  Cline/Roo nur als Challenger nach Referenz-Messung (große Prompts = teuer auf Box-Physik).
  Antigravity RAUS (keine lokalen Modelle). Hermes Desktop RAUS (zweite regellose Welt).
- **Phasen statt Modell-Ping-Pong:** heavy (60 G) + coder (20 G) passen nicht gleichzeitig
  neben das warme Hirn; jeder Wechsel ~90–150 s. Erst planen (heavy), dann bauen (coder);
  Erkundung über @explore (hermes, immer warm, gratis).
- **Zeit = Schleifen × Kontext.** Token sind Kosten. Kleiner Kontext + erster Versuch
  sitzt schlägt jedes stärkere Modell.

## IDE-Welt: Pfade & Nutzung (PC)

- OpenCode-Config: `C:\Users\TobisPC\.config\opencode\opencode.json`
  (Provider `aibox` → `http://192.168.178.151:9001/v1`; Agenten: `plan`=heavy READ-ONLY,
  `build`=coder mit `ssh*: deny` + `git push: ask`, `explore`=hermes Subagent).
- Zed-Config: `%APPDATA%\Zed\settings.json` (`agent_servers.OpenCode` → voller Pfad zu
  `opencode.exe acp` unter `%LOCALAPPDATA%\Microsoft\WinGet\Packages\SST.opencode_*`;
  alter `bosgame`-Provider für Inline-Features bleibt).
- **Nutzung:** Zed öffnen → Projekt → Agent-Panel → „OpenCode"-Thread. Planen im
  plan-Agent, dann build. Jedes Projekt = Gitea-Repo + `AGENTS.md` (Vorlage:
  homelab-radar-Repo, Branch `dashboard/stand-2026-07-19`).

## Offene Fäden (Stand 19.07. abends)

1. ‼️ **sshd:** `50-cloud-init.conf` überstimmt `50-no-password.conf` (sortiert früher,
   erster Wert gewinnt). Fix (sudo): Datei zu `00-no-password.conf` umbenennen + ssh
   restart; Beweis: `sudo sshd -T | grep -i ^passwordauthentication` → `no`.
2. **Zed-Erststart ungetestet:** Installation+Config verifiziert, aber der allererste
   OpenCode-Thread in Zeds UI wurde nie geklickt. Falls er hakt: `opencode` läuft auch
   solo im Terminal des Projekts (gleiche Config).
3. **Referenz-Messung IDE** nach erster echter Nutzung: gleiche Aufgabe, Schleifen/
   Wandzeit/Tokens notieren → endgültiges Werkzeug-Verdikt (vs. Zed-nativ, vs. Cline).
4. **heavy + OpenCode:** einmalig „peg-native format"-Fehler (llama.cpp-Tool-Parser,
   transient, Retry half). Häuft es sich → Engine-Update über MC2 probieren.
5. **gedaechtnis-check** feuert 16.08. — Ergebnis beachten (Telegram).

## Abnahme bestanden (19.07. 14:55, Karte t_4dd12efb)

Der betrieb-Worker hat das komplette System in 168 s selbst auditiert: **6/6 technische
Blöcke PASS** (Dienste, Modelle+Hirn 0,29 s, mem0-Roundtrip+Bereichs-Filter, Crons 14/14
gesund, Timer/Ressourcen) und die Drei-Welten-Regel korrekt wiedergegeben. Höhepunkt:
Die **No-Progress-Bremse hat sich live am Worker selbst bewiesen** — er wich vom
Ein-Aufruf-Muster ab, produzierte identische Ergebnisse, wurde mechanisch geblockt und
hat statt zu schleifen diagnostiziert, aufgeräumt und ehrlich berichtet. Zusammen mit dem
92-s-Deploy (t_36117427) ist die Kern-These des Umbaus doppelt belegt.
Merkposten: Karten-Texte mit `$(…)`/Variablen NIE per unquotiertem Heredoc einspielen
(Shell expandiert sie — Karte t_36ff1dab musste deshalb verworfen werden); Datei + scp
oder quotiertes Heredoc benutzen.

## Historie (für Menschen, nicht für Worker)

Claude-Artifacts (nur solange Abo läuft): Stack-Audit
`claude.ai/code/artifact/c510cf49-…` · Finaler Plan `claude.ai/code/artifact/5a9ee13e-…`.
Die Essenz beider steht in DIESEM Dokument; nichts davon ist für den Betrieb nötig.
