Commit Graph

4382 Commits

Author SHA1 Message Date
Windpicker-owo
181a4f9d59 移除测试 2025-11-19 22:50:09 +08:00
minecraft1024a
dde84d41af refactor(schedule): 重构睡眠系统为状态机模型
将原有的睡眠、失眠、唤醒等分散的布尔标记逻辑重构为一个统一的睡眠状态机(SleepState),以提高代码的可读性、可维护性和可扩展性。

主要变更:
- 引入 `SleepState` 枚举,包含 `AWAKE`, `INSOMNIA`, `PREPARING_SLEEP`, `SLEEPING`, `WOKEN_UP` 状态。
- 在 `ScheduleManager` 中实现 `_update_sleep_state` 作为核心状态机,统一管理所有状态转换。
- 将原有的失眠判断逻辑从 `WakeUpManager` 移至 `ScheduleManager` 的状态机内部,与弹性睡眠决策合并,简化了模块职责。
- `heartFC_chat.py` 中的聊天循环现在直接查询 `ScheduleManager` 的当前状态,而不是处理多个独立的布尔值,使逻辑更清晰。
- 删除了 `WakeUpManager` 中与失眠相关的配置和方法,因为它现在由 `ScheduleManager` 统一管理。
- 删除了配置中已废弃的 `enable_is_sleep` 选项。
2025-11-19 22:50:08 +08:00
Windpicker-owo
eeddf1976c feat(napcat): 新增18个账号相关事件处理器与完善文档
为NapCat适配器添加完整的账号操作功能:
- 在线客户端查询、在线状态设置、最近联系人
- 好友列表、分组列表、删除好友、点赞
- 头像设置、个性签名、自定义在线状态
- 小程序卡片生成、用户信息/状态查询
并同步补充事件类型注解
BREAKING CHANGE: BaseEvent构造函数不再接受可变默认实参
2025-11-19 22:50:07 +08:00
minecraft1024a
b3206f5e7e feat:重写了hello_world 2025-11-19 22:50:06 +08:00
minecraft1024a
5b96d9dc16 chore(config): update bot_config_template version and remove unused option
- Bumps the config version from 6.5.7 to 6.5.8.
- Removes the `prompt_before_install` option which was not implemented.
2025-11-19 22:50:06 +08:00
minecraft1024a
0d072f5059 refactor(config): rename wakeup_system to sleep_system for clarity
This commit refactors the entire "wakeup system" to be named "sleep system". This change provides a more intuitive and accurate name for the functionality, which manages the AI's sleep cycles, sleep pressure, and related behaviors like insomnia and flexible sleep schedules.

The renaming has been applied consistently across all relevant files, including:
- Configuration models (`WakeUpSystemConfig` -> `SleepSystemConfig`)
- Configuration files (`bot_config_template.toml`)
- Core application logic that references these configurations.

Additionally, flexible sleep and pre-sleep notification settings have been moved from the `ScheduleConfig` to the new `SleepSystemConfig` to centralize all sleep-related parameters.
2025-11-19 22:50:05 +08:00
Windpicker-owo
1dbf14c096 feat(napcat): 添加账号设置处理器和事件类型注解
为napcat插件增加SetProfileHandler来处理账号信息设置事件
- 实现参数解析和napcat API调用逻辑
- 添加详细的事件类型文档注解,包含参数说明和返回格式
- 扩展事件枚举类,新增多个群组相关操作事件
- 在插件初始化时自动注册所有事件处理器
- 为HandlerResultsCollection添加获取消息结果的方法

