Commit Graph

1268 Commits

Author SHA1 Message Date
minecraft1024a
5f3329e7c9 refactor(llm_models): 移除官方Gemini客户端并改用aiohttp实现
官方的 `google-generativeai` 库存在一些问题且似乎已不再积极维护,导致依赖关系和稳定性方面存在风险。

为提高稳定性和可维护性,现已移除基于该官方库的 `gemini_client.py` 实现。相应地,在配置文件模板中,`client_type` 已从 "gemini" 更新为 "aiohttp_gemini",以引导用户使用新的、基于 `aiohttp` 的异步客户端。
2025-08-26 21:14:07 +08:00
minecraft1024a
2db42292d2 refactor(config): 整合搜索服务配置并移除废弃选项
将原先独立的 Exa 和 Tavily 搜索引擎配置项合并到 `web_search` 配置块中,以实现更统一的管理。同时,移除了已废弃的 `Telemetry` 和部分 `Experimental` 功能配置,简化了整体配置文件结构。

主要变更:
-   `ExaConfig` 和 `TavilyConfig` 被移除,其 API 密钥设置已迁移至 `WebSearchConfig`。
-   删除了 `TelemetryConfig` 及其在主配置中的引用。
-   简化了 `planner` 的自定义提示词逻辑,现在仅通过内容是否为空来判断是否启用。
-   更新了配置文件模板,以反映上述结构调整并移除过时的注释和配置项。
2025-08-26 21:10:06 +08:00
minecraft1024a
d64cfc651f Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-08-26 20:45:11 +08:00
minecraft1024a
c63de5ddd5 refactor(config): 将反截断设置移至模型配置 #真的能算refactor吗
反截断(anti-truncation)功能与特定模型的行为和能力更为相关,而不是任务本身的属性。

此更改将该设置从 `TaskConfig` 移动到 `ModelInfo`,以实现更合理的配置分组和更精细的控制。代码逻辑和配置文件模板也已相应更新。

BREAKING CHANGE: `anti_truncation` 配置项已从 `[model_task_config]` 部分移动到 `[[models]]` 下的具体模型配置中。用户需要更新其配置文件以适配新结构。
2025-08-26 20:45:04 +08:00
Windpicker-owo
6bf312e043 Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-08-26 20:21:28 +08:00
minecraft1024a
1e037e5ce9 feat(maizone): 新增QQ空间互通组功能,根据聊天上下文生成说说
引入了全新的“QQ空间互通组”功能。用户可以配置多个群聊为一个互通组。
在通过指令发布说说时,系统会自动获取这些群聊的近期聊天记录作为上下文,从而生成与当前讨论话题更相关的说说内容。

- 在 `config.toml` 中新增了 `[maizone_intercom]` 配置项用于定义互通组。
- 重构并增强了动态(说说)的拉取逻辑,提高了对不同数据格式的兼容性和解析的稳定性。
- 对项目中的多个文件进行了代码清理,移除了未使用的导入,使代码更加整洁。
2025-08-26 20:20:54 +08:00
Windpicker-owo
38fba02e36 修复双引号问题 2025-08-26 20:20:25 +08:00
minecraft1024a
cbd115efdb feat(monthly_plan): 增强月度计划系统,引入状态管理和智能抽取
对月度计划系统进行了全面的重构和功能增强,以提供更智能、更可持续的计划管理体验。

