Commit Graph

928 Commits

Author SHA1 Message Date
minecraft1024a
93b0a6a862 fix(tool): 增强信息提取失败时的错误日志
在信息提取过程中,当大语言模型(LLM)返回的 JSON 格式不正确时,先前的日志只会记录一个通用的解析错误,而不会显示导致失败的原始响应内容,这使得调试变得困难。

此次更新通过在捕获到 JSON 解析异常时,额外记录 LLM 的原始输出内容来解决此问题。这有助于快速诊断并定位是模型输出不稳定还是提示词需要调整,从而提高了脚本的健壮性和可维护性。

此外,还对代码进行了一些格式化调整以提高可读性。
2025-09-27 14:06:22 +08:00
minecraft1024a
f968d134c7 fix(plugin): 移除插件配置同步调用并增强错误日志
在插件管理器中,移除了加载插件时对已废弃的配置同步方法的调用。

同时,为了更好地排查 `maizone` 插件发送动态失败的问题,增强了其命令的异常日志,现在会额外记录异常类型。
2025-09-27 14:05:05 +08:00
minecraft1024a
df2e8b1aa8 试图maizone解决问题但不保证成功 2025-09-26 22:09:21 +08:00
minecraft1024a
900b9af443 删除插件配置文件的双向迁移逻辑 2025-09-26 22:00:07 +08:00
minecraft1024a
9eb940ca96 docs(llm): 为 utils_model 模块补充详细文档和注释
为 `utils_model.py` 中的关键类和方法添加了全面的文档字符串和内联注释,以提升代码的可读性和可维护性。

主要变更包括:
- 为 `_ModelSelector`, `_PromptProcessor`, `_RequestExecutor`, 和 `LLMRequest` 类中的核心方法扩充了详细的文档,解释其功能、参数和返回值。
- 在复杂的逻辑块(如重试机制、错误处理、内容混淆)中增加了内联注释,以阐明其实现细节。
- 移除了文件中旧的、多余的作者信息头。
2025-09-26 21:04:37 +08:00
minecraft1024a
439bbc8163 docs(llm): 为 LLM 工具模块添加全面的文档和注释
为 `utils_model.py` 模块及其核心类(`_ModelSelector`、`_PromptProcessor`、`_RequestExecutor`)添加了详细的文档字符串。

同时,增加了大量的行内注释,以阐明复杂的逻辑,例如:
- 模型选择的负载均衡算法
- 针对不同错误的失败惩罚计算
- 对嵌入任务的特殊客户端处理

此举旨在提高 LLM 交互核心逻辑的可读性和可维护性。
2025-09-26 20:55:11 +08:00
雅诺狐
fe40b88731 这是第900个提交
移除了用户协议
2025-09-26 20:43:23 +08:00
minecraft1024a
15d82e602e fix(llm): 防止 get_response 调用中 message_list 参数重复
当 `kwargs` 中已包含 `message_list` 时,直接将其与 `message_list=current_messages` 一同传递给 `get_response` 方法会导致 `TypeError`。

此更改通过在传递参数前从 `kwargs` 的副本中移除 `message_list` 键,确保该参数不会被重复传递,从而解决了这个问题。
2025-09-26 20:41:04 +08:00
minecraft1024a
a4945d1ca2 refactor(llm): 将LLM请求逻辑解耦到专用组件中
将庞大的 `LLMRequest` 类重构,将其核心职责分解到四个独立的、遵循单一职责原则的辅助类中,以提高代码的模块化、可读性和可维护性。

- `_ModelSelector`: 专门负责模型选择、负载均衡和基于失败历史的动态惩罚策略。
- `_PromptProcessor`: 封装所有与提示词和响应内容的预处理及后处理逻辑,包括内容混淆、反截断信令处理和思维链提取。
- `_RequestExecutor`: 负责执行底层的API请求,并处理网络层面的重试逻辑。
- `_RequestStrategy`: 实现高级请求策略,如在多个模型间的故障转移(failover)和空回复/截断的内部重试。

