LuiKlee
9a0163d06b
优化消息管理
2025-12-13 20:19:11 +08:00
雅诺狐
3edcc9d169
ruff
2025-12-08 15:48:40 +08:00
Windpicker-owo
2e7b434537
refactor: 使用异步生成器迁移到事件驱动模型以进行聊天流管理
...
- 用异步生成器替换了无限循环任务,以处理聊天流事件。
引入了`ConversationTick`数据模型来表示会话事件。
- 更新了`StreamLoopManager`,以使用新的基于生成器的方法来管理聊天流。
- 在聊天流处理过程中增强了错误处理和日志记录功能。
- 改进了聊天流的生命周期管理,包括启动和停止方法。
- 删除了与之前的循环工作线程实现相关的遗留代码。
2025-12-04 22:40:12 +08:00
tt-P607
7f0494cbc3
Revert "feat(core): 实现死锁检测器并改进 LLM 消息拆分 本次提交引入了两个主要增强功能:在 StreamLoopManager 中增加死锁检测机制以提高系统稳定性,以及对 Kokoro Flow Chatter (KFC) 的消息拆分策略进行调整,以生成更自然、更贴近人类的对话。 **StreamLoopManager 中的死锁检测:** - 新的死锁检测器现在会定期运行,监控所有活动消息流。 - 它会跟踪每个消息流的最后活动时间,并标记任何超过两分钟未活动的流为潜在死锁。 - 这种主动监控有助于识别和诊断可能卡住的消息流,防止系统整体冻结。 - 为了避免在长时间等待(例如等待用户回复或长时间 LLM 生成)期间出现误报,消息流循环现在即使在睡眠或处理阶段也会定期更新其活动时间戳。 **KFC 中的消息拆分优化:** - 自动,响应后处理器中的基于规则的消息拆分器已被禁用。- 消息拆分的责任现在完全交由大型语言模型(LLM)处理。- 系统提示已更新,明确指示LLM使用多个 reply 操作,将长响应拆分为更短、更自然的段落,模仿真实的人类消息模式。- 此更改允许进行更加上下文感知和情感适宜的消息分段,从而提供更具吸引力的用户体验。**VectorStore 的异步安全性:**- 所有对同步 ChromaDB 库的调用现在都被封装在 asyncio.to_thread() 中。这可以防止阻塞主 asyncio 事件循环,而这正是新检测器设计用来捕获的潜在死锁来源。"
...
This reverts commit f489020a12 .
2025-12-04 19:26:31 +08:00
Windpicker-owo
d5e6746a21
fix(stream): 修复 Chatter 处理标志的假死状态并增强并发保护
2025-12-02 23:11:29 +08:00
tt-P607
659a8e0d78
refactor(api, chat): 改进异步处理并解决并发问题
...
内存可视化器 API 端点之前在异步路由中执行同步的阻塞操作(文件 I/O、数据处理)。在处理大型图文件时,这可能导致服务器冻结。现在,这些任务已被移至 ThreadPoolExecutor,从而使 API 非阻塞并显著提高响应速度。
在聊天消息管理器中,竞争条件可能导致消息处理重叠或中断后数据流停滞。此提交引入了:
- 并发锁(`is_chatter_processing`)以防止流循环同时运行多个 chatter 实例。
- 故障保护机制,在中断时重置处理状态,确保数据流能够恢复并正确继续。
2025-12-02 14:40:58 +08:00
tt-P607
1027c5abf7
feat(chat): 添加群组静音功能并提升私聊响应速度
...
此提交引入了消息处理的两个主要增强功能:
1. **群组静音功能**:
新增的 `mute_group_list` 配置允许指定机器人默认保持沉默的群组。仅在被明确提及(通过@、回复或使用其名称/别名)时,它才会在这些群组中响应,从而减少繁忙频道的噪音。
2. **私聊响应能力**:
消息分发循环现在会动态调整轮询间隔。对于私聊,它使用更短的间隔,从而实现显著更快、接近实时的响应。
此外,此次提交还包括 Kokoro Flow 聊天器的若干改进:
- refactor(kokoro-flow):系统提示进行了大幅修订,以强制执行单个 `kfc_reply` 动作,引导 LLM 生成更可靠且格式正确的输出。
- fix(kokoro-flow):在执行动作时使用 `action.params.copy()`,以防止潜在的副作用来自下游的修改。
2025-12-02 01:40:39 +08:00
拾风
28c54dbec6
Merge branch 'dev' into feature/kfc
2025-12-01 16:06:47 +08:00
tt-P607
85efff4e7a
chore(logging): 调整流处理的日志级别
...
在流循环管理器中降低非关键事件的日志级别,以减少生产环境日志的噪音。
- 将任务处理失败消息从 `warning` 改为 `debug`,因为在某些情况下这是可恢复和预期的状态。
- 将并发保护消息从 `warning` 改为 `debug`,因为这是流控中的正常且预期的部分,而不是错误。
2025-12-01 15:28:34 +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
ikun-11451
f0b6a969d5
修了点pyright错误喵~
2025-11-29 20:40:21 +08:00
Windpicker-owo
0908fb50a0
优化日志
2025-11-26 21:16:16 +08:00
Windpicker-owo
b6de9b5a9c
重构聊天系统中的消息发送与处理
...
- 更新了`uni_message_sender.py`,使用`MessageEnvelope`来发送消息,取代了之前的`MessageSending`结构。
- 引入了`send_envelope`函数,通过改进日志记录和错误处理来简化消息发送流程。
- 修改了`HeartFCSender`以直接处理`MessageEnvelope`,确保与新消息结构的兼容性。
- 重构了`default_generator.py`,以构建`MessageEnvelope`而不是`MessageSending`,从而增强了消息构建逻辑。
- 调整了`utils.py`中的效用函数,以使用`DatabaseUserInfo`来处理用户信息。
- 更新了`send_api.py`以构建和发送`MessageEnvelope`,从而改进了消息分发逻辑。
- 从插件系统中移除了已弃用的`MaiMessages`类,清理了未使用的代码。
- 增强了`napcat_adapter_plugin`以适应新的消息结构,确保消息的正确处理和发送。
- 对代码进行整体清理和整理,以提高可维护性和可读性。
2025-11-25 21:54:27 +08:00
Windpicker-owo
1ebdc37b22
重构ChatStream和StreamContext:移除context_manager引用
...
- 在ChatStream及相关类中,将所有context_manager的实例替换为直接上下文访问。
- 更新方法,利用新的上下文结构来管理聊天状态和消息。
- 增强的StreamContext,增加了用于消息处理、统计和历史管理的方法。
- 在重构过程中改进了错误处理和日志记录。
2025-11-25 12:01:26 +08:00
minecraft1024a
6f62073630
chore: perform widespread code cleanup and formatting
...
Perform a comprehensive code cleanup across multiple modules to improve code quality, consistency, and maintainability.
Key changes include:
- Removing numerous unused imports.
- Standardizing import order.
- Eliminating trailing whitespace and inconsistent newlines.
- Updating legacy type hints to modern syntax (e.g., `List` -> `list`).
- Making minor improvements for code robustness and style.
2025-11-15 17:12:46 +08:00
Windpicker-owo
be74c4aa18
fix: 修正 _get_stream_context 方法的类型注解格式
2025-11-13 15:31:32 +08:00
Windpicker-owo
d67b15deae
refactor: 延迟导入 StreamContext 以提高类型检查性能
2025-11-13 15:28:18 +08:00
Windpicker-owo
80736a0deb
refactor(distribution_manager): 优化流循环管理逻辑,减少重复代码并改进异常处理
...
refactor(action_manager): 将异步存储操作改为非阻塞任务,提升性能
refactor(default_generator): 简化回复生成器中的消息处理逻辑
refactor(generator_api): 更新类型提示,增强代码可读性
refactor(affinity_chatter): 清理异常处理中的冗余代码,确保处理标记的正确清理
refactor(affinity_interest_calculator): 重命名阈值调整方法,提升代码一致性
refactor(plan_executor): 移除冗余的已读消息处理逻辑
refactor(planner): 优化规划器中的异常处理,确保正常模式的退出检查
2025-11-12 16:08:52 +08:00
Windpicker-owo
d3ffe1c47a
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-11-12 13:38:12 +08:00
Windpicker-owo
c9ee50aed8
feat(user_profile_tool): 更新好感分数描述,增加评分注意事项以提升用户理解
2025-11-12 13:38:03 +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
f3af3caf71
feat(distribution_manager): 在处理成功后添加短暂等待,确保清理操作完成
...
feat(message_manager): 简化清除未读消息逻辑,移除冗余注释
feat(action_manager): 移除自动清空未读消息的逻辑,改为手动处理
feat(plan_executor): 扩展回复类动作的分类,包含 respond 动作
2025-11-10 21:38:55 +08:00
Windpicker-owo
c46df81bca
feat(stream_loop_manager): 优化流循环管理,增强日志记录和错误处理,添加并发保护机制
2025-11-10 20:03:01 +08:00
Windpicker-owo
aab3f19f10
feat(chatter_manager): 清理 processing_message_id 以防止重复回复检测失效
...
feat(distribution_manager): 添加子任务跟踪和取消逻辑,优化流处理
feat(default_generator): 优化 respond 和 reply 模式下的消息处理逻辑
feat(affinity_chatter): 处理取消异常时清理 processing_message_id
feat(planner): 确保在规划流程取消时清理 processing_message_id
2025-11-10 17:12:20 +08:00
Windpicker-owo
dea45b083d
feat(stream): 优化未读消息处理逻辑,避免无效的 chatter 调用
2025-11-10 15:18:40 +08:00
Windpicker-owo
e5c5e5c036
feat(stream): 添加流循环启动锁以防止并发启动同一流的多个循环任务
2025-11-10 14:23:10 +08:00
Windpicker-owo
ac09046427
fix(distribution-manager): 使用全局配置中的超时设置增强消息处理
...
refactor(affinity-chatter): 移除不必要的全局配置导入
2025-11-09 11:28:28 +08:00
Windpicker-owo
6e97aab8a7
fix(distribution-manager): 优化消息处理逻辑,直接刷新未读消息缓存
2025-11-08 16:55:58 +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
Windpicker-owo
ca70ae1563
refactor: 将流循环管理器替换为调度器分发器以处理消息
...
- 引入SchedulerDispatcher以通过统一调度器管理消息分发。
- 更新了MessageManager以使用新的调度器,移除了旧的流循环管理功能。
- 增强了 add_message 方法,以便在接收消息时通知调度器。
- 已移除废弃的中断处理方法,将其逻辑整合至调度器中。
- 修改了action_manager,改为等待数据库操作而非使用asyncio.create_task以实现更精细的控制。
- 优化了统一调度器,支持并发任务执行及运行中任务的取消。
- 为重构流程和新架构添加了全面的文档说明。
2025-11-04 23:13:52 +08:00
Windpicker-owo
63d5e948d2
refactor(planner): 将缓存消息刷新逻辑移至规划器开始时执行
2025-11-01 22:37:38 +08:00
Windpicker-owo
69ee822ef7
refactor(logging): 将多个info日志级别的记录更改为debug级别,以减少日志输出
2025-11-01 00:44:50 +08:00
明天好像没什么
0e129d385e
refactor: 统一类型注解风格并优化代码结构
...
- 将裸 except 改为显式 Exception 捕获
- 用列表推导式替换冗余 for 循环
- 为类属性添加 ClassVar 注解
- 统一 Union/Optional 写法为 |
- 移除未使用的导入
- 修复 SQLAlchemy 空值比较语法
- 优化字符串拼接与字典更新逻辑
- 补充缺失的 noqa 注释与异常链
BREAKING CHANGE: 所有插件基类的类级字段现要求显式 ClassVar 注解,自定义插件需同步更新
2025-10-31 22:42:39 +08:00
Windpicker-owo
e46d9529f5
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-10-31 21:29:32 +08:00
Windpicker-owo
ce03ced355
feat(message-manager): 改进流生命周期管理和消息对象处理
...
-通过适当的任务取消为流循环添加强制重启功能
-通过更安全的删除和适当的任务终止来增强流清理
-改进亲和流聊天插件中的消息对象转换
-用DatabaseMessages对象替换基于字典的消息处理
-为任务取消添加超时处理,以防止死锁
-简化计划执行中的用户ID提取和消息ID处理
2025-10-31 21:27:11 +08:00
minecraft1024a
a29be48091
refactor(core): 优化类型提示与代码风格
...
本次提交对项目代码进行了广泛的重构,主要集中在以下几个方面:
1. **类型提示现代化**:
- 将 `typing` 模块中的 `Optional[T]`、`List[T]`、`Dict[K, V]` 等旧式类型提示更新为现代的 `T | None`、`list[T]`、`dict[K, V]` 语法。
- 这提高了代码的可读性,并与较新 Python 版本的风格保持一致。
2. **代码风格统一**:
- 移除了多余的空行和不必要的空格,使代码更加紧凑和规范。
- 统一了部分日志输出的格式,增强了日志的可读性。
3. **导入语句优化**:
- 调整了部分模块的 `import` 语句顺序,使其符合 PEP 8 规范。
这些更改不涉及任何功能性变动,旨在提升代码库的整体质量、可维护性和开发体验。
2025-10-31 20:56:17 +08:00
Windpicker-owo
655b4f20c6
refactor(message-manager): 删除自适应流管理器并优化上下文加载
...
-从distribution_manager和message_manager中删除adaptive_stream_manager.py及其集成
-删除过时的message_recv_backup.py,因为MessageRecv已被DatabaseMessages完全替换
-在context_manager中添加异步历史初始化,以便在启动时从数据库加载消息
-优化default_generator以使用内存中的消息,而不是重复的数据库查询
-修复message.py中的回复消息段处理,以处理DatabaseMessages格式
-从chat_stream.py中删除deepcopy并改进context_manager初始化
-清理bot.py和适配器响应方法中未使用的通知处理
突破性变化:自适应流管理系统已被完全删除。所有消息处理现在都依赖于DatabaseMessages格式。上下文管理器现在在创建时从数据库异步初始化历史记录。
2025-10-31 20:45:25 +08:00
Windpicker-owo
cfa642cf0a
feat(expression): 增强表达学习与选择系统的健壮性和智能匹配
...
- 改进表达学习器的提示词格式规范,增强LLM输出解析的容错性
- 优化表达选择器的模型预测模式,添加情境提取和模糊匹配机制
- 增强StyleLearner的错误处理和日志记录,提高训练和预测的稳定性
- 改进流循环管理器的日志输出,避免重复信息刷屏
- 扩展SendAPI的消息查找功能,支持DatabaseMessages对象兼容
- 添加智能回退机制,当模型预测失败时自动切换到经典模式
- 优化数据库查询逻辑,支持跨聊天流的表达方式共享
BREAKING CHANGE: 表达选择器的模型预测模式现在需要情境提取器配合使用,旧版本配置可能需要更新依赖关系
2025-10-30 11:16:30 +08:00
Windpicker-owo
4e024656ff
feat(chat): 优化流处理逻辑与Normal模式性能
...
- 在StreamLoopManager中添加流能量更新机制,在处理消息前更新能量值用于间隔计算
- 为消息打断系统添加allow_reply_interruption配置选项,控制是否允许在回复时打断
- 重构AffinityFlowChatter规划器,为Normal模式添加简化流程,显著降低延迟
- 实现Normal模式与Focus模式间的智能切换机制,基于focus_energy概率退出Normal模式
- 移除冗余的兴趣度批量更新逻辑,优化数据库写入性能
- 更新配置模板版本至7.5.0
BREAKING CHANGE: 配置文件中新增allow_reply_interruption选项,需要更新配置
2025-10-28 19:13:18 +08:00
Windpicker-owo
79a0088065
feat(chat): 添加Chatter处理状态跟踪机制
...
在StreamLoopManager中添加is_chatter_processing标志来精确跟踪Chatter处理状态,优化消息打断检查逻辑。
- 在distribution_manager中设置和清除Chatter处理标志
- 在message_manager中基于处理状态进行打断检查
- 在数据模型中添加is_chatter_processing字段
2025-10-27 22:37:55 +08:00
Windpicker-owo
09de649d48
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-10-27 17:17:11 +08:00
Windpicker-owo
a2c0afa75d
refactor(chat): 简化任务管理架构,移除多重回复支持
...
- 移除 ChatterManager 中的复杂任务追踪逻辑(_processing_tasks)
- 将流循环任务管理从 StreamLoopManager 转移到 StreamContext
- 简化消息打断机制,通过取消 stream_loop_task 实现
- 移除多重回复相关功能,统一使用单一任务管理
- 优化错误处理和资源清理逻辑
BREAKING CHANGE: 移除了多重回复功能,所有流处理现在使用单一任务架构
2025-10-27 17:16:36 +08:00
tt-P607
8aa64010b7
fix(chat): 修复消息打断后的重复处理并优化回复逻辑
...
本次提交包含两项关键更改:
1. 将 `triggering_user_id` 的设置逻辑从 `ChatterManager` 迁移至 `StreamLoopManager` 的处理循环初期。这确保了触发用户ID能够更早、更可靠地被设置,为回复保护机制提供了正确的上下文,避免了潜在的逻辑错误。
2. 在消息成功打断正在执行的任务后,立即调用 `clear_all_unread_messages`。此举修复了当新消息打断旧任务时,旧消息队列未被清空,导致机器人可能在之后重新处理这些过时消息的缺陷,从而防止了重复响应。
2025-10-27 12:13:52 +08:00
Windpicker-owo
ca69b8affe
feat(chat): 改进异步任务管理和取消处理
...
- 在 StreamLoopManager、MessageManager 和 DefaultReplyer 中增加子任务跟踪机制
- 统一处理 asyncio.CancelledError 异常,确保任务取消时能正确清理子任务
- 使用 child_tasks 集合管理子任务生命周期,防止任务泄漏
- 优化记忆存储等后台任务的创建方式,支持优雅取消
- 改进错误处理逻辑,确保异常情况下也能清理子任务资源
2025-10-23 19:31:23 +08:00
minecraft1024a
4f9b31d188
refactor(core): 统一代码风格并移除未使用的导入
...
本次提交主要进行代码风格的统一和现代化改造,具体包括:
- 使用 `|` 联合类型替代 `typing.Optional`,以符合 PEP 604 的现代语法。
- 移除多个文件中未被使用的导入语句,清理代码。
- 调整了部分日志输出的级别,使其更符合调试场景。
- 统一了部分文件的导入顺序和格式。
2025-10-07 20:16:47 +08:00
Windpicker-owo
b0c9f439d0
refactor(chat): 重构消息处理流程引入缓冲队列机制
...
通过引入消息缓冲队列,解决了高频消息场景下的竞态条件和消息丢失问题。
新的处理机制将消息暂存于缓冲区,仅在流处理空闲时才释放到未读队列,
确保了消息处理的原子性和一致性。
核心变更:
- 为每个聊天流创建独立的消息缓冲队列
- 实时跟踪流的处理状态,避免并发访问冲突
- 在处理开始前和完成后自动刷新缓冲区
- 仅在成功执行后清空未读消息,失败时保留消息
- 增加对取消任务和异常情况的容错处理
- 集成缓存统计和监控功能
此优化显著提升了消息处理的可靠性和性能表现。
2025-10-07 16:27:33 +08:00
Windpicker-owo
150c026434
fix(import): 修正导入路径以确保正确引用 StreamPriority
2025-10-07 12:58:17 +08:00
雅诺狐
875ee4813c
refactor: 清理项目结构并修复类型注解问题
...
修复 SQLAlchemy 模型的类型注解,使用 Mapped 类型避免类型检查器错误
- 修正异步数据库操作中缺少 await 的问题
- 优化反注入统计系统的数值字段处理逻辑
- 添加缺失的导入语句修复模块依赖问题
2025-10-07 11:35:12 +08:00
sunbiz1024
8f4f7d19af
ruff
2025-10-06 09:38:16 +08:00
minecraft1024a
9d705463ce
ruff fix但指定了--unsafe-fixes
2025-10-05 21:48:32 +08:00