Fix auto-continue false positives from tool-call-like content
When the LLM outputs text containing tool call patterns (e.g., reading log files, showing examples, or discussing tool calls), the parser's has_unexecuted_tool_call() would detect these as real tool calls and trigger auto-continue, leading to repeated empty responses. The fix: mark the parser buffer as consumed when content is displayed. This prevents tool-call-like patterns in displayed text from triggering false positives later. The fix is safe because: 1. Only runs when no tool was detected (inside 'if !tool_executed') 2. Legitimate tool calls are detected first by process_chunk() 3. Matches existing pattern of calling mark_tool_calls_consumed() after tool execution
This commit is contained in:
@@ -4206,6 +4206,11 @@ impl<W: UiWriter> Agent<W> {
|
|||||||
self.ui_writer.print_agent_response(&filtered_content);
|
self.ui_writer.print_agent_response(&filtered_content);
|
||||||
self.ui_writer.flush();
|
self.ui_writer.flush();
|
||||||
current_response.push_str(&filtered_content);
|
current_response.push_str(&filtered_content);
|
||||||
|
|
||||||
|
// Mark parser buffer as consumed up to current position
|
||||||
|
// This prevents tool-call-like patterns in displayed text
|
||||||
|
// from triggering false positives in has_unexecuted_tool_call()
|
||||||
|
parser.mark_tool_calls_consumed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user