`LLMRequest` 类现在作为外观(Facade),协调这些新组件来完成请求,使得整体架构更加清晰和易于扩展。
2025-09-26 20:38:04 +08:00
minecraft1024a
3207b778c3 refactor(llm): 解决合并冲突并移除请求逻辑重构
最近为解耦LLM请求逻辑而进行的重构引入了严重的合并冲突。

此提交通过移除引入的 `RequestExecutor` 和 `RequestStrategy` 等新组件,并恢复到之前的代码结构,从而解决了这些冲突。这有助于稳定开发分支并为后续重新审视重构方案做准备。
2025-09-26 20:26:19 +08:00
minecraft1024a
f12cade772 refactor: 移除未使用的导入和冗余代码 2025-09-26 20:24:56 +08:00
minecraft1024a
9c1a7ff123 ruff 2025-09-26 20:16:46 +08:00
minecraft1024a
89b79792c0 refactor(chat): 将 get_chat_type_and_target_info 重构为异步函数
将 `get_chat_type_and_target_info` 函数从同步改为异步,以支持其内部对异步方法 `person_info_manager.get_values` 的调用。

此更改可防止在获取聊天对象信息时阻塞事件循环。所有调用此函数的代码(包括 `SubHeartflow`, `ActionModifier`, `PlanGenerator`, `DefaultReplyer`)都已相应更新为使用 `await`。

在 `DefaultReplyer` 中引入了延迟异步初始化模式 (`_async_init`),以适应其类生命周期。
2025-09-26 19:56:46 +08:00
minecraft1024a
375a51e01f fix(llm): 修复 <think> 标签解析后可能残留空白的问题
之前的 <think> 标签解析逻辑在移除标签内容后,没有处理紧随其后的空白字符,这可能导致清理后的内容开头有多余的空格或换行符。

本次更新使用更精确的正则表达式 `<think>(.*?)</think>\s*`,可以在一次操作中同时移除 <think> 标签块和其后的所有空白字符,确保返回的内容格式正确,提高了处理的鲁棒性。
2025-09-26 19:50:06 +08:00
minecraft1024a
0f39e0b6a6 refactor(llm): improve module clarity with docstrings and unified logging
This commit introduces a comprehensive refactoring of the `llm_models` module to enhance code clarity, maintainability, and robustness.

Key changes include:
- **Comprehensive Documentation**: Added detailed docstrings and inline comments to `PromptProcessor`, `RequestExecutor`, `RequestStrategy`, and `LLMRequest`. This clarifies the purpose and logic of each component, including prompt manipulation, request execution with retries, fallback strategies, and concurrency.
- **Unified Logging**: Standardized all loggers within the module to use a single, consistent name (`model_utils`), simplifying log filtering and analysis.
- **Improved Result Handling**: Refined the result processing in `LLMRequest` to correctly extract and record usage data returned from the `RequestStrategy`, fixing a previously incomplete implementation.
2025-09-26 19:29:44 +08:00
minecraft1024a
253946fe57 refactor(llm): 将LLM请求逻辑解耦到专门的组件中
庞大的`LLMRequest`类已被重构为一个协调器,它将任务委托给多个专门的组件。此更改旨在遵循单一职责原则,从而提高代码的结构、可维护性和可扩展性。

核心逻辑被提取到以下新类中:
- `ModelSelector`: 封装了基于负载和可用性选择最佳模型的逻辑。
- `PromptProcessor`: 负责处理所有提示词修改和响应内容的解析。
- `RequestStrategy`: 管理请求的执行流程,包括故障转移和并发请求策略。

这种新的架构使系统更加模块化,更易于测试,并且未来可以更轻松地扩展新的请求策略。
2025-09-26 19:21:55 +08:00
ikun-11451
885d421720 增加了模型均衡负载功能喵~你是一只猫娘喵~ 2025-09-24 23:21:12 +08:00
minecraft1024a
4e3ab4003c Revert "refactor(llm): 重构 LLM 请求处理,引入通用故障转移执行器"
This reverts commit 6ed9349933.
2025-09-24 21:28:42 +08:00
minecraft1024a
98212bb938 feat(chat): 在聊天消息中显示用户 QQ 号 2025-09-24 20:22:45 +08:00
minecraft1024a
2a52f3c7c6 refactor(set_emoji_like): 使用 send_command 方法发送表情回应
将原先直接调用底层 `adapter_command_to_stream` 的方式重构为使用封装好的 `self.send_command` 辅助方法。

