From c59b29c7233e76078f3cec96172bc9e2999bb8c2 Mon Sep 17 00:00:00 2001 From: koala553 <3118758825@qq.com> Date: Thu, 5 Nov 2026 10:10:17 +0800 Subject: [PATCH] fix: prevent tool description cache mutation (#3540) --- .../core/providers/tools/unified_tool_manager.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/main/xiaozhi-server/core/providers/tools/unified_tool_manager.py b/main/xiaozhi-server/core/providers/tools/unified_tool_manager.py index f69a6dc39..8293badc5 100644 --- a/main/xiaozhi-server/core/providers/tools/unified_tool_manager.py +++ b/main/xiaozhi-server/core/providers/tools/unified_tool_manager.py @@ -47,9 +47,12 @@ class ToolManager: return all_tools def get_function_descriptions(self) -> List[Dict[str, Any]]: - """获取所有工具的函数描述(OpenAI格式)""" + """获取所有工具的函数描述(OpenAI格式) + + 返回缓存的浅拷贝,防止调用方就地修改污染缓存。 + """ if self._cached_function_descriptions is not None: - return self._cached_function_descriptions + return list(self._cached_function_descriptions) descriptions = [] tools = self.get_all_tools() @@ -57,7 +60,7 @@ class ToolManager: descriptions.append(tool_definition.description) self._cached_function_descriptions = descriptions - return descriptions + return list(descriptions) def has_tool(self, tool_name: str) -> bool: """检查是否存在指定工具"""