fix(proxy): Claude explizit warnen, injizierte Tools NICHT nativ/via ToolSearch aufzurufen
"No such tool available" + Session-Neustart-Vorschlag trotz aktivem Toolset (Verbindungstest komplett gruen). Ursache: Claude Code CLI versucht die im System-Prompt nur als TEXT beschriebenen Tools (spotify_*, ...) ueber sein eigenes natives Funktionsaufruf-/ToolSearch-System zu finden/aufzurufen, weil das "# Verfuegbare Tools"-Listenformat wie eine echte Tool-Registrierung aussieht. Da nichts davon ueber die Anthropic-API als tools-Parameter registriert ist (nur Prompt-Text), schlaegt das immer fehl -> Claude interpretiert den Fehler faelschlich als "nicht verbunden/nicht geladen". Fix: expliziter Warnabsatz im Tool-Block, der genau das verbietet und klar macht dass "No such tool available" ein Bedienfehler (falsches Aufrufmuster) ist, kein Verbindungsproblem. Analog zu ARIAs eigenem System-Prompt, der diese Klarstellung schon enthaelt.
This commit is contained in:
@@ -79,6 +79,22 @@ function _toolsBlock(tools) {
|
|||||||
"das als Problem melden."
|
"das als Problem melden."
|
||||||
);
|
);
|
||||||
lines.push("");
|
lines.push("");
|
||||||
|
lines.push(
|
||||||
|
"SEHR WICHTIG — kein natives Tool, keine Tool-Suche: Die unten gelisteten " +
|
||||||
|
"Tools sind NICHT Teil deines eigenen nativen Funktionsaufruf-/MCP-/ToolSearch-" +
|
||||||
|
"Systems und werden dir NICHT als aufrufbare Funktionen uebergeben. Sie sind " +
|
||||||
|
"ausschliesslich TEXT-BESCHREIBUNGEN in diesem Prompt. Versuche NIEMALS, sie " +
|
||||||
|
"als natives Tool aufzurufen, ueber eine interne Tool-Suche zu finden oder zu " +
|
||||||
|
"aktivieren, oder sie mit deinen eigenen Skills/Connectors/MCP-Servern zu " +
|
||||||
|
"verwechseln. Ein nativer Aufruf-Versuch schlaegt IMMER mit einem Fehler wie " +
|
||||||
|
"\"No such tool available\" fehl — das bedeutet NICHT, dass das Tool fehlt, " +
|
||||||
|
"nicht verbunden oder nicht registriert ist, sondern nur, dass du es falsch " +
|
||||||
|
"aufgerufen hast. Der EINZIGE richtige Weg ist, den literalen Text-Block " +
|
||||||
|
"`<tool_call name=\"...\">{...}</tool_call>` als normalen Antworttext auszugeben " +
|
||||||
|
"(siehe Format weiter unten) — kein Funktionsaufruf, keine Suche, kein Session-" +
|
||||||
|
"Neustart noetig."
|
||||||
|
);
|
||||||
|
lines.push("");
|
||||||
for (const t of tools) {
|
for (const t of tools) {
|
||||||
if (!t || t.type !== "function" || !t.function) continue;
|
if (!t || t.type !== "function" || !t.function) continue;
|
||||||
const fn = t.function;
|
const fn = t.function;
|
||||||
|
|||||||
Reference in New Issue
Block a user