Commit Graph

7767 Commits

Author SHA1 Message Date
tt-P607
5ceef537d0 Merge branch 'feature/kfc' of https://github.com/MoFox-Studio/MoFox-Core into feature/kfc 2025-12-01 14:45:46 +08:00
tt-P607
127d0e039e refactor(kfc): 移除 kfc_reply 回复分段逻辑及相关提示
移除 `kfc_reply` 动作的 `enable_splitter` 强制禁用逻辑,并简化了统一模式下的提示词,不再指导模型如何进行消息分段。

此次重构旨在将消息分段的决策权完全交还给大语言模型,使其能够根据对话上下文和自身判断,更自然地决定回复的格式(单条或多条消息)。这简化了处理逻辑,并有望提升模型回复的流畅度和拟人化程度。
2025-12-01 14:45:41 +08:00
Windpicker-owo
cef52ce963 Merge branch 'feature/kfc' of https://github.com/MoFox-Studio/MoFox-Core into feature/kfc 2025-12-01 10:27:57 +08:00
Windpicker-owo
0154c8fedd feat: 增加连续超时计数和用户最后回复时间,优化超时决策上下文信息 2025-12-01 09:20:03 +08:00
tt-P607
5d14bab259 feat: 为Kokoro Flow Chatter实现统一模式,支持模块化提示生成
新增统一模式:通过单次LLM调用同时处理推理与响应生成
采用模块化提示组件:系统提示与用户提示分离,提升灵活性和可维护性
日志更新:更清晰地记录生成响应与执行动作
版本更新:在机器人配置模板中递增版本号以反映变更
上下文处理优化:改进用户交互与记忆管理
2025-12-01 01:32:56 +08:00
Windpicker-owo
35c4937068 feat: 优化 KFC 主提示词模板,调整结构和字段说明,增强可读性 2025-11-30 21:35:17 +08:00
Windpicker-owo
a1feae99cc Merge branch 'feature/kfc' of https://github.com/MoFox-Studio/MoFox-Core into feature/kfc 2025-11-30 21:01:09 +08:00
Windpicker-owo
9d0488ef5a feat: 重构 KFC 回复动作,优化回复生成流程和上下文注入 2025-11-30 21:01:02 +08:00
tt-P607
967f0c063e Merge branch 'feature/kfc' of https://github.com/MoFox-Studio/MoFox-Core into feature/kfc 2025-11-30 20:45:31 +08:00
tt-P607
f4c31ddce7 feat(scripts): 增强数据库迁移工具,支持自动修复 PostgreSQL 问题
- 新增 fix_postgresql_boolean_columns(): 自动将 SQLite INTEGER 布尔列转换为 PostgreSQL BOOLEAN
- 新增 fix_postgresql_sequences(): 迁移后自动重置序列值,避免主键冲突
- 迁移完成后自动执行上述修复,无需手动干预
- 批量插入失败时自动降级为逐行插入,最大程度保留数据
- 新增 --only-tables 和 --no-create-tables 参数支持增量迁移
- 移除 reset_pg_sequences.py(功能已整合到主脚本)
2025-11-30 20:45:23 +08:00
Windpicker-owo
1288fd6cf7 feat: 添加主动思考配置选项,优化问候功能和触发概率设置 2025-11-30 20:41:30 +08:00
Windpicker-owo
6330faa793 feat: 移除戳一戳动作的显示消息,简化发送逻辑 2025-11-30 20:33:49 +08:00
Windpicker-owo
b148463f66 feat: 优化主动思考器和提示词构建逻辑,新增用户关系和等待思考提示词模板 2025-11-30 20:20:23 +08:00
Windpicker-owo
c45f0e9cea feat: 添加获取用户名称的方法,优化超时决策和主动思考中的用户名处理 2025-11-30 19:54:36 +08:00
Windpicker-owo
8e26a5f58c feat: 重构Kokoro Flow Chatter,新增规划器和回复生成器,优化提示词构建逻辑 2025-11-30 18:50:21 +08:00
Windpicker-owo
673da5cc8b feat: 更新提示词构建逻辑,增强说话风格提示信息 2025-11-30 17:48:05 +08:00
Windpicker-owo
7eb784f137 feat: 实施Kokoro Flow Chatter提示管理系统
- 在Kokoro Flow Chatter中添加提示模块以管理提示信息。
引入PromptBuilder,用于根据会话上下文构建提示。
- 为各种场景创建提示模板,包括用户消息、机器人规划和等待更新。
- 开发一个回复模块,使用LLM API生成回复。
- 建立会话管理机制,以处理用户交互并维护会话状态。
- 实现日志记录功能,以便更好地追踪操作和错误。
2025-11-30 17:17:14 +08:00
Windpicker-owo
d11c56524c Merge branch 'feature/kfc' of https://github.com/MoFox-Studio/MoFox-Core into feature/kfc 2025-11-30 17:08:48 +08:00
Windpicker-owo
109468a808 feat: 更新KFC V2配置和提示词构建逻辑,支持多种配置项和上下文数据整合 2025-11-30 16:50:15 +08:00
Windpicker-owo
252e8620e1 feat: 重命名Kokoro Flow Chatter V2为Kokoro Flow Chatter,更新相关模块和配置 2025-11-30 16:16:22 +08:00
Windpicker-owo
c6f34992d1 feat(KFC): 更新聊天处理器和回复模块,优化动作名称及上下文构建逻辑 2025-11-30 15:52:01 +08:00
Windpicker-owo
fc85338d0b feat: 更新消息管理和数据库操作日志,增强调试信息 2025-11-30 15:13:01 +08:00
Windpicker-owo
1750004ffa feat: 添加KFC V2专属动作模块及相关功能,优化回复机制 2025-11-30 15:04:00 +08:00
Windpicker-owo
c68bf4ad4f 重构Kokoro Flow Chatter:移除已弃用的响应后处理器和会话管理器
- 删除了`response_post_processor.py`和`session_manager.py`,因为它们已不再需要。
- 更新了`__init__.py`文件,移除了对`ActionExecutor`的引用。
- 删除了`action_executor.py`,并将动作执行直接集成到`chatter.py`和`proactive_thinker.py`中。
- 在`KokoroFlowChatterV2`中重构了动作执行逻辑,以直接使用`ChatterActionManager`。
- 增强了主动思考逻辑,以简化操作执行,而无需依赖已移除的`ActionExecutor`。
2025-11-30 13:40:59 +08:00
Windpicker-owo
0fe15dac52 feat: 使用提示管理和会话处理来实现Kokoro Flow Chatter V2
- 在Kokoro Flow Chatter V2中添加提示模块以管理提示信息。
- 创建一个构建器,用于根据用户交互和会话上下文构建提示。
- 为不同场景(新消息、及时回复等)注册各种提示模板。
- 开发一个回复模块,使用LLM API生成回复。
- 实现会话管理以处理用户交互并维护状态。
- 引入心理日志条目以追踪用户与机器人的交互情况。
- 确保各模块中都有适当的日志记录和错误处理。
2025-11-30 13:05:26 +08:00
tt-P607
f489020a12 feat(core): 实现死锁检测器并改进 LLM 消息拆分 本次提交引入了两个主要增强功能:在 StreamLoopManager 中增加死锁检测机制以提高系统稳定性,以及对 Kokoro Flow Chatter (KFC) 的消息拆分策略进行调整,以生成更自然、更贴近人类的对话。 **StreamLoopManager 中的死锁检测:** - 新的死锁检测器现在会定期运行,监控所有活动消息流。 - 它会跟踪每个消息流的最后活动时间,并标记任何超过两分钟未活动的流为潜在死锁。 - 这种主动监控有助于识别和诊断可能卡住的消息流,防止系统整体冻结。 - 为了避免在长时间等待(例如等待用户回复或长时间 LLM 生成)期间出现误报,消息流循环现在即使在睡眠或处理阶段也会定期更新其活动时间戳。 **KFC 中的消息拆分优化:** - 自动,响应后处理器中的基于规则的消息拆分器已被禁用。- 消息拆分的责任现在完全交由大型语言模型(LLM)处理。- 系统提示已更新,明确指示LLM使用多个 reply 操作,将长响应拆分为更短、更自然的段落,模仿真实的人类消息模式。- 此更改允许进行更加上下文感知和情感适宜的消息分段,从而提供更具吸引力的用户体验。**VectorStore 的异步安全性:**- 所有对同步 ChromaDB 库的调用现在都被封装在 asyncio.to_thread() 中。这可以防止阻塞主 asyncio 事件循环,而这正是新检测器设计用来捕获的潜在死锁来源。 2025-11-30 11:59:27 +08:00
tt-P607
4245228cb7 feat(KFC): 实现 V7 交互模型,具备中断和情感安全功能。本次重大更新彻底改造了 Kokoro Flow Chatter (KFC) 的交互模型,引入了更加稳健、自然且安全的用户体验。主要功能包括处理快速用户输入的中断机制、改善的情感稳定性以防止 AI 行为异常,以及系统提示的全面重写,以提供更自然、人性化的响应。V7 主要增强功能:
- **中断机制**:新的消息现在可以中断正在进行的 LLM 处理。被中断的上下文会被保存并与新消息合并,确保不会丢失用户输入,并提供更即时的响应体验,类似于现代即时通讯应用。
- **情感安全与稳定性**:
  - 现在 AI 不会随意设置负面情绪状态。
  - 情绪变化为渐进式,强度变化有限制。
  - 新的“情感健康检查”会在加载会话数据时进行清理,以防恢复不稳定状态。
  - 对连续跟进消息实施了限制,以避免向未响应的用户发送垃圾信息。
