Commit Graph

870 Commits

Author SHA1 Message Date
minecraft1024a
e14bd950c3 refactor(planner): 移除大小脑规划器类型以简化决策流程
本次重构删除了`PlannerType`(大小脑规划器)的枚举及其在动作规划和组件定义中的相关逻辑。通过移除大小脑的概念,简化了`ActionPlanner`的决策过程,使其不再需要根据规划器类型来筛选可用动作。

这一变更统一了动作的处理方式,降低了系统的复杂性,使得未来的功能扩展和维护更加直接和清晰。
2025-09-07 12:53:06 +08:00
minecraft1024a
22e9960707 refactor(web_search): 统一搜索引擎的API密钥配置路径
将Exa和Tavily搜索引擎的API密钥配置路径从独立的顶级配置(如`exa.api_keys`)更改为`web_search`下的统一路径(`web_search.exa_api_keys`和`web_search.tavily_api_keys`)。

这使得配置结构更加清晰和一致,便于管理所有与网络搜索相关的凭据。
2025-09-07 12:44:49 +08:00
minecraft1024a
ece6699a2a feat(prompt): 丰富主动对话中的人设prompt
将`personality_side`、`identity`和`reply_style`添加到主动对话的`identity_block`中,以生成更具个性化的对话内容。
2025-09-07 12:43:34 +08:00
minecraft1024a
905afec9d5 refactor(proactive): 优化主动对话的prompt并处理响应文本
- 更新并细化了主动对话生成器的prompt,使其更具指导性,以生成更自然、更简洁的回复。
- 移除了冗余的注释和空行,使prompt结构更清晰。
- 对生成器返回的`response_text`调用`process_human_text`方法进行处理,以应用全局的文本分割和错别字修正配置,确保输出格式统一。
2025-09-07 12:41:12 +08:00
minecraft1024a
aa9c5ea46a Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-07 12:28:19 +08:00
minecraft1024a
1e2eb977bb refactor(sleep): 解耦SleepManagerScheduleManager的依赖关系
将日程表获取的逻辑从`SleepManager`转移到`TimeChecker`中,并使其直接从全局的`schedule_manager`实例获取日程,消除了`SleepManager`对日程表的直接管理责任。

这一重构简化了`SleepManager`的职责,使其更专注于睡眠状态的管理,同时提高了模块间的独立性。