同时添加接口测试处理器用于验证事件系统的正常工作
2025-11-19 22:50:04 +08:00
雅诺狐
0aabd49375 Remove rust-video keyframe extraction API and related files
Deleted the entire src/chat/utils/rust-video directory, including Rust and Python source files, configuration, and documentation. Updated utils_video.py, official_configs.py, and bot_config_template.toml to remove or adjust references to the removed rust-video module. This cleans up the codebase by removing the integrated Rust-based keyframe extraction API and its supporting infrastructure.
2025-11-19 22:50:03 +08:00
Furina-1013-create
b9e8dbcd9f 初步上传基于rust的后端视频关键帧抽帧处理源文件以及readme
但是api还未完成接入
2025-11-19 22:50:03 +08:00
Furina-1013-create
667b6e1520 为即将到来的rust视频组件更新依赖文件.jpg 2025-11-19 22:50:02 +08:00
Furina-1013-create
072fc32821 解决某人不会改的日志刷屏问题,是谁我不说() 2025-11-19 22:50:02 +08:00
tt-P607
f989d674bf 小修复,还有就是炸掉hello world! 2025-11-19 22:50:00 +08:00
Windpicker-owo
584f69871c napcat插件继续更新 2025-11-19 22:49:59 +08:00
minecraft1024a
217ab8739a docs(changelog): 强调第三方更新记录的起始点
在变更日志中,为第三方改版记录的起始说明文字增加了额外的标点符号,使其更加醒目,以便于区分官方更新和社区贡献。
2025-11-19 22:49:57 +08:00
minecraft1024a
3bde7e0173 docs(changelog): 更新0.10.0-alpha版本日志
为即将发布的 `0.10.0-alpha` 版本添加详细的更新日志。

本次更新日志涵盖了新功能、问题修复和代码重构三大方面,全面记录了从持久化回复跟踪、模型故障转移机制等新功能的引入,到多个关键bug的修复,再到项目更名和模块重构等重要变更。
2025-11-19 22:49:55 +08:00
minecraft1024a
2c0ddd4d96 refactor(config): 移除changelog_config并更新模型配置模板
删除了手动维护的`changelog_config.md`文件,因为它已经过时且难以维护。

同时,更新了`model_config_template.toml`文件,将Google Gemini的`client`配置从"gemini"修改为"aiohttp_gemini",以适配新的API客户端。
2025-11-19 22:49:54 +08:00
Windpicker-owo
268f65903c 修复napcat插件 2025-11-19 22:49:53 +08:00
Windpicker-owo
51075c7dd9 修复enable配置 2025-11-19 22:49:52 +08:00
minecraft1024a
6f337a9d3f docs:新增了一份部署指南但是暂时不完整,等我们的文档仓库生出来再说 2025-11-19 22:49:51 +08:00
minecraft1024a
c807d79d64 docs: 更新模型配置指南
- 新增 `gemini` 客户端类型
- 更新 Google API 的 `base_url`
- 移除 `extra_params` 对 `gemini` 客户端的无效说明
- 新增 `anti_truncation` 参数说明
- 增加多个新的模型任务配置示例
- 将文档中的 `MaiBot` 统一为 `MoFox_Bot
2025-11-19 22:49:49 +08:00
minecraft1024a
11ecbf0a25 docs: remove outdated and unused documentation files
A significant number of documentation files, including design documents, user guides, and old images, have been removed to clean up the repository and eliminate outdated information. This reduces clutter and ensures that the documentation accurately reflects the current state of the project.

Key removals include:
- `memory_system_design_v3.md`
- `model_configuration_guide.md`
- `PERMISSION_SYSTEM.md`
- `CONTRIBUTE.md`
- `vector_db_usage_guide.md
2025-11-19 22:49:49 +08:00
minecraft1024a
6ca85ebc7f docs(plugins): remove outdated tool documentation
Removes the `tool-components.md` and `tool_caching_guide.md` files as they are no longer relevant after recent refactoring of the tool and caching systems. This cleanup ensures the documentation stays current with the codebase.
2025-11-19 22:49:47 +08:00
minecraft1024a
a645e766ca refactor(cache): 重构工具缓存机制并优化LLM请求重试逻辑
将工具缓存的实现从`ToolExecutor`的装饰器模式重构为直接集成。缓存逻辑被移出`cache_manager.py`并整合进`ToolExecutor.execute_tool_call`方法中,简化了代码结构并使其更易于维护。

