Commit Graph

71 Commits

Author SHA1 Message Date
minecraft1024a
8c97774465 ruff ci 2025-10-18 11:11:05 +08:00
Windpicker-owo
f22e6365cc feat(action): 重构 Action 激活机制并添加 go_activate() 方法
引入新的 Action 激活机制,允许通过重写 go_activate() 方法来自定义激活逻辑。提供了三个工具函数:
- _random_activation(): 随机概率激活
- _keyword_match(): 关键词匹配激活
- _llm_judge_activation(): LLM 智能判断激活

主要变更:
- 在 BaseAction 中添加 go_activate() 抽象方法和相关工具函数
- 更新 ActionModifier 使用新的激活判断逻辑
- 在 hello_world_plugin 中添加新的激活方式示例
- 更新文档说明新的激活机制
- 保持向后兼容,旧的激活类型配置仍然可用

BREAKING CHANGE: Action 激活判断现在通过 go_activate() 方法进行,旧的激活类型字段已标记为废弃但仍然兼容
2025-10-17 20:16:15 +08:00
雅诺狐
875ee4813c refactor: 清理项目结构并修复类型注解问题
修复 SQLAlchemy 模型的类型注解,使用 Mapped 类型避免类型检查器错误
- 修正异步数据库操作中缺少 await 的问题
- 优化反注入统计系统的数值字段处理逻辑
- 添加缺失的导入语句修复模块依赖问题
2025-10-07 11:35:12 +08:00
minecraft1024a
9d705463ce ruff fix但指定了--unsafe-fixes 2025-10-05 21:48:32 +08:00
minecraft1024a
a9d369b026 refactor(video): 视频分析模块重构为纯 inkfox 实现
将视频分析模块 `utils_video.py` 完全重构,移除旧的 rust_video 模块和 Python/OpenCV 降级实现,统一使用 `inkfox.video` 库提供的 Rust 扩展能力。

主要变更:
- **依赖简化**: 移除对 `rust_video` 和 `opencv-python` 的依赖,仅依赖 `inkfox`。
- **代码重构**: 删除大量冗余代码,包括旧的 Rust 模块接口、Python 降级逻辑、复杂的并发控制和多种抽帧模式。
- **性能统一**: 关键帧提取统一使用 `inkfox.video.extract_keyframes_from_video`,确保所有环境下的性能一致性。
- **逻辑简化**: 简化了缓存逻辑、并发控制和配置项,使代码更清晰、更易于维护。
- **API 统一**: `_select_model` 和 `_execute_request` 方法调用更新,以适应 `LLMRequest` 的最新接口。
- **文档更新**: 更新了模块文档字符串,以反映新的实现和功能。
2025-10-05 14:00:04 +08:00
minecraft1024a
2c74b472ab style: 统一代码风格并进行现代化改进
对整个代码库进行了一次全面的风格统一和现代化改进。主要变更包括:

- 将 `hasattr` 等内置函数中的字符串参数从单引号 `'` 统一为双引号 `"`。
- 采用现代类型注解,例如将 `Optional[T]` 替换为 `T | None`,`List[T]` 替换为 `list[T]` 等。
- 移除不再需要的 Python 2 兼容性声明 `# -*- coding: utf-8 -*-`。
- 清理了多余的空行、注释和未使用的导入。
- 统一了文件末尾的换行符。
- 优化了部分日志输出和字符串格式化 (`f"{e!s}"`)。

这些改动旨在提升代码的可读性、一致性和可维护性,使其更符合现代 Python 编码规范。
2025-10-05 13:21:27 +08:00
minecraft1024a
3764b3a8a6 refactor(plugin_system): 引入 PluginMetadata 替代 manifest.json
将插件元数据定义从外部 `_manifest.json` 文件迁移到插件 `__init__.py` 文件中的 `__plugin_meta__` 变量。此举简化了插件加载流程,减少了文件I/O,并使元数据与插件代码更紧密地耦合。

主要变更:
- 引入 `PluginMetadata` 数据类来标准化插件元数据。
- 插件基类 `PluginBase` 现在直接接收 `PluginMetadata` 对象,不再负责解析 JSON 文件。
- 插件管理器 `PluginManager` 调整加载逻辑,从插件模块的 `__plugin_meta__` 属性获取元数据。
- 删除了 `manifest_utils.py` 及其相关的验证和版本比较逻辑,简化了依赖关系。
- 更新了所有内置插件,以采用新的元数据定义方式,并删除了它们各自的 `_manifest.json` 文件。