- `SleepManager`不再持有`today_schedule`状态。
- `TimeChecker`现在直接从`schedule_manager`获取日程,不再依赖于`SleepManager`传递。
- 移除了`ScheduleManager`中对`sleep_manager`的引用和更新操作。
2025-09-07 12:28:15 +08:00
雅诺狐
415b972c48 遥测 2025-09-07 12:20:49 +08:00
雅诺狐
6a703fcbe1 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-07 12:16:37 +08:00
雅诺狐
c1cb7aafea 更新遥测 2025-09-07 12:16:11 +08:00
tt-P607
d2e48e5b17 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-07 12:13:56 +08:00
tt-P607
da4504c0ec feat(at_user_plugin): 使用回复器生成智能艾特消息
艾特用户动作现在通过回复器生成智能回复内容,而不是直接发送固定消息。
这样可以使艾特消息更具上下文感知能力和智能化,提升用户体验。
增加了错误处理机制,确保在回复生成失败或聊天流不存在时能正确处理。
2025-09-07 12:13:00 +08:00
雅诺狐
2f290bd272 更新配置文件 2025-09-07 08:46:27 +08:00
雅诺狐
cb994a4e17 feat(sleep): 为睡眠系统添加随机时间偏移功能
- 新增每日睡眠和起床时间随机偏移量配置选项
- 实现缓存机制确保同一天内使用相同的偏移量
- 重构睡眠时间检查逻辑以支持动态时间偏移
- 更新相关配置类和插件清单格式
2025-09-07 08:20:39 +08:00
Windpicker-owo
653599b7e7 不要将纯文本包装成 ResponseSet 格式! 2025-09-07 03:34:14 +08:00
Windpicker-owo
3d8da9f073 修复主动思考回复奇怪格式的问题,修改napcat插件遗留配置项 2025-09-07 03:11:09 +08:00
tt-P607
d826bc2391 feat(config): 为睡眠系统添加计划任务支持及相关配置
在模板配置中增加定时睡觉/起床参数,新增根据日程表自动睡眠开关、固定作息
时间设置以及唤醒后重新入睡延迟,以便更灵活地控制机器人的睡眠行为。
2025-09-07 00:21:33 +08:00
tt-P607
e499e663f2 refactor(sleep_manager): 修复模块内的循环导入问题
将 `sleep_manager` 和 `wakeup_manager` 中的绝对导入路径更改为相对导入,以解决潜在的循环依赖问题。
2025-09-06 23:15:11 +08:00
tt-P607
dbc4a795e7 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-06 23:03:41 +08:00
tt-P607
3684ffe881 refactor(napcat): 将enable_plugin改为动态属性以支持配置文件控制
- 移除硬编码的enable_plugin布尔值
- 添加enable_plugin属性方法,支持通过配置文件动态控制插件启用状态
- 默认状态改为禁用,提高系统安全性
- 支持运行时通过_is_enabled属性缓存配置状态
2025-09-06 23:03:21 +08:00
Furina-1013-create
008f673424 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-06 23:00:06 +08:00
Furina-1013-create
d53e39e85d 增加一个关于数据库在前面没有正确识别用户身份的时候的最小回退并改进ada插件的关于消息处理时可能会错误地把@消息识别为[视频]的情况 2025-09-06 22:58:50 +08:00
tt-P607
8a99e7fe63 refactor(napcat): 改进连接管理和日志级别优化
- 添加MaiBot连接重试机制,支持非阻塞启动和自动重连
- 优化日志输出级别,减少非关键信息的INFO日志
- 增强消息发送的连接状态检查和故障恢复
- 改进调试模式下的原始消息记录逻辑
2025-09-06 22:47:58 +08:00
minecraft1024a
db3c3ebd63 feat(chat): 新增私聊强制回复功能
当在私聊场景下,如果大脑决策为“no_reply”,此功能会将其强制修改为“reply”,以确保机器人总能响应私聊消息。

该功能通过新的配置项 `force_reply_private` 控制,默认为关闭状态。同时,原配置项 `force_focus_private` 已被重命名为 `force_reply_private` 以更准确地反映其功能。
2025-09-06 21:44:37 +08:00
minecraft1024a
de6a28d88b Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-06 21:26:58 +08:00
minecraft1024a
cb6fe9e411 refactor(planner): 移除proactive模式下的do_nothing动作
从动作规划器中删除了在PROACTIVE模式下硬编码的`do_nothing`选项。此更改旨在简化动作列表,并依赖于后续的决策逻辑来确定是否需要执行任何操作,而不是将其作为一个明确的动作选项提供。
2025-09-06 21:26:54 +08:00
Windpicker-owo
717ef1ed4a Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-06 21:24:24 +08:00
Windpicker-owo
62dfc35682 napcat插件配置迁移基本完成 2025-09-06 21:24:17 +08:00
minecraft1024a
ef41f4eaf7 feat(plugin_system): 添加ON_STOP事件类型
为插件系统增加ON_STOP事件,用于处理程序停止时的任务。
2025-09-06 20:58:49 +08:00
minecraft1024a
2241db3ebf Revert "feat(chat): 实现发送错别字后自动撤回修正的功能"
This reverts commit fd5d951501.
2025-09-06 20:56:13 +08:00
minecraft1024a
9591df7b74 Merge branches 'dev' and 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-06 20:49:58 +08:00
minecraft1024a
132354804c feat(planner): 实现大小脑规划器分离以优化决策流程
将规划器(Planner)拆分为“大脑”和“小脑”两个部分,以实现更精细化的决策控制。

