feat(KFC): 🎉 Kokoro Flow Chatter 心流聊天器 - 私聊专属处理系统从零构建完成

这是一个全新的私聊聊天处理器,专为深度情感交互设计,从架构设计到代码实现全部从零完成。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🏗️ 核心架构 (7个核心模块)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📁 src/plugins/built_in/kokoro_flow_chatter/
├── chatter.py           # 主处理器 - 协调所有组件的核心类
├── context_builder.py   # S4U上下文构建器 - 超融合上下文系统
├── prompt_generator.py  # V6三明治提示词生成器
├── action_executor.py   # 动作执行器 - 解析+执行LLM动作
├── response_post_processor.py  # 回复后处理器 - 分割+错别字
├── models.py            # 数据模型 - Session/情感状态/心理日志
├── session_manager.py   # 会话管理器 - 用户状态持久化
├── scheduler.py         # 调度器 - 主动思考/超时处理
├── config.py            # 配置类
└── plugin.py            # 插件注册入口

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 核心特性
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【V1-V3 基础框架】
- 心理状态驱动的交互模型 (KokoroSession)
- 连续时间观念和等待体验 (IDLE→RESPONDING→WAITING状态机)
- 心理日志系统 (MentalLogEntry)
- 动态情感状态 (EmotionalState)

【V4 动作系统集成】
- 动态动作发现 (复用ChatterActionManager)
- 支持所有AFC动作 (reply/emoji/poke_user/set_emoji_like等)
- LLM响应JSON解析和验证

【V5 超融合上下文】
- S4U用户中心上下文检索
- 三层记忆系统集成 (感知/短期/长期)
- 时间感知块 (时间段+日程+情境)
- 人物关系信息注入
- 跨聊天上下文共享

【V6 最终优化】
- 三明治提示词结构 (系统层→上下文层→指令层)
- ActionModifier动作筛选器集成 (三阶段预筛选)
  - 阶段0: 聊天类型过滤
  - 阶段2: 关联类型匹配
  - 阶段3: go_activate()激活判定
- 回复分割器复用AFC核心逻辑 (split_into_sentences_w_remove_punctuation)
- 修复model配置 (使用replyer而非utils)
- 修复context_builder异步问题

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔧 技术细节
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

提示词结构 (V6三明治):
┌─────────────────────────────────────┐
│ 🍞 系统层 (人设/身份/表达风格)        │
├─────────────────────────────────────┤
│ 🥬 上下文层                          │
│  ├─ 时间感知块                       │
│  ├─ 三层记忆 (感知+短期+长期)         │
│  ├─ 人物关系                         │
│  ├─ 对话历史                         │
│  └─ 用户最新消息                     │
├─────────────────────────────────────┤
│ 🍞 指令层 (JSON输出格式/可用动作)     │
└─────────────────────────────────────┘

动作筛选效果: 13个动作 → 约5-7个 (节省token+提升决策质量)
回复分割: 长消息自动按标点分割成多条发送

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📝 配置项 (bot_config.toml)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[kokoro_flow_chatter]
enable = true
max_wait_seconds_default = 300
enable_continuous_thinking = true

[kokoro_flow_chatter.proactive_thinking]
enabled = true
silence_threshold_seconds = 7200
min_affinity_for_proactive = 0.3
min_interval_between_proactive = 1800
enable_morning_greeting = true
enable_night_greeting = true

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎯 设计理念
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

KFC不是独立人格,而是:
- 复用全局人设、情感框架和回复模型
- 专注于"体验→决策→行动"的私聊交互模式
- 从"消息响应者"转变为"对话体验者"
- 深度情感连接和长期关系维护
This commit is contained in:
tt-P607
2025-11-29 02:05:56 +08:00
parent d2d0cfc4db
commit 0746a73bce
16 changed files with 5415 additions and 25 deletions

View File

