feat:实现短期内存管理器和统一内存管理器

- 添加了ShortTermMemoryManager来管理短期记忆,包括提取、决策和记忆操作。
- 集成大型语言模型(LLM),用于结构化记忆提取和决策过程。
- 基于重要性阈值,实现了从短期到长期的内存转移逻辑。
- 创建了UnifiedMemoryManager,通过统一接口整合感知记忆、短期记忆和长期记忆的管理。
- 通过法官模型评估来增强记忆提取过程的充分性。
- 增加了自动和手动内存传输功能。
- 包含内存管理操作和决策的全面日志记录。
This commit is contained in:
Windpicker-owo
2025-11-18 11:12:05 +08:00
parent 7490064238
commit e44f238e53
23 changed files with 4157 additions and 842 deletions

View File

@@ -39,6 +39,7 @@ from src.config.official_configs import (
ReactionConfig,
ResponsePostProcessConfig,
ResponseSplitterConfig,
ThreeTierMemoryConfig,
ToolConfig,
VideoAnalysisConfig,
VoiceConfig,
@@ -64,7 +65,7 @@ TEMPLATE_DIR = os.path.join(PROJECT_ROOT, "template")
# 考虑到实际上配置文件中的mai_version是不会自动更新的,所以采用硬编码
# 对该字段的更新请严格参照语义化版本规范https://semver.org/lang/zh-CN/
MMC_VERSION = "0.12.0"
MMC_VERSION = "0.13.0-alpha"
def get_key_comment(toml_table, key):
@@ -381,6 +382,7 @@ class Config(ValidatedConfigBase):
emoji: EmojiConfig = Field(..., description="表情配置")
expression: ExpressionConfig = Field(..., description="表达配置")
memory: MemoryConfig | None = Field(default=None, description="记忆配置")
three_tier_memory: ThreeTierMemoryConfig | None = Field(default=None, description="三层记忆系统配置")
mood: MoodConfig = Field(..., description="情绪配置")
reaction: ReactionConfig = Field(default_factory=ReactionConfig, description="反应规则配置")
chinese_typo: ChineseTypoConfig = Field(..., description="中文错别字配置")

View File

@@ -498,6 +498,36 @@ class MoodConfig(ValidatedConfigBase):
mood_update_threshold: float = Field(default=1.0, description="情绪更新阈值")
class ThreeTierMemoryConfig(ValidatedConfigBase):
"""三层记忆系统配置类"""
enable: bool = Field(default=False, description="启用三层记忆系统(实验性功能)")
data_dir: str = Field(default="data/memory_graph/three_tier", description="数据存储目录")
# 感知记忆层配置
perceptual_max_blocks: int = Field(default=50, description="记忆堆最大容量(全局)")
perceptual_block_size: int = Field(default=5, description="每个记忆块包含的消息数量")
perceptual_similarity_threshold: float = Field(default=0.55, description="相似度阈值0-1")
perceptual_topk: int = Field(default=3, description="TopK召回数量")
activation_threshold: int = Field(default=3, description="激活阈值(召回次数→短期)")
# 短期记忆层配置
short_term_max_memories: int = Field(default=30, description="短期记忆最大数量")
short_term_transfer_threshold: float = Field(default=0.6, description="转移到长期记忆的重要性阈值")
short_term_search_top_k: int = Field(default=5, description="搜索时返回的最大数量")
short_term_decay_factor: float = Field(default=0.98, description="衰减因子")
# 长期记忆层配置
long_term_batch_size: int = Field(default=10, description="批量转移大小")
long_term_decay_factor: float = Field(default=0.95, description="衰减因子")
long_term_auto_transfer_interval: int = Field(default=600, description="自动转移间隔(秒)")
# Judge模型配置
judge_model_name: str = Field(default="utils_small", description="用于决策的LLM模型")
judge_temperature: float = Field(default=0.1, description="Judge模型的温度参数")
enable_judge_retrieval: bool = Field(default=True, description="启用智能检索判断")
class ReactionRuleConfig(ValidatedConfigBase):
"""反应规则配置类"""