Commit Graph

37 Commits

Author SHA1 Message Date
minecraft1024a
132354804c feat(planner): 实现大小脑规划器分离以优化决策流程
将规划器(Planner)拆分为“大脑”和“小脑”两个部分,以实现更精细化的决策控制。

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

此重构引入了 `PlannerType` 枚举,并更新了动作(Action)定义,允许将动作明确分配给大脑或小脑,从而提升了AI回复的逻辑性和条理性。同时,新增了 `no_action` 类型,用于在规划阶段明确表示“无动作”,提高了处理流程的清晰度。
2025-09-06 20:49:56 +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
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
9bbf801bd9 feat(规划): 引入统一的规划系统并重构组件
本次提交引入了一个全新的统一规划系统,取代了独立的日程和月度计划模块。这一变更集中了配置并解耦了职责,以提高可维护性和清晰度。

核心逻辑现在被分解为专门的组件:

- PlanManager: 处理日常日程和月度目标的所有数据库交互,取代了已-删除的 monthly_plan_db.py。
- ScheduleLLMGenerator: 封装了与 LLM 交互以生成日程的逻辑,将此职责从 ScheduleManager 中移除。
- MonthlyPlanManager: 现在作为核心 PlanManager 的简化接口。
这次架构性的大修通过将数据持久化和 LLM 生成逻辑从主调度逻辑中抽象出来,简化了整体设计。

重大变更: bot_config.toml 中的配置已被迁移。移除了 [schedule] 和 [monthly_plan_system] 部分。所有相关设置现在必须在新的 [planning_system] 部分下进行配置。
2025-09-06 11:41:42 +08:00
Windpicker-owo
90cbd5773e Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-06 00:11:31 +08:00
Windpicker-owo
c9b712d8fa refactor(prompt): 重构并统一提示词系统
- 删除旧的智能提示词系统(smart_prompt.py)和相关参数模块(prompt_parameters.py)
- 将 prompt_builder.py 重命名为 prompt.py 并精简功能
- 更新所有模块的导入路径从 `src.chat.utils.prompt_builder` 到 `src.chat.utils.prompt`
- 统一提示词构建接口,使用新的 PromptContext 替代 SmartPromptParameters
- 移除重复和冗余代码,简化系统架构

BREAKING CHANGE: 旧的 SmartPrompt 系统已被完全移除,所有相关模块需要改用新的统一 Prompt 系统
2025-09-06 00:10:54 +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
efe81fa346 fix(chat): 优化breaking模式下的兴趣值累积逻辑
重构heartFC_chat中的消息处理机制,使用累积兴趣值替代最近三次记录来判断是否进入breaking模式。主要变更包括:

- 将breaking模式判断基于累积兴趣值而非最近3次记录
- 在消息成功处理时重置累积兴趣值
- 调整阈值计算方式,使用聊天频率进行动态调整
- 修复send_api中的消息查找函数,提高回复消息匹配准确性

这些改动提高了对话节奏控制的稳定性,使breaking模式触发更加合理。
2025-09-03 22:19:00 +08:00
Windpicker-owo
ee15f45559 typing和防炸 2025-09-03 21:36:22 +08:00
Windpicker-owo
53e72ecbdb 迁移:1f91967(remove:移除willing系统,移除reply2,移除能量值,移除reply_to改为message) 2025-09-03 21:27:28 +08:00
Windpicker-owo
e361bf429f 迁移:1515cef(fix:必要性修复) 2025-09-02 17:24:27 +08:00
Windpicker-owo
ac143a1201 迁移:a247be0(ref:彻底合并normal和focus,完全基于planner决定target message) 2025-09-02 16:15:33 +08:00
Windpicker-owo
255e3627b4 feat(chat): refactor logging and integrate no_reply system action
将日志前缀管理集中到context,新增willing_manager依赖,并把no_reply提升为系统级可用动作

- CycleProcessor 统一改从 context 获取 log_prefix
- HeartFChatting 引入 willing_manager
- ResponseHandler _send_response -> send_response 去下划线统一对外接口
- ActionPlanner 将 no_reply 添加至 current_available_actions
2025-09-01 22:41:42 +08:00
Windpicker-owo
9f49a453da 迁移:3804124,9e9e796
(feat:将no_reply内置、fix:优化reply,填补缺失值)
2025-09-01 21:12:55 +08:00
Windpicker-owo
8149731925 修复代码格式和文件名大小写问题 2025-08-31 20:50:17 +08:00
minecraft1024a
5fe3a5e6aa refactor(chat): 优化日程活动提示以减少群聊干扰
修改了日程活动提示的措辞,明确指出当前活动与群聊无关,以防止在群聊场景下产生不相关的联想或干扰。
2025-08-30 17:36:55 +08:00
minecraft1024a
d06cfe3a36 refactor(schedule): 重构日程与月度计划管理模块
将 `schedule_manager` 和 `monthly_plan_manager` 从 `src/manager` 移动到 `src/schedule` 目录,以更好地组织与日程和计划相关的功能。

