Commit Graph

66 Commits

Author SHA1 Message Date
LuiKlee
8f77465bc3 ruff 2025-12-13 16:39:25 +08:00
Windpicker-owo
410d85fb26 feat(embedding): 优化嵌入处理,支持 NumPy 数组格式并减少内存分配 2025-12-10 11:00:46 +08:00
Windpicker-owo
e148cfd16b feat(memory): 使用异步初始化确保统一记忆管理器已准备就绪 2025-12-08 17:30:11 +08:00
Windpicker-owo
01bcfb491a Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-08 17:19:33 +08:00
Windpicker-owo
a1d60ab026 启用数据库预加载器,清理日志 2025-12-08 17:17:53 +08:00
雅诺狐
3edcc9d169 ruff 2025-12-08 15:48:40 +08:00
Windpicker-owo
fbc37bbcaf refactor(logging): 简化日志记录,移除冗余调试信息
delete(connection_pool): 移除连接池管理器相关代码
2025-12-07 15:19:12 +08:00
Windpicker-owo
2ed11ad1a8 refactor(database-messages): 移除数据库自增主键字段 id 2025-12-01 20:21:14 +08:00
Windpicker-owo
943c2a6566 feat(data-models): 使用 __slots__ 优化内存占用和属性访问性能,更新多个数据模型 2025-12-01 19:57:33 +08:00
拾风
28c54dbec6 Merge branch 'dev' into feature/kfc 2025-12-01 16:06:47 +08:00
Windpicker-owo
fc85338d0b feat: 更新消息管理和数据库操作日志,增强调试信息 2025-11-30 15:13:01 +08:00
ikun-11451
72e7492953 依旧修pyright喵~ 2025-11-29 21:26:42 +08: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
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
14133410e6 feat: 批量生成文本embedding,优化兴趣匹配计算逻辑,支持消息兴趣值的批量更新 2025-11-19 16:30:44 +08:00
Windpicker-owo
75b806cd41 feat: 添加历史消息长度限制,优化上下文管理和消息处理逻辑 2025-11-19 13:59:40 +08:00
Windpicker-owo
bc7228cb3c feat(planner): 使用标准化的JSON格式重构动作规划系统
- 将聊天流和消息管理器中的默认聊天模式从“normal”更改为“focus”
- 从ActionPlannerInfo数据模型中移除已弃用的should_quote_reply字段
- 通过移除回复可用性检查和基于兴趣的过滤,简化计划过滤逻辑
- 采用新的标准化JSON操作格式,并强制使用操作列表结构
- 更新规划器提示,以强制执行一致的动作输出格式
- 移除遗留操作参数过滤,简化消息目标解析
- 清理计划过滤器中未使用的导入和已弃用的代码路径
2025-11-13 15:10:08 +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
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
a6d2aee781 feat(affinity-flow): 通过标签扩展与提及分类增强兴趣匹配
- 实施扩展标签描述以实现更精确的语义匹配
- 增加强/弱提及分类,并附带独立的兴趣评分
- 重构机器人兴趣管理器,采用动态嵌入生成与缓存机制
- 通过增强的@提及处理功能优化消息处理
- 更新配置以支持回帖提升机制
- 将亲和力流量聊天重新组织为模块化结构,包含核心、规划器、主动响应和工具子模块
- 移除已弃用的规划器组件并整合功能
- 为napcat适配器插件添加数据库表初始化功能
- 修复元事件处理器中的心跳监控
2025-11-03 22:24:51 +08:00
Windpicker-owo
ac4c92b620 feat(chatter): 添加should_quote_reply参数以控制引用回复行为 2025-10-31 22:36:53 +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
tt-P607
57794480b8 feat(chatter): 引入决策历史以增强上下文连续性
为提升语言模型在连续对话中的表现,本次更新引入了决策历史功能。该功能旨在为模型提供一个短期记忆,记录其最近的思考过程与采取的行动。

主要变更包括:
- 新增 `DecisionRecord` 数据模型,用于存储“思考-动作”对。
- 在 `StreamContext` 中添加 `decision_history` 字段,以维护每个聊天流的决策历史。
- 在 `plan_filter` 中实现决策记录的逻辑,并在构建提示词时将其注入,供模型参考。
- 添加 `enable_decision_history` 和 `decision_history_length` 配置项,允许用户启用此功能并调整历史记录的长度。

通过回顾近期的决策,模型可以更好地避免重复行为,并生成更具连贯性和创造性的响应。
2025-10-29 18:58:28 +08:00
Windpicker-owo
e26940dd4e feat(chat): 添加消息重复处理防护机制
在StreamContext中添加processing_message_id字段,用于跟踪当前正在处理的目标消息ID。在AffinityFlowChatter规划器中实现重复消息检测逻辑,防止对同一消息进行重复回复处理。

