From 8dd26386cbcf0d0065bbe0604e50caad0dab8136 Mon Sep 17 00:00:00 2001 From: EmilyCheoh Date: Tue, 19 May 2026 17:58:44 +0800 Subject: [PATCH] fix: preserve original completion_text in skills_like tool re-query 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 1b9f5a5929..2da36fda2b 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 @@ async def step(self): # 如果有工具调用,还需处理工具调用 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 @@ async def step(self): 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