fix: ensure todo system note follows tool result

This commit is contained in:
JOJO 2025-11-18 19:05:23 +08:00
parent 5bd61ae80d
commit 20ff71bda0
5 changed files with 16 additions and 3 deletions

View File

@ -605,6 +605,15 @@ class MainTerminal:
system_message = tool_result.get("system_message")
if system_message:
self._record_sub_agent_message(system_message, tool_result.get("task_id"), inline=False)
# 补充TODO完成提示放在tool消息之后保证格式正确
todo_note = None
try:
parsed = json.loads(tool_result["content"])
todo_note = parsed.get("system_note")
except Exception:
todo_note = None
if todo_note:
self.context_manager.add_conversation("system", todo_note)
# 4. 在终端显示执行信息(不保存到历史)
if collected_tool_calls:

View File

@ -161,8 +161,7 @@ class TodoManager:
todo["forced_finish"] = False
todo["forced_reason"] = None
self._save(todo)
system_note = "✅ TODO 列表中的所有任务已完成,可以整理成果并向用户汇报。"
self.context_manager.add_conversation("system", system_note)
system_note = "✅ TODO 列表中的所有任务已完成,可以整理成果并向用户汇报,如果已经进行过汇报,请忽略这条信息。"
return {
"success": True,
"message": "所有任务已完成,待办列表已结束。",

View File

@ -162,7 +162,6 @@ class TodoManager:
todo["forced_reason"] = None
self._save(todo)
system_note = "✅ TODO 列表中的所有任务已完成,可以整理成果并向用户汇报。"
self.context_manager.add_conversation("system", system_note)
return {
"success": True,
"message": "所有任务已完成,待办列表已结束。",

View File

@ -4121,6 +4121,9 @@ async def handle_task_with_sender(terminal: WebTerminal, message, sender, client
system_message = result_data.get("system_message") if isinstance(result_data, dict) else None
if system_message:
web_terminal._record_sub_agent_message(system_message, result_data.get("task_id"), inline=False)
todo_note = result_data.get("system_note") if isinstance(result_data, dict) else None
if todo_note:
web_terminal.context_manager.add_conversation("system", todo_note)
# 添加到消息历史用于API继续对话
messages.append({

View File

@ -3426,6 +3426,9 @@ async def handle_task_with_sender(terminal: WebTerminal, message, sender, client
system_message = result_data.get("system_message") if isinstance(result_data, dict) else None
if system_message:
web_terminal._record_sub_agent_message(system_message, result_data.get("task_id"), inline=False)
todo_note = result_data.get("system_note") if isinstance(result_data, dict) else None
if todo_note:
web_terminal.context_manager.add_conversation("system", todo_note)
# 添加到消息历史用于API继续对话
messages.append({