BREAKING CHANGE: 插件加载机制已改变。所有插件必须在其 `__init__.py` 中定义一个 `__plugin_meta__` 变量,该变量是 `PluginMetadata` 类的实例,并移除旧的 `_manifest.json` 文件。
2025-10-04 16:17:03 +08:00
John Richard
7923eafef3 re-style: 格式化代码 2025-10-02 20:26:01 +08:00
minecraft1024a
88063f6e1b refactor(plugins): 将多个社交互动插件整合到 social_toolkit_plugin
将 `set_emoji_like`, `at_user`, `poke`, `reminder`, 和 `set_typing_status` 等多个独立的内置插件的功能进行重构和整合,统一归入一个新的 `social_toolkit_plugin` 插件中。

这次重构旨在:
- 减少插件数量,简化插件管理和维护。
- 整合相似的功能(如用户互动、提醒等),提高代码复用性。
- 为未来添加更多社交互动功能提供一个统一的框架。
2025-09-30 21:50:19 +08:00
Windpicker-owo
ff24bd8148 Merge afc branch into dev, prioritizing afc changes and migrating database async modifications from dev 2025-09-27 23:37:40 +08:00
minecraft1024a
9c1a7ff123 ruff 2025-09-26 20:16:46 +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
e3b08b2982 refactor(set_emoji_like): 使用 send_command 方法发送表情回应
将原先直接调用底层 `adapter_command_to_stream` 的方式重构为使用封装好的 `self.send_command` 辅助方法。

此次重构简化了动作实现代码,提高了可读性,并更好地封装了命令发送的逻辑。
2025-09-24 18:58:46 +08:00
minecraft1024a
5b8cc51dad revert 1a24233b86deb0c4d8446ff31c072ea4b18572aa中的plugin.py 2025-09-24 15:51:28 +08:00
tt-P607
1a24233b86 feat(core): 实现消息异步处理并引入LLM驱动的智能表情回应
本次更新对系统核心处理流程和插件功能进行了重要升级,主要包含以下两方面:

1.  **消息处理异步化**:
    - 在 `main.py` 中引入了 `asyncio.create_task` 机制,将每条消息的处理过程包装成一个独立的后台任务。
    - 这解决了长时间运行的AI或插件操作可能阻塞主事件循环的问题,显著提升了机器人的响应速度和系统稳定性。
    - 为后台任务添加了完成回调,现在可以详细地记录每个消息处理任务的成功、失败或取消状态及其耗时,便于监控和调试。

2.  **`set_emoji_like` 插件智能化**:
    - 为 `set_emoji_like` 插件增加了LLM驱动的表情选择功能。当动作指令未指定具体表情时,插件会自动构建包含聊天上下文、情绪和人设的提示,请求LLM选择一个最合适的表情进行回应。
    - 为支持此功能,对AFC规划器的提示词进行了优化,为LLM提供了更清晰的参数示例和规则,提高了动作生成的准确性。

此外,为了统一日志规范,将 `[所见]` 消息接收日志集中到 `bot.py` 中,确保在任何过滤逻辑执行前记录所有收到的消息,并移除了插件中重复的日志。
2025-09-24 15:43:12 +08:00
tt-P607
1b8876c4bb feat(affinity_flow_chatter): 重构计划器以支持多动作并优化思考逻辑
本次提交对亲和流聊天器(AFC)的计划与决策核心进行了重大重构和功能增强,旨在提升其响应的灵活性、鲁棒性和可观测性。

主要变更包括:

1.  **多动作支持与解析重构**:
    -   `PlanFilter` 现在能够正确解析并处理 LLM 返回的动作列表(`"actions": [...]`),而不仅限于单个动作,这使得机器人能够执行更复杂的组合行为。
    -   增强了动作解析的鲁棒性,当找不到 `target_message_id` 时会优雅降级(如 `reply` 变为 `no_action`),并会根据当前实际可用的动作列表对 LLM 的选择进行验证。

2.  **提示词工程与思考模式优化**:
    -   重新设计了核心 Planner 提示词,将 `thinking` 字段定义为“思绪流”,引导 LLM 生成更自然、更符合角色的内心独白,而非简单的决策理由,从而提升决策质量和角色扮演的沉浸感。
    -   强制要求 LLM 为需要目标消息的动作提供 `target_message_id`,提高了动作执行的准确性。

3.  **上下文构建与鲁棒性增强**:
    -   在 `PlanFilter` 中增加了上下文回退机制,当内存中缺少历史消息时(如冷启动),会自动从数据库加载最近的消息记录,确保决策所需上下文的完整性。
    -   简化了提供给 LLM 的未读消息格式,移除了兴趣度分数等内部信息,并加入了用户昵称,使其更易于理解和处理。