主要变更包括:
- **引入状态生命周期**: 废弃了原有的 `is_deleted` 软删除标记,引入了更明确的 `status` 字段 (`active`, `completed`, `archived`),用于管理计划的整个生命周期。
- **增加使用统计与自动完成**: 新增 `usage_count` 和 `last_used_date` 字段来跟踪计划的使用情况。当计划使用次数达到可配置的阈值后,会自动标记为 `completed`。
- **实现智能计划抽取**: 为每日日程生成实现了新的智能抽取算法。该算法会优先选择使用次数较少且近期未被使用的计划,以增加计划的多样性并避免重复。
- **更新配置选项**: 移除了旧的概率删除相关配置,增加了 `completion_threshold`、`avoid_repetition_days` 等新选项以支持新逻辑。
- **数据库模型更新**: 更新了 `MonthlyPlan` 的数据库模型和索引,以支持新功能并优化查询性能。保留 `is_deleted` 字段以兼容旧数据。
2025-08-26 19:19:53 +08:00
雅诺狐
0e815779b7 Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-26 14:20:32 +08:00
雅诺狐
4a44ba9866 全面更换orjson 2025-08-26 14:20:26 +08:00
tt-P607
1ca365168a fix(maizone_refactored): 修复获取cookie时响应为空导致的错误 2025-08-26 12:11:08 +08:00
tt-P607
e5d6b6979b fix(chat): 修复关键词非列表形式时导致的解析错误
在处理记忆关键词时,旧代码使用 `ast.literal_eval` 来解析存储为字符串的关键词列表。当关键词字段为空或格式不正确时,这会引发 `ValueError` 或 `SyntaxError`。

本次修改将解析方式更换为 `json.loads`,并增加了 `try-except` 块来处理可能的 `json.JSONDecodeError`。同时,在添加记忆时,使用 `json.dumps` 来确保关键词列表被正确地序列化为 JSON 字符串,从而保证了数据存储和读取的健壮性和一致性。
2025-08-26 12:07:30 +08:00
tt-P607
9cea223c13 Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-26 12:03:07 +08:00
tt-P607
45ccab6033 fix(llm_models): 修复模型信息不存在时引发的属性错误
在处理模型信息 `model_info` 为 `None` 的情况下,直接访问 `model_info.name` 会导致 `AttributeError`。

此提交通过以下方式修复了该问题:
- 在 `_select_model` 调用后立即将 `model_info.name` 赋值给 `model_name` 变量,确保后续使用时该变量已定义。
- 在 `_handle_error` 方法中,当 `model_info` 可能为 `None` 时,增加了一个条件检查,如果 `model_info` 不存在,则将 `model_name` 设为 "unknown",从而避免了潜在的 `AttributeError`。
2025-08-26 12:01:39 +08:00
雅诺狐
bfabf896b5 更新作者信息 2025-08-25 21:53:06 +08:00
Windpicker-owo
a3adbc4fb3 Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-25 21:15:27 +08:00
Windpicker-owo
4f7558cd24 消息处理的细节 2025-08-25 21:15:18 +08:00
Furina-1013-create
9b93afc0b8 Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-25 20:16:38 +08:00
Furina-1013-create
1095b7115d 这个不会改视频识别的入来优化了一下视频识别的prompt,狐狐大佬补药鞭挞我呜呜呜~
同步改进bot配置文件模板(这回没有忘记改版本号了)
2025-08-25 20:16:19 +08:00
tt-P607
47bfc170bf Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-25 20:00:19 +08:00
tt-P607
3117aa58b9 feat(config): 优化视频分析并引入可配置的提示词
将视频分析的提示词从硬编码字符串修改为从全局配置中读取,提高了灵活性和可维护性。同时,在生成回复时注入了新的引导语,使AI能以第一人称分享观后感,优化了用户体验。
2025-08-25 19:59:30 +08:00
Furina-1013-create
8afb5b545d 炸飞了一点石山,将主动思考的id配置修改为分群聊/私聊的两个id配置然后增加了区分平台的功能
顺手改了一个注释的位置,它在的位置错了
应该在主动思考上面而不是下面的
2025-08-25 19:52:18 +08:00
tt-P607
469e0f38a5 Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-25 19:23:25 +08:00
tt-P607
0b237bcab1 修改了提示词,现在bot不会认为自己看的是视频分析,而是自己看的了 2025-08-25 19:22:28 +08:00
Windpicker-owo
38c5ceddb8 Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-25 19:12:31 +08:00
Windpicker-owo
272f48299a 修复post_llm,以及event使用说明 2025-08-25 19:12:26 +08:00
tt-P607
75b878d692 refactor(chat): 统一事件触发器中的stream_id来源
将`cycle_processor`中事件触发的`stream_id`来源从`self.chat_stream.stream_id`更改为`self.context.stream_id`,以保持代码库中的一致性。

