fix(aibox/botops): 思考区域按时间顺序分布,不再全部堆在顶部
问题根因: 1. ChatView.end_reasoning() 不清空 _reasoning_widget 引用,导致 多轮工具调用时 start_reasoning() 直接 return,所有轮次的思考 内容都被追加到第一个思考区域(在聊天区最顶部)。 2. AI widget 在工具调用期间不重置,导致后续轮次的思考区域被 挂载在AI widget中间,顺序混乱。 修复: 1. end_reasoning()/abort_reasoning() 更新标签后清除引用(widget 保留在DOM显示),下一轮 reasoning_start 创建新的思考区域。 2. 新增 ai_break 协议信号:服务端在工具调用执行前发送,前端 break_ai() 清除AI widget引用(保留已显示内容),后续chunk 创建新的AI widget,确保思考区域按时间顺序插入在两段AI文本之间。 3. ai_break 前flush chunk_buffer,防止工具调用前的最后文本片段丢失。
This commit is contained in:
1 parent
763faf9c83
commit
af5cd02663
3 files changed
+41
-10
No files matched your search
@@ -7424,6 +7424,15 @@ class DeepSeekChat:
|
||||
elif output_callback:
|
||||
output_callback("line", i18n.get('calling_tools') + "\n")
|
||||
|
||||
# 发送ai_break信号,通知前端分段当前AI文本段(保留已显示内容),
|
||||
# 这样工具调用后新一轮的思考/回答会创建新的widget,按时间顺序排列
|
||||
if output_callback and chunk_buffer:
|
||||
# 先flush剩余的chunk_buffer,确保最后片段不丢失
|
||||
output_callback("chunk", chunk_buffer)
|
||||
chunk_buffer = ""
|
||||
if output_callback:
|
||||
output_callback("ai_break", "")
|
||||
|
||||
# 【关键修复1】先添加助手消息,包含 tool_calls
|
||||
assistant_msg = {
|
||||
"role": "assistant",
|
||||
|
||||
Reference in new issue
Block a user