Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 13 additions & 11 deletions astrbot/core/agent/runners/tool_loop_agent_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,14 @@ async def step(self):
self._transition_state(AgentState.DONE)
self.stats.end_time = time.time()

# record the final assistant message
# call the on_agent_done hook BEFORE recording the message,
# so that plugins can clean metadata tags from completion_text first.
try:
await self.agent_hooks.on_agent_done(self.run_context, llm_resp)
except Exception as e:
logger.error(f"Error in on_agent_done hook: {e}", exc_info=True)

# record the final assistant message (now cleaned by hooks)
parts = []
if llm_resp.reasoning_content or llm_resp.reasoning_signature:
parts.append(
Expand All @@ -485,11 +492,6 @@ async def step(self):
)
self.run_context.messages.append(Message(role="assistant", content=parts))

# call the on_agent_done hook
try:
await self.agent_hooks.on_agent_done(self.run_context, llm_resp)
except Exception as e:
logger.error(f"Error in on_agent_done hook: {e}", exc_info=True)
self._resolve_unconsumed_follow_ups()

# 返回 LLM 结果
Expand Down Expand Up @@ -971,6 +973,11 @@ async def _finalize_aborted_step(
self._transition_state(AgentState.DONE)
self.stats.end_time = time.time()

try:
await self.agent_hooks.on_agent_done(self.run_context, llm_resp)
except Exception as e:
logger.error(f"Error in on_agent_done hook: {e}", exc_info=True)

parts = []
if llm_resp.reasoning_content or llm_resp.reasoning_signature:
parts.append(
Expand All @@ -984,11 +991,6 @@ async def _finalize_aborted_step(
if parts:
self.run_context.messages.append(Message(role="assistant", content=parts))

try:
await self.agent_hooks.on_agent_done(self.run_context, llm_resp)
except Exception as e:
logger.error(f"Error in on_agent_done hook: {e}", exc_info=True)

self._resolve_unconsumed_follow_ups()
return AgentResponse(
type="aborted",
Expand Down
Loading