主要变更:
- 从`cache_manager.py`中移除了`wrap_tool_executor`函数。
- 在`tool_use.py`中,`execute_tool_call`现在包含完整的缓存检查和设置逻辑。
- 调整了`llm_models/utils_model.py`中的LLM请求逻辑,为模型生成的空回复或截断响应增加了内部重试机制,增强了稳定性。
- 清理了项目中未使用的导入和过时的文档文件,以保持代码库的整洁。
2025-11-19 22:49:46 +08:00
minecraft1024a
9e720ea80e feat(llm):为LLM请求实现模型故障转移机制
重构了LLM请求执行逻辑,以引入一个健壮的模型故障转移和回退系统。这通过在当前模型失败时自动切换到下一个可用模型,增强了服务的可靠性。

- 引入 `_model_scheduler` 以按顺序迭代任务配置的模型列表。
- 当模型请求因API错误、认证问题或超时等原因失败时,系统现在会自动使用列表中的下一个模型重试该请求。
- 移除了先前针对空回复或截断响应的内部重试逻辑。这类响应现在被视为特定模型尝试的最终失败,不会触发故障转移。
2025-11-19 22:49:44 +08:00
tt-P607
c831dfaee5 feat(maizone): 引入持久化回复跟踪以避免重复回复
引入 `ReplyTrackerService` 来持久化跟踪已回复的评论,确保即使在程序重启后也不会对同一评论进行重复回复。

主要变更:
- 新增 `ReplyTrackerService`,用于记录和管理对特定说说下评论的回复状态。
- 在 `QZoneService` 中重构评论回复逻辑,利用 `ReplyTrackerService` 来判断评论是否已被回复。
- 增加逻辑以验证和清理无效的回复记录,例如当用户手动删除了机器人的回复后,程序能够识别并清除相应的记录,从而可以重新进行回复。
- 将 `ReplyTrackerService` 注册为全局服务,以便在插件内部共享。
2025-11-19 22:49:43 +08:00
tt-P607
6eb2391329 refactor(maizone): 优化说说评论回复逻辑
重构了处理和回复评论的算法,以提高准确性和代码清晰度。

主要变更:
- 在获取说说列表时引入 `is_monitoring_own_feeds` 参数,以区分处理自己和好友的说说,避免跳过对自己说说的评论检查。
- 优化了评论回复逻辑,通过将评论区分为用户评论和自己的回复,更精确地识别未回复的评论,防止了之前可能出现的重复回复或漏回复的问题。
2025-11-19 22:49:43 +08:00
Windpicker-owo
ce64cc68e1 修复event权限,现在每个component都拥有plugin_name属性 2025-11-19 22:49:41 +08:00
Windpicker-owo
7d90ede803 删除过时的代码 2025-11-19 22:49:39 +08:00
minecraft1024a
d4ba286855 refactor(core): remove tool history manager and integrate cache into tool executor
Removes the `ToolHistoryManager` and its associated functionalities, including history recording, querying, and prompt generation. This simplifies the architecture by decoupling tool execution history from the core logic.

The tool caching mechanism is now directly integrated into the `ToolExecutor` by wrapping the `execute_tool_call` method. This ensures that caching is applied consistently for all tool executions that have it enabled, improving performance and reducing redundant calls.

