mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-23 08:45:50 +00:00
fix: 防止 MCP 工具调用失败后的 SearchExtraTools/ExecuteExtraTool 死循环
This commit is contained in:
@@ -15,5 +15,12 @@ Inputs:
|
|||||||
- tool_name: The exact name of the target tool (string)
|
- tool_name: The exact name of the target tool (string)
|
||||||
- params: The parameters to pass to the target tool (object)
|
- params: The parameters to pass to the target tool (object)
|
||||||
|
|
||||||
If the tool is not found, an error message will be returned suggesting to use SearchExtraTools to discover available tools.`
|
If the tool is not found, an error message will be returned suggesting to use SearchExtraTools to discover available tools.
|
||||||
|
|
||||||
|
FAILURE HANDLING — CRITICAL:
|
||||||
|
If ExecuteExtraTool returns an error (missing parameters, validation error, permission denied, tool not found, or any other failure), you MUST:
|
||||||
|
1. Stop immediately — do NOT retry the same tool.
|
||||||
|
2. Do NOT call SearchExtraTools again for the same tool name.
|
||||||
|
3. Inform the user about the failure and suggest alternatives.
|
||||||
|
Never enter a SearchExtraTools → ExecuteExtraTool retry loop for the same tool.`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,9 @@ const PROMPT_TAIL = ` Returns matching tool names.
|
|||||||
|
|
||||||
IMPORTANT: ExecuteExtraTool is always available in your tool list. After this search returns tool names, you MUST call ExecuteExtraTool with {"tool_name": "<returned_name>", "params": {...}} to invoke the deferred tool. This is the ONLY way to execute deferred tools — do not read source code or analyze whether the tool is callable, just use ExecuteExtraTool directly.
|
IMPORTANT: ExecuteExtraTool is always available in your tool list. After this search returns tool names, you MUST call ExecuteExtraTool with {"tool_name": "<returned_name>", "params": {...}} to invoke the deferred tool. This is the ONLY way to execute deferred tools — do not read source code or analyze whether the tool is callable, just use ExecuteExtraTool directly.
|
||||||
|
|
||||||
|
FAILURE RETRY POLICY:
|
||||||
|
If ExecuteExtraTool fails for a tool, do NOT search for that same tool again. Searching again will not fix the failure — it will only repeat the same error in a loop. Stop immediately and inform the user about the failure.
|
||||||
|
|
||||||
Query forms:
|
Query forms:
|
||||||
- "select:CronCreate,Snip" — fetch these exact tools by name
|
- "select:CronCreate,Snip" — fetch these exact tools by name
|
||||||
- "discover:schedule cron job" — pure discovery, returns tool info (name, description) without loading. Use when you want to understand available tools before deciding which to invoke.
|
- "discover:schedule cron job" — pure discovery, returns tool info (name, description) without loading. Use when you want to understand available tools before deciding which to invoke.
|
||||||
|
|||||||
Reference in New Issue
Block a user