4.  **可观测性与日志改进**:
    -   在 AFC 的多个关键节点(消息接收、决策、动作执行)增加了彩色的详细日志,使其决策流程像 HFC 一样清晰可见,极大地方便了调试。
    -   将系统中多个模块(视频分析、兴趣度匹配、情绪管理)的常规日志级别从 `INFO` 调整为 `DEBUG`,以减少在生产环境中的日志噪音。

5.  **动作描述优化**:
    -   优化了 `set_emoji_like` 和 `emoji` 等动作的描述,使其意图更清晰,帮助 LLM 做出更准确的动作选择。
2025-09-24 01:41:04 +08:00
雅诺狐
4ca2dfe65a refactor(chat): 优化自消息处理逻辑和回复目标选择机制
- 添加自消息阻断机制,避免机器人回复自己的消息
- 重构回复目标选择逻辑,优先选择非机器人用户的消息作为回复目标
2025-09-20 18:08:07 +08:00
雅诺狐
5f3203c6c9 refactor(db): 修正SQLAlchemy异步操作调用方式
移除session.add()方法的不必要await调用,修正异步数据库操作模式。主要变更包括:

- 将 `await session.add()` 统一改为 `session.add()`
- 修正部分函数调用为异步版本(如消息查询函数)
- 重构SQLAlchemyTransaction为完全异步实现
- 重写napcat_adapter_plugin数据库层以符合异步规范
- 添加aiomysql和aiosqlite依赖支持
2025-09-20 17:25:48 +08:00
tt-P607
98a6cba33e feat(actions): 支持同时进行回复与其他动作
重构了动作执行流程,以支持更丰富的多动作组合,例如在发送文本回复的同时发送一个表情。

主要变更:
- **执行流程**: 在 `CycleProcessor` 中,将动作分为“回复”和“其他”两类。系统会先串行执行回复动作,再并行执行所有其他动作,确保了核心回复的优先性。
- **规划逻辑**: 在 `Planner` 中优化了提示词,并增加后处理步骤,以鼓励并确保在回复时触发补充性动作(如100%概率的emoji)。
- **emoji动作**: 重构了表情选择逻辑,现在会评估所有可用的表情,而不仅仅是随机抽样,提高了选择的准确性。
- **修复**: 修复了 `ActionModifier` 中随机激活概率为100%的动作可能不触发的bug。
2025-09-09 15:37:49 +08:00
Windpicker-owo
6c042cc73f 迁移napcat插件至built_in 2025-09-06 03:38:43 +08:00
minecraft1024a
e1fbdaad8c rrrrrrrrrrrrrruuuuuuuuuuuuuuuuuuuuffffffffffffffffffffffffff 2025-09-05 21:01:32 +08:00
minecraft1024a
513757a8ee chore: format code and remove redundant blank lines
This commit applies automated code formatting across the project. The changes primarily involve removing unnecessary blank lines and ensuring consistent code style, improving readability and maintainability without altering functionality.
2025-09-05 20:58:03 +08:00
Windpicker-owo
5592ed6fce 修复导入问题 2025-09-03 22:56:12 +08:00
Windpicker-owo
50f8b385ee 升级ada插件,现在插件与ada程序完全同步 2025-09-03 22:48:06 +08:00
Windpicker-owo
368517267e fix: at和回复只显示qq号的问题 2025-09-03 17:51:55 +08:00
Windpicker-owo
763bf07de6 refactor(napcat-adapter): remove test handler and restructure plugin initialization
移除APITestHandler测试类,将插件初始化逻辑重构为独立的事件注册方法,更新日志配置以支持napcat适配器模块。这些更改清理了测试代码并改进了插件架构的清晰度。
2025-08-31 23:15:31 +08:00
Windpicker-owo
8149731925 修复代码格式和文件名大小写问题 2025-08-31 20:50:17 +08:00
Windpicker-owo
5217b78952 ruff 2025-08-31 00:34:21 +08:00
Windpicker-owo
d1d59591d8 ruff 2025-08-31 00:20:17 +08:00
Windpicker-owo
79eec5f66e 修复ada插件 2025-08-30 22:06:00 +08:00
Windpicker-owo
7ca9ac9ee6 test 2025-08-30 21:39:25 +08:00
Windpicker-owo
8f9dea12b9 更新todo 2025-08-30 21:20:12 +08:00
Windpicker-owo
3719dc411c ruff 2025-08-30 21:14:54 +08:00
Windpicker-owo
03969b4a82 Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-08-30 17:57:05 +08:00
Windpicker-owo
142e72ba6c feat(napcat): 补充全部群事件处理与事件定义
新增近 30 个群相关事件处理器,覆盖群信息、成员管理、禁言、公告、精华消息等功能;修正合并转发消息事件常量拼写;补全事件类型注解与详细文档。所有群事件统一使用 `NapcatEvent.GROUP.*` 枚举值与对应 Handler。
2025-08-30 17:55:13 +08:00
minecraft1024a
0e73b2643e ruff ci 2025-08-30 14:21:59 +08:00
Windpicker-owo
c6a0522316 feat(napcat): 增加消息与交互相关事件处理模块
新增多个事件处理器,支持私聊/群聊消息管理、历史记录、戳一戳、合并转发、表情点赞、AI语音等丰富消息功能,统一通过 napcat 接口发送并标准化返回 HandlerResult。

