From 6736fb85c234891a26ea2261c118a1b90b44cff4 Mon Sep 17 00:00:00 2001 From: Soulter <37870767+Soulter@users.noreply.github.com> Date: Wed, 4 Feb 2026 23:18:32 +0800 Subject: [PATCH] fix: conversation token usage calculate wrongly and fix tool call infinitely (#4869) --- astrbot/core/agent/runners/tool_loop_agent_runner.py | 2 ++ .../pipeline/process_stage/method/agent_sub_stages/internal.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/astrbot/core/agent/runners/tool_loop_agent_runner.py b/astrbot/core/agent/runners/tool_loop_agent_runner.py index 03d53427f..0e5b4353f 100644 --- a/astrbot/core/agent/runners/tool_loop_agent_runner.py +++ b/astrbot/core/agent/runners/tool_loop_agent_runner.py @@ -213,6 +213,8 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]): if not llm_response.is_chunk and llm_response.usage: # only count the token usage of the final response for computation purpose self.stats.token_usage += llm_response.usage + if self.req.conversation: + self.req.conversation.token_usage = llm_response.usage.total break # got final response if not llm_resp_result: diff --git a/astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py b/astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py index b598e3aa2..87f0dd419 100644 --- a/astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py +++ b/astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py @@ -363,7 +363,8 @@ class InternalAgentSubStage(Stage): token_usage = None if runner_stats: - token_usage = runner_stats.token_usage.total + # token_usage = runner_stats.token_usage.total + token_usage = llm_response.usage.total if llm_response.usage else None await self.conv_manager.update_conversation( event.unified_msg_origin,