"""推理链轨迹存储(T3:整体项目部分拆解·先行实现)。 内存环形缓冲(零依赖):记录每次请求的完整推理链(两级路由决策、 三级子领域、规则触发、任务拆解、节点执行、质量评分),支持按请求 ID 追溯。 可解释性 = 专家系统 vs 黑盒 LLM 的差异化护城河。 """ from __future__ import annotations import threading from collections import deque from typing import Any, Deque, Dict, Optional class TraceStore: """请求推理链轨迹存储(线程安全,环形淘汰)。""" def __init__(self, max_entries: int = 1000): self._max = max_entries self._entries: Dict[str, Dict[str, Any]] = {} self._order: Deque[str] = deque(maxlen=max_entries) self._lock = threading.Lock() def put(self, request_id: str, trace: Dict[str, Any]) -> None: with self._lock: if request_id in self._entries: self._entries[request_id] = trace return if len(self._entries) >= self._max: # 环形淘汰最旧 while self._order: oldest = self._order.popleft() if oldest in self._entries: del self._entries[oldest] break self._entries[request_id] = trace self._order.append(request_id) def get(self, request_id: str) -> Optional[Dict[str, Any]]: with self._lock: return self._entries.get(request_id) def size(self) -> int: with self._lock: return len(self._entries) def clear(self) -> None: with self._lock: self._entries.clear() self._order.clear()