- **大脑(BIG_BRAIN)**: 负责宏观决策,如是否回复、是否需要@人等高层级意图。
- **小脑(SMALL_BRAIN)**: 负责具体的功能性动作执行。

此重构引入了 `PlannerType` 枚举,并更新了动作(Action)定义,允许将动作明确分配给大脑或小脑,从而提升了AI回复的逻辑性和条理性。同时,新增了 `no_action` 类型,用于在规划阶段明确表示“无动作”,提高了处理流程的清晰度。
2025-09-06 20:49:56 +08:00
Windpicker-owo
d9b19ef3d6 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-06 20:40:05 +08:00
Windpicker-owo
742b47c099 fix:修复插件组件无法正确获取插件配置的问题 2025-09-06 20:39:59 +08:00
minecraft1024a
c097b5d00b feat(config): 支持API密钥列表轮询
- 将`api_key`类型从`str`扩展为`Union[str, List[str]]`,允许用户配置多个API密钥。
- 新增`get_api_key`方法,通过线程安全的方式实现API密钥的轮询使用,提高API请求的稳定性和可用性。
- 更新了`api_key`的验证逻辑,以同时支持字符串和字符串列表两种格式。
- 相应地更新了配置文件模板,以示例新的密钥列表配置方式。
2025-09-06 20:23:24 +08:00
minecraft1024a
e848f89c59 Revert "refactor(chat): 优化错别字生成器逻辑与文档"
This reverts commit ceee3c1fbf.
2025-09-06 20:16:49 +08:00
minecraft1024a
ceee3c1fbf refactor(chat): 优化错别字生成器逻辑与文档
对中文错别字生成器(`ChineseTypoGenerator`)进行了大规模重构和改进,以提升代码的可读性、可维护性和生成质量。

主要变更包括:
- **逻辑拆分**: 将核心的单字替换逻辑从主函数 `create_typo_sentence` 中提取到新的私有方法 `_char_replace`,使主流程更清晰。
- **文档增强**: 全面重写和丰富了所有主要方法的文档字符串(docstrings),详细解释了每个参数的用途、函数的内部工作原理和设计决策,显著提高了代码的可理解性。
- **代码简化**: 优化了同音词的查找逻辑(`_get_word_homophones`),移除了复杂的评分和文件读取过程,直接利用 `jieba.dt.FREQ` 进行有效性验证,使代码更简洁高效。
- **健壮性提升**: 在拼音转换和处理逻辑中增加了更具体的异常捕获(`IndexError`, `TypeError`),提高了代码的稳定性。
- **修正建议格式**: 将修正建议的返回格式从单个字符串更改为 `(错字/词, 正确字/词)` 的元组,提供了更完整的上下文信息。

此外,在 `generator_api.py` 中移除了一段冗余的内容类型检查代码。
2025-09-06 20:09:17 +08:00
minecraft1024a
8c446e5490 refactor(chat): 重构主动思考模块以提升回复质量和逻辑清晰度(哪个大聪明把我联网搜索烦了)
将主动思考流程拆分为两个主要阶段:规划和内容生成。

在规划阶段(`ActionPlanner`),模型现在会结合最新的聊天上下文来决定是否发起主动对话,并确定一个合适的主题。这使得决策更加贴近当前对话氛围。

在内容生成阶段(`ProactiveThinker`),系统会围绕规划好的主题,主动搜集相关实时信息(如日程、网络资讯),并结合角色设定、心情和聊天历史,构建一个更丰富、更具上下文情境的提示词,从而生成更自然、更有趣的主动回复。

