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.flush();
|
||||
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