@@ -1,5 +1,5 @@
[inner]
version = "7.9.0"
version = "7.9.2"
#----以下是给开发人员阅读的如果你只是部署了MoFox-Bot不需要阅读----
#如果你想要修改配置文件请递增version的值
@@ -590,53 +590,44 @@ strong_mention_interest_score = 2.0 # 强提及的兴趣分(被@、被回复
weak_mention_interest_score = 0.8 # 弱提及的兴趣分文本匹配bot名字或别名
base_relationship_score = 0.3 # 基础人物关系分
[proactive_thinking] # 主动思考(主动发起对话)功能配置
[proactive_thinking] # 主动思考(主动发起对话)功能配置 - 用于群聊和私聊当KFC关闭时
# 详细配置说明请参考docs/proactive_thinking_config_guide.md
# --- 总开关 ---
enable = true # 是否启用主动发起对话功能
# --- 间隔配置 ---
base_interval = 720 # 基础触发间隔(秒),默认12分钟
min_interval = 360 # 最小触发间隔(秒),默认6分钟
max_interval = 2880 # 最大触发间隔(秒),默认48分钟
base_interval = 1800 # 基础触发间隔(秒),默认30分钟
min_interval = 600 # 最小触发间隔(秒),默认10分钟。兴趣分数高时会接近此值
max_interval = 7200 # 最大触发间隔(秒),默认2小时。兴趣分数低时会接近此值
# 动态调整配置
use_interest_score = true # 是否根据兴趣分数动态调整间隔
interest_score_factor = 2.0 # 兴趣分数影响因子1.0-3.0
# 公式: interval = base_interval * (interest_score_factor - interest_score)
# 例如: interest_score=0.8, factor=2.0 -> interval = 1800 * 1.2 = 2160秒(36分钟)
# --- 动态调整配置 ---
use_interest_score = true # 是否根据兴趣分数动态调整间隔。关闭则使用固定base_interval
interest_score_factor = 2.0 # 兴趣分数影响因子。公式: interval = base * (factor - score)
# --- 黑白名单配置 ---
whitelist_mode = false # 是否启用白名单模式启用后只对白名单中的聊天流生效
blacklist_mode = false # 是否启用黑名单模式启用后排除黑名单中的聊天流
whitelist_mode = false # 是否启用白名单模式启用后只对白名单中的聊天流生效
blacklist_mode = false # 是否启用黑名单模式启用后排除黑名单中的聊天流
# 白名单配置(示例格式)
whitelist_private = [] # 私聊白名单,格式: ["qq:12345:private"]
whitelist_group = [] # 群聊白名单,格式: ["qq:123456:group"]
# 黑名单配置(示例格式)
blacklist_private = [] # 私聊黑名单,格式: ["qq:12345:private"]
blacklist_group = [] # 群聊黑名单,格式: ["qq:999999:group"]
# --- 作用范围 ---
enable_in_private = true # 是否允许在私聊中主动发起对话
enable_in_group = true # 是否允许在群聊中主动发起对话
# --- 兴趣分数阈值 ---
min_interest_score = 0.0 # 最低兴趣分数阈值,低于此值不会主动思考
max_interest_score = 1.0 # 最高兴趣分数阈值,高于此值不会主动思考
# --- 时间策略配置 ---
enable_time_strategy = true # 是否启用时间策略(根据时段调整频率)
enable_time_strategy = false # 是否启用时间策略(根据时段调整频率)
quiet_hours_start = "00:00" # 安静时段开始时间,格式: "HH:MM"
quiet_hours_end = "07:00" # 安静时段结束时间,格式: "HH:MM"
active_hours_multiplier = 0.7 # 活跃时段间隔倍数,<1表示更频繁>1表示更稀疏
# --- 冷却与限制 ---
reply_reset_enabled = true # bot回复后是否重置定时器(避免回复后立即又主动发言)
topic_throw_cooldown = 3600 # 主动发言后的冷却时间(秒)期间暂停主动思考等待用户回复。0表示不暂停继续主动思考
max_daily_proactive = 3 # 每个聊天流每天最多主动发言次数0表示不限制
reply_reset_enabled = true # bot回复后是否重置定时器
topic_throw_cooldown = 3600 # 抛出话题后的冷却时间(秒)
max_daily_proactive = 0 # 每个聊天流每天最多主动发言次数0表示不限制
# --- 决策权重配置 ---
do_nothing_weight = 0.4 # do_nothing动作的基础权重
@@ -644,5 +635,38 @@ simple_bubble_weight = 0.3 # simple_bubble动作的基础权重
throw_topic_weight = 0.3 # throw_topic动作的基础权重
# --- 调试与监控 ---
enable_statistics = false # 是否启用统计功能(记录触发次数、决策分布等)
log_decisions = false # 是否记录每次决策的详细日志(用于调试)
enable_statistics = true # 是否启用统计功能
log_decisions = false # 是否记录每次决策的详细日志
# ==================== Kokoro Flow Chatter (心流聊天器) 配置 ====================
# KFC是专为私聊设计的深度情感交互处理器。
# 注意这是一个可选的聊天模式关闭后私聊将由默认的AFC处理使用上面的proactive_thinking配置
# 核心理念KFC不是独立人格它复用全局的人设、情感框架和回复模型。
[kokoro_flow_chatter]
# --- 总开关 ---
# 开启后KFC将接管所有私聊消息关闭后私聊消息将由AFC处理。
enable = true
# --- 核心行为配置 ---
max_wait_seconds_default = 300 # 默认的最大等待秒数AI发送消息后愿意等待用户回复的时间
enable_continuous_thinking = true # 是否在等待期间启用心理活动更新
# --- 私聊专属主动思考配置 ---
# 注意这是KFC专属的主动思考配置只有当KFC启用时才生效。
# 它旨在模拟更真实、情感驱动的互动,而非简单的定时任务。
[kokoro_flow_chatter.proactive_thinking]
enabled = true # 是否启用KFC的私聊主动思考。
# 1. 沉默触发器:当感到长久的沉默时,她可能会想说些什么。
silence_threshold_seconds = 7200 # 用户沉默超过此时长可能触发主动思考默认2小时
# 2. 关系门槛:她不会对不熟悉的人过于主动。
min_affinity_for_proactive = 0.3 # 需要达到最低好感度,她才会开始主动关心。
# 3. 频率呼吸:为了避免打扰,她的关心总是有间隔的。
min_interval_between_proactive = 1800 # 两次主动思考之间的最小间隔默认30分钟
# 4. 自然问候:在特定的时间,她会像朋友一样送上问候。
enable_morning_greeting = true # 是否启用早安问候 (例如: 8:00 - 9:00)。
enable_night_greeting = true # 是否启用晚安问候 (例如: 22:00 - 23:00)。