From f5bd4f30e578e77def89a3f9c2c934b7542aad0f Mon Sep 17 00:00:00 2001 From: EmilyCheoh Date: Fri, 22 May 2026 20:32:29 +0800 Subject: [PATCH] fix: preserve original completion_text in skills_like tool re-query (#8240) Only overwrite tool-call-related fields from the re-query response, preserving the original completion_text and reasoning_content that were already sent to the user. --- astrbot/core/agent/runners/tool_loop_agent_runner.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/astrbot/core/agent/runners/tool_loop_agent_runner.py b/astrbot/core/agent/runners/tool_loop_agent_runner.py index 1b9f5a592..2da36fda2 100644 --- a/astrbot/core/agent/runners/tool_loop_agent_runner.py +++ b/astrbot/core/agent/runners/tool_loop_agent_runner.py @@ -816,8 +816,9 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]): # 如果有工具调用,还需处理工具调用 if llm_resp.tools_call_name: if self.tool_schema_mode == "skills_like": - llm_resp, _ = await self._resolve_tool_exec(llm_resp) - if not llm_resp.tools_call_name: + requery_resp, _ = await self._resolve_tool_exec(llm_resp) + if not requery_resp.tools_call_name: + llm_resp = requery_resp logger.warning( "skills_like tool re-query returned no tool calls; fallback to assistant response." ) @@ -845,6 +846,10 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]): await self._complete_with_assistant_response(llm_resp) return + else: + llm_resp.tools_call_name = requery_resp.tools_call_name + llm_resp.tools_call_args = requery_resp.tools_call_args + llm_resp.tools_call_ids = requery_resp.tools_call_ids tool_call_result_blocks = [] cached_images = [] # Collect cached images for LLM visibility