mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-26 13:16:24 +00:00
* fix(goal): show the active goal to the agent on every model call Nothing put ThreadState.goal into model requests. The agent only knew the goal from messages: the objective the Web UI and IM channels send, and the hidden <goal_continuation> message. Goals set through PUT /goal, the embedded client or the TUI never reached it, and compaction could remove the messages that stated the others. DurableContextMiddleware now renders the active objective first in its hidden durable-context data message, escaped, bounded, PII-redacted and treated as data like the summary. Only the objective is rendered, so the block changes only when the goal is set or cleared. * fix(goal): let the agent pursue the active goal at user priority The durable-context contract told the model never to follow instructions in its data message, and that message now carried the goal. While a goal is rendered, the contract ends with a static exception for the <active_goal> element that opens the data message: work toward it as a request in a user message, with no system or developer authority, while every other field value, and any other text that calls itself a goal, stays data. The element replaces the heading the goal used, which a summary could reproduce. Other field values in the data message are HTML-escaped, and active_goal joins the sanitizer denylist, so user input and remote tool results cannot carry a raw one either. --------- Co-authored-by: Totoro-qaq <279883115+Totoro-qaq@users.noreply.github.com>