diff --git a/README.md b/README.md index cb093a4..814f205 100644 --- a/README.md +++ b/README.md @@ -257,6 +257,43 @@ Gilt analog fuer jedes andere Toolset (Kalender, Browser, etc.) — immer zuerst `hermes tools` (einschalten), dann `hermes auth ` falls das Plugin OAuth/Login braucht. +### Toolset aktiviert, Claude sagt trotzdem "kenn ich nicht" / nennt eigene Skills/MCP-Server + +Root Cause (20.07.2026, im echten Code + per Live-Test verifiziert, nicht +geraten): `hermes-proxy` laeuft mit einer **echten Claude-Code-CLI-Session** +(npm-Paket `claude-max-api-proxy` wrappt `@anthropic-ai/claude-code` +tatsaechlich als Subprocess). Diese Session hat ein eigenes Volume +(`./hermes-data/claude-config`), kann aber auf **demselben Anthropic-Account** +eingeloggt sein wie ARIA. Ein Account hat aber account-weite claude.ai- +Connectors (z.B. Gmail/Calendar/Drive) und Claude Codes eigenes natives +Skill-System — die werden in JEDER CLI-Session auf diesem Account automatisch +mitgeladen, auch hier. Wenn man Claude dann explizit nach einem "Skill" fragt +(z.B. "nutze Skill spotify_albums"), checkt Claude zuerst sein EIGENES, +natives Skill-/MCP-System (findet dort nichts zu Spotify, dafuer Gmail/ +Calendar/Drive) und ignoriert dabei die per Prompt injizierten +``-Tools (Hermes' eigentliche Plugins wie Spotify) komplett — es +sind zwei parallele, konkurrierende Tool-Konzepte in derselben Session. + +**Fix:** `docker-compose.yml` startet die CLI seit `367ff64+` (Sed-Patch auf +`manager.js`) zusaetzlich mit `--safe-mode` — das deaktiviert fuer diese +Session ALLE Customizations (Skills, Plugins, MCP-Server, CLAUDE.md, ...), +eingebaute Tools (Bash/Read/...) bleiben zwar technisch an, werden aber nicht +gebraucht. Danach sieht Claude in der Hermes-Proxy-Session ausschliesslich die +per System-Prompt injizierten externen Tools und sollte sie auch fuer +"Skill"-artige Anfragen (Spotify etc.) nutzen. + +```bash +git pull +docker-compose up -d --build hermes-proxy +``` + +Test: nach dem Neustart erneut nach einem aktivierten Toolset fragen (z.B. +"spiel meine Playlist Fliegen auf dem Handy ab") — Claude sollte jetzt einen +``-Block ausgeben statt "kenn ich nicht" bzw. eigene Connectors zu +nennen. Falls es weiter hakt: `docker logs hermes-proxy --tail 100 -f` +waehrend der Reproduktion pruefen ob `--safe-mode` tatsaechlich im +gestarteten Prozess ankam (`docker exec -it hermes-proxy ps aux | grep claude`). + ## Mobiler Client (Android)? Zwei GRUNDVERSCHIEDENE Richtungen, nicht verwechseln: diff --git a/docker-compose.yml b/docker-compose.yml index aa0f41e..ec1111c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,6 +15,21 @@ services: # - lange Agent-Loops nicht nach 5min timeouten (DEFAULT_TIMEOUT -> 24h) # - der Prompt via stdin statt CLI-Arg uebergeben wird (Arg-Laengenlimit/ # Escaping-Probleme bei langen Konversationen) + # - Claude NICHT seine eigenen nativen Skill-/MCP-Tools nutzt (--safe-mode, + # seit 20.07.2026): dieser Proxy laeuft mit einer echten Claude-Max-CLI- + # Session (eigenes ./hermes-data/claude-config, aber ggf. DERSELBE + # Anthropic-Account wie ARIA). Dieser Account hat eigene claude.ai- + # Connectors (z.B. Gmail/Calendar/Drive) und ARIAs eigene Skills, die + # OHNE --safe-mode ganz normal in JEDER CLI-Session auf diesem Account + # mitgeladen werden — auch hier im Hermes-Proxy-Container. Symptom war: + # Claude antwortete auf "nutze Skill spotify_albums" mit "kenne ich + # nicht, hab nur Gmail/Calendar/Drive verbunden" — es hat sein EIGENES + # natives Skill-/MCP-System gecheckt statt den hier per Prompt-Text + # injizierten -Tools (Hermes' Spotify-Plugin etc.) zu nutzen. + # --safe-mode deaktiviert alle Customizations (Skills, Plugins, MCP- + # Server, CLAUDE.md, ...) fuer diese Session — eingebaute Tools + # (Bash/Read/...) bleiben an, sind hier aber ungenutzt. Danach sieht + # Claude NUR noch die per Prompt injizierten externen Tools. # # Adapter-Patches (proxy-patches/*.js) sind 1:1 aus dem ARIA-Proxy # uebernommen — sie sind generisch (implementieren nur die @@ -38,7 +53,7 @@ services: npm install -g @anthropic-ai/claude-code claude-max-api-proxy && DIST=$$(find /usr/local/lib -path '*/claude-max-api-proxy/dist' -type d | head -1) && sed -i 's/startServer({ port })/startServer({ port, host: process.env.HOST || \"127.0.0.1\" })/' $$DIST/server/standalone.js && - sed -i 's/\"--no-session-persistence\",/\"--no-session-persistence\",\"--dangerously-skip-permissions\",/' $$DIST/subprocess/manager.js && + sed -i 's/\"--no-session-persistence\",/\"--no-session-persistence\",\"--dangerously-skip-permissions\",\"--safe-mode\",/' $$DIST/subprocess/manager.js && sed -i 's/\"--dangerously-skip-permissions\",/\"--dangerously-skip-permissions\",\"--system-prompt\",options.systemPrompt,/' $$DIST/subprocess/manager.js && sed -i 's/const DEFAULT_TIMEOUT = 300000;/const DEFAULT_TIMEOUT = 86400000;/' $$DIST/subprocess/manager.js && sed -i '/prompt, \\/\\/ Pass prompt as argument/d' $$DIST/subprocess/manager.js &&