diff --git a/core/main_terminal.py b/core/main_terminal.py index 51aa4e3..b050e61 100644 --- a/core/main_terminal.py +++ b/core/main_terminal.py @@ -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: diff --git a/modules/todo_manager.py b/modules/todo_manager.py index a198444..02aac25 100644 --- a/modules/todo_manager.py +++ b/modules/todo_manager.py @@ -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": "所有任务已完成,待办列表已结束。", diff --git a/sub_agent/modules/todo_manager.py b/sub_agent/modules/todo_manager.py index a198444..ed1b584 100644 --- a/sub_agent/modules/todo_manager.py +++ b/sub_agent/modules/todo_manager.py @@ -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": "所有任务已完成,待办列表已结束。", diff --git a/sub_agent/web_server.py b/sub_agent/web_server.py index 3909f6e..8ad8921 100644 --- a/sub_agent/web_server.py +++ b/sub_agent/web_server.py @@ -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({ diff --git a/web_server.py b/web_server.py index 18dcff8..bdee281 100644 --- a/web_server.py +++ b/web_server.py @@ -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({