- Deletes `src/common/tool_history.py`.
- Removes tool history related functions from `prompt_builder.py` and `tool_api.py`.
- Adds a `wrap_tool_executor` function in `cache_manager.py` to apply caching logic directly to the `ToolExecutor`.
2025-11-19 22:49:38 +08:00
Windpicker-owo
7f09c8faa1 add event 2025-11-19 22:49:35 +08:00
Windpicker-owo
8fd5acfb2d 接入event 2025-11-19 22:49:32 +08:00
Windpicker-owo
e71cc44e18 至少让插件跑起来了 2025-11-19 22:49:30 +08:00
雅诺狐
71c6b0ef1e 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-11-19 22:49:23 +08:00
雅诺狐
89bb9e5b3e Change default start_index in get_remaining to 0
Updated the get_remaining method in CommandArgs to default start_index to 0 instead of 1, ensuring all arguments are included by default when retrieving remaining parameters.
2025-11-19 22:49:22 +08:00
minecraft1024a
1e5a0ef328 替换名字 2025-11-19 22:49:21 +08:00
Windpicker-owo
e468dd1989 feat(plugin-system): 添加事件触发和订阅的白名单机制
为事件系统添加权限控制功能,包括:
- 在BaseEvent中新增allowed_subscribers和allowed_triggers白名单字段
- 事件管理器触发和订阅时进行白名单验证
- 为所有系统默认事件设置仅允许SYSTEM插件触发
- 在所有事件触发调用处显式传递plugin_name="SYSTEM"参数

确保只有授权插件可以触发特定事件和订阅处理器,增强系统安全性。
2025-11-19 22:49:20 +08:00
Windpicker-owo
dc13343b88 fix(plugin): 为事件处理器添加异步锁和并行执行支持
在BaseEvent类中引入asyncio.Lock确保同一个事件不能同时激活多次
重构事件触发逻辑,使用asyncio.gather并行执行所有订阅者处理器
提高事件处理效率的同时保证线程安全
2025-11-19 22:49:19 +08:00
Windpicker-owo
671ee6cbcf 引入lock防止同一个事件同时触发 2025-11-19 22:49:18 +08:00
雅诺狐
395cd14e52 Refactor permission checks and decorators usage
Refactored permission checks in built-in plugins to use the new @require_permission decorator, improving code clarity and consistency. Enhanced permission_decorators to better extract ChatStream and support PlusCommand. Updated PermissionCommand to use permission decorators for all subcommands, improved user mention parsing, and improved feedback messages. Registered a new permission node for sending feeds in MaiZone plugin and updated command registration to use PlusCommand info.
2025-11-19 22:49:16 +08:00
tt-P607
491c9103f9 哈哈哈哈哈,中,太中咧!!!一把出分啊各位一把出分!没有虫啊没有bug!直接就能回复自己说说下的评论了😋爽! 2025-11-19 22:49:13 +08:00
雅诺狐
4b0e0f3482 修复qq提取 2025-11-19 22:49:12 +08:00
雅诺狐
3757d444bf 更新示例 2025-11-19 22:49:11 +08:00
tt-P607
ef95ec9d70 feat(maizone): 实现对说说中图片的识别与理解
重构了原有的评论生成逻辑,使其能够处理和理解说说中的图片内容。现在,插件可以调用视觉模型来描述图片,并将图片描述作为上下文信息,从而生成更贴切、更具情景感的评论。

主要变更:
- 新增了对说说中图片的识别能力,在生成评论时会考虑图片内容。
- 将原有的直接调用LLM API的评论生成方式,重构为使用更高级的 `generator_api`,以更好地融入框架的对话管理和人格系统。
- 为评论和回复生成的逻辑增加了重试机制,提高了在网络波动或API不稳定情况下的成功率。
- 修复了监控自己说说时,因QQ号类型不匹配(int vs str)导致无法正确识别自己身份的bug。
- 优化了对自己说说的评论回复逻辑,确保不会回复自己发表的评论。
- 增强了HTML解析能力,现在可以从网页版QQ空间中提取图片和更完整的评论结构。
2025-11-19 22:49:10 +08:00
tt-P607
67a699b42d feat(sleep): 实现睡眠唤醒与重新入睡机制
引入了更完善的睡眠唤醒和重新入睡逻辑,以处理在睡眠期间被消息打扰的情况。