- **提示重构**:
  - 系统提示已被完全重写,使其更加简洁、自然和对话化,灵感来源于 S4U 模型。
  - 提示现在支持一次处理多条未读消息,这是中断机制的核心部分。
  - 对 LLM 的指令更清晰,更注重生成类人互动,而不仅仅是完成任务。
2025-11-29 19:49:32 +08:00
tt-P607
b2a0196398 feat(KFC): 为私人聊天实现主动思考
此提交为 Kokoro Flow Chatter(KFC)引入了主动思考机制,使其在私人聊天中在一段时间沉默后主动发起对话。此功能旨在通过模拟一个会主动思考并联系用户的角色,创造更自然和有趣的互动。

此功能的关键组成部分包括:
- **主动思考回调**:`chatter.py` 中新增的回调处理整个主动思考流程,从上下文构建、提示生成到调用 LLM 和执行操作。
- **调度器集成**:`kfc_scheduler_adapter.py` 现在向 `UnifiedScheduler` 注册了一个定期任务,用于检查符合主动思考条件的会话。
- **触发条件**:主动思考的触发基于多个因素的组合,包括沉默时间、关系评分、概率检查以及“安静时间”,以避免打扰用户,系统现在获取全局关系分数以进行更准确的评估。- **专用提示**:`prompt_generator.py` 中的新提示专为此场景设计。它鼓励大语言模型决定是否发起联系,并将“不要打扰”作为一个有效且谨慎的选择。- **配置**:在 `bot_config_template.toml` 中添加了新设置以控制主动思维功能,包括静默阈值、最低亲和力和安静时间。- **AFC 集成**:通用的 `affinity_flow_chatter` 现在会检查 KFC 的主动思维是否在私人聊天中启用,并将控制权交给该功能,从而防止重复发送主动消息。
2025-11-29 17:20:00 +08:00
tt-P607
49db3bd138 refactor(KFC): 从独立调度器迁移到统一调度器适配器
此提交重构了 Kokoro Flow Chatter (KFC) 插件,以集成新的 `UnifiedScheduler`。独立的 `scheduler.py` 已被移除,并由 `kfc_scheduler_adapter.py` 替代,它作为中央调度系统的适配器。