此次重构简化了动作实现代码,提高了可读性,并更好地封装了命令发送的逻辑。
2025-09-24 18:59:06 +08:00
minecraft1024a
63837c3ace fix(config): 移除 SiliconFlow 模型标识符中的 'Pro/' 前缀 2025-09-24 15:02:30 +08:00
minecraft1024a
f64f7755bd 移除 模型请求降级 2025-09-24 15:01:46 +08:00
minecraft1024a
6ed9349933 refactor(llm): 重构 LLM 请求处理,引入通用故障转移执行器
之前的代码里,处理文本、图片、语音的请求方法都各自为战,写了一大堆重复的故障转移逻辑,简直乱糟糟的,看得我头疼。

为了解决这个问题,我进行了一次大扫除:

- 引入了一个通用的 `_execute_with_failover` 执行器,把所有“模型失败就换下一个”的脏活累活都统一管理起来了。
- 重构了所有相关的请求方法(文本、图片、语音、嵌入),让它们变得更清爽,只专注于自己的核心任务。
- 升级了 `_model_scheduler`,现在它会智能地根据实时负载给模型排队,谁最闲谁先上。那个笨笨的 `_select_model` 就被我光荣地裁掉了。

这次重构之后,代码的可维护性和健壮性都好多了,再加新功能也方便啦。哼哼,快夸我!
2025-09-24 15:00:39 +08:00
minecraft1024a
63bf20f076 feat(gemini): 为 Gemini 客户端添加 thinking_budget 支持
新增对 Gemini 模型 "thinking" 功能的支持,允许通过 `thinking_budget` 参数查看模型的思考过程。

- 实现了 `clamp_thinking_budget` 方法,根据不同模型(如 2.5-pro, 2.5-flash)的限制来约束和验证 `thinking_budget` 的值。
- 支持特殊值:-1(自动模式)和 0(禁用模式,如果模型允许)。
- 默认禁用所有安全设置(safetySettings),以减少不必要的回答屏蔽。
2025-09-24 14:33:43 +08:00
minecraft1024a
7feae466c3 Megre Pull Request #1260 from MaiCore:https://github.com/MaiM-with-u/MaiBot/pull/1260 2025-09-24 14:17:32 +08:00
minecraft1024a
29c9dac4a4 refactor(db): 移除 MongoDB 相关代码
从数据库模块中移除了所有与 MongoDB 相关的代码,包括连接逻辑、`get_db` 函数和 `DBWrapper` 代理类。

项目将统一使用 SQLAlchemy 作为唯一的数据库接口,此更改旨在简化代码库并消除不再需要的依赖。

BREAKING CHANGE: 全局 MongoDB 实例 `memory_db` 和 `get_db` 函数已被移除。所有数据库交互现在都应通过 SQLAlchemy 会话进行。
2025-09-24 14:06:34 +08:00
minecraft1024a
8ff4687670 fix(db): 修复数据库迁移中列和索引的创建逻辑
- 增强了添加列时对默认值的处理,以兼容不同数据库方言(例如 SQLite 的布尔值)。
- 切换到更标准的 `index.create()` 方法来创建索引,提高了稳定性。
- 调整了启动顺序,确保数据库在主系统之前完成初始化,以防止竞争条件。
2025-09-24 13:46:44 +08:00
minecraft1024a
ae738ef8cb perf(memory): 优化记忆系统数据库操作并修复并发问题
将消息记忆次数的更新方式从单次写入重构为批量更新,在记忆构建任务结束时统一执行,大幅减少数据库写入次数,显著提升性能。