- **唤醒机制**: 当在睡眠时间内收到消息并达到唤醒阈值时,角色会被唤醒并进入愤怒状态。唤醒后,将保持清醒状态处理消息,而不是立即重新入睡。
- **状态持久化**: 新增 `_is_woken_up` 状态到 `schedule_manager`,并将其持久化,以确保在重启后能记住唤醒状态。
- **重新入睡**: 如果角色被吵醒后,在配置的一段时间内(`re_sleep_delay_minutes`)没有收到新消息,系统将自动尝试重新进入睡眠状态,以模拟更自然的行为。
- **上下文同步**: 在唤醒时,`wakeup_manager` 会通知 `schedule_manager` 更新其内部状态,确保系统各模块之间的睡眠状态一致。
2025-11-19 22:49:09 +08:00
tt-P607
48bc3590d4 feat(core): 实现HFC及睡眠状态的持久化
将HFC上下文、唤醒管理器和日程管理器的核心状态保存到本地存储,并在程序启动时加载。这确保了角色的能量、睡眠压力、唤醒度、失眠状态和弹性睡眠进度在重启后能够恢复,增强了长期运行的连续性和稳定性。

主要变更:
- **HfcContext**: 增加状态的加载与保存逻辑,持久化能量、睡眠压力和失眠状态。
- **WakeupManager**: 增加状态的加载与保存逻辑,持久化唤醒度及愤怒状态。
- **ScheduleManager**: 增加弹性睡眠状态的加载与保存逻辑,持久化“准备入睡”及延迟睡眠的状态。
- **HeartFChatting**: 在主循环中调用保存HFC上下文状态的方法。
- 调整了失眠和唤醒逻辑,以更好地与持久化状态和弹性睡眠机制协同工作。
2025-11-19 22:49:08 +08:00
tt-P607
200cad4630 feat(schedule): 引入弹性睡眠与睡前通知机制
新增了弹性睡眠功能,使AI的入睡行为更加自然。AI现在会根据睡眠压力决定是否延迟入睡,而不是严格按日程表时间立即休眠。

主要更新包括:
- **弹性睡眠逻辑**: 在进入理论睡眠时间时,会有一段5-10分钟的准备缓冲期。如果睡眠压力低于阈值,AI会推迟入睡,以增加互动时间。
- **睡前通知**: 在决定入睡后,AI可以自动向指定群组发送晚安消息。
- **配置选项**: 在配置文件中增加了相关选项,允许用户启用/禁用这些功能,并自定义睡眠压力阈值、最大延迟时间、通知群组和提示词。
- **代码重构**: 对 `is_sleeping` 方法进行了重构,将其拆分为理论睡眠时间判断和核心弹性逻辑,提高了代码的可读性和可维护性。
2025-11-19 22:49:07 +08:00
tt-P607
8bd7e44297 fix(config): 为实验性功能配置添加默认值
为 `experimental` 配置项设置 `default_factory`,确保在配置文件中未提供该项时,程序能够正常初始化并使用默认配置,避免因缺少配置而引发的启动错误。
2025-11-19 22:49:05 +08:00
雅诺狐
e21ba338ed 更新 bot_config_template.toml 2025-11-19 22:49:01 +08:00
tt-P607
ed720c1218 feat(monthly_plan): 增加月度计划数量上限并自动清理
style: 优化月度计划相关日志输出

- 在数据库模块中新增物理删除月度计划的函数 `delete_plans_by_ids`
- 在月度计划管理器中引入 `max_plans_per_month` 配置,用于限制每月计划数量
- 当检测到计划数量超出上限时,自动按创建时间删除最旧的计划以维持数量限制
- 优化了标记计划完成和删除计划时的日志记录,使其输出更详细的计划内容
- 调整了检查现有计划时的日志信息,使其更清晰
2025-11-19 22:48:58 +08:00
tt-P607
4754478070 某个狐狸又忘记改版本号了 2025-11-19 22:48:56 +08:00