主要变更:
- 将 `schedule_manager` 和 `monthly_plan_manager` 移动到新的 `src/schedule` 目录。
- 更新了所有对这两个模块的导入路径,以反映新的文件位置。
- 删除了旧的 `src/manager` 目录下的模块文件。
- `monthly_plan_manager` 内部实现被重构,取代了原有的 `plan_generator.py`,简化了计划生成逻辑。
2025-08-27 19:46:01 +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
雅诺狐
4a44ba9866 全面更换orjson 2025-08-26 14:20:26 +08:00
tt-P607
32cceb0167 feat(chat): 在PROACTIVE模式下允许do_nothing动作
在PROACTIVE模式下,`do_nothing` 是一个有效的规划动作,表示主动聊天轮次中不需要执行额外操作。此更改将其添加到有效动作的判断逻辑中,以避免被错误地记录为无效动作。
2025-08-23 01:02:28 +08:00
Furina-1013-create
980221d589 异步记忆系统优化 & Action组件修复
主要改进:
1. 异步记忆系统优化 - 解决记忆操作阻塞主程序问题
   - 新增异步记忆队列管理器 (async_memory_optimizer.py)
   - 新增异步瞬时记忆包装器 (async_instant_memory_wrapper.py)
   - 优化主程序记忆构建任务为后台非阻塞执行
   - 优化消息处理器记忆调用,增加超时保护和回退机制

2. Action组件修复 - 解决'未找到Action组件: no_reply'问题
   - 修复no_reply动作激活类型配置错误
   - 新增reply回退动作 (reply.py)
   - 增强planner.py动作选择回退机制
   - 增强cycle_processor.py动作创建回退机制
2025-08-22 13:16:19 +08:00
minecraft1024a
ade903fcdd fix(planner): fix case of message ID prefix from 'M' to 'm 2025-08-21 21:37:28 +08:00
minecraft1024a
09b36585b3 feat(proactive_thinking): 重构主动思考为由Planner直接决策
重构了主动思考的触发和决策流程。原有的通过生成特定prompt来启动思考循环的方式被移除,改为直接调用Planner的`PROACTIVE`模式。

- **Planner增强**:
  - 新增`PROACTIVE`聊天模式,用于处理主动思考场景。
  - 为`PROACTIVE`模式设计了专用的prompt模板,整合了长期记忆、当前状态等信息。
  - 引入`do_nothing`动作,允许Planner在分析后决定保持沉默。
  - 增加从海马体(长期记忆)获取上下文的功能,为决策提供更丰富的背景。

- **ProactiveThinker简化**:
  - 移除了原有的prompt生成和调用`observe`的逻辑。
  - 现在直接调用`action_planner.plan(mode=ChatMode.PROACTIVE)`来获取决策。
  - 根据Planner返回的动作(如`do_nothing`或具体行动),决定是保持沉默还是执行计划。

- **CycleProcessor & Tracker调整**:
  - `CycleProcessor`新增`execute_plan`方法,用于执行一个已经由Planner预先制定好的计划。
  - `CycleTracker`能够区分并标记由主动思考发起的循环(例如,cycle_id为 "1.p"),以便于追踪和分析。
2025-08-21 19:29:14 +08:00
minecraft1024a
15e53742f5 fix(chat): 兼容 target_message_id 为 int 或缺少前缀 M 的情况
在 FOCUS 模式下,对 `target_message_id` 进行处理,以确保其为字符串格式并以 "M" 为前缀。这修复了当传入的 ID 为整数或缺少前缀时可能导致消息查找失败的问题。
2025-08-21 18:36:00 +08:00
雅诺狐
5e91f9ef5f Remove unused imports across multiple modules
Cleaned up various files by removing unused or redundant import statements to improve code readability and reduce potential confusion. No functional changes were made.
2025-08-19 11:55:24 +08:00
minecraft1024a
e19106b5b0 添加聊天类型限制功能,支持根据聊天类型过滤命令和动作,新增私聊和群聊专用命令及动作,优化相关日志记录。 2025-08-16 13:21:13 +08:00
minecraft1024a
b82bb30095 优化ActionPlanner类中的时间戳更新逻辑,确保在成功执行计划后再更新last_obs_time_mark,以提高消息判断的准确性。 2025-08-14 17:57:01 +08:00
minecraft1024a
ee66fbe827 优化插件热重载管理,支持多个监听目录 2025-08-14 13:43:22 +08:00
minecraft1024a
5f7f68f640 重构日程管理模块,将原有的schedule_manager模块迁移至manager目录,并更新相关引用。同时优化了定时任务管理逻辑,确保基于日程的发送功能正常运作,改进了日志记录和活动处理机制(OK兄弟们全体目光向我看齐,看我看我,我是个sb) 2025-08-14 12:40:58 +08:00
minecraft1024a
a8dc0937dd 整理了一下配置文件 2025-08-13 21:39:23 +08:00
minecraft1024a
36e937a57a 更新时间戳显示模式,在消息回复和规划器规划时:消息将显示完整日期 (如: 2024-01-15 14:30:22) 2025-08-13 21:19:30 +08:00
minecraft1024a
8a538cd0c0 更新聊天响应逻辑,优化消息针对性判断,避免无意义参与;同时在提示中增加针对性分析规则以提升对话质量。 2025-08-13 20:55:51 +08:00
minecraft1024a
871ece9965 添加决策器自定义提示词功能,允许用户启用并设置自定义提示词内容 2025-08-13 19:11:30 +08:00
minecraft1024a
f071345bbc 优化决策后时间戳更新逻辑,确保新消息判断的准确性 2025-08-13 18:49:45 +08:00
minecraft1024a
370176bffa 优化表情包删除逻辑,确保成功删除记录后返回正确的结果。同时,更新聊天提示模板,新增日程和心情信息,以提升聊天互动的自然性和趣味性(希望能更好的回复) 2025-08-13 16:10:45 +08:00
雅诺狐
2d4745cd58 初始化 2025-08-11 19:34:18 +08:00