From 5c5391b16e175d5b1c6e07f43028e36986639555 Mon Sep 17 00:00:00 2001 From: ARIA Date: Mon, 20 Jul 2026 00:04:09 +0000 Subject: [PATCH] Debug: temp. Logging in openai-to-cli.js fuer Root-Cause 'Claude kennt Hermes-Tools nicht' Verifiziert (lokal): claude --system-prompt "" faellt komplett auf die eigene Default-Identitaet zurueck (eigene native Tools, eigene Account-Connectors) statt mit leerem Prompt zu laufen. Das erklaert exakt das beobachtete Symptom bei Hermes (Claude nennt Gmail/Calendar/Drive + Cron/Task, kennt aber keinerlei Spotify-Tool). Hypothese: extractSystemPrompt(request.messages, request.tools) liefert fuer Hermes' Requests einen leeren/zu duennen String -- entweder weil Hermes gar kein tools-Feld mitschickt (Spotify-Toolset in hermes tools nie aktiviert?) oder weil keine system-Message im erwarteten Format ankommt. Logging zeigt messageRoles, toolsCount, toolNames und systemPromptLen/-Preview in docker logs hermes-proxy -- damit klaeren wir das anhand echter Daten statt weiter zu raten. --- proxy-patches/openai-to-cli.js | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/proxy-patches/openai-to-cli.js b/proxy-patches/openai-to-cli.js index f9a2398..d4f0f94 100644 --- a/proxy-patches/openai-to-cli.js +++ b/proxy-patches/openai-to-cli.js @@ -216,9 +216,35 @@ export function openaiToCli(request) { // docker-compose.yml). Der Prompt enthaelt nur noch den Gespraechsverlauf. // systemPrompt ist immer ein String (nie undefined) — bei --system-prompt // darf er nicht leer sein, sonst laeuft das Modell ohne System-Prompt. + const systemPrompt = extractSystemPrompt(request.messages, request.tools); + + // TEMP-DEBUG (20.07.2026, Root-Cause-Suche "Claude kennt Hermes-Tools nicht"): + // Sichtbar per `docker logs hermes-proxy`. Zeigt schwarz auf weiss, ob + // Hermes ueberhaupt ein `tools`-Feld + system-Messages mitschickt, und wie + // lang der daraus gebaute systemPrompt ist. Wenn systemPromptLen sehr klein + // ist (z.B. 0) UND toolsCount 0 ist: Hermes schickt schlicht nichts mit, + // das ist dann kein Proxy-Bug sondern ein Hermes-Konfig-Thema (Toolset + // nicht aktiv / Persona-Prompt anders uebergeben). Wieder rausnehmen sobald + // geklaert. + try { + const roles = (request.messages || []).map((m) => m && m.role); + const toolNames = Array.isArray(request.tools) + ? request.tools.map((t) => t?.function?.name).filter(Boolean) + : []; + console.error( + "[openai-to-cli][DEBUG] messageRoles=" + JSON.stringify(roles) + + " toolsCount=" + (Array.isArray(request.tools) ? request.tools.length : 0) + + " toolNames=" + JSON.stringify(toolNames) + + " systemPromptLen=" + systemPrompt.length + + " systemPromptPreview=" + JSON.stringify(systemPrompt.slice(0, 200)) + ); + } catch (e) { + console.error("[openai-to-cli][DEBUG] logging failed: " + e.message); + } + return { prompt: conversationToPrompt(request.messages), - systemPrompt: extractSystemPrompt(request.messages, request.tools), + systemPrompt, model: extractModel(request.model), sessionId: request.user, };