主要更改包括:
- 移除专用的 `BackgroundScheduler`,改用全局的 `UnifiedScheduler`。
- 实现 `KFCSchedulerAdapter` 来处理检查等待会话的逻辑。
- 修复超时处理逻辑中的一个关键错误:回调函数在任意 chatter 实例上执行时使用了错误的 `stream_id`。现在它正确使用 `session.stream_id`,确保消息发送给正确的用户。
- 通过使用 `asyncio.create_task` 并行处理会话来改进会话检查过程,防止一个长时间运行的会话阻塞其他会话。

此外,此提交还包括提示和操作描述的小幅改进为了更清晰和更稳健的改进。
2025-11-29 16:32:10 +08:00
tt-P607
c4583e61d1 refactor(KFC): 模块化提示生成并简化情绪状态处理
此提交对 Kokoro Flow Chatter (KFC) 插件进行了重大重构,以提高模块化、可维护性和可靠性。

主要更改包括:
- **提示生成**:原本的单一 `generate_system_prompt` 方法现在被委托给新的 `prompt_modules.py`。这实现了关注点分离,使管理提示的不同部分(如个性、上下文和动作定义)更加容易。
- **情绪状态处理**:已移除 `_update_emotional_state_from_thought` 中复杂且不可靠的基于关键词的情感分析。系统现在依赖 LLM 的显式 `update_internal_state` 动作,以更直接和准确地更新情绪状态。该方法已简化,仅处理轻微的参与度调整。
- **JSON 解析**:用统一的 `extract_and_parse_json` 工具替换了自定义 JSON 提取逻辑。这提供了更强大的解析能力,处理更大的Markdown 代码块和自动修复格式错误的 JSON。

