feat(affinity-flow): 增强关系追踪系统的人设集成和逻辑严谨性

- 在关系追踪器中集成bot人设信息,从性格视角分析用户互动
- 添加严格的关系分数档次定义和现实发展逻辑约束
- 改进提示词工程,要求详细的性格观察和互动记忆记录
- 单次互动加分限制在合理范围内(0.05-0.1),防止跳跃式关系提升
- 优化关系印象描述要求(100-200字),包含用户性格特点和深刻记忆

refactor(planner): 简化消息数据处理流程

- 使用StreamContext对象替代原始的message_data字典
- 移除冗余的消息数据准备步骤,直接从context获取未读消息
- 统一规划器接口,提高代码可读性和维护性

fix(person-info): 添加napcat到qq平台的用户ID迁移机制

- 为qq平台生成person_id时检查是否存在napcat平台的相同用户
- 如果存在则自动迁移记录并更新平台信息
- 确保用户身份在不同平台间的正确识别和延续

fix(plan-executor): 修复自我回复检测逻辑

- 使用action_message.user_info.user_id替代原始字典访问
- 防止因消息格式变化导致的自我回复检测失效

chore(config): 更新默认平台配置为qq

- 将napcat_adapter插件的默认平台名称从napcat改为qq
- 保持与现有部署环境的一致性
This commit is contained in:
Windpicker-owo
2025-09-20 22:11:38 +08:00
parent 2ceda70e8e
commit 3baf4c533a
10 changed files with 146 additions and 49 deletions

View File

@@ -1032,7 +1032,26 @@ class DefaultReplyer:
# 兼容旧的reply_to
sender, target = self._parse_reply_target(reply_to)
else:
# 需求:遍历最近消息,找到第一条 user_id != bot_id 的消息作为目标;找不到则静默退出
# 获取 platform如果不存在则从 chat_stream 获取,如果还是 None 则使用默认值
if reply_message is None:
logger.warning("reply_message 为 None无法构建prompt")
return ""
platform = reply_message.get("chat_info_platform")
person_id = person_info_manager.get_person_id(
platform, # type: ignore
reply_message.get("user_id"), # type: ignore
)
person_name = await person_info_manager.get_value(person_id, "person_name")
# 如果person_name为None使用fallback值
if person_name is None:
# 尝试从reply_message获取用户名
fallback_name = reply_message.get("user_nickname") or reply_message.get("user_id", "未知用户")
logger.warning(f"未知用户,将存储用户信息:{fallback_name}")
person_name = str(fallback_name)
person_info_manager.set_value(person_id, "person_name", fallback_name)
# 检查是否是bot自己的名字如果是则替换为"(你)"
bot_user_id = str(global_config.bot.qq_account)
# 优先使用传入的 reply_message 如果它不是 bot
candidate_msg = None