refactor(tools): remove zombie close_sub_agent tool

该工具自 2025-11-15 引入起即为 terminate_sub_agent 的别名(两提交相隔
19 分钟),main_terminal 拆分为 main_terminal_parts 时执行分支丢失,
仅剩定义残留——模型调用必落 unknown_tool,且与 terminate_sub_agent
命名近似干扰工具选择。本次彻底移除定义、分组集合、tool_config 分类、
formatter 注册、i18n 键与前端三处图标映射,并在原定义位置留注释
防止误恢复。终止子智能体统一使用 terminate_sub_agent。
This commit is contained in:
JOJO 2026-09-10 13:41:12 +08:00
parent d574159f82
commit f6a46b5b0a
9 changed files with 7 additions and 37 deletions

View File

@ -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_agent2026-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": {

View File

@ -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 中按前缀放行)

View File

@ -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="彩蛋实验",

View File

@ -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.",

View File

@ -682,7 +682,6 @@ const TOOL_CATEGORY_MAP: Record<string, ToolCategory> = {
// /
create_sub_agent: 'sub_agent',
close_sub_agent: 'sub_agent_manage',
terminate_sub_agent: 'sub_agent_manage',
get_sub_agent_status: 'sub_agent_manage',

View File

@ -28,7 +28,6 @@ const TOOL_FACE_MAP: Record<string, string> = {
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',

View File

@ -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',

View File

@ -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)

View File

@ -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,