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.
This commit is contained in:
@@ -216,9 +216,35 @@ export function openaiToCli(request) {
|
|||||||
// docker-compose.yml). Der Prompt enthaelt nur noch den Gespraechsverlauf.
|
// docker-compose.yml). Der Prompt enthaelt nur noch den Gespraechsverlauf.
|
||||||
// systemPrompt ist immer ein String (nie undefined) — bei --system-prompt
|
// systemPrompt ist immer ein String (nie undefined) — bei --system-prompt
|
||||||
// darf er nicht leer sein, sonst laeuft das Modell ohne 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 {
|
return {
|
||||||
prompt: conversationToPrompt(request.messages),
|
prompt: conversationToPrompt(request.messages),
|
||||||
systemPrompt: extractSystemPrompt(request.messages, request.tools),
|
systemPrompt,
|
||||||
model: extractModel(request.model),
|
model: extractModel(request.model),
|
||||||
sessionId: request.user,
|
sessionId: request.user,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user