refactor(interest-system): 移除旧兴趣度管理系统,迁移到插件内部实现

移除旧的集中式兴趣度管理系统(interest_manager.py),将兴趣度计算功能迁移到affinity_flow_chatter插件内部实现。主要包括:

- 删除interest_manager.py及其相关导入引用
- 修改RelationshipEnergyCalculator使用插件内部的关系分计算
- 重构StreamContextManager使用插件内部的兴趣度评分系统
- 更新ChatStream、PlanFilter、Planner等组件使用新的插件接口
- 简化上下文管理器,移除事件系统和验证器相关代码

此次重构提高了模块独立性,减少了核心代码对插件功能的直接依赖,符合"高内聚低耦合"的设计原则。
This commit is contained in:
Windpicker-owo
2025-09-27 19:07:24 +08:00
parent e8e3c1bd3f
commit 7508d542f2
11 changed files with 92 additions and 997 deletions

View File

@@ -12,7 +12,7 @@ from src.common.data_models.info_data_model import InterestScore
from src.chat.interest_system import bot_interest_manager
from src.common.logger import get_logger
from src.config.config import global_config
from src.plugins.built_in.affinity_flow_chatter.relationship_tracker import ChatterRelationshipTracker
logger = get_logger("chatter_interest_scoring")
# 定义颜色
@@ -45,7 +45,7 @@ class ChatterInterestScoringSystem:
self.probability_boost_per_no_reply = (
affinity_config.no_reply_threshold_adjustment / affinity_config.max_no_reply_count
) # 每次不回复增加的概率
# 用户关系数据
self.user_relationships: Dict[str, float] = {} # user_id -> relationship_score

View File

@@ -387,22 +387,27 @@ class ChatterPlanFilter:
interest_scores = {}
try:
from src.chat.interest_system import interest_manager
from .interest_scoring import chatter_interest_scoring_system
from src.common.data_models.database_data_model import DatabaseMessages
# 使用的兴趣度管理系统计算评分
# 使用插件内部的兴趣度评分系统计算评分
for msg_dict in messages:
try:
# 构建计算上下文
calc_context = {
"stream_id": msg_dict.get("chat_id", ""),
"user_id": msg_dict.get("user_id"),
}
# 将字典转换为DatabaseMessages对象
db_message = DatabaseMessages(
message_id=msg_dict.get("message_id", ""),
user_info=msg_dict.get("user_info", {}),
processed_plain_text=msg_dict.get("processed_plain_text", ""),
key_words=msg_dict.get("key_words", "[]"),
is_mentioned=msg_dict.get("is_mentioned", False)
)
# 计算消息兴趣度
interest_score = interest_manager.calculate_message_interest(
message=msg_dict,
context=calc_context
interest_score_obj = await chatter_interest_scoring_system._calculate_single_message_score(
message=db_message,
bot_nickname=global_config.bot.nickname
)
interest_score = interest_score_obj.total_score
# 构建兴趣度字典
interest_scores[msg_dict.get("message_id", "")] = interest_score

View File

@@ -10,7 +10,7 @@ from typing import TYPE_CHECKING, Dict, List, Optional, Tuple
from src.plugins.built_in.affinity_flow_chatter.plan_executor import ChatterPlanExecutor
from src.plugins.built_in.affinity_flow_chatter.plan_filter import ChatterPlanFilter
from src.plugins.built_in.affinity_flow_chatter.plan_generator import ChatterPlanGenerator
from src.chat.interest_system import interest_manager
from src.plugins.built_in.affinity_flow_chatter.interest_scoring import chatter_interest_scoring_system
from src.mood.mood_manager import mood_manager
@@ -109,10 +109,7 @@ class ChatterActionPlanner:
# 获取用户ID优先从user_info.user_id获取其次从user_id属性获取
user_id = None
first_message = unread_messages[0]
if hasattr(first_message, 'user_info') and hasattr(first_message.user_info, 'user_id'):
user_id = getattr(first_message.user_info, 'user_id', None)
elif hasattr(first_message, 'user_id'):
user_id = getattr(first_message, 'user_id', None)
user_id = first_message.user_info.user_id
# 构建计算上下文
calc_context = {
@@ -123,11 +120,12 @@ class ChatterActionPlanner:
# 为每条消息计算兴趣度
for message in unread_messages:
try:
# 使用新的兴趣度管理器计算
message_interest = interest_manager.calculate_message_interest(
message=message.__dict__,
context=calc_context
# 使用插件内部的兴趣度评分系统计算
interest_score = await chatter_interest_scoring_system._calculate_single_message_score(
message=message,
bot_nickname=global_config.bot.nickname
)
message_interest = interest_score.total_score
# 更新消息的兴趣度
message.interest_value = message_interest
@@ -140,7 +138,7 @@ class ChatterActionPlanner:
# 更新StreamContext中的消息信息并刷新focus_energy
if context:
from src.chat.message_manager.message_manager import message_manager
message_manager.update_message_and_refresh_energy(
message_manager.update_message(
stream_id=self.chat_id,
message_id=message.message_id,
interest_value=message_interest,
@@ -154,10 +152,7 @@ class ChatterActionPlanner:
logger.debug(f"已更新数据库中消息 {message.message_id} 的兴趣度为: {message_interest:.3f}")
except Exception as e:
logger.warning(f"更新数据库消息兴趣度失败: {e}")
# 更新话题兴趣度
interest_manager.update_topic_interest(message.__dict__, message_interest)
# 记录最高分
if message_interest > score:
score = message_interest

View File

@@ -29,9 +29,6 @@ class ChatterRelationshipTracker:
self.relationship_history: List[Dict] = []
self.interest_scoring_system = interest_scoring_system
# 数据库访问 - 使用SQLAlchemy
pass
# 用户关系缓存 (user_id -> {"relationship_text": str, "relationship_score": float, "last_tracked": float})
self.user_relationship_cache: Dict[str, Dict] = {}
self.cache_expiry_hours = 1 # 缓存过期时间(小时)