diff --git a/astrbot/core/pipeline/process_stage/method/llm_request.py b/astrbot/core/pipeline/process_stage/method/llm_request.py index 2952f46dd..fd50d4423 100644 --- a/astrbot/core/pipeline/process_stage/method/llm_request.py +++ b/astrbot/core/pipeline/process_stage/method/llm_request.py @@ -69,9 +69,7 @@ class LLMRequestSubStage(Stage): handlers = star_handlers_registry.get_handlers_by_event_type(EventType.OnLLMRequestEvent) for handler in handlers: try: - wrapper = self._call_handler(self.ctx, event, handler.handler, req) - async for ret in wrapper: - yield ret + await handler.handler(event, req) except BaseException: logger.error(traceback.format_exc()) @@ -88,9 +86,7 @@ class LLMRequestSubStage(Stage): handlers = star_handlers_registry.get_handlers_by_event_type(EventType.OnLLMResponseEvent) for handler in handlers: try: - wrapper = self._call_handler(self.ctx, event, handler.handler, llm_response) - async for ret in wrapper: - yield ret + await handler.handler(event, llm_response) except BaseException: logger.error(traceback.format_exc()) diff --git a/astrbot/core/pipeline/respond/stage.py b/astrbot/core/pipeline/respond/stage.py index 9c5d5860e..a833ac76c 100644 --- a/astrbot/core/pipeline/respond/stage.py +++ b/astrbot/core/pipeline/respond/stage.py @@ -90,9 +90,7 @@ class RespondStage(Stage): handlers = star_handlers_registry.get_handlers_by_event_type(EventType.OnAfterMessageSentEvent) for handler in handlers: try: - wrapper = self._call_handler(self.ctx, event, handler.handler) - async for ret in wrapper: - yield ret + await handler.handler(event) except BaseException: logger.error(traceback.format_exc()) diff --git a/astrbot/core/pipeline/result_decorate/stage.py b/astrbot/core/pipeline/result_decorate/stage.py index 847d3549d..aa0ce02b7 100644 --- a/astrbot/core/pipeline/result_decorate/stage.py +++ b/astrbot/core/pipeline/result_decorate/stage.py @@ -63,13 +63,10 @@ class ResultDecorateStage(Stage): handlers = star_handlers_registry.get_handlers_by_event_type(EventType.OnDecoratingResultEvent) for handler in handlers: try: - wrapper = self._call_handler(self.ctx, event, handler.handler) - async for ret in wrapper: - yield ret + await handler.handler(event) except BaseException: logger.error(traceback.format_exc()) - # 需要再获取一次。插件可能直接对 chain 进行了替换。 result = event.get_result() if result is None: diff --git a/astrbot/core/pipeline/stage.py b/astrbot/core/pipeline/stage.py index e9d48a41b..fc31786b2 100644 --- a/astrbot/core/pipeline/stage.py +++ b/astrbot/core/pipeline/stage.py @@ -1,6 +1,7 @@ from __future__ import annotations import abc import inspect +from astrbot.api import logger from typing import List, AsyncGenerator, Union, Awaitable from astrbot.core.platform.astr_message_event import AstrMessageEvent from .context import PipelineContext @@ -46,6 +47,7 @@ class Stage(abc.ABC): ready_to_call = handler(event, *args, **kwargs) except TypeError as e: # 向下兼容 + logger.debug(str(e)) ready_to_call = handler(event, ctx.plugin_manager.context, *args, **kwargs) if isinstance(ready_to_call, AsyncGenerator):