diff --git a/core/main_terminal_parts/tools_definition/agent_tools.py b/core/main_terminal_parts/tools_definition/agent_tools.py index 87245928..0fbeced6 100644 --- a/core/main_terminal_parts/tools_definition/agent_tools.py +++ b/core/main_terminal_parts/tools_definition/agent_tools.py @@ -96,21 +96,12 @@ class ToolsDefinitionAgentToolsMixin: except Exception as exc: logger.warning(f"[tools] 加载多智能体工具失败,回退旧版: {exc}") return [ - { - "type": "function", - "function": { - "name": "close_sub_agent", - "description": "强制关闭指定子智能体,适用于长时间无响应、超时或卡死的任务。使用前请确认必要的日志/文件已保留,操作会立即终止该任务。", - "parameters": { - "type": "object", - "properties": self._inject_intent({ - "task_id": {"type": "string", "description": "子智能体任务ID"}, - "agent_id": {"type": "integer", "description": "子智能体编号(1~5),若缺少 task_id 可用"} - }) - } - } - }, - + # 【已删除】close_sub_agent(2026-09 彻底移除,勿恢复): + # 该工具自 2025-11-15 引入起就是 terminate_sub_agent 的别名 + # (两个提交相隔 19 分钟,handler 直接调 terminate_sub_agent)。 + # main_terminal 拆分为 main_terminal_parts 时其执行分支丢失, + # 仅剩定义残留——模型调用必落 unknown_tool 报错,纯僵尸工具。 + # 终止子智能体统一使用 terminate_sub_agent。 { "type": "function", "function": { diff --git a/core/main_terminal_parts/tools_execution.py b/core/main_terminal_parts/tools_execution.py index 87ed2c02..2dfa15ba 100644 --- a/core/main_terminal_parts/tools_execution.py +++ b/core/main_terminal_parts/tools_execution.py @@ -184,7 +184,6 @@ class MainTerminalToolsExecutionMixin: } _SUB_AGENT_SERIES_TOOLS = { "create_sub_agent", - "close_sub_agent", "terminate_sub_agent", "get_sub_agent_status", } @@ -217,7 +216,6 @@ class MainTerminalToolsExecutionMixin: "terminal_snapshot", # 子智能体全生命周期(只读权限会传播给子智能体,计划模式调研主力) "create_sub_agent", - "close_sub_agent", "terminate_sub_agent", "get_sub_agent_status", # MCP 服务列举(mcp__* 工具在 evaluate_tool_permission 中按前缀放行) diff --git a/core/tool_config.py b/core/tool_config.py index 116da2a6..fe4a8344 100644 --- a/core/tool_config.py +++ b/core/tool_config.py @@ -78,7 +78,7 @@ TOOL_CATEGORIES: Dict[str, ToolCategory] = { ), "sub_agent": ToolCategory( label="子智能体", - tools=["create_sub_agent", "close_sub_agent"], + tools=["create_sub_agent", "terminate_sub_agent", "get_sub_agent_status"], ), "easter_egg": ToolCategory( label="彩蛋实验", diff --git a/modules/i18n_messages/misc_utils2.py b/modules/i18n_messages/misc_utils2.py index a393802b..e90b7533 100644 --- a/modules/i18n_messages/misc_utils2.py +++ b/modules/i18n_messages/misc_utils2.py @@ -164,10 +164,6 @@ MESSAGES = { "zh-CN": "子智能体任务失败", "en-US": "Sub-agent task failed", }, - "fmt_agent2.closed": { - "zh-CN": "子智能体已关闭。", - "en-US": "Sub-agent closed.", - }, "fmt_agent2.force_closed": { "zh-CN": "子智能体已被强制关闭。", "en-US": "Sub-agent was forcibly closed.", diff --git a/static/src/components/chat/MinimalBlocks.vue b/static/src/components/chat/MinimalBlocks.vue index 4cc79347..106c21f5 100644 --- a/static/src/components/chat/MinimalBlocks.vue +++ b/static/src/components/chat/MinimalBlocks.vue @@ -682,7 +682,6 @@ const TOOL_CATEGORY_MAP: Record = { // 子智能体:创建 / 管理 create_sub_agent: 'sub_agent', - close_sub_agent: 'sub_agent_manage', terminate_sub_agent: 'sub_agent_manage', get_sub_agent_status: 'sub_agent_manage', diff --git a/static/src/utils/avatarFace.ts b/static/src/utils/avatarFace.ts index 67098821..dd3832fa 100644 --- a/static/src/utils/avatarFace.ts +++ b/static/src/utils/avatarFace.ts @@ -28,7 +28,6 @@ const TOOL_FACE_MAP: Record = { todo_create: 'note', todo_update_task: 'check', create_sub_agent: 'subagent', - close_sub_agent: 'subagent', terminate_sub_agent: 'subagent', get_sub_agent_status: 'subagent', manage_personalization: 'persona', diff --git a/static/src/utils/icons.ts b/static/src/utils/icons.ts index 89c57182..4da358f4 100644 --- a/static/src/utils/icons.ts +++ b/static/src/utils/icons.ts @@ -63,7 +63,6 @@ export const ICONS = Object.freeze({ }); export const TOOL_ICON_MAP = Object.freeze({ - close_sub_agent: 'bot', create_file: 'file', create_skill: 'sparkles', manage_personalization: 'userPen', diff --git a/utils/tool_result_formatter/agent_context.py b/utils/tool_result_formatter/agent_context.py index d218aeb2..341ca6e0 100644 --- a/utils/tool_result_formatter/agent_context.py +++ b/utils/tool_result_formatter/agent_context.py @@ -256,16 +256,6 @@ def _format_get_sub_agent_status(result_data: Dict[str, Any]) -> str: blocks.append("\n".join(lines)) return "\n\n".join(blocks) -def _format_close_sub_agent(result_data: Dict[str, Any]) -> str: - if not result_data.get("success"): - return _format_failure("close_sub_agent", result_data) - message = result_data.get("message") or tr("fmt_agent2.closed") - task_id = result_data.get("task_id") - status = result_data.get("status") - status_note = tr("fmt_agent2.status_note", status=status) if status else "" - return f"{message}{status_note}(task_id={task_id})" - - def _format_terminate_sub_agent(result_data: Dict[str, Any]) -> str: if not result_data.get("success"): return _format_failure("terminate_sub_agent", result_data) diff --git a/utils/tool_result_formatter/dispatch.py b/utils/tool_result_formatter/dispatch.py index b517eb7a..edd510a5 100644 --- a/utils/tool_result_formatter/dispatch.py +++ b/utils/tool_result_formatter/dispatch.py @@ -34,7 +34,6 @@ from utils.tool_result_formatter.agent_context import ( _format_todo_update_task, _format_update_memory, _format_create_sub_agent, - _format_close_sub_agent, _format_get_sub_agent_status, _format_terminate_sub_agent, _format_send_message_to_sub_agent, @@ -139,7 +138,6 @@ TOOL_FORMATTERS = { "save_workflow": _format_save_workflow, "manage_personalization": _format_manage_personalization, "create_sub_agent": _format_create_sub_agent, - "close_sub_agent": _format_close_sub_agent, "terminate_sub_agent": _format_terminate_sub_agent, "send_message_to_sub_agent": _format_send_message_to_sub_agent, "stop_sub_agent": _format_stop_sub_agent,