mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-09-29 08:39:59 +08:00
* ♻️ refactor(core): 重构 AI 编排框架与记忆及 RAG 子系统 - 【重构】重构 `BaseRunnable` 并引入统一的 `RunIntent` 意图载体,规范 Agent、Team 和 Workflow 的执行流 - 【解耦】将中期记忆槽和长期向量记忆从 `MemoryConfig` 中解耦,转为独立的能力组件与工具箱进行管理 - 【记忆】移除 `MemoryReader` 和 `MemoryWriter`,统一封装为 `SessionMemoryContext` 会话记忆门面 - 【RAG】重构检索器与存储后端接口,统一采用 `QueryRequest` 进行多维度联合检索,并引入 `InMemoryScorer` 提升打分性能 - 【事件】优化 `EventBus` 异步事件分发机制,引入队列机制确保事件按序处理,避免并发竞态问题 - 【依赖注入】移除 `memory` 注入项,优化 `DependencyInjector` 的签名解析缓存以提升性能 * 🚨 auto fix by pre-commit hooks --------- Co-authored-by: webjoin111 <455457521@qq.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
99 lines
3.2 KiB
Python
99 lines
3.2 KiB
Python
"""
|
|
记忆域类型定义
|
|
"""
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
from zhenxun.services.ai.utils.scope import ScopeBuilder
|
|
|
|
from .storage.interfaces import (
|
|
BaseChatContext,
|
|
BaseMemoryIngestionMiddleware,
|
|
BaseMemoryReducer,
|
|
)
|
|
from .types import (
|
|
Isolation,
|
|
SessionMetadata,
|
|
)
|
|
|
|
|
|
class MemoryScoringConfig(BaseModel):
|
|
"""长期记忆的复合打分与检索配置"""
|
|
|
|
recency_weight: float = Field(default=0.3)
|
|
"""时间衰减权重"""
|
|
semantic_weight: float = Field(default=0.5)
|
|
"""语义相似度权重"""
|
|
importance_weight: float = Field(default=0.2)
|
|
"""重要性权重"""
|
|
recency_half_life_days: int = Field(default=30)
|
|
"""时间衰减的半衰期(天)"""
|
|
reinforcement_weight: float = Field(default=0.2)
|
|
"""访问强化的加权权重 (被检索越多得分越高)"""
|
|
|
|
|
|
class ShortTermConfig(BaseModel):
|
|
"""短期对话记忆配置"""
|
|
|
|
model_config = ConfigDict(arbitrary_types_allowed=True)
|
|
|
|
enable: bool = Field(default=True)
|
|
"""是否启用短期对话记忆上下文"""
|
|
backend: str | BaseChatContext | None = Field(default=None)
|
|
"""
|
|
指定底层短期记忆数据库注册名称,或直接传入 BaseChatContext 实例。
|
|
为空则使用全局默认
|
|
"""
|
|
isolation: ScopeBuilder = Field(default_factory=Isolation.AGENT_USER)
|
|
"""单一的记忆隔离级别 (ScopeBuilder),决定短期记忆存储边界"""
|
|
|
|
|
|
class ContextCompressionConfig(BaseModel):
|
|
"""上下文压缩与管理配置"""
|
|
|
|
model_config = ConfigDict(arbitrary_types_allowed=True)
|
|
|
|
threshold: float | None = Field(default=None)
|
|
"""(局部重写) 触发记忆压缩的 Token 阈值"""
|
|
max_history_turns: int | None = Field(default=None)
|
|
"""(局部重写) 触发记忆压缩的对话轮数上限。设为 0 表示不限制轮数。"""
|
|
vision_window: int | None = Field(default=None)
|
|
"""多模态滑动窗口大小。0表示关闭该功能,>0表示仅保留最近N轮包含多模态数据的消息,None表示跟随全局配置。"""
|
|
policy: list[BaseMemoryReducer] | None = Field(default=None)
|
|
"""核心记忆压缩策略管线 (List[BaseMemoryReducer])。为 None 时将应用全局默认策略。"""
|
|
|
|
|
|
class IngestionConfig(BaseModel):
|
|
"""记忆入库管线配置"""
|
|
|
|
model_config = ConfigDict(arbitrary_types_allowed=True)
|
|
|
|
middlewares: list[BaseMemoryIngestionMiddleware] = Field(default_factory=list)
|
|
"""入库中间件列表(按顺序依次执行清洗过滤)"""
|
|
|
|
|
|
class MemoryConfig(BaseModel):
|
|
"""统一的记忆配置项声明"""
|
|
|
|
model_config = ConfigDict(arbitrary_types_allowed=True)
|
|
short_term: ShortTermConfig = Field(default_factory=ShortTermConfig)
|
|
"""短期对话记忆配置"""
|
|
compression: ContextCompressionConfig = Field(
|
|
default_factory=ContextCompressionConfig
|
|
)
|
|
"""上下文压缩与管理配置"""
|
|
ingestion: IngestionConfig = Field(default_factory=IngestionConfig)
|
|
"""记忆入库前的清洗与过滤管线配置"""
|
|
|
|
|
|
__all__ = [
|
|
"BaseMemoryIngestionMiddleware",
|
|
"ContextCompressionConfig",
|
|
"IngestionConfig",
|
|
"Isolation",
|
|
"MemoryConfig",
|
|
"MemoryScoringConfig",
|
|
"SessionMetadata",
|
|
"ShortTermConfig",
|
|
]
|