Coverage for merco/context/pipeline.py: 100%
16 statements
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
1"""ContextProcessor ABC + ContextPipeline"""
2from __future__ import annotations
4from abc import ABC, abstractmethod
7class ContextProcessor(ABC):
8 """上下文处理器基类"""
9 name: str = ""
11 @abstractmethod
12 async def process(self, messages: list[dict], **kwargs) -> list[dict]:
13 """处理消息列表,返回处理后的消息列表"""
14 ...
17class ContextPipeline:
18 """上下文处理管线 — 按注册顺序执行处理器"""
20 def __init__(self):
21 self._processors: list[ContextProcessor] = []
23 def use(self, processor: ContextProcessor) -> ContextPipeline:
24 """注册处理器"""
25 self._processors.append(processor)
26 return self
28 async def run(self, messages: list[dict], **kwargs) -> list[dict]:
29 """按顺序执行所有处理器"""
30 for p in self._processors:
31 messages = await p.process(messages, **kwargs)
32 return messages