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:
parent
d574159f82
commit
f6a46b5b0a
@ -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": {
|
||||
|
||||
@ -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 中按前缀放行)
|
||||
|
||||
@ -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="彩蛋实验",
|
||||
|
||||
@ -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.",
|
||||
|
||||
@ -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',
|
||||
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user