mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-11-08 11:40:35 +00:00
* fix(parsing): keep literal think tags inside JSON string values Structured parsers ran strip_think_blocks over the whole response before json.loads. A model answer that quotes the tag -- "Explain <think>example </think>" -- lost the quoted text, and an unclosed literal tag inside a string cut the JSON document mid-string, so suggestions returned None and goal evaluation failed to parse. Strip reasoning only outside JSON string literals: leading blocks are still removed whole (a JSON example inside reasoning is never taken as the answer), and blocks after the payload starts are removed only outside quotes. Suggestions and the goal evaluator both use the shared helper. * fix(parsing): keep think-tag stripping complete outside the JSON payload The string-aware walker only covered the payload itself: a reasoning block after prose and before the payload was copied verbatim, so brackets inside it became the parsers' find/rfind targets, and an unclosed block in trailing prose was kept where strip_think_blocks used to truncate. Find the payload start while stepping over think blocks, strip the head with strip_think_blocks, keep strip/truncate semantics after the top-level payload closes, and truncate at an unclosed block outside a string. Adds a CHANGELOG entry for the user-visible parsing change.