新增事件类型及其文档化注释,涵盖:
- SEND_PRIVATE_MSG / SEND_POKE / DELETE_MSG
- GET_GROUP_MSG_HISTORY / GET_MSG / GET_FORWARD_MSG
- SET_MSG_EMOJI_LIKE / GET_FRIEND_MSG_HISTORY / FETCH_EMOJI_LIKE
- SEND_FORWARD_MSG / SEND_GROUP_AI_RECORD

移除冗余空行并修正枚举名称拼写(FORWARF_MSG → FORWARD_MSG),为使用者提供完整入参和返回值说明。
2025-08-30 02:15:12 +08:00
雅诺狐
cb93b38162 Add Bilibili video analysis plugin
Introduced a new 'bilibli' plugin for Bilibili video parsing and AI-based content analysis. Added plugin manifest, base module for video info retrieval and analysis, and plugin integration with tool registration. Updated .gitignore to include the new plugin directory.
2025-08-30 00:26:44 +08:00
minecraft1024a
65fee5458a refactor(energy): 移除is_sleeping方法对wakeup_manager的依赖
将`schedule_manager.is_sleeping`的调用从`is_sleeping(self.context.wakeup_manager)`修改为`is_sleeping()`,以解耦对`wakeup_manager`的直接依赖。

同时,在`napcat_adapter_plugin`中将`enable_plugin`的默认值修改为`False`。
2025-08-29 20:04:05 +08:00
minecraft1024a
1bad63fcbd ruff ci 2025-08-29 18:34:13 +08:00
Windpicker-owo
c0033c4acc Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-08-29 16:58:55 +08:00
Windpicker-owo
edc7b36724 移除测试 2025-08-29 16:58:52 +08:00
minecraft1024a
01455156a7 Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-08-29 16:23:12 +08:00
minecraft1024a
aa3ecfb63a feat:重写了hello_world 2025-08-29 16:23:08 +08:00
Windpicker-owo
925604a708 feat(napcat): 新增18个账号相关事件处理器与完善文档
为NapCat适配器添加完整的账号操作功能:
- 在线客户端查询、在线状态设置、最近联系人
- 好友列表、分组列表、删除好友、点赞
- 头像设置、个性签名、自定义在线状态
- 小程序卡片生成、用户信息/状态查询
并同步补充事件类型注解
BREAKING CHANGE: BaseEvent构造函数不再接受可变默认实参
2025-08-29 16:20:19 +08:00
Windpicker-owo
288a686022 Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-08-29 14:16:30 +08:00
Windpicker-owo
ad18af3c99 feat(napcat): 添加账号设置处理器和事件类型注解
为napcat插件增加SetProfileHandler来处理账号信息设置事件
- 实现参数解析和napcat API调用逻辑
- 添加详细的事件类型文档注解,包含参数说明和返回格式
- 扩展事件枚举类,新增多个群组相关操作事件
- 在插件初始化时自动注册所有事件处理器
- 为HandlerResultsCollection添加获取消息结果的方法

同时添加接口测试处理器用于验证事件系统的正常工作
2025-08-29 14:16:24 +08:00
雅诺狐
f33bb57c75 Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-08-29 13:48:01 +08:00
雅诺狐
865159ece3 Refactor plugin system and update permission checks
Removed the permission_example plugin and its files. Refactored plugin hot reload and manager logic for more robust reloading, deep reload, and cache clearing, including improved debounce and plugin name resolution. Updated MaiZone plugin and actions to use the new permission API for feed read/send actions, and registered new permission nodes. Enhanced plugin management commands with PlusCommand, improved help, and added hot reload and cache management commands.
2025-08-29 13:47:54 +08:00
tt-P607
f9a6614fb1 小修复,还有就是炸掉hello world! 2025-08-29 07:58:49 +08:00