mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-10-20 05:15:31 +00:00
fix(display): show reasoning during streaming even when tool calls suppress content
When a model generates content (containing <REASONING_SCRATCHPAD> tags) alongside tool calls in the same API response, content deltas were suppressed from streaming once any tool call chunk arrived. This prevented the CLI's tag extraction from running, so reasoning was never shown during streaming. The post-response fallback then displayed reasoning AFTER the already-visible streamed response, creating a confusing reversed order. Fix: route suppressed content to stream_delta_callback even when tool calls are present. The CLI's _stream_delta handles tag extraction — reasoning tags are routed to the reasoning display box, while non-reasoning text is handled by the existing stream display logic. This ensures reasoning appears before tool execution and the final response, matching the expected visual order.
This commit is contained in:
parent
c038ba35bb
commit
b7b3c8797f
1 changed files with 17 additions and 0 deletions
17
run_agent.py
17
run_agent.py
|
|
@ -3903,6 +3903,23 @@ class AIAgent:
|
|||
_fire_first_delta()
|
||||
self._fire_stream_delta(delta.content)
|
||||
deltas_were_sent["yes"] = True
|
||||
else:
|
||||
# Tool calls suppress regular content streaming (avoids
|
||||
# displaying chatty "I'll use the tool..." text alongside
|
||||
# tool calls). But reasoning tags embedded in suppressed
|
||||
# content should still reach the display — otherwise the
|
||||
# reasoning box only appears as a post-response fallback,
|
||||
# rendering it confusingly after the already-streamed
|
||||
# response. Route suppressed content through the stream
|
||||
# delta callback so its tag extraction can fire the
|
||||
# reasoning display. Non-reasoning text is harmlessly
|
||||
# suppressed by the CLI's _stream_delta when the stream
|
||||
# box is already closed (tool boundary flush).
|
||||
if self.stream_delta_callback:
|
||||
try:
|
||||
self.stream_delta_callback(delta.content)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Accumulate tool call deltas — notify display on first name
|
||||
if delta and delta.tool_calls:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue