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 |
|
Windpicker-owo
|
2bd7e93af7
|
fix: 更新数据库会话管理,确保事务在正常退出时自动提交,并在异常时安全回滚
|
2025-11-28 13:24:41 +08:00 |
|
Windpicker-owo
|
3538716515
|
fix: 更新版本号至 0.13.0,增强数据库迁移功能,注册通知事件处理
|
2025-11-27 22:37:50 +08:00 |
|
Windpicker-owo
|
43483b934e
|
feat: 更新机器人配置并添加数据库迁移脚本
- 将bot_config_template.toml中的版本升级至7.9.0
- 增强数据库配置选项以支持PostgreSQL
- 引入一个新脚本,用于在SQLite、MySQL和PostgreSQL之间迁移数据
- 实现一个方言适配器,用于处理特定于数据库的行为和配置
|
2025-11-27 18:45:01 +08:00 |
|
Windpicker-owo
|
369639a8f1
|
feat: 添加守护线程版本的队列监听器以避免阻塞退出,优化配置初始化逻辑,改进消息构建中的用户信息处理
|
2025-11-27 14:06:17 +08:00 |
|
copilot-swe-agent[bot]
|
1ca3aa6a07
|
fix: 修复代码质量和隐形问题 - 移除未使用导入、修复asyncio任务引用、修复类型注解
Co-authored-by: Windpicker-owo <221029311+Windpicker-owo@users.noreply.github.com>
|
2025-11-26 14:43:44 +00:00 |
|
Windpicker-owo
|
0908fb50a0
|
优化日志
|
2025-11-26 21:16:16 +08:00 |
|
Windpicker-owo
|
d28ba27f26
|
重构:统一平台字段命名,更新相关数据模型和消息处理逻辑
|
2025-11-26 17:34:25 +08:00 |
|
Windpicker-owo
|
8a6b141017
|
重构代码以使用 mofox_wire 替代 mofox_bus,更新相关文档和示例
|
2025-11-25 22:45:57 +08:00 |
|
Windpicker-owo
|
6b3b2a8245
|
重构并增强Napcat适配器的功能
- 更新了`BaseAdapter`以简化子进程处理。
- 对`AdapterManager`进行了重构,以便根据适配器的`run_in_subprocess`属性来管理适配器。
- 增强了`NapcatAdapter`,以利用新的`CoreSinkManager`实现更优的进程管理。
- 在`utils.py`中实现了针对群组和成员信息的缓存机制。
- 改进了`message_handler.py`中的消息处理,以支持各种消息类型和格式。
- 已将插件配置版本更新至7.8.3。
|
2025-11-25 19:55:36 +08:00 |
|
Windpicker-owo
|
1ebdc37b22
|
重构ChatStream和StreamContext:移除context_manager引用
- 在ChatStream及相关类中,将所有context_manager的实例替换为直接上下文访问。
- 更新方法,利用新的上下文结构来管理聊天状态和消息。
- 增强的StreamContext,增加了用于消息处理、统计和历史管理的方法。
- 在重构过程中改进了错误处理和日志记录。
|
2025-11-25 12:01:26 +08:00 |
|
Windpicker-owo
|
d30b0544b5
|
重构消息处理和信封转换
- 从代码库中移除了EnvelopeConverter类及其相关方法,因为它们已不再需要。
- 更新了主系统,使其能够直接处理MessageEnvelope对象,而无需将其转换为旧格式。
- 增强了MessageRuntime类,以支持多种消息类型并防止重复注册处理程序。
引入了一个新的MessageHandler类来管理消息处理,包括预处理和数据库存储。
- 改进了整个消息处理工作流程中的错误处理和日志记录。
- 更新了类型提示和数据模型,以确保消息结构的一致性和清晰度。
|
2025-11-24 22:36:33 +08:00 |
|
Windpicker-owo
|
36fce6ca98
|
feat: 添加带有消息处理和路由功能的NEW_napcat_adapter插件
- 为NEW_napcat_adapter插件实现了核心模块,包括消息处理、事件处理和路由。
- 创建了MessageHandler、MetaEventHandler和NoticeHandler来处理收到的消息和事件。
- 开发了SendHandler,用于向Napcat发送回消息。
引入了StreamRouter来管理多个聊天流,确保消息的顺序和高效处理。
- 增加了对各种消息类型和格式的支持,包括文本、图像和通知。
- 建立了一个用于监控和调试的日志系统。
|
2025-11-24 13:24:55 +08:00 |
|
Windpicker-owo
|
7c579e6ee4
|
重构适配器系统并增强插件架构
- 在mofox_bus中,将BaseAdapter重命名为AdapterBase以提高清晰度。
- 引入了AdapterInfo类来封装适配器组件信息。
- 增强的PluginManager,支持核心消息接收器配置和适配器注册。
- 实现了EnvelopeConverter,用于将MessageEnvelope转换为内部消息格式。
- 创建了BaseAdapter类来管理插件的生命周期、配置和健康检查。
- 开发了AdapterManager,用于管理适配器实例和子流程。
- 添加了一个示例适配器插件,以展示与新适配器系统的集成。
- 删除了过时的Phi插件文档。
|
2025-11-22 12:49:37 +08:00 |
|
Windpicker-owo
|
fee7611e99
|
feat: 实现消息编解码器和消息处理模型
- 添加编解码器,用于序列化和反序列化MessageEnvelope对象。
- 创建消息模型,包括分段(Seg)、群组信息(GroupInfo)、用户信息(UserInfo)、格式信息(FormatInfo)、模板信息(TemplateInfo)、基础消息信息(BaseMessageInfo)和消息基础(MessageBase)。
引入路由器以管理消息路由和连接。
- 实现运行时机制,通过钩子和路由来处理消息处理。
- 使用HTTP和WebSocket客户端和服务器开发传输层,以进行消息传输。
- 为消息内容和信封定义类型,以标准化消息结构。
|
2025-11-21 18:40:51 +08:00 |
|
Windpicker-owo
|
6ecf5a36f2
|
增强聊天管理器和数据库API,添加自动注册和异步清理功能,优化模型转换为字典的逻辑
|
2025-11-20 16:48:18 +08:00 |
|
Windpicker-owo
|
03c80a08fb
|
优化缓存条目大小估算,添加向量存储标记,清理待处理消息逻辑
|
2025-11-20 12:17:43 +08:00 |
|
Windpicker-owo
|
14133410e6
|
feat: 批量生成文本embedding,优化兴趣匹配计算逻辑,支持消息兴趣值的批量更新
|
2025-11-19 16:30:44 +08:00 |
|
Windpicker-owo
|
75b806cd41
|
feat: 添加历史消息长度限制,优化上下文管理和消息处理逻辑
|
2025-11-19 13:59:40 +08:00 |
|
minecraft1024a
|
164963b6f7
|
refactor(plugin_system): 移除路由级认证,引入端点级安全依赖
之前的插件路由认证机制通过在 `RouterInfo` 中设置 `auth_required` 标志,对整个路由组件统一应用API密钥验证。这种方式缺乏灵活性,无法对单个端点进行细粒度的安全控制。
本次重构移除了 `auth_required` 机制,转而引入一个可重用的 FastAPI 依赖项 `VerifiedDep`。插件开发者现在可以按需将其应用到需要保护的特定端点上,从而实现更灵活、更精确的访问控制。
`hello_world_plugin` 已更新,以演示新的认证方式。
BREAKING CHANGE: 移除了 `RouterInfo` 中的 `auth_required` 属性。所有依赖此属性进行认证的插件路由都需要更新,改为在需要保护的端点上使用 `VerifiedDep` 依赖项。
|
2025-11-16 13:31:59 +08:00 |
|
minecraft1024a
|
42f0e0e023
|
feat(plugin_system): 引入插件HTTP端点系统
引入了全新的 `BaseRouterComponent` 组件类型,允许插件开发者通过继承并实现 `register_endpoints` 方法来创建 FastAPI 路由。
- 插件系统现在可以自动发现并注册这些路由组件,并将它们挂载到主 FastAPI 应用的 `/plugins/<plugin_name>` 前缀下。
- 新增了全局配置 `[plugin_http_system]`,提供了总开关、API 速率限制和 API 密钥认证 (`X-API-Key`) 等功能,以确保端点的安全性和稳定性。
- 更新了 `hello_world_plugin` 插件,增加了一个简单的 `/greet` 端点作为实现示例。
|
2025-11-16 12:41:35 +08:00 |
|
Windpicker-owo
|
4449c9550b
|
增强 ModuleColoredConsoleRenderer,支持 Rich 标记语言解析,改进消息内容着色逻辑
|
2025-11-13 23:14:38 +08:00 |
|
拾风
|
0cb51674b0
|
Potential fix for code scanning alert no. 26: Use of a broken or weak cryptographic hashing algorithm on sensitive data
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
|
2025-11-13 21:04:02 +08:00 |
|
拾风
|
589256aff5
|
Potential fix for code scanning alert no. 15: Use of a broken or weak cryptographic hashing algorithm on sensitive data
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
|
2025-11-13 20:54:42 +08:00 |
|
Windpicker-owo
|
c5178b5e58
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
|
2025-11-13 15:10:15 +08:00 |
|
Windpicker-owo
|
bc7228cb3c
|
feat(planner): 使用标准化的JSON格式重构动作规划系统
- 将聊天流和消息管理器中的默认聊天模式从“normal”更改为“focus”
- 从ActionPlannerInfo数据模型中移除已弃用的should_quote_reply字段
- 通过移除回复可用性检查和基于兴趣的过滤,简化计划过滤逻辑
- 采用新的标准化JSON操作格式,并强制使用操作列表结构
- 更新规划器提示,以强制执行一致的动作输出格式
- 移除遗留操作参数过滤,简化消息目标解析
- 清理计划过滤器中未使用的导入和已弃用的代码路径
|
2025-11-13 15:10:08 +08:00 |
|
minecraft1024a
|
e1622ca6be
|
refactor(config): 移除废弃的数据库配置模块
旧的数据库配置模块 `src/common/database/config` 已被完全移除。该模块已被标记为废弃,其功能已统一整合到 `global_config` 中。
本次重构旨在:
- 简化代码库,消除冗余和过时的文件。
- 统一配置管理,提高可维护性。
此外,对 `AttentionOptimizer` 中的类变量添加了 `ClassVar` 类型注解,以增强代码的清晰度和类型安全性。
|
2025-11-13 12:51:42 +08:00 |
|
Windpicker-owo
|
09db6c0c88
|
refactor: 移除对机器人自身用户ID的特殊处理,统一使用QQ号进行比较
|
2025-11-12 17:33:51 +08:00 |
|
minecraft1024a
|
0e1e9935b2
|
style: 统一代码风格并采用现代化类型注解
对整个代码库进行了一次全面的代码风格清理和现代化改造,主要包括:
- 移除了所有文件中多余的行尾空格。
- 将类型提示更新为 PEP 585 和 PEP 604 引入的现代语法(例如,使用 `list` 代替 `List`,使用 `|` 代替 `Optional`)。
- 清理了多个模块中未被使用的导入语句。
- 移除了不含插值变量的冗余 f-string。
- 调整了部分 `__init__.py` 文件中的 `__all__` 导出顺序,以保持一致性。
这些改动旨在提升代码的可读性和可维护性,使其与现代 Python 最佳实践保持一致,但未修改任何核心逻辑。
|
2025-11-12 12:49:40 +08:00 |
|
Windpicker-owo
|
1b93cc3d63
|
feat(context_manager): 移除消息添加和标记已读的日志记录,简化代码
|
2025-11-10 21:55:16 +08:00 |
|
Windpicker-owo
|
69ee2d30de
|
feat(context_manager): 添加消息处理日志,优化消息标记为已读的逻辑
|
2025-11-10 19:18:30 +08:00 |
|
Windpicker-owo
|
d007b98f5c
|
fix(cache-manager): 修复类型注解,使用Optional以提高代码可读性和一致性
|
2025-11-08 22:34:25 +08:00 |
|
Windpicker-owo
|
04c6c204e8
|
fix(cache-manager): 修复并行获取缓存统计信息和内存使用,避免死锁和重复计数
fix(scheduler): 改进调度任务的多阶段取消机制,彻底避免死锁风险
|
2025-11-08 22:17:12 +08:00 |
|
Windpicker-owo
|
98bfa05b96
|
feat(scheduler): 新增死锁检测器,改进任务取消机制,优化异步通知
|
2025-11-08 18:20:00 +08:00 |
|
Windpicker-owo
|
96dbb8fc55
|
fix(config): 增加缓存生存时间和最大内存占用限制
|
2025-11-08 11:03:01 +08:00 |
|
Windpicker-owo
|
d4824e35ad
|
feat(message-manager): 用流循环管理器替换调度器/分派器
- 移除 scheduler_dispatcher 模块,并用 distribution_manager 替换
- 实现StreamLoopManager,以改进消息分发和中断处理
- 将消息缓存系统直接添加到StreamContext中,并配置缓存设置
- 使用具有缓存感知的消息处理来增强SingleStreamContextManager
- 更新`message_manager`,使用`stream_loop_manager`替代`scheduler_dispatcher`
- 在StreamContext数据模型中添加缓存统计和刷新方法
- 通过适当的任务取消和重新处理来改进中断处理
- 为ChatManager添加get_all_stream方法,以实现更优的流管理
- 更新亲和聊天规划器,以更可靠地处理专注/正常模式切换
|
2025-11-08 10:46:44 +08:00 |
|
minecraft1024a
|
b0ee26652e
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev(我顺带再提一嘴把API放两个文件的简直是天才)
|
2025-11-07 21:12:51 +08:00 |
|
minecraft1024a
|
077628930b
|
refactor(server): 将记忆可视化工具和统计功能整合进主服务
将原先独立的记忆可视化工具(Memory Visualizer)和LLM使用统计逻辑深度整合到项目主服务中。
主要变更包括:
- **移除独立的可视化工具**: 删除了 `tools/memory_visualizer` 目录下的所有独立服务器、脚本和文档,清理了项目结构。
- **API路由整合**: 在主 FastAPI 应用中注册了记忆可视化工具的路由,使其成为核心功能的一部分,可通过 `/visualizer` 访问。
- **统计逻辑重构**: 将LLM使用统计的计算逻辑从API路由层 `statistic_router.py` 中剥离,迁移到 `src/chat/utils/statistic.py` 中,实现了逻辑的解耦和复用。API路由现在直接调用重构后的统计任务。
- **依赖清理与添加**: 添加了 `jinja2` 作为模板渲染的依赖,并清除了与独立可视化工具相关的旧依赖。
此次重构简化了项目的维护和部署,将原本分散的功能统一管理,提升了代码的内聚性和可维护性。
|
2025-11-07 21:12:11 +08:00 |
|
明天好像没什么
|
c8d7c09625
|
ruff
|
2025-11-07 21:01:45 +08:00 |
|
Windpicker-owo
|
ffdd4c6b9c
|
feat(tool_history): 实现流工具历史管理器,以增强工具调用跟踪和缓存- 添加了 StreamToolHistoryManager,用于管理聊天流级别的工具调用历史。- 引入了 ToolCallRecord,用于详细记录工具调用,包括执行时间和缓存命中情况。- 集成了内存缓存和全局缓存系统,以高效检索结果。- 更新了 ToolExecutor,以使用新的历史管理器记录和获取工具调用。- 增强了 ExaSearchEngine,以限制返回结果数量并提升答案质量。- 重构了 CacheManager 中的缓存管理,以包括工具调用统计和性能指标。
|
2025-11-06 14:22:59 +08:00 |
|
Windpicker-owo
|
a6d2aee781
|
feat(affinity-flow): 通过标签扩展与提及分类增强兴趣匹配
- 实施扩展标签描述以实现更精确的语义匹配
- 增加强/弱提及分类,并附带独立的兴趣评分
- 重构机器人兴趣管理器,采用动态嵌入生成与缓存机制
- 通过增强的@提及处理功能优化消息处理
- 更新配置以支持回帖提升机制
- 将亲和力流量聊天重新组织为模块化结构,包含核心、规划器、主动响应和工具子模块
- 移除已弃用的规划器组件并整合功能
- 为napcat适配器插件添加数据库表初始化功能
- 修复元事件处理器中的心跳监控
|
2025-11-03 22:24:51 +08:00 |
|
Windpicker-owo
|
eeb77e0e3c
|
feat(emoji): 使用QueryBuilder优化数据库查询并启用缓存
|
2025-11-03 15:36:30 +08:00 |
|
Windpicker-owo
|
4e2b598164
|
feat(cache): 提升内存管理与监控能力
- 在CacheManager中添加健康监控系统,并提供详细的内存统计信息
- 使用新的memory_utils模块实现精确的内存估算
- 添加基于大小的缓存条目限制,以防止过大项目
- 通过去重内存计算优化缓存统计
- 在MultiLevelCache中添加过期条目的自动清理功能
- 增强批处理调度器缓存功能,支持LRU驱逐策略和内存追踪
- 更新配置以支持最大项目大小限制
- 添加全面的内存分析文档和工具
重大变更:CacheManager 的默认 TTL 参数现改为 None 而非 3600。数据库兼容层默认禁用缓存,以防止旧版代码过度使用缓存。
|
2025-11-03 15:18:00 +08:00 |
|
Windpicker-owo
|
99785d09ad
|
feat(cache): 添加自定义TTL支持和内存限制配置
|
2025-11-02 13:25:39 +08:00 |
|
明天好像没什么
|
2e0b6b859a
|
refactor(logger): 将控制台渲染器迁移至 Rich 库,支持十六进制颜色
用 Rich 的原生十六进制颜色支持替代了手动 ANSI 颜色处理
将所有模块颜色定义从 ANSI 转义码转换为 #RRGGBB 格式
移除了 _normalize_color() 函数及相关 ANSI 转换逻辑
更新 ModuleColoredConsoleRenderer,使用 Rich Text 对象进行渲染
通过引入 structlog.typing 增强类型提示
保持日志元数据注册的向后兼容性
破坏性变更:日志元数据现在存储原始十六进制颜色,而非 ANSI 代码
|
2025-11-01 22:34:43 +08:00 |
|
明天好像没什么
|
30658afdb4
|
ruff归零
|
2025-11-01 21:32:41 +08:00 |
|
明天好像没什么
|
cb97b2d8d3
|
rufffffff
|
2025-11-01 21:10:01 +08:00 |
|
Windpicker-owo
|
2aeb06f708
|
fix: 修复批处理中的多次commit问题,bulk_create后清除缓存
|
2025-11-01 17:31:31 +08:00 |
|
Windpicker-owo
|
029d133e48
|
fix(critical): 在session内部完成字典转换,彻底解决detached对象greenlet错误
|
2025-11-01 17:27:40 +08:00 |
|
Windpicker-owo
|
a352c69043
|
fix(critical): 修复SQLite事务未提交的严重bug - 在connection_pool.get_session()中添加自动commit
|
2025-11-01 17:19:05 +08:00 |
|