- **调度器抽象**:引入了 `KFCSchedulerAdapter`,将聊天组件与全局调度器实现解耦,提高了可测试性和清晰度。
- **优雅的对话结束**:系统现在可以正确处理 `max_wait_seconds: 0`,立即结束对话主题并将会话设置为空闲状态,避免不必要的等待时间。
2025-11-29 14:35:01 +08:00
tt-P607
703b5724f9 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-29 02:06:33 +08:00
tt-P607
0746a73bce 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不是独立人格,而是:
- 复用全局人设、情感框架和回复模型
- 专注于"体验→决策→行动"的私聊交互模式
- 从"消息响应者"转变为"对话体验者"
- 深度情感连接和长期关系维护
2025-11-29 02:05:56 +08:00
ikun-11451
8bdbadd7d5 更新了仓库地址喵 2025-11-29 00:05:43 +08:00
minecraft1024a
c2bc81be8b feat(maizone): 为说说生成增加跨上下文聊天记录参考
现在,maizone插件可以利用指定用户的近期聊天记录作为上下文,来生成更加贴合近期对话内容和情绪的说说。

- 新增 `cross_context.user_id` 配置项,用于指定获取上下文的目标用户。
- 在生成说说前,通过 `cross_context_api` 获取并整合聊天记录到LLM的提示词中。
- 这使得生成的说说内容能够反映最近的讨论,更具个性化和时效性。
2025-11-28 21:29:01 +08:00
minecraft1024a
722c8bc5a9 feat(context): 新增面向单一用户的跨上下文构建API
新增 `build_cross_context_for_user` 函数,提供一个简化的接口来构建指定用户的跨聊天上下文。

该函数会优先获取用户与机器人的私聊记录,然后聚合用户在其他群聊中的近期发言。通过整合这些信息,可以为需要了解用户近期跨聊天活动的插件提供一个便捷的数据来源。
2025-11-28 21:15:28 +08:00
minecraft1024a
a8f899a22f refactor(context): 简化跨上下文功能,移除通用共享组模式
移除了基于白名单/黑名单的通用上下文共享组(ContextGroup)功能。此模式实现复杂且与S4U模式功能重叠,移除后可大幅简化配置项和内部逻辑。