主要变更:
- `ActionPlanner` 在主动模式下增加对近期聊天记录的分析,决策更精准。
- `ProactiveThinker` 新增 `_generate_proactive_content_and_send` 方法,负责整合多源信息(日程、搜索、上下文)生成最终回复。
- 简化了 `ProactiveThinker` 的主逻辑,使其专注于执行 `proactive_reply` 动作,而非处理多种动作类型。
- 优化了相关提示词,使其更专注于生成高质量的主动对话内容。
2025-09-06 19:42:48 +08:00
minecraft1024a
657b12015b 忘更新配置文件版本号了() 2025-09-06 17:18:36 +08:00
minecraft1024a
e5247eba96 feat(config): 为小脑(sub-planner)新增独立模型和尺寸配置
为“小脑”(sub-planner)引入了独立的模型配置`planner_small`,使其可以与主planner(大脑)使用不同的、更轻量的模型,以提升并行处理性能。

同时,新增了`planner_size`配置项,用于控制每个小脑处理的action数量,允许用户根据需求调整并行度和单个小脑的上下文窗口。

- 在`model_config.toml`中添加`planner_small`任务配置
- 在`bot_config.toml`中添加`planner_size`参数
- 更新代码以使用新的配置项,并移除了相关的硬编码和TODO注释
2025-09-06 17:14:32 +08:00
minecraft1024a
a0ddd525b3 refactor(chat): 重构planner为大脑/小脑并行架构以提升性能和可扩展性(别管能不能用先插进来再说)
将原有的单体`plan`方法重构为一个多智能体架构,包含一个"大脑"和多个并行的"小脑"。

大脑 (`plan`方法) 专注于决定是否进行聊天回复 (`reply`),并负责调度和整合所有决策。

小脑 (`sub_plan`方法) 并行处理具体的、独立的action判断。每个小脑接收一部分action,使用轻量级模型进行快速评估,从而实现并行化处理,减少了单一LLM调用的延迟。

这种新架构的主要优势包括:
- **性能提升**:通过并行化action判断,显著减少了规划器的总响应时间。
- **可扩展性**:添加新的action变得更加容易,因为它们可以被分配到不同的小脑中,而不会增加主规划流程的复杂性。
- **鲁棒性**:将复杂的规划任务分解为更小的、独立的单元,降低了单个点失败导致整个规划失败的风险。
- **成本效益**:允许为小脑配置更轻量、更快速的模型,优化了资源使用。
2025-09-06 17:13:58 +08:00
minecraft1024a
268dbcca5e refactor(api): 优化撤回消息的函数调用
将 `adapter_command_to_stream` 的直接调用重构为使用更通用的 `command_to_stream` 函数。
此更改统一了命令分发逻辑,提高了代码的可维护性。
2025-09-06 16:55:24 +08:00
minecraft1024a
9ec0b6977b fix(api): 处理列表类型的 content 输入
在 `process_human_text` 函数中,增加了对 `content` 参数的类型检查。如果 `content` 是一个列表,它会被自动转换成字符串,以防止后续处理中出现 `ValueError`。这增强了函数的健壮性,使其能够处理更多样化的输入格式。
2025-09-06 16:40:46 +08:00
minecraft1024a
59985cb905 fix(chat): 修复 kaomoji 恢复函数的参数类型
在之前的重构中,`recover_kaomoji` 函数的调用被简化,但在此处调用时忘记移除数组包裹,导致传递了错误的参数类型。此提交删除了多余的方括号,确保将字符串直接传递给 `recover_kaomoji` 函数。
2025-09-06 16:29:00 +08:00
minecraft1024a
bf29407538 refactor(chat): 简化 kaomoji 恢复函数的参数传递
将 `recover_kaomoji` 函数的调用从传递列表 `[s["..."]]` 改为直接传递字符串 `s["..."]`。此更改简化了代码,并与函数预期的输入类型保持一致,提高了代码的可读性和健壮性。
2025-09-06 16:24:31 +08:00
minecraft1024a
4e639249c3 fix(chat): 修复错别字修正功能中的 kaomoji 恢复逻辑
在处理类型为 "typo" 的句子时,`recover_kaomoji` 函数的调用方式有误。原先代码将 `s["correction"]` 包装在列表中 (`[s["correction"]]`) 进行传递,这与函数的预期输入不符,可能导致在修正错别字时无法正确恢复 kaomoji 表情。

