Replies: 2 comments
|
这个现象的关键是不要把“有 reasoning”当成“有 deliverable”。在 runtime 层可以把完成条件明确写成:
SandBase Harness 的事件模型将 reasoning 单独记录为 |
|
Source-verified at ① Chain confirmed at source
② The bounded retry path already exists — ③ Two fix layers, one recommendation
④ Your other constraints hold naturally
Also related to the sticky turn-end family (#3685/#4048/#4431 in this repo): a false |
Uh oh!
There was an error while loading. Please reload this page.
Summary
A terminal
stopresponse containing reasoning blocks but no non-whitespace text or tool call is treated as a successful completed turn. The user sees thinking stop with no final answer, and retry is never entered.Reproduction
Using the real
ReactLoopAgentfrom0.1.1-rc.2, an isolated in-memory stream with this normalized shape reproduced the problem 25/25 times:Each run returned
completed; the final assistant message contained reasoning only.Root cause
dsh-llm-pi-airejects onlycontent.length === 0, so reasoning makes the response successful. AgentLoop then sees no tool calls and returnscompleted.Expected behavior
A
stopwith neither deliverable text nor a tool call should not silently complete. It should enter a bounded retry path such asEMPTY_RESPONSE, or return an explicit error.max-tokensbehavior should remain unchanged.The existing empty-response design note explicitly keeps reasoning-only responses successful; this reproduction shows that the choice can silently lose the user-visible answer.
All reactions