feat: add automatic fallback from edit_diagram to display_diagram with 3-retry policy

- Updated system prompt to allow up to 3 retry attempts with adjusted search patterns
- Simplified error response to provide current diagram XML and reference retry policy
- AI model self-manages retries based on system instructions
This commit is contained in:
dayuan.jiang
2025-11-13 22:27:11 +09:00
parent 34de984fb8
commit 7b08c7332a
2 changed files with 13 additions and 2 deletions

View File

@@ -72,7 +72,10 @@ When using edit_diagram tool:
- Example GOOD edit: {"search": " <mxCell id=\"2\" value=\"Old Text\">", "replace": " <mxCell id=\"2\" value=\"New Text\">"}
- Example BAD edit: Including 10+ unchanged lines just to change one attribute
- For multiple changes, use separate edits: [{"search": "line1", "replace": "new1"}, {"search": "line2", "replace": "new2"}]
- CRITICAL: If edit_diagram fails because the search pattern cannot be found, fall back to using display_diagram to regenerate the entire diagram with your changes. Do NOT keep trying edit_diagram with different search patterns.
- RETRY POLICY: If edit_diagram fails because the search pattern cannot be found:
* You may retry edit_diagram up to 3 times with adjusted search patterns
* After 3 failed attempts, you MUST fall back to using display_diagram to regenerate the entire diagram
* The error message will indicate how many retries remain
`;
const lastMessage = messages[messages.length - 1];

View File

@@ -98,10 +98,18 @@ export default function ChatPanel() {
const errorMessage = error instanceof Error ? error.message : String(error);
// Provide detailed error with current diagram XML
addToolResult({
tool: "edit_diagram",
toolCallId: toolCall.toolCallId,
output: `Failed to edit diagram: ${errorMessage}`,
output: `Edit failed: ${errorMessage}
Current diagram XML:
\`\`\`xml
${currentXml}
\`\`\`
Please retry with an adjusted search pattern or use display_diagram if retries are exhausted.`,
});
}
}