本次提交移除了不必要的列表包装,确保将 `s["correction"]` 直接传递给 `recover_kaomoji` 函数,从而修正了该问题。
2025-09-06 16:23:07 +08:00
minecraft1024a
76ad927919 fix(chat): 修复动作列表不为空时获取动作类型的问题(废物哈吉米替换了十次) 2025-09-06 16:10:45 +08:00
minecraft1024a
d16df808ef fix(chat): 处理响应数据为列表时的情况
当响应内容`data`是一个列表时,将其所有元素连接成一个字符串,以避免在后续处理中因类型不匹配而引发的错误。
2025-09-06 16:03:52 +08:00
minecraft1024a
a3d0588e7e docs(core): 为核心模块添加日志记录和文档字符串
为 `cycle_processor`, `response_handler`, `generator_api`, 和 `send_api` 等核心代码文件补充了日志记录器和详细的文档字符串(docstrings)。

本次更新旨在提高代码的可读性和可维护性,通过清晰的文档注释和日志输出,使其他开发者能更容易地理解代码逻辑和功能,并为未来的调试和功能扩展提供便利。
2025-09-06 15:52:21 +08:00
minecraft1024a
fd5d951501 feat(chat): 实现发送错别字后自动撤回修正的功能
引入了一个新的聊天交互机制:当机器人发送了包含“错别字”的消息后,会在短暂延迟后自动撤回该消息,并发送正确的版本。此功能旨在模拟更真实的人类打字行为,增加交互的趣味性和拟人化程度。

主要变更:
- **错别字处理流程**:
  - `ResponseHandler`现在会识别出带有错别字的消息,并在发送后创建一个异步任务来处理后续的修正。
  - 新增`handle_typo_correction`方法,该方法会随机延迟2-4秒,然后调用新的`recall_message` API撤回原消息,并重新发送修正后的内容。
- **API扩展**:
  - `send_api`中增加了`recall_message`函数,用于调用适配器执行消息撤回操作。
  - `send_response`的返回值从单个字符串`reply_text`变更为元组`(reply_text, sent_messages)`,以便将已发送的消息信息(包括ID和类型)传递给上层调用者。
- **数据结构调整**:
  - `process_llm_response`的返回类型从`list[str]`调整为`list[dict[str, str]]`,以支持更复杂的响应类型,如包含原文、错别字和修正建议的`typo`类型。
- **代码优化与重构**:
  - 对`ChineseTypoGenerator`进行了大量的代码清理、注释补充和逻辑优化,使其代码更清晰、更易于维护。
  - 修复了多处代码中的类型注解和潜在的空指针问题,提高了代码的健壮性。
2025-09-06 15:44:52 +08:00
minecraft1024a
8f12dfd93c feat(sleep): 引入弹性睡眠机制
根据睡眠压力动态调整入睡延迟时间。

- 新增`enable_flexible_sleep`配置项,用于启用或禁用此功能。
- 当启用时,系统会检查当前的睡眠压力值。
- 如果睡眠压力低于预设阈值,将根据压力差计算出一个延迟入睡的时间,压力越低,延迟越长。
- 增加了当日总延迟时间的上限,避免无限期推迟睡眠。
- 如果睡眠压力高于阈值,或当日延迟额度已用完,则会进入一个较短的准备阶段后入睡。
- 如果无法获取睡眠压力,系统将回退到旧的随机延迟逻辑。
- 将`_total_delayed_minutes_today`的数据类型从`int`修改为`float`以支持更精确的计算。
2025-09-06 14:48:12 +08:00