主要变更:
- 从配置中删除了 `ContextGroup` 模型和 `cross_context.groups` 列表。
- 删除了 `build_cross_context_normal` 和 `get_context_group` 函数。
- 保留并增强了S4U(Search for User)模式,为其增加了更详细的日志和健壮性检查。
- `get_intercom_group_context` 函数被调整为专门服务于 `maizone_context_group`。

BREAKING CHANGE: 移除了 `cross_context.groups` 配置项及相关的通用上下文共享组功能。请迁移至S4U模式以实现跨上下文需求。
2025-11-28 20:39:16 +08:00
yishan
78a91c3c42 Merge pull request #11 from mcn1630/dev
feat:修改空间生图接口为正确调用,使用LLM基于说说内容生成图片提示词
2025-11-28 19:22:41 +08:00
mcn1630
c9dbf8e299 feat:将tts组件恢复,独立分支 2025-11-28 19:19:36 +08:00
mcn1630
e3fba29764 feat:修改空间生图接口为正确调用,使用LLM基于说说内容生成图片提示词 2025-11-28 17:51:01 +08:00
mcn1630
4b0af154a6 Merge branch 'dev' of https://github.com/mcn1630/MoFox-Core into patch 2025-11-28 17:26:12 +08:00
喵吃鸟
25de6d5664 Merge branch 'MoFox-Studio:dev' into dev 2025-11-28 17:24:36 +08:00
mcn1630
2a4f73859d feat:为tts增加Qwen-Omni接口 2025-11-28 17:24:05 +08:00
tt-P607
d2d0cfc4db feat(image): 为 VLM 处理添加自动 GIF 转 JPG 转换功能
此提交引入了在将 GIF 图像发送到视觉语言模型 (VLM) 进行描述之前,自动检测并转换为 JPG 格式的功能。这确保了与不支持动画格式的 VLM 的兼容性,防止处理失败。

此外,还添加了若干空值检查断言,以提高代码的健壮性,并防止配置对象未正确初始化时可能出现的运行时错误。还实现了对 `global_config.emoji` 的防御性检查。
2025-11-28 16:00:55 +08:00
tt-P607
da4f40ebb1 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-28 15:24:16 +08:00
tt-P607
103a6edaf3 feat(emoji): 增强消息上下文下的表情选择并修复存储用户信息的问题
该提交对表情操作及相关消息发送 API 进行了重大改进。

现在,表情选择逻辑更加具备上下文感知能力。LLM 提示现在包括机器人的待发送回复内容,使其能够根据对话历史和自身回复选择更合适的表情。用于上下文的近期聊天记录也有所增加。

此外,修复了插件发送 API (`send_api`) 中的一个错误。之前,当机器人发送消息时,消息在数据库中存储的是接收者的用户信息,而非机器人的信息。本次提交通过显式传递并使用机器人的用户信息进行存储,确保消息历史准确反映发送者。

其他更改包括:
- 重构表情操作的激活逻辑以提高清晰度。
- 改进 LLM 选择的表情描述匹配算法。- 为配置访问添加必要的类型安全检查。
2025-11-28 15:24:08 +08:00
Windpicker-owo
bfc45cb4f0 fix(message_handler): 修改 ON_NOTICE_RECEIVED 事件的权限组为 SYSTEM 2025-11-28 14:12:35 +08:00
Windpicker-owo
6c808d1052 feat(event_manager): 添加 ON_NOTICE_RECEIVED 事件到默认事件列表 2025-11-28 13:54:57 +08:00
Windpicker-owo
302d48ff85 fix(emoji_manager): 优化表情包注册时描述生成的异步处理逻辑 2025-11-28 13:43:28 +08:00
Windpicker-owo
454b143db2 refactor(message_handler): 移除消息处理器中的冗余消息类型定义 2025-11-28 13:40:35 +08:00
Windpicker-owo
430d45e645 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-28 13:26:01 +08:00