From ea6f209557f0336a8e8ff86ad44b23a0b5217295 Mon Sep 17 00:00:00 2001 From: Dt8333 <25431943+Dt8333@users.noreply.github.com> Date: Fri, 12 Sep 2025 21:36:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DLLM=E4=BB=8D=E4=BC=9A?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E5=B7=B2=E7=A6=81=E7=94=A8=E7=9A=84=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=9A=84=E9=97=AE=E9=A2=98=20(#2729)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 修复LLM调用已禁用的工具 * feat: 修改工具禁用判断位置,提高效率 未设置可用工具时仍旧循环判断 设置可用工具后在获取工具时即判断 --- packages/astrbot/main.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/astrbot/main.py b/packages/astrbot/main.py index 3a2608a83..4c9bdc916 100644 --- a/packages/astrbot/main.py +++ b/packages/astrbot/main.py @@ -1255,11 +1255,14 @@ UID: {user_id} 此 ID 可用于设置管理员。 if (persona and persona.get("tools") is None) or not persona: # select all toolset = tmgr.get_full_tool_set() + for tool in toolset: + if not tool.active: + toolset.remove_tool(tool.name) else: toolset = ToolSet() for tool_name in persona["tools"]: tool = tmgr.get_func(tool_name) - if tool: + if tool and tool.active: toolset.add_tool(tool) req.func_tool = toolset logger.debug(f"Tool set for persona {persona_id}: {toolset.names()}")