feat(affinity_flow_chatter): 添加情绪状态获取接口

为 AffinityChatter 和 ChatterActionPlanner 添加情绪状态相关方法:
- get_current_mood_state() 获取当前情绪状态描述
- get_mood_stats() 获取情绪状态统计信息
- 在规划器中集成情绪管理器更新逻辑

这些接口允许外部模块获取聊天过程中的情绪状态数据,增强了情感交互能力。
This commit is contained in:
Windpicker-owo
2025-09-23 23:14:11 +08:00
parent 47ea14ff6c
commit d2c58ad9d9
2 changed files with 40 additions and 0 deletions

View File

@@ -139,6 +139,24 @@ class AffinityChatter(BaseChatter):
""" """
return self.planner.get_relationship_stats() return self.planner.get_relationship_stats()
def get_current_mood_state(self) -> str:
"""
获取当前聊天的情绪状态
Returns:
当前情绪状态描述
"""
return self.planner.get_current_mood_state()
def get_mood_stats(self) -> Dict[str, Any]:
"""
获取情绪状态统计信息
Returns:
情绪状态统计信息字典
"""
return self.planner.get_mood_stats()
def get_user_relationship(self, user_id: str) -> float: def get_user_relationship(self, user_id: str) -> float:
""" """
获取用户关系分 获取用户关系分

View File

@@ -11,6 +11,7 @@ from src.plugins.built_in.affinity_flow_chatter.plan_filter import ChatterPlanFi
from src.plugins.built_in.affinity_flow_chatter.plan_generator import ChatterPlanGenerator from src.plugins.built_in.affinity_flow_chatter.plan_generator import ChatterPlanGenerator
from src.plugins.built_in.affinity_flow_chatter.interest_scoring import ChatterInterestScoringSystem from src.plugins.built_in.affinity_flow_chatter.interest_scoring import ChatterInterestScoringSystem
from src.plugins.built_in.affinity_flow_chatter.relationship_tracker import ChatterRelationshipTracker from src.plugins.built_in.affinity_flow_chatter.relationship_tracker import ChatterRelationshipTracker
from src.mood.mood_manager import mood_manager
from src.common.logger import get_logger from src.common.logger import get_logger
@@ -117,6 +118,12 @@ class ChatterActionPlanner:
logger.info(f"兴趣度不足 ({latest_score.total_score:.2f}),移除回复") logger.info(f"兴趣度不足 ({latest_score.total_score:.2f}),移除回复")
reply_not_available = True reply_not_available = True
# 更新情绪状态 - 使用最新消息的兴趣度
if latest_message and score > 0:
chat_mood = mood_manager.get_mood_by_chat_id(self.chat_id)
await chat_mood.update_mood_by_message(latest_message, score)
logger.debug(f"已更新聊天 {self.chat_id} 的情绪状态,兴趣度: {score:.3f}")
# base_threshold = self.interest_scoring.reply_threshold # base_threshold = self.interest_scoring.reply_threshold
# 检查兴趣度是否达到非回复动作阈值 # 检查兴趣度是否达到非回复动作阈值
non_reply_action_interest_threshold = global_config.affinity_flow.non_reply_action_interest_threshold non_reply_action_interest_threshold = global_config.affinity_flow.non_reply_action_interest_threshold
@@ -233,5 +240,20 @@ class ChatterActionPlanner:
"max_tracking_users": self.relationship_tracker.max_tracking_users, "max_tracking_users": self.relationship_tracker.max_tracking_users,
} }
def get_current_mood_state(self) -> str:
"""获取当前聊天的情绪状态"""
chat_mood = mood_manager.get_mood_by_chat_id(self.chat_id)
return chat_mood.mood_state
def get_mood_stats(self) -> Dict[str, any]:
"""获取情绪状态统计"""
chat_mood = mood_manager.get_mood_by_chat_id(self.chat_id)
return {
"current_mood": chat_mood.mood_state,
"is_angry_from_wakeup": chat_mood.is_angry_from_wakeup,
"regression_count": chat_mood.regression_count,
"last_change_time": chat_mood.last_change_time,
}
# 全局兴趣度评分系统实例 - 在 individuality 模块中创建 # 全局兴趣度评分系统实例 - 在 individuality 模块中创建