在`default_generator.py`中初始化了`llm_response`变量,以避免潜在的引用前赋值错误。
2025-08-25 19:09:04 +08:00
Windpicker-owo
084a425a4f 注册EventHandler组件 2025-08-25 18:18:54 +08:00
Windpicker-owo
5a6415b5fd Merge branch 'master' into migrate-windpicker-changes 2025-08-25 17:47:50 +08:00
雅诺狐
431fc0433b 更新版本号 2025-08-25 17:46:30 +08:00
Windpicker-owo
cbf9a21c1f event重构暂时完成,待测试 2025-08-25 17:46:23 +08:00
雅诺狐
956c16df88 feat(video): 添加按时间间隔的帧提取模式并重构配置读取逻辑
- 新增 time_interval 帧提取模式,支持按指定时间间隔提取视频帧
- 重构 VideoAnalyzer 初始化代码,使用 getattr 统一获取配置参数
- 简化配置读取逻辑,移除冗余的 try-catch 结构
- 优化 _extract_frames_worker 函数参数,支持新的提取模式配置
2025-08-25 17:07:04 +08:00
雅诺狐
9fb92da986 Delete video_worker.py 2025-08-25 16:44:10 +08:00
Windpicker-owo
faf13e39b6 feat: 迁移Windpicker-owo的Event系统重构\n\n- 引入新的BaseEvent和HandlerResult架构\n- 实现灵活的事件订阅与激活机制\n- 添加事件管理器单例模式\n- 支持事件缓存和权重排序\n- 统一事件处理接口 2025-08-25 16:42:34 +08:00
雅诺狐
8054262827 Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-25 16:36:59 +08:00
雅诺狐
0bcc0ba8b5 feat: 添加视频处理多线程优化和消息切片重组功能
- 新增视频帧提取的线程池支持,提升大视频文件处理性能
- 集成消息切片重组器,支持长消息的自动重组处理
- 优化视频帧提取算法,使用numpy进行数值计算优化
- 重构权限管理插件,修复属性访问和方法签名问题
- 清理未使用的导入和代码,提升代码质量
- 默认启用插件管理功能
2025-08-25 16:16:33 +08:00
雅诺狐
ae3c871fb1 更新 sqlalchemy_models.py 2025-08-25 05:28:43 +08:00
雅诺狐
139f037d24 损坏测试
通过更改638行,使数据库处于损坏状态
2025-08-25 04:18:18 +08:00
tt-P607
9adcc2e07d feat(log): 优化唤醒和休眠日志的输出频率
对唤醒度和休眠检查的日志记录进行节流,以减少在消息密集时产生的日志数量。

- 在 `WakeUpManager` 中,唤醒度变化的日志现在每30秒最多输出一次 INFO 级别的日志,其余时间的日志降为 DEBUG 级别。
- 在 `ScheduleManager` 中,休眠期间被唤醒的日志也增加了类似的节流逻辑,以避免日志刷屏。
2025-08-25 02:14:34 +08:00
tt-P607
21aec70e92 我或许修好了反截断?但我无法验证,用gemini 2.5 pro生成日程截断太严重了,连完整的二十四小时都无法输出,gemini 2.5 Flash截断好很多,我试了5次生成的都是完整的,可能修好了?但有待验证,建议在待办上打个问号 2025-08-25 01:55:18 +08:00
tt-P607
46c5eda503 feat(config): 视频分析添加抽帧模式和间隔配置
为视频分析配置增加了 `frame_extraction_mode` 和 `frame_interval_seconds` 两个新选项。这允许用户选择是按固定数量抽帧还是按时间间隔抽帧,提供了更灵活的视频处理方式。
2025-08-25 01:36:45 +08:00
tt-P607
11f86683f2 Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-25 01:22:19 +08:00
tt-P607
d34467abc5 feat(video): 新增按时间间隔抽帧模式
增加了按时间间隔提取视频帧的新模式,与原有的固定总帧数模式并存。用户现在可以通过配置文件选择最适合其需求的抽帧方式。

