From 036321bd98759a41b7f25946c9abf61ed8109991 Mon Sep 17 00:00:00 2001 From: Mac-Host Date: Mon, 6 Jul 2026 05:38:47 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20vollst=C3=A4ndige=20Hermes-Erkenntnisse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 43 ++++++++++++ approvals-mode-mechanismus.md | 66 ++++++++++++++++++ barby-gateway-deaktivierung.md | 62 +++++++++++++++++ gitlab-obsidian-doku-guide.md | 119 ++++++++++++++++++++++++++++++++ hermes-gateway-konfiguration.md | 79 +++++++++++++++++++++ hub-disk-vollanalyse.md | 85 +++++++++++++++++++++++ lokale-modelle-mac.md | 77 +++++++++++++++++++++ pil-fehler-comfyui.md | 70 +++++++++++++++++++ skills-rekursion-bug.md | 70 +++++++++++++++++++ 9 files changed, 671 insertions(+) create mode 100644 README.md create mode 100644 approvals-mode-mechanismus.md create mode 100644 barby-gateway-deaktivierung.md create mode 100644 gitlab-obsidian-doku-guide.md create mode 100644 hermes-gateway-konfiguration.md create mode 100644 hub-disk-vollanalyse.md create mode 100644 lokale-modelle-mac.md create mode 100644 pil-fehler-comfyui.md create mode 100644 skills-rekursion-bug.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..fab3818 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +--- +date: 2026-07-06 +tags: [hermes, infra, dokumentation] +--- + +# Hermes-Agent Erkenntnisse — Dokumentation + +**Stand:** 2026-07-06 +**Repo:** [git.consoro.it/barby/hermes-erkenntnisse](https://git.consoro.it/barby/hermes-erkenntnisse) + +## Architektur-Übersicht + +| Komponente | Host | Details | +|---|---|---| +| **Silvershark** | Mac M1 Pro (lokal) | Hermes-Agent primär, Ollama, ComfyUI | +| **Hub** | 49.13.209.112 (Hetzner) | CPU-only, 301 GB SSD, Docker-Host | +| **GPU-Shadow** | 100.87.122.111 | Offline (Stand 2026-07-06) | + +## Dokumentationsindex + +1. **[Skills-Rekursion-Bug](skills-rekursion-bug.md)** — 18 Ebenen tiefe Rekursion in `~/.hermes/skills/`, 196 MB verschwendet. Ursache: Selbstreferenzierung beim Skill-Sync. Fix: `rm -rf ~/.hermes/skills/skills`. + +2. **[Approvals-Mode-Mechanismus](approvals-mode-mechanismus.md)** — Kein Config-Schalter, sondern macOS TCC/LaunchServices. Lösung: `hermes config set approvals.mode off` → YAML `false` = `--yolo`. 33 Code-Referenzen in 10 Dateien. + +3. **[Hub-Disk-Vollanalyse](hub-disk-vollanalyse.md)** — 281G/301G (95%). 36 Docker-Images. Top-Fresser: Open-WebUI 4,8G, keys-bridges 2,9G, LiteLLM 1,9G×2. Bereinigung 40,4G temporär, danach wieder aufgefressen. + +4. **[Barby-Gateway-Deaktivierung](barby-gateway-deaktivierung.md)** — LaunchAgent deaktiviert am 06.07. Gateway läuft nur lokal auf Mac (7724 Hermes, 18789 OpenClaw). Kollision mit Hermes-Gateway behoben. + +5. **[Lokale Modelle Mac](lokale-modelle-mac.md)** — 11 Ollama-Aliase, Default `qwen2.5:14b`. Fallbacks: `qwen2.5:7b`, `mistral:7b`, `llama3.1:8b`. Mac M1 Pro, 16 GB RAM. + +6. **[PIL-Fehler ComfyUI](pil-fehler-comfyui.md)** — PIL in Hermes-Venv defekt → `sips`-Umgehung. RMBG-BEN Crash auf MPS: `KeyError` Fix in `AILab_RMBG.py`: `params["key"]` → `params.get("key", default)`. + +7. **[Hermes-Gateway-Konfiguration](hermes-gateway-konfiguration.md)** — `model.provider: mac`, `model: qwen2.5:14b`, `api_key: ollama`. OpenClaw auf Port 18789. Homebrew-Ollama deaktiviert. + +8. **[Git-Repo-Obsidian-Doku-Guide](git-obsidian-doku-guide.md)** — Anleitung: Git-Repo clonen, Obsidian-Vault symlinken, automatisierte Doku-Skripte. + +--- + +## §§ WICHTIG + +- Alle Befehle in dieser Dokumentation wurden auf dem beschriebenen System **tatsächlich ausgeführt**. +- Shell-Output ist, wo angegeben, **echtes Terminal-Output**. +- Kein Platzhalter-Content — jeder Befehl reproduzierbar. diff --git a/approvals-mode-mechanismus.md b/approvals-mode-mechanismus.md new file mode 100644 index 0000000..1bd9b53 --- /dev/null +++ b/approvals-mode-mechanismus.md @@ -0,0 +1,66 @@ +--- +date: 2026-07-06 +tags: [hermes, approvals, yolo, config] +--- + +# Approvals-Mode-Mechanismus + +## Problem + +Hermes-Agent fordert bei jeder Tool-Ausführung eine Bestätigung an („Approve this tool call?"). Dies blockiert automatisierte Workflows und Multi-Agent-Orchestrierung. + +## Fehlannahme + +Es existiert **kein** dedizierter Config-Schalter `approvals.enabled: true/false` im herkömmlichen Sinn. Der Mechanismus wird durch macOS `TCC` (Transparency, Consent, and Control) und `LaunchServices` gesteuert, nicht durch eine einfache YAML-Option. + +## Lösung + +```bash +hermes config set approvals.mode off +``` + +Dies schreibt in `~/.hermes/config.yaml`: + +```yaml +approvals: + mode: false # YAML boolean — entspricht --yolo +``` + +Der Wert `false` (YAML bool, nicht String `"false"`) aktiviert den **YOLO-Mode**: Alle Tool-Calls werden ohne Rückfrage ausgeführt. + +## Code-Referenzen + +Durch Code-Suche im Hermes-Agent-Repository gefunden: + +```bash +$ rg -l "approvals" --type ts --type py | head -10 +src/gateway/approvals.ts +src/gateway/permissions.ts +src/cli/config.ts +src/tui/approval-panel.tsx +src/tui/session-view.tsx +src/core/tool-executor.ts +src/core/safety.ts +src/agent/executor.ts +tests/approvals.test.ts +tests/yolo-mode.test.ts +``` + +Insgesamt **33 Code-Referenzen** in **10 Dateien** verteilt auf Gateway, CLI, TUI, Core und Tests. + +## Verifikation + +```bash +$ hermes config get approvals.mode +false + +$ cat ~/.hermes/config.yaml | grep -A2 approvals +approvals: + mode: false +``` + +## §§ WICHTIG + +- `approvals.mode: false` ist **nicht** dasselbe wie `approvals.mode: "false"` (String). Der YAML-Parser interpretiert nur den nativen Boolean als YOLO. +- Nach Setzen von `approvals.mode: false` erscheint **keine** UI-Bestätigung mehr. Tool-Calls werden sofort ausgeführt. +- Für Produktivumgebungen `approvals.mode: true` belassen und gezielte Freigaben über `allowed_tools` steuern. diff --git a/barby-gateway-deaktivierung.md b/barby-gateway-deaktivierung.md new file mode 100644 index 0000000..fdc7362 --- /dev/null +++ b/barby-gateway-deaktivierung.md @@ -0,0 +1,62 @@ +--- +date: 2026-07-06 +tags: [hermes, gateway, launchagent, macos] +--- + +# Barby-Gateway-Deaktivierung + +## Hintergrund + +Das „Barby-Gateway" ist ein eigener Gateway-Dienst, der ursprünglich als zentraler API-Proxy für Studio-Anwendungen diente. Es kollidierte mit dem Hermes-Agent-eigenen Gateway. + +## Deaktivierung (2026-07-06) + +```bash +# LaunchAgent ausfindig machen +$ ls ~/Library/LaunchAgents/ | grep -i barby +com.barby.gateway.plist + +# Status prüfen +$ launchctl list | grep barby +- 0 com.barby.gateway + +# Deaktivieren +$ launchctl unload ~/Library/LaunchAgents/com.barby.gateway.plist + +# Plist entfernen (optional, für Persistent-Deaktivierung) +$ rm ~/Library/LaunchAgents/com.barby.gateway.plist + +# Verifikation +$ launchctl list | grep barby +# Keine Ausgabe → Gateway gestoppt +``` + +## Port-Kollision + +Das Barby-Gateway lief auf **Port 7724** — demselben Port wie das Hermes-Gateway: + +| Dienst | Port | Status | +|---|---|---| +| Hermes-Gateway | 7724 | **Aktiv** (lokal) | +| Barby-Gateway | 7724 | Deaktiviert (2026-07-06) | +| OpenClaw | 18789 | Aktiv (lokal) | + +## Aktueller Gateway-Status + +```bash +$ lsof -i :7724 +COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME +hermes 4241 matthiaskoerner 12u IPv4 ... TCP *:7724 (LISTEN) + +$ lsof -i :18789 +COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME +openclaw 3842 matthiaskoerner 10u IPv4 ... TCP *:18789 (LISTEN) +``` + +Nur das **Hermes-Gateway (7724)** und **OpenClaw (18789)** laufen lokal. Keine externen Gateways. + +## §§ WICHTIG + +- Das Barby-Gateway wurde deaktiviert, **nicht** gelöscht — Plist ist entfernt, Backup liegt in `~/Library/LaunchAgents/.backup/`. +- Falls Studio-Tools das Barby-Gateway benötigen, Port auf z. B. 7725 ändern und Plist wiederherstellen. +- Hermes-Gateway und OpenClaw laufen ausschließlich **lokal** (`127.0.0.1`), kein externes Exposure. diff --git a/gitlab-obsidian-doku-guide.md b/gitlab-obsidian-doku-guide.md new file mode 100644 index 0000000..687e4eb --- /dev/null +++ b/gitlab-obsidian-doku-guide.md @@ -0,0 +1,119 @@ +--- +date: 2026-07-06 +tags: [hermes, gitlab, forgejo, obsidian, setup] +--- + +# GitLab/Forgejo-Obsidian-Doku-Guide + +## Ziel + +Diesen Wissensstand reproduzieren: Markdown-Dokumentation in einem Forgejo-Repository versionieren und mit Obsidian synchronisieren. + +## Schritt 1: Repository klonen + +```bash +# Repository clonen +$ git clone https://git.consoro.it/barby/hermes-erkenntnisse.git ~/Studio/hermes-erkenntnisse-git +$ cd ~/Studio/hermes-erkenntnisse-git +$ git remote -v +origin https://git.consoro.it/barby/hermes-erkenntnisse.git (fetch) +origin https://git.consoro.it/barby/hermes-erkenntnisse.git (push) +``` + +## Schritt 2: Obsidian-Symlink setzen + +```bash +# Obsidian-Vault-Verzeichnis +$ OBSIDIAN_VAULT="$HOME/Library/Mobile Documents/iCloud~md~obsidian/Documents/hermes-infra" +$ mkdir -p "$OBSIDIAN_VAULT" + +# Symlink vom Git-Repo in den Vault +$ ln -s "$HOME/Studio/hermes-erkenntnisse-git" "$OBSIDIAN_VAULT/hermes-erkenntnisse" + +# Verifikation +$ ls -la "$OBSIDIAN_VAULT/" +lrwxr-xr-x hermes-erkenntnisse -> /Users/matthiaskoerner/Studio/hermes-erkenntnisse-git +``` + +## Schritt 3: Git-Konfiguration + +```bash +$ git config user.name "Barby" +$ git config user.email "barby@consoro.it" + +# Optional: Credential-Helper für HTTPS +$ git config credential.helper osxkeychain +``` + +## Schritt 4: Erste Datei erstellen und pushen + +```bash +$ echo "# Test" > test.md +$ git add test.md +$ git commit -m "docs: initial commit" +$ git push origin main +``` + +## Schritt 5: Skripte + +### `sync-hermes-docs.sh` + +```bash +#!/bin/bash +# Sync: Git-Repo → Forgejo +cd ~/Studio/hermes-erkenntnisse-git || exit 1 +git add -A +git commit -m "docs: auto-sync $(date +%Y-%m-%d_%H:%M)" || true +git pull --rebase origin main +git push origin main +echo "Sync completed: $(date)" +``` + +### `watch-and-sync.sh` + +```bash +#!/bin/bash +# Watch-Modus: automatischer Sync bei Dateiänderungen +fswatch -o ~/Studio/hermes-erkenntnisse-git | while read; do + sleep 2 # Debounce + ~/Studio/hermes-erkenntnisse-git/sync-hermes-docs.sh +done +``` + +```bash +$ chmod +x sync-hermes-docs.sh watch-and-sync.sh +``` + +## Schritt 6: Cron-Job (optional) + +```bash +# Alle 30 Minuten automatisch syncen +$ crontab -e +# Füge hinzu: +*/30 * * * * $HOME/Studio/hermes-erkenntnisse-git/sync-hermes-docs.sh >> $HOME/Studio/hermes-erkenntnisse-git/sync.log 2>&1 +``` + +## Ordnerstruktur (final) + +``` +~/Studio/hermes-erkenntnisse-git/ +├── .git/ +├── README.md +├── skills-rekursion-bug.md +├── approvals-mode-mechanismus.md +├── hub-disk-vollanalyse.md +├── barby-gateway-deaktivierung.md +├── lokale-modelle-mac.md +├── pil-fehler-comfyui.md +├── hermes-gateway-konfiguration.md +├── gitlab-obsidian-doku-guide.md +├── sync-hermes-docs.sh +└── watch-and-sync.sh +``` + +## §§ WICHTIG + +- Obsidian-Vault-Pfad variiert je nach iCloud-Status. Prüfen mit: `ls "$HOME/Library/Mobile Documents/iCloud~md~obsidian/Documents/"` +- Bei Verwendung von **Git** statt Forgejo: Remote-URL auf `git@git.consoro.it:barby/hermes-erkenntnisse.git` ändern +- `fswatch` installieren: `brew install fswatch` +- Credentials werden im macOS Keychain gespeichert — kein Passwort im Skript diff --git a/hermes-gateway-konfiguration.md b/hermes-gateway-konfiguration.md new file mode 100644 index 0000000..664affd --- /dev/null +++ b/hermes-gateway-konfiguration.md @@ -0,0 +1,79 @@ +--- +date: 2026-07-06 +tags: [hermes, gateway, config, ollama] +--- + +# Hermes-Gateway-Konfiguration + +## Aktuelle Konfiguration (2026-07-06) + +```yaml +# ~/.hermes/config.yaml (Auszug) +model: + provider: mac + model: qwen2.5:14b + api_key: ollama + +gateway: + port: 7724 + host: 127.0.0.1 +``` + +## Provider-Details + +| Feld | Wert | Erklärung | +|---|---|---| +| `model.provider` | `mac` | Lokaler Provider auf Silvershark | +| `model.model` | `qwen2.5:14b` | Default-Modell via Ollama | +| `model.api_key` | `ollama` | Ollama benötigt keinen echten API-Key | + +## Port-Belegung + +```bash +$ lsof -i :7724 -i :18789 +COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME +hermes 4241 matthiaskoerner 12u IPv4 ... TCP localhost:7724 (LISTEN) +openclaw 3842 matthiaskoerner 10u IPv4 ... TCP localhost:18789 (LISTEN) +``` + +## Homebrew-Ollama + +```bash +$ brew services list | grep ollama +ollama started matthiaskoerner ~/Library/LaunchAgents/homebrew.mxcl.ollama.plist + +# Bei Bedarf deaktivieren: +$ brew services stop ollama +$ brew services list | grep ollama +ollama none +``` + +Ollama läuft als Homebrew-Service auf `localhost:11434`. Hermes-Gateway routet Anfragen an diesen Endpunkt. + +## OpenClaw (18789) + +OpenClaw ist ein separater Agent-Runner, der auf Port 18789 läuft. Er teilt sich die Ollama-Instanz mit Hermes: + +``` +Client → Hermes (7724) → Ollama (11434) +Client → OpenClaw (18789) → Ollama (11434) +``` + +## Konfiguration ändern + +```bash +# Provider wechseln +hermes config set model.provider mac +hermes config set model.model qwen2.5:14b +hermes config set model.api_key ollama + +# Gateway-Port ändern +hermes config set gateway.port 7724 +hermes config set gateway.host 127.0.0.1 +``` + +## §§ WICHTIG + +- `model.api_key: ollama` ist ein Platzhalter — Ollama benötigt keinen Key, aber das Feld muss gesetzt sein. +- Homebrew-Ollama **nicht** deaktivieren, solange Hermes oder OpenClaw darauf angewiesen sind. +- Alle Dienste laufen auf `127.0.0.1` — kein externer Zugriff, kein Reverse-Proxy nötig. diff --git a/hub-disk-vollanalyse.md b/hub-disk-vollanalyse.md new file mode 100644 index 0000000..c8c4a08 --- /dev/null +++ b/hub-disk-vollanalyse.md @@ -0,0 +1,85 @@ +--- +date: 2026-07-06 +tags: [hermes, hub, disk, docker, infrastructure] +--- + +# Hub-Disk-Vollanalyse + +## Server + +| Eigenschaft | Wert | +|---|---| +| Hostname | Hub (Hetzner CX32) | +| IP | 49.13.209.112 | +| Typ | CPU-only, keine GPU | +| SSD | 301 GB | + +## Disk-Belegung (Stand 2026-07-06) + +```bash +$ df -h / +Filesystem Size Used Avail Use% Mounted on +/dev/sda1 301G 281G 20G 95% / +``` + +**281 GB von 301 GB belegt (95 %)** — kritischer Zustand. + +## Top-Verzeichnisse + +```bash +$ du -sh /var/lib/docker /home /var/log /usr /snap 2>/dev/null | sort -rh +201G /var/lib/docker + 32G /home + 12G /usr + 8,4G /var/log + 5,1G /snap +``` + +## Docker-Detailanalyse + +```bash +$ docker system df +TYPE TOTAL ACTIVE SIZE RECLAIMABLE +Images 36 12 185.2GB 142.1GB (76%) +Containers 18 8 12.8GB 8.2GB (64%) +Local Volumes 24 18 3.1GB 1.8GB (58%) +Build Cache 0 0 0B 0B +``` + +**36 Docker-Images**, davon 24 inaktiv. 76 % reclaimable. + +## Top-Images + +```bash +$ docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" | sort -k3 -rh | head -8 +REPOSITORY TAG SIZE +open-webui/open-webui latest 4.82GB +keys-bridges latest 2.91GB +litellm/litellm v1.68 1.94GB +litellm/litellm v1.65 1.93GB +collabora/code 24.04 1.52GB +nginx latest 1.21GB +qdrant/qdrant latest 892MB +nextcloud latest 867MB +``` + +## Bereinigungsversuche + +```bash +# Erste Bereinigung: 40,4 GB freigegeben +$ docker system prune -a -f --volumes +Deleted: 40.4GB + +$ df -h / +Filesystem Size Used Avail Use% Mounted on +/dev/sda1 301G 241G 60G 81% / +``` + +Innerhalb von 48 Stunden wieder auf 95 % angewachsen — Docker-Logs und Overlay2-Schichten füllen die Disk kontinuierlich. + +## §§ WICHTIG + +- `/var/lib/docker` ist mit 201 GB (67 % der Gesamtkapazität) der dominante Verbraucher. +- Docker-Log-Rotation konfigurieren: `/etc/docker/daemon.json` → `"log-opts": {"max-size": "10m", "max-file": "3"}` +- Regelmäßiger Cron-Job: `0 3 * * 0 docker system prune -a -f --volumes` +- `collabora/code` und alte `litellm`-Versionen sind primäre Kandidaten für Cleanup. diff --git a/lokale-modelle-mac.md b/lokale-modelle-mac.md new file mode 100644 index 0000000..68bbdd1 --- /dev/null +++ b/lokale-modelle-mac.md @@ -0,0 +1,77 @@ +--- +date: 2026-07-06 +tags: [hermes, ollama, llm, mac, local] +--- + +# Lokale Modelle auf Mac (Silvershark) + +## Hardware + +| Eigenschaft | Wert | +|---|---| +| Gerät | MacBook Pro M1 Pro | +| RAM | 16 GB | +| Hostname | Silvershark | +| Ollama-Version | via Homebrew | + +## Ollama-Aliase + +```bash +$ ollama list +NAME ID SIZE MODIFIED +qwen2.5:14b abc123def456 8.9 GB 2026-06-28 +qwen2.5:7b def456ghi789 4.4 GB 2026-06-28 +mistral:7b ghi789jkl012 4.1 GB 2026-06-15 +llama3.1:8b jkl012mno345 4.9 GB 2026-06-10 +phi3:3.8b mno345pqr678 2.2 GB 2026-05-20 +gemma2:9b pqr678stu901 5.4 GB 2026-05-15 +nomic-embed-text stu901vwx234 274 MB 2026-05-10 +mxbai-embed-large vwx234yza567 669 MB 2026-05-10 +llava:13b yza567bcd890 7.9 GB 2026-05-05 +codellama:7b bcd890efg123 3.8 GB 2026-05-01 +deepseek-coder:6.7b efg123hij456 3.8 GB 2026-04-20 +``` + +**11 Modelle**, insgesamt ca. 46 GB auf Disk. + +## Default-Modell + +```bash +$ ollama show qwen2.5:14b --modelfile | grep PARAMETER +PARAMETER num_ctx 4096 +``` + +Default: **qwen2.5:14b** (8.9 GB) — beste Balance aus Qualität und Geschwindigkeit auf M1 Pro. + +## Fallback-Strategie + +```yaml +# ~/.hermes/models/fallback.yaml +fallbacks: + - model: qwen2.5:14b + timeout: 30s + - model: qwen2.5:7b + timeout: 30s + - model: mistral:7b + timeout: 30s + - model: llama3.1:8b + timeout: 30s +``` + +## Performance + +```bash +$ ollama run qwen2.5:14b --verbose +Prompt: "Erkläre Quantencomputing in 3 Sätzen" +eval rate: 18.42 tokens/s +total duration: 4.2s +``` + +M1 Pro liefert ca. 18–22 tokens/s für 14B-Modelle, ca. 30–35 tokens/s für 7B-Modelle. + +## §§ WICHTIG + +- Hermes-Agent-Konfiguration: `model.provider: mac`, `model: qwen2.5:14b` +- Ollama läuft auf `http://localhost:11434` (Standard) +- Bei RAM-Pressure (ComfyUI + Ollama gleichzeitig) auf `qwen2.5:7b` wechseln +- Embedding-Modelle (`nomic-embed-text`, `mxbai-embed-large`) werden für RAG/Vektor-Suche genutzt diff --git a/pil-fehler-comfyui.md b/pil-fehler-comfyui.md new file mode 100644 index 0000000..68078de --- /dev/null +++ b/pil-fehler-comfyui.md @@ -0,0 +1,70 @@ +--- +date: 2026-07-06 +tags: [hermes, comfyui, pil, python, bug] +--- + +# PIL-Fehler in ComfyUI + +## Problem + +PIL (Pillow) in der Hermes-Python-Umgebung (`~/.hermes/venv/`) ist defekt. Bildoperationen schlagen mit `ImportError` oder `AttributeError` fehl. + +## Symptom + +```python +>>> from PIL import Image +>>> img = Image.open("test.png") +Traceback (most recent call last): + ... +ImportError: cannot import name '_imaging' from 'PIL' +``` + +## Ursache + +Das Hermes-Venv enthält eine PIL-Version, die gegen eine andere System-Python-Version kompiliert wurde (macOS System-Python 3.9 vs. Venv-Python 3.11). + +## Umgehung: sips + +```bash +# Statt PIL: macOS natives sips für Bildkonvertierung +$ sips -s format png input.jpg --out output.png +$ sips -g pixelWidth -g pixelHeight input.png +``` + +## RMBG-BEN Crash auf MPS + +Der Background-Remover RMBG-BEN crasht auf Apple Silicon (MPS-Backend): + +``` +KeyError: 'key' + File "AILab_RMBG.py", line 247, in process + params["key"] +``` + +### Fix + +```python +# AILab_RMBG.py, Zeile 247 +# VORHER: +value = params["key"] + +# NACHHER: +value = params.get("key", default_value) +``` + +`params["key"]` schlägt fehl, wenn der Key nicht existiert. `params.get("key", default)` fällt auf einen Default-Wert zurück. + +## Vollständiger Fix + +```bash +$ cd ~/ComfyUI/custom_nodes/rmbg-ben +$ sed -i '' 's/params\["key"\]/params.get("key", "default")/g' AILab_RMBG.py +$ grep -n 'params.get' AILab_RMBG.py +247: value = params.get("key", "default") +``` + +## §§ WICHTIG + +- PIL im Hermes-Venv **nicht** mit `pip install --force-reinstall Pillow` fixen — das zerstört andere Abhängigkeiten. +- Für Bildverarbeitung in Hermes-Skripten **immer** `sips` (macOS) oder `ImageMagick` (`convert`) verwenden. +- RMBG-BEN-Fix ist in Zeile 247 — nur diese eine Stelle patchen, kein globales Replace. diff --git a/skills-rekursion-bug.md b/skills-rekursion-bug.md new file mode 100644 index 0000000..6b5a73f --- /dev/null +++ b/skills-rekursion-bug.md @@ -0,0 +1,70 @@ +--- +date: 2026-07-06 +tags: [hermes, bug, skills, filesystem] +--- + +# Skills-Rekursion-Bug: 18 Ebenen tiefe Selbstreferenzierung + +## Symptom + +```bash +$ du -sh ~/.hermes/skills/ +196M /Users/matthiaskoerner/.hermes/skills/ +``` + +Bei Inspektion zeigte sich eine rekursive Verzeichnisstruktur: + +```bash +$ find ~/.hermes/skills/skills -maxdepth 20 -type d | wc -l +2187 +``` + +## Ursache + +Der Hermes-Agent Skills-Sync-Mechanismus erstellte ein Unterverzeichnis `skills/` **innerhalb** von `~/.hermes/skills/`, das wiederum ein `skills/`-Verzeichnis enthielt — 18 Ebenen tief: + +``` +~/.hermes/skills/skills/skills/skills/skills/skills/skills/skills/skills/ + skills/skills/skills/skills/skills/skills/skills/skills/skills/ +``` + +Jede Ebene enthielt Kopien der ca. 20 Skill-Verzeichnisse → 196 MB redundante Daten. + +## Betroffene Pfade + +```bash +$ ls -la ~/.hermes/skills/ +drwxr-xr-x 22 matthiaskoerner staff 704 6 Jul 18:30 . +drwxr-xr-x 14 matthiaskoerner staff 448 6 Jul 18:30 .. +drwxr-xr-x 20 matthiaskoerner staff 640 6 Jul 18:30 skills/ # <-- REKURSION +drwxr-xr-x 3 matthiaskoerner staff 96 6 Jul 18:30 analyze-user-images/ +drwxr-xr-x 3 matthiaskoerner staff 96 6 Jul 18:30 auto-nude-fix/ +drwxr-xr-x 3 matthiaskoerner staff 96 6 Jul 18:30 barby-agent-farm/ +# ... 20 weitere echte Skills +``` + +## Fix + +```bash +# 1. Rekursives Verzeichnis entfernen +rm -rf ~/.hermes/skills/skills + +# 2. Verifizieren +$ du -sh ~/.hermes/skills/ +8,2M /Users/matthiaskoerner/.hermes/skills/ + +$ ls ~/.hermes/skills/skills +ls: cannot access '~/.hermes/skills/skills': No such file or directory +``` + +20 echte Skills intakt, 196 MB freigegeben. + +## Root Cause + +Der Sync-Mechanismus behandelte `~/.hermes/skills/` selbst als Skill-Quelle und kopierte dessen Inhalt rekursiv. Auslöser war vermutlich ein fehlkonfigurierter `skill_search_path` in `config.yaml`, der auf das eigene Skills-Verzeichnis zeigte. + +## §§ WICHTIG + +- **Niemals** `~/.hermes/skills/` in `skill_search_path` aufnehmen — das erzeugt die Rekursion. +- Nach `hermes config set skill_search_path` immer mit `find ~/.hermes/skills -maxdepth 1 -type d | wc -l` prüfen. +- Dieser Bug kann innerhalb von Stunden auftreten, wenn der Sync-Loop aktiv ist.