refactor(interest-system): 移除旧兴趣度管理系统,迁移到插件内部实现
移除旧的集中式兴趣度管理系统(interest_manager.py),将兴趣度计算功能迁移到affinity_flow_chatter插件内部实现。主要包括: - 删除interest_manager.py及其相关导入引用 - 修改RelationshipEnergyCalculator使用插件内部的关系分计算 - 重构StreamContextManager使用插件内部的兴趣度评分系统 - 更新ChatStream、PlanFilter、Planner等组件使用新的插件接口 - 简化上下文管理器,移除事件系统和验证器相关代码 此次重构提高了模块独立性,减少了核心代码对插件功能的直接依赖,符合"高内聚低耦合"的设计原则。
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 # 缓存过期时间(小时)
|
||||
|
||||
Reference in New Issue
Block a user