- 新增 `frame_extraction_mode` 配置项,可选值为 "fixed_number" (固定总帧数) 或 "time_interval" (按时间间隔)。
- 新增 `frame_interval_seconds` 配置项,用于指定时间间隔模式下的抽帧秒数。
- `max_frames` 配置项现在仅在 "fixed_number" 模式下生效。
- 更新了 `VideoAnalyzer` 类以支持两种抽帧逻辑,并从配置中读取新参数。
- 相应地更新了配置文件模板 `bot_config_template.toml`。
2025-08-25 01:21:50 +08:00
雅诺狐
38b64eb339 Update permission_manager.py 2025-08-24 22:44:48 +08:00
雅诺狐
f308adcf5b refactor: 清理代码质量和移除未使用文件
- 移除未使用的导入语句和变量
- 修复代码风格问题(空格、格式化等)
- 删除备份文件和测试文件
- 改进异常处理链式调用
- 添加权限系统数据库模型和配置
- 更新版本号至6.4.4
- 优化SQL查询使用正确的布尔表达式
2025-08-24 22:11:20 +08:00
tt-P607
702112fdc4 feat(config): 增加可配置的唤醒愤怒提示词
将唤醒后愤怒状态下的固定提示词修改为可在配置文件中自定义的选项,提高了灵活性。
默认值保持原有的提示词内容。
2025-08-23 21:31:05 +08:00
tt-P607
0b4e91b835 refactor(schedule): 移除日程生成的结束标记和相关处理逻辑
由于项目内置的LLM响应处理机制已能有效防止消息截断,原先为保证日程生成完整性而引入的`###SCHEDULE_END###`结束标记及其相关检查、清理逻辑已不再必要。

本次重构删除了以下内容:
- Prompt中关于添加结束标记的指令
- `_check_response_completeness`方法
- `_clean_response`方法
- 生成循环中对结束标记的检查和清理调用

这简化了`ScheduleManager`的代码,使其更专注于核心的日程生成与验证逻辑,提高了代码的可读性和维护性。
2025-08-23 21:07:50 +08:00
tt-P607
006c305450 改成异步防止阻塞主程序,还有就是改成无上限重试生成日程,以及结尾加上结束标记,防止虽然时间完整但是日程不完整的截断,tmd傻逼gemini,我去你mlgb,畜生玩意!怎么那么爱空回和截断消息!wcnm!傻逼玩意儿!你别让我逮到你了! 2025-08-23 19:01:32 +08:00
tt-P607
88d56aab50 feat(maizone): 新增日程活动黑名单以防止自动发送
新增了一个配置项 `schedule.activity_blacklist`,允许用户定义一个包含特定关键字的列表。当定时任务检测到的当前日程活动包含这些关键字(如“睡觉”、“睡眠”)时,将跳过本次自动发送说说的流程。

此功能主要解决了在睡眠等不希望被打扰的活动期间,插件仍然会根据日程表自动发送说说的问题。通过引入黑名单机制,可以更智能地过滤掉不适合发布动态的活动,提升了用户体验和插件的实用性。

主要的逻辑变更在 `SchedulerService` 中:
- 在获取到当前活动后,会先检查活动名称是否包含黑名单中的任意关键字。
- 如果匹配成功,则记录日志并跳过本次发送,同时更新 `last_processed_activity` 状态,以避免在黑名单活动结束后立即错误地触发发送。
- 只有当活动不在黑名单中,且与上一次处理的活动不同时,才会触发发送流程。
2025-08-23 17:20:20 +08:00
tt-P607
ab48324c6f fix(chat): 修复睡眠模式下无法通过艾特唤醒的问题
在之前的实现中,当机器人处于睡眠模式时,获取消息的逻辑会过滤掉所有命令消息(`filter_command=True`),这其中也包括了艾特(@)机器人的消息。这导致了用户无法通过艾特来唤醒睡眠中的机器人。

本次修复通过引入一个 `filter_command_flag` 标志来解决此问题。当机器人处于睡眠状态时(`is_sleeping` 为 `True`),该标志会设置为 `False`,从而在获取消息时不过滤命令消息,确保艾特消息能够被正确接收和处理,进而触发唤醒逻辑。

此外,还对 `schedule_manager` 中的睡眠日志记录逻辑进行了优化,增加了时间间隔来避免在睡眠期间频繁打印日志,减少不必要的日志刷屏。
2025-08-23 02:49:28 +08:00