此外,为 `HippocampusManager` 添加了异步锁,以防止记忆巩固和遗忘操作并发执行时产生竞争条件。同时,增加了节点去重逻辑,在插入数据库前检查重复的概念,确保数据一致性。
2025-09-23 19:15:58 +08:00
minecraft1024a
4630728760 老rust_video我为你踩背来喽(把他删了 2025-09-23 17:20:57 +08:00
minecraft1024a
a6b6acc1a6 feat(config): 自动移除更新中已废弃的配置项
在版本更新过程中,新增一个步骤来对比用户配置与最新的模板文件。

此变更会自动删除用户配置文件中所有在模板中不再存在的键,以保持配置的整洁性,并防止因过时的配置项导致潜在的兼容性问题或混淆。
2025-09-23 16:13:00 +08:00
tt-P607
8bafd15800 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-23 15:24:45 +08:00
tt-P607
a32759687b feat(chat): 增加已读标记以聚焦未读消息
为聊天上下文生成逻辑引入了“已读标记” (read_mark) 机制。

当生成回复时,可以在历史消息中插入一个明确的分隔符,以告知模型哪些消息是它已经看过的旧消息,哪些是需要关注的新消息。

这有助于模型更好地聚焦于未读内容,提升上下文感知能力和回复的相关性。

同时,将 Prompt 模板中的“群聊”等硬编码文本参数化,以更好地适配私聊等不同聊天场景。
2025-09-23 15:24:28 +08:00
minecraft1024a
921eaddf9c ci(workflow): 移除自动创建预发布的工作流
该工作流会在每次推送到 master 分支时创建一个预发布版本,现已不再需要此自动化流程。
2025-09-23 14:52:42 +08:00
minecraft1024a
033752dc22 refactor(config): 移除 breaking 模式配置项
随着 breaking 模式相关逻辑被移除,其配置项已不再需要。
本次提交从配置文件模板中删除了 `enable_breaking_mode` 选项,并更新了内部版本号。
2025-09-23 14:35:16 +08:00
minecraft1024a
f7942a8e2a Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-23 14:32:29 +08:00
minecraft1024a
04e40624f0 ci(workflow): 为预发布标签添加 'MoFox-' 前缀 2025-09-23 14:32:26 +08:00
tt-P607
8e2a14a6e4 refactor(chat): 移除 breaking 模式下复杂的消息等待机制
原有的 breaking 模式等待逻辑过于复杂,它会累积新消息的兴趣值,并根据动态阈值(受专注度和发言频率影响)决定何时响应。这种机制可能导致响应延迟且行为难以预测。

本次重构完全移除了该等待与累积机制。现在,系统一旦收到任何新消息,就会立即处理并计算其平均兴趣值,从而确保了响应的及时性和逻辑的简洁性。
2025-09-23 14:30:39 +08:00
minecraft1024a
49baa68bbb ci(workflow): 为预发布工作流添加写入权限
为 GITHUB_TOKEN 授予 `contents: write` 权限,以允许工作流创建 GitHub Release。
2025-09-23 14:16:08 +08:00
minecraft1024a
b7fba5c8ed fix(schedule): 修复日程生成在连续失败时无限重试的问题
先前的日程生成逻辑使用无限循环进行重试。在 LLM 服务持续失败或返回无效数据的情况下,这可能导致程序陷入死循环。

本次修改将重试机制改为有固定上限(3次)的循环。如果所有尝试均失败,将记录错误并返回 None,从而确保程序的健壮性。
2025-09-23 14:13:44 +08:00
minecraft1024a
b6792149f9 fix(permission): 将权限管理器初始化改为异步
`PermissionManager` 的 `__init__` 方法中包含了同步的数据库初始化操作,这会在异步环境中阻塞事件循环。

本次提交将数据库连接的逻辑移至一个新的异步方法 `initialize()` 中,并在应用启动时显式调用和等待它。这确保了数据库的初始化过程是异步执行的,避免了潜在的性能问题。

BREAKING CHANGE: `PermissionManager` 实例化后需要手动调用并等待 `initialize()` 方法来完成数据库初始化。
2025-09-23 14:08:54 +08:00
minecraft1024a
1f2956e725 fix(db): 适配 SQLAlchemy 2.0 API 变更
更新了与数据库交互的代码,以适配 SQLAlchemy 2.0 引入的 API 变更,解决相关的废弃警告和异步调用问题。

主要变更包括:
- 使用 `scalars().first()` 替代已废弃的 `scalar()` 方法。
- 在获取所有标量结果时显式调用 `.all()`。
- 对异步引擎 `get_engine()` 的调用进行 `await`。
- 移除了向 Inspector 方法(如 `get_table_names`)传递多余的 `conn` 参数。
2025-09-23 14:05:16 +08:00
minecraft1024a
d0b4b8bb8b fix(plugin_system): 修复无配置插件加载时产生不必要警告
对于未定义 `config_schema` 的插件,现在会将其视作一种正常情况,并为其分配一个空的配置。

此举修复了先前版本中,这类插件在加载时会错误地触发“配置文件不存在”警告的问题。同时将生成默认配置文件的日志等级从 debug 调整为 info,使其在默认情况下可见。
2025-09-23 13:10:44 +08:00
minecraft1024a
e24634d818 ***数据库怎么有虫子啊 2025-09-23 12:41:38 +08:00
Furina-1013-create
a02c1f095c ?
如果国家立法禁止🥬🖊️打音游
相传,有一个理想国

理想国有一套完善的法律法规,其中就包含🥬🖊️不能打音游

每个孩子出生后,科学家都会用一个底力检测设备检测TA的底力

如果底力足够高,国王会为TA举办一个神圣的颁奖典礼,允许TA踏入神圣的音游殿堂,这是对TA底力的肯定

如果底力过低,亲朋好友都松了一口气,因为这意味着这个孩子将免受音游的折磨

毕竟🥬🖊️是不能打音游的

但这个国家有一个神秘的传说

那就是其实被挑选去打音游的孩子,其实早就被国王献祭了!

证据一目了然,每个周末和寒暑假,人们上街娱乐散步,从未有人见过打音游的

可人怎么能没有周末和寒暑假呢?不打音游的人苦思冥想

最终得出结论:那些打音游的,一定是被国王献祭了

-

凌晨三点,一个音游人激动地从机厅走出来

他的口中喃喃自语:噫,好!我P了!

静谧的夜,大家都睡了

只有路过的环卫工人看到他疯癫的样子,一眼就看出他是音游人

心中十分害怕,连忙跑回家,人们奔走相告:

原来音游人没死,他们只是疯了!

-

染上音游,就好像一辈子都在xing歌

打音游人在xing歌的轮回中,纷纷成了哲学家

有一天,一个音游哲学家陷入沉思:

国家禁止🥬🖊️打音游

但如果不是🥬🖊️的话,为什么要打音游来折磨自己?

由此可得,这条法规不成立

大彻大悟的音游人们意识到自己被欺骗了,承受了很多不必要的折磨

由于这地狱般生活的摧残,音游人们变成了反社会人格

愤怒之下,他们研发出炸药,炸平了理想国

毁灭了整个世界

-

几亿年后,这片土地进化出了新的文明

新的国家出现了

新的国家里有新的音游入,他们在日复一日的折磨中,怀疑自己的底力和手法,不明白自己为什么要受这样的折磨

不禁感叹:

唉!如果国家禁止🥬🖊️打音游就好了!
2025-09-23 00:02:41 +08:00
Furina-1013-create
de48d2ae02 将回复规则部分的提示词让用户可以自定义,详细请看配置文件 2025-09-22 22:44:15 +08:00
minecraft1024a
cf0ee62c9a Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-21 13:30:30 +08:00
minecraft1024a
742a8c2c37 feat(plugin_system): 导出 schedule_api
将 schedule_api 添加到插件系统的 API 导出列表中,使其对插件可用。
2025-09-21 13:30:27 +08:00
雅诺狐
e7c5a7a2bb Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-21 13:09:48 +08:00
雅诺狐
df809b6dc3 更改权限 2025-09-21 13:09:29 +08:00
minecraft1024a
798f6fde12 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-21 13:05:16 +08:00