- 在增强版规划流程和Normal模式流程中添加目标消息ID检查
- 当检测到正在处理相同消息时返回no_action避免重复
- 在处理完成后清理processing_message_id标记
- 添加详细的日志记录用于调试和监控
2025-10-29 07:40:26 +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
a2c0afa75d refactor(chat): 简化任务管理架构,移除多重回复支持
- 移除 ChatterManager 中的复杂任务追踪逻辑(_processing_tasks)
- 将流循环任务管理从 StreamLoopManager 转移到 StreamContext
- 简化消息打断机制,通过取消 stream_loop_task 实现
- 移除多重回复相关功能,统一使用单一任务管理
- 优化错误处理和资源清理逻辑

BREAKING CHANGE: 移除了多重回复功能,所有流处理现在使用单一任务架构
2025-10-27 17:16:36 +08:00
Windpicker-owo
0d3e46fc97 feat(message): 在消息处理中嵌入 format_info 到 additional_config
在 bot.py 和 chat_stream.py 中新增逻辑,将消息的 format_info 嵌入到 additional_config 字段中,确保 Action 能够正确检查适配器支持的消息类型。同时删除已废弃的 optimized_chat_stream.py 文件,并修复 notice_handler.py 中的类型注解问题。

- 在 bot.py 和 chat_stream.py 中添加 _prepare_additional_config 方法
- 将 format_info 序列化后嵌入 additional_config JSON 中
- 增强 StreamContext.check_types 方法的日志输出以便调试
- 删除不再使用的 optimized_chat_stream.py 文件
- 修复 notice_handler.py 中的类型注解问题
2025-10-26 10:46:04 +08:00
tt-P607
5b29399d94 fix(chat): 防止在生成回复时触发消息打断
通过在聊天流上下文中引入 `is_replying` 状态标志,解决了在LLM生成回复期间可能被新消息错误打断的问题。

- 在调用LLM生成内容前将 `is_replying` 设置为 `True`。
- 在消息打断检查逻辑中,如果 `is_replying` 为 `True` 则跳过检查。
- 使用 `finally` 块确保无论生成成功或失败,`is_replying` 状态都会被重置为 `False`。

这确保了回复生成的原子性,防止了因用户快速连续发送消息而导致的自我打断。
2025-10-23 14:41:46 +08:00
tt-P607
cce30f34f1 feat(chat): 优化消息打断逻辑,仅限触发用户
为了防止群聊中其他用户的消息意外中断正在进行的AI多重回复,引入了“触发用户”机制。

- 现在,只有发起该轮对话的用户发送的新消息才可能触发打断。
- 此外,表情包和Emoji等非文本消息将被忽略,不再触发打断,以提高交互的流畅性。
2025-10-23 14:30:42 +08:00
Windpicker-owo
2ec3be7c84 feat(notice): 实现全局notice消息管理系统
添加全局notice管理器,将notice消息与普通消息分离处理。主要功能包括:

- 创建 GlobalNoticeManager 单例类,支持公共和特定聊天流作用域
- 在 message_manager 中集成notice检测和处理逻辑
- 扩展数据库模型和消息类,添加notice相关字段
- 在提示词生成器中添加notice信息块展示
- 配置系统支持notice相关参数设置
- 适配器插件增强notice类型识别和配置

notice消息特点:
- 默认不触发聊天流程,只记录到全局管理器
- 可在提示词中展示最近的系统通知
- 支持按类型设置不同的生存时间
- 支持公共notice(所有聊天可见)和流特定notice

BREAKING CHANGE: 数据库消息表结构变更,需要添加 is_public_notice 和 notice_type 字段
2025-10-19 22:45:19 +08:00
minecraft1024a
c01607b17b chore: 代码清理和格式化
对项目代码进行了一系列小幅度的清理和改进,包括:
- 移除未使用的导入语句
- 统一代码格式,如调整空行和导入顺序
- 优化日志输出的可读性
- 更新类型注解以符合现代 Python 语法
- 修复代码风格检查器(linter)报告的问题
2025-10-12 12:41:05 +08:00
tt-P607
244b95e0af revert: 回退 commit 94e34c9370 2025-10-11 15:40:55 +08:00
tt-P607
94e34c9370 fix(chat): 修复消息打断会取消正在进行的回复任务的问题
之前的消息打断逻辑会无差别地取消处理流中的所有任务。这会导致一个问题:当用户在机器人生成回复期间快速发送新消息时,回复任务会被意外中断,导致机器人无法正常完成回复。

本次修改通过引入 `is_replying` 状态来解决此问题:
1.  在 `StreamContext` 中新增 `is_replying` 状态标志,用于追踪回复生成过程。
2.  当开始生成回复时,设置该标志为 `True`,并在回复完成或取消后通过 `finally` 块确保其恢复为 `False`。
3.  `MessageManager` 的打断检查逻辑现在会首先检查此标志,如果为 `True` 则跳过打断,从而保护正在进行的回复。
4.  `cancel_all_stream_tasks` 也增加了 `exclude_reply` 选项,确保即使触发打断,也不会取消回复任务。
2025-10-11 02:11:32 +08:00
Windpicker-owo
dd1444cc41 refactor(chat): 重构关系系统并优化消息打断处理机制
- 移除独立的RelationshipConfig,将关系追踪参数整合到AffinityFlowConfig
- 实现消息打断后立即重新处理流程,提升交互响应性
- 优化关系追踪系统,添加概率筛选和超时保护机制
- 改进机器人自引用处理,确保消息内容正确显示
- 增强用户信息提取逻辑,兼容多种消息格式
- 添加异步后台任务处理,避免阻塞主回复流程
- 调整兴趣评分阈值和权重参数,优化消息匹配精度
2025-10-08 22:33:10 +08:00
LuiKlee
b3ae8e4f1a 重构database_data_model.py
没用力测试,炸了叫lui修
2025-10-08 18:39:43 +08:00
Windpicker-owo
4971d18f14 feat(chat): 优化消息打断系统概率模型为反比例函数
将消息打断系统的概率计算从线性模型改为反比例函数模型,
提供更合理的打断概率分布:

- 第1次打断概率约80%
- 第2次打断概率约35%
- 第3次打断概率约15%
- 后续趋近于最低概率(5%)

新模型通过反比例函数实现前期高概率、快速衰减的特性,
避免线性模型中后期打断概率仍然较高的问题,提升用户体验。
2025-10-07 13:52:01 +08:00
Windpicker-owo
76713bf727 feat(chat): 重构消息打断系统为线性概率模型
将复杂的指数衰减概率模型简化为线性概率模型,提高可预测性和可配置性

- 新增最低打断概率配置,确保始终有打断机会
- 移除复杂的概率因子计算,改用简单的线性递减公式
- 增加最大打断次数默认值从3提升到10
- 保留废弃配置项以确保向后兼容
- 更新配置模板和文档说明新的概率计算方式
2025-10-07 13:21:33 +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
minecraft1024a
7a7f737f71 ruff: 清理代码并规范导入顺序
对整个代码库进行了大规模的清理和重构,主要包括:
- 统一并修复了多个文件中的 `import` 语句顺序,使其符合 PEP 8 规范。
- 移除了大量未使用的导入和变量,减少了代码冗余。
- 修复了多处代码风格问题,例如多余的空行、不一致的引号使用等。
- 简化了异常处理逻辑,移除了不必要的 `noqa` 注释。
- 在多个文件中使用了更现代的类型注解语法(例如 `list[str]` 替代 `List[str]`)。
2025-10-05 20:38:56 +08:00
雅诺狐
efc4f7a13e Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-05 17:50:13 +08:00
雅诺狐
29cf3e3fbc Refactor memory metadata index to use Rust backend
Replaces the Python implementation of MemoryMetadataIndex with a Rust-accelerated version, removing legacy code and fallback logic. Updates search, add, and stats methods to delegate to the Rust backend. Also adds missing imports in llm_data_model.py and base_event.py for improved type support and event handling.
2025-10-05 16:35:31 +08:00
Windpicker-owo
23e523c7b9 refactor(chat): 优化异步任务处理和消息管理逻辑
- 使用asyncio.create_task替代await调用,提升并发性能
- 简化流管理器的槽位获取逻辑,移除回退方案
- 重构上下文管理器的消息添加和更新机制
- 移除StreamContext中的冗余方法,保持数据模型的简洁性
- 优化兴趣度评分系统的更新流程,减少阻塞操作

这些改动主要关注性能优化和代码结构简化,不涉及功能变更。
2025-10-05 15:17:30 +08:00
Windpicker-owo
624298e1b8 refactor(chat): 异步化聊天系统并重构兴趣值计算机制
将同步调用改为异步调用以提升性能,重构兴趣值计算流程以支持更灵活的组件化架构。主要改进包括:

- 异步化ChatManager相关方法,避免阻塞主线程
- 重构兴趣值计算系统,从插件内部计算改为通过兴趣管理器统一处理
- 新增should_act字段支持更细粒度的动作决策
- 优化初始化逻辑,避免构造函数中的异步操作
- 扩展插件系统支持兴趣计算器组件注册
- 更新数据库模型以支持新的兴趣值相关字段

这些改进提升了系统的响应性能和可扩展性,同时保持了API的向后兼容性。
2025-10-05 01:25:52 +08:00
John Richard
7923eafef3 re-style: 格式化代码 2025-10-02 20:26:01 +08:00
Windpicker-owo
fd76e36320 refactor(chat): 迁移数据库操作为异步模式并修复相关调用
将同步数据库操作全面迁移为异步模式,主要涉及:
- 将 `with get_db_session()` 改为 `async with get_db_session()`
- 修复相关异步调用链,确保 await 正确传递
- 优化消息管理器、上下文管理器等核心组件的异步处理
- 移除同步的 person_id 获取方法,避免协程对象传递问题

修复 deepcopy 在 StreamContext 中的序列化问题,跳过不可序列化的 asyncio.Task 对象

删除无用的测试文件和废弃的插件清单文件
2025-09-28 20:40:46 +08:00