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

@@ -114,20 +114,49 @@ class UserRelationshipTracker:
async def _update_user_relationship(self, interaction: Dict) -> Optional[Dict]:
"""更新单个用户的关系"""
try:
# 获取bot人设信息
from src.individuality.individuality import Individuality
individuality = Individuality()
bot_personality = await individuality.get_personality_block()
prompt = f"""
分析以下用户交互,更新用户关系:
你现在是一个有着特定性格和身份的AI助手。你的人设是{bot_personality}
请以你独特的性格视角,严格按现实逻辑分析以下用户交互,更新用户关系:
用户ID: {interaction["user_id"]}
用户名: {interaction["user_name"]}
用户消息: {interaction["user_message"]}
Bot回复: {interaction["bot_reply"]}
你的回复: {interaction["bot_reply"]}
当前关系分: {interaction["current_relationship_score"]}
【重要】关系分数档次定义:
- 0.0-0.2:陌生人/初次认识 - 仅礼貌性交流
- 0.2-0.4:普通网友 - 有基本互动但不熟悉
- 0.4-0.6:熟悉网友 - 经常交流,有一定了解
- 0.6-0.8:朋友 - 可以分享心情,互相关心
- 0.8-1.0:好朋友/知己 - 深度信任,亲密无间
【严格要求】:
1. 加分必须符合现实关系发展逻辑 - 不能因为对方态度好就盲目加分到不符合当前关系档次的分数
2. 关系提升需要足够的互动积累和时间验证
3. 即使是朋友关系单次互动加分通常不超过0.05-0.1
4. 关系描述要详细具体,包括:
- 用户性格特点观察
- 印象深刻的互动记忆
- 你们关系的具体状态描述
根据你的人设性格,思考:
1. 以你的性格,你会如何看待这次互动?
2. 用户的行为是否符合你性格的喜好?
3. 这次互动是否真的让你们的关系提升了一个档次?为什么?
4. 有什么特别值得记住的互动细节?
请以JSON格式返回更新结果
{{
"new_relationship_score": 0.0~1.0的数值,
"reasoning": "更新理由",
"interaction_summary": "交互总结"
"new_relationship_score": 0.0~1.0的数值(必须符合现实逻辑),
"reasoning": "从你的性格角度说明更新理由,重点说明是否符合现实关系发展逻辑",
"interaction_summary": "基于你性格的交互总结,包含印象深刻的互动记忆"
}}
"""
@@ -470,36 +499,59 @@ Bot回复: {interaction["bot_reply"]}
# 构建分析提示
user_reactions_text = "\n".join([f"- {msg.processed_plain_text}" for msg in user_reactions])
# 获取bot人设信息
from src.individuality.individuality import Individuality
individuality = Individuality()
bot_personality = await individuality.get_personality_block()
prompt = f"""
分析以下用户交互,更新用户关系印象和分数:
你现在是一个有着特定性格和身份的AI助手。你的人设是{bot_personality}
请以你独特的性格视角,严格按现实逻辑分析以下用户交互,更新用户关系印象和分数:
用户信息:
- 用户ID: {user_id}
- 用户名: {user_name}
上次Bot回复: {last_bot_reply.processed_plain_text}
上次回复: {last_bot_reply.processed_plain_text}
用户反应消息:
{user_reactions_text}
当前Bot回复: {current_reply}
当前回复: {current_reply}
当前关系印象: {current_text}
当前关系分数: {current_score:.3f}
请根据用户的反应和对话内容分析用户性格特点、与Bot的互动模式然后更新关系印象和分数。
【重要】关系分数档次定义:
- 0.0-0.2:陌生人/初次认识 - 仅礼貌性交流
- 0.2-0.4:普通网友 - 有基本互动但不熟悉
- 0.4-0.6:熟悉网友 - 经常交流,有一定了解
- 0.6-0.8:朋友 - 可以分享心情,互相关心
- 0.8-1.0:好朋友/知己 - 深度信任,亲密无间
分析要点:
1. 用户的情绪态度(积极/消极/中性)
2. 用户对Bot的兴趣程度
3. 用户的交流风格(主动/被动/友好/正式等)
4. 互动的质量和深度
【严格要求】:
1. 加分必须符合现实关系发展逻辑 - 不能因为用户反应好就盲目加分
2. 关系提升需要足够的互动积累和时间验证单次互动加分通常不超过0.05-0.1
3. 必须考虑当前关系档次不能跳跃式提升比如从0.3直接到0.7
4. 关系印象描述要详细具体100-200字包括
- 用户性格特点和交流风格观察
- 印象深刻的互动记忆和对话片段
- 你们关系的具体状态描述和发展阶段
- 根据你的性格,你对用户的真实感受
性格视角深度分析:
1. 以你的性格特点,用户这次的反应给你什么感受?
2. 用户的情绪和行为符合你性格的喜好吗?具体哪些方面?
3. 从现实角度看,这次互动是否足以让关系提升到下一个档次?为什么?
4. 有什么特别值得记住的互动细节或对话内容?
5. 基于你们的互动历史,用户给你留下了哪些深刻印象?
请以JSON格式返回更新结果:
{{
"relationship_text": "更新的关系印象描述(50字以内)",
"relationship_score": 0.0~1.0的新分数,
"analysis_reasoning": "分析理由说明",
"relationship_text": "详细的关系印象描述(100-200字),包含用户性格观察、印象深刻记忆、关系状态描述",
"relationship_score": 0.0~1.0的新分数(必须严格符合现实逻辑),
"analysis_reasoning": "从你性格角度的深度分析,重点说明分数调整的现实合理性",
"interaction_quality": "high/medium/low"
}}
"""