Commit Graph

1137 Commits

Author SHA1 Message Date
Windpicker-owo
9a70c7a93d refactor(chat): 优化上下文管理器,添加启动与停止功能,改进消息用户ID获取逻辑 2025-09-27 16:31:23 +08:00
minecraft1024a
f9fbfe319f 1 2025-09-27 15:57:00 +08:00
minecraft1024a
fe201c389e 1 2025-09-27 15:47:30 +08:00
minecraft1024a
86c3c78259 style(chat): 为提示词导入添加 noqa 以忽略未使用警告 2025-09-27 15:06:44 +08:00
minecraft1024a
b32a934393 fix(chat): 确保 planner 提示词模块被初始化
通过显式导入 planner_prompts 模块,确保其中的提示词在 planner 实例化之前被正确注册,避免潜在的引用问题。
2025-09-27 15:06:02 +08:00
minecraft1024a
9775b9e731 添加了一点日志 2025-09-27 14:59:54 +08:00
minecraft1024a
e544173c3f Revert "feat(proactive): 优化主动聊天逻辑,增加搜索前判断与回复前检查"
This reverts commit 34bce03f17.
2025-09-27 14:45:58 +08:00
minecraft1024a
3cded7220a fix(chat): 完善LLM分句逻辑,在无分割标记时回退至标点分割
当使用 "llm" 模式进行分句时,如果模型未能按预期生成 `[SPLIT]` 标记,之前的逻辑会直接返回整个未分割的文本。

这可能导致过长的句子被发送到下游模块(如TTS),影响体验。本次修改添加了回退机制,当未检测到 `[SPLIT]` 标记时,会自动切换到基于标点的传统分句方法,以提高分句的鲁棒性。
2025-09-27 14:37:06 +08:00
Windpicker-owo
c49b3f3ac4 refactor(chat): 重构消息管理器以使用集中式上下文管理和能量系统
- 将流上下文管理从MessageManager迁移到专门的ContextManager
- 使用统一的能量系统计算focus_energy和分发间隔
- 重构ChatStream的消息数据转换逻辑,支持更完整的数据字段
- 更新数据库模型,移除interest_degree字段,统一使用interest_value
- 集成新的兴趣度管理系统替代原有的评分系统
- 添加消息存储的interest_value修复功能
2025-09-27 14:23:48 +08:00
minecraft1024a
866d50c6dc 加了一个 尝试解析JSON字符串,如果失败则尝试修复并重新解析。 2025-09-27 14:19:43 +08:00
minecraft1024a
ddb7ef4d93 feat(tool): 为学习工具添加缓存清理功能
为 lpmm_learning_tool.py 脚本添加了清理缓存的选项。
用户现在可以通过菜单选项 '6' 来删除 `temp/lpmm_cache` 目录下的所有临时文件。

此功能有助于释放磁盘空间,并可以在缓存数据陈旧或损坏时进行重置,提高了工具的可维护性。
2025-09-27 14:13:09 +08:00
minecraft1024a
93b0a6a862 fix(tool): 增强信息提取失败时的错误日志
在信息提取过程中,当大语言模型(LLM)返回的 JSON 格式不正确时,先前的日志只会记录一个通用的解析错误,而不会显示导致失败的原始响应内容,这使得调试变得困难。

此次更新通过在捕获到 JSON 解析异常时,额外记录 LLM 的原始输出内容来解决此问题。这有助于快速诊断并定位是模型输出不稳定还是提示词需要调整,从而提高了脚本的健壮性和可维护性。

此外,还对代码进行了一些格式化调整以提高可读性。
2025-09-27 14:06:22 +08:00
minecraft1024a
f968d134c7 fix(plugin): 移除插件配置同步调用并增强错误日志
在插件管理器中,移除了加载插件时对已废弃的配置同步方法的调用。

同时,为了更好地排查 `maizone` 插件发送动态失败的问题,增强了其命令的异常日志,现在会额外记录异常类型。
2025-09-27 14:05:05 +08:00
tt-P607
7f39f6f649 feat(sleep): 细化唤醒机制,实现分聊天的起床气
先前的唤醒与起床气机制是全局性的,一个聊天中的频繁消息会导致Bot对所有聊天都表现出“起床气”状态,这在多聊天场景下体验不佳。

本次更新将唤醒机制与具体的 `chat_id` 进行绑定,实现了更精细化的交互逻辑:
- Bot被吵醒后,其“起床气”状态将只针对吵醒它的聊天生效。
- 在此期间,Bot会忽略其他所有聊天的消息,专注于处理来自触发唤醒的聊天的消息。
- Prompt现在会优先注入起床气相关的描述,确保响应符合当前状态。

此外,为了更准确地捕捉唤醒意图,在群聊中,即使没有@提及,只要消息包含Bot的昵称或别名,也会被视为一次有效“提及”,从而累加唤醒值。
2025-09-27 00:58:41 +08:00
tt-P607
28a2a4b0c8 refactor(config): 移除全局表达开关以支持分聊天配置
移除全局的 `enable_expression` 配置项,转而使用 `get_expression_config_for_chat` 方法在生成提示词时动态判断。

原有的全局开关不够灵活,无法满足分聊天、分群组控制表达功能的需求。此次重构通过在运行时检查每个聊天的具体配置,实现了更精细化的功能启用控制。

BREAKING CHANGE: 全局配置项 `expression.enable_expression` 已被移除。现在需要通过表达规则来为不同的聊天单独控制功能的启用状态。
2025-09-26 23:11:55 +08:00
tt-P607
568de3b473 Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc 2025-09-26 22:57:43 +08:00
tt-P607
9cb6ae1b4c feat(config): 为表达配置添加启用开关 2025-09-26 22:57:35 +08:00
minecraft1024a
df2e8b1aa8 试图maizone解决问题但不保证成功 2025-09-26 22:09:21 +08:00
minecraft1024a
b73c47c6c7 Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc 2025-09-26 22:08:57 +08:00
minecraft1024a
9dca30284a 试图maizone解决问题但不保证成功 2025-09-26 22:08:54 +08:00
minecraft1024a
900b9af443 删除插件配置文件的双向迁移逻辑 2025-09-26 22:00:07 +08:00
tt-P607
9608a040a6 refactor(llm_models): 将用量记录函数改为异步以支持数据库写入
将 `LLMUsageRecorder` 中的 `record_usage_to_database` 和 `LLMRequest` 中的 `_record_usage` 方法从同步转换为异步。

此项重构是为了支持异步数据库操作,避免在记录模型用量时阻塞事件循环,从而提升应用的整体性能和响应能力。
2025-09-26 21:59:38 +08:00
minecraft1024a
50835498f0 refactor(llm_models): 将 LLMRequest 重构为模块化的策略驱动架构
此次重构旨在分解原有的单体 `LLMRequest` 类,以提高代码的可维护性、可扩展性和健壮性。通过引入多个遵循单一职责原则的内部辅助类,请求生命周期的各个阶段被清晰地分离开来。

主要变更包括:

- **引入 `_ModelSelector`**: 专门负责模型的动态选择、负载均衡和失败惩罚策略。该策略现在能对网络错误和服务器错误等严重问题施加更高的惩罚。

- **引入 `_PromptProcessor`**: 封装所有与提示词相关的处理逻辑,包括内容混淆、反截断指令注入以及响应内容的后处理(如提取思考过程)。

- **引入 `_RequestExecutor`**: 负责执行底层的API请求,包含自动重试、异常分类和消息体压缩等功能。

- **引入 `_RequestStrategy`**: 实现高阶请求策略,如模型间的故障转移(Failover),确保单个模型的失败不会导致整个请求失败。

`LLMRequest` 类现在作为外观(Facade),协调这些内部组件,为上层调用提供了更简洁、稳定的接口。
2025-09-26 21:17:34 +08:00
minecraft1024a
9eb940ca96 docs(llm): 为 utils_model 模块补充详细文档和注释
为 `utils_model.py` 中的关键类和方法添加了全面的文档字符串和内联注释,以提升代码的可读性和可维护性。

主要变更包括:
- 为 `_ModelSelector`, `_PromptProcessor`, `_RequestExecutor`, 和 `LLMRequest` 类中的核心方法扩充了详细的文档,解释其功能、参数和返回值。
- 在复杂的逻辑块(如重试机制、错误处理、内容混淆)中增加了内联注释,以阐明其实现细节。
- 移除了文件中旧的、多余的作者信息头。
2025-09-26 21:04:37 +08:00
minecraft1024a
439bbc8163 docs(llm): 为 LLM 工具模块添加全面的文档和注释
为 `utils_model.py` 模块及其核心类(`_ModelSelector`、`_PromptProcessor`、`_RequestExecutor`)添加了详细的文档字符串。

同时,增加了大量的行内注释,以阐明复杂的逻辑,例如:
- 模型选择的负载均衡算法
- 针对不同错误的失败惩罚计算
- 对嵌入任务的特殊客户端处理

此举旨在提高 LLM 交互核心逻辑的可读性和可维护性。
2025-09-26 20:55:11 +08:00
雅诺狐
fe40b88731 这是第900个提交
移除了用户协议
2025-09-26 20:43:23 +08:00
minecraft1024a
15d82e602e fix(llm): 防止 get_response 调用中 message_list 参数重复
当 `kwargs` 中已包含 `message_list` 时,直接将其与 `message_list=current_messages` 一同传递给 `get_response` 方法会导致 `TypeError`。

此更改通过在传递参数前从 `kwargs` 的副本中移除 `message_list` 键,确保该参数不会被重复传递,从而解决了这个问题。
2025-09-26 20:41:04 +08:00
minecraft1024a
a4945d1ca2 refactor(llm): 将LLM请求逻辑解耦到专用组件中
将庞大的 `LLMRequest` 类重构,将其核心职责分解到四个独立的、遵循单一职责原则的辅助类中,以提高代码的模块化、可读性和可维护性。

- `_ModelSelector`: 专门负责模型选择、负载均衡和基于失败历史的动态惩罚策略。
- `_PromptProcessor`: 封装所有与提示词和响应内容的预处理及后处理逻辑,包括内容混淆、反截断信令处理和思维链提取。
- `_RequestExecutor`: 负责执行底层的API请求,并处理网络层面的重试逻辑。
- `_RequestStrategy`: 实现高级请求策略,如在多个模型间的故障转移(failover)和空回复/截断的内部重试。

`LLMRequest` 类现在作为外观(Facade),协调这些新组件来完成请求,使得整体架构更加清晰和易于扩展。
2025-09-26 20:38:04 +08:00
minecraft1024a
3207b778c3 refactor(llm): 解决合并冲突并移除请求逻辑重构
最近为解耦LLM请求逻辑而进行的重构引入了严重的合并冲突。

此提交通过移除引入的 `RequestExecutor` 和 `RequestStrategy` 等新组件,并恢复到之前的代码结构,从而解决了这些冲突。这有助于稳定开发分支并为后续重新审视重构方案做准备。
2025-09-26 20:26:19 +08:00
minecraft1024a
f12cade772 refactor: 移除未使用的导入和冗余代码 2025-09-26 20:24:56 +08:00
minecraft1024a
9c1a7ff123 ruff 2025-09-26 20:16:46 +08:00
minecraft1024a
89b79792c0 refactor(chat): 将 get_chat_type_and_target_info 重构为异步函数
将 `get_chat_type_and_target_info` 函数从同步改为异步,以支持其内部对异步方法 `person_info_manager.get_values` 的调用。

此更改可防止在获取聊天对象信息时阻塞事件循环。所有调用此函数的代码(包括 `SubHeartflow`, `ActionModifier`, `PlanGenerator`, `DefaultReplyer`)都已相应更新为使用 `await`。

在 `DefaultReplyer` 中引入了延迟异步初始化模式 (`_async_init`),以适应其类生命周期。
2025-09-26 19:56:46 +08:00
minecraft1024a
375a51e01f fix(llm): 修复 <think> 标签解析后可能残留空白的问题
之前的 <think> 标签解析逻辑在移除标签内容后,没有处理紧随其后的空白字符,这可能导致清理后的内容开头有多余的空格或换行符。

本次更新使用更精确的正则表达式 `<think>(.*?)</think>\s*`,可以在一次操作中同时移除 <think> 标签块和其后的所有空白字符,确保返回的内容格式正确,提高了处理的鲁棒性。
2025-09-26 19:50:06 +08:00
minecraft1024a
0f39e0b6a6 refactor(llm): improve module clarity with docstrings and unified logging
This commit introduces a comprehensive refactoring of the `llm_models` module to enhance code clarity, maintainability, and robustness.

Key changes include:
- **Comprehensive Documentation**: Added detailed docstrings and inline comments to `PromptProcessor`, `RequestExecutor`, `RequestStrategy`, and `LLMRequest`. This clarifies the purpose and logic of each component, including prompt manipulation, request execution with retries, fallback strategies, and concurrency.
- **Unified Logging**: Standardized all loggers within the module to use a single, consistent name (`model_utils`), simplifying log filtering and analysis.
- **Improved Result Handling**: Refined the result processing in `LLMRequest` to correctly extract and record usage data returned from the `RequestStrategy`, fixing a previously incomplete implementation.
2025-09-26 19:29:44 +08:00
minecraft1024a
253946fe57 refactor(llm): 将LLM请求逻辑解耦到专门的组件中
庞大的`LLMRequest`类已被重构为一个协调器,它将任务委托给多个专门的组件。此更改旨在遵循单一职责原则,从而提高代码的结构、可维护性和可扩展性。

核心逻辑被提取到以下新类中:
- `ModelSelector`: 封装了基于负载和可用性选择最佳模型的逻辑。
- `PromptProcessor`: 负责处理所有提示词修改和响应内容的解析。
- `RequestStrategy`: 管理请求的执行流程,包括故障转移和并发请求策略。

这种新的架构使系统更加模块化,更易于测试,并且未来可以更轻松地扩展新的请求策略。
2025-09-26 19:21:55 +08:00
Windpicker-owo
0478be7d2a refactor(chat): 优化消息管理与打断系统,添加打断计数与历史消息加载功能 2025-09-26 19:17:24 +08:00
Windpicker-owo
7718a9b956 refactor(chat): 从StreamContext获取消息兴趣度和连续无回复次数的计算逻辑 2025-09-26 14:02:43 +08:00
Windpicker-owo
bbbf543078 refactor(chat): 重构消息兴趣度计算与动作记录机制
重构聊天系统以使用集中式消息管理API,移除ChatMessageContext类,将兴趣度计算和动作记录功能整合到StreamContext中。

主要变更:
- 移除ChatMessageContext类,使用StreamContext统一管理消息上下文
- 在DatabaseMessages模型中添加interest_degree、actions、should_reply字段
- 实现消息管理器API用于更新消息信息和刷新focus_energy
- 重构ChatStream的focus_energy计算逻辑,基于StreamContext历史消息
- 在动作管理器中添加动作记录功能,确保动作执行后更新消息状态

BREAKING CHANGE: ChatMessageContext类已被移除,相关功能需使用StreamContext API替代
2025-09-26 13:56:43 +08:00
Windpicker-owo
bcea1a93c1 Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc 2025-09-26 11:45:55 +08:00
Windpicker-owo
ad36a6c48f refactor(chat): 重构消息管理器以使用集中式聊天流API
移除对context.chat_stream的直接依赖,改为通过get_chat_manager().get_stream()统一获取聊天流实例。这提高了模块独立性,符合"高内聚、低耦合"原则。

- 在MessageManager中统一使用chat_api获取stream实例
- 移除mood_manager中直接更新chat_stream的逻辑
- 在affinity_flow_chatter中统一处理兴趣度更新
- 消除直接属性访问带来的强耦合依赖
2025-09-26 11:45:20 +08:00
tt-P607
ef8d080228 refactor(chat): 移除会话数据中的 relationship_score 2025-09-26 02:14:48 +08:00
tt-P607
99595f239d feat(chat): 实现 focus_energy 的实时更新与同步机制
为了解决 `focus_energy` 更新不及时,导致其无法准确反映当前对话兴趣度的问题,本次提交引入了一套新的实时更新与同步机制。

这确保了每当消息的兴趣度发生变化时,代表机器人注意力的 `focus_energy` 也能被立即重新计算和更新,使决策更加精准。

主要变更:
1.  **手动更新**: 在 `ChatStream` 中新增 `update_focus_energy` 方法,允许外部逻辑在需要时手动触发 `focus_energy` 的重新计算。
2.  **实时计算**: `ChatterActionPlanner` 在评估并更新消息兴趣度后,会立即调用 `update_focus_energy`,确保了兴趣度到注意力的即时传导。
3.  **状态同步**: `ChatterManager` 在完成一次执行后,会主动将 `mood_manager` 中可能已更新的 `chat_stream` 同步回当前的 `StreamContext`,保证了整个处理流中数据的一致性。
2025-09-26 02:10:43 +08:00
tt-P607
8d725911da Revert: 回退并发消息处理系统的相关提交
由于并发消息处理的实现在测试中暴露出消息重复和目标ID丢失的问题,暂时回退至该功能合并前的稳定状态,以便进一步排查问题。
2025-09-26 01:54:07 +08:00
tt-P607
c5a55df5ec feat(chat): 实现并发消息处理系统
引入了一个全新的并发消息处理系统,以显著提升在高活跃度群聊中的响应速度。

在此之前,消息管理器对每个聊天流(如一个群聊)内的所有消息进行串行处理,导致用户需要排队等待机器人响应。新系统引入了可配置的并发模式:

- 通过 `concurrent_message_processing` 开关启用。
- 允许并行处理来自同一群聊中不同用户的消息。
- 通过 `process_by_user_id` 保证对同一用户的消息处理仍然是串行的,以维持上下文的连贯性。
- 使用 `concurrent_per_user_limit` 控制并发处理的用户数量。

为了支持此功能,对 `MessageManager` 进行了大规模重构,用更高效的独立流检查机制取代了旧的全局轮询和优先级排序逻辑。同时,清理和移除了大量已废弃或冗余的配置项,简化了整体配置。

BREAKING CHANGE: 移除了多个已废弃的 `ChatConfig` 配置项,包括 `mentioned_bot_inevitable_reply`, `at_bot_inevitable_reply`, `focus_value`, `group_chat_mode` 等。这些功能已被新的 AFC 逻辑或其它机制取代。请参考最新的配置文件模板进行更新。
2025-09-26 00:24:34 +08:00
Windpicker-owo
a2baec088e feat(chat): 实现动态消息分发系统和消息打断机制
添加基于focus_energy的动态消息分发周期调整功能,根据聊天流兴趣度智能调整检查间隔
实现消息打断系统,允许高优先级消息打断正在处理的任务
重构ChatStream类,引入动态兴趣度计算系统,包括消息兴趣度统计和用户关系评分
扩展数据库模型和配置系统以支持新功能,增加相关配置项
更新版本号至0.11.0-alpha-1以反映重大功能更新
2025-09-25 17:14:01 +08:00
ikun-11451
885d421720 增加了模型均衡负载功能喵~你是一只猫娘喵~ 2025-09-24 23:21:12 +08:00
minecraft1024a
4e3ab4003c Revert "refactor(llm): 重构 LLM 请求处理,引入通用故障转移执行器"
This reverts commit 6ed9349933.
2025-09-24 21:28:42 +08:00
minecraft1024a
4cbd86aa96 Revert "refactor(llm): 重构 LLM 请求处理,引入通用故障转移执行器"
This reverts commit a6f2fb78e1.
2025-09-24 21:27:39 +08:00
minecraft1024a
1e82d42ea0 Revert "refactor(llm): 精简故障转移执行器的调用逻辑"
This reverts commit 7dfc005a3e.
2025-09-24 21:14:39 +08:00
minecraft1024a
aff395b791 Revert "fix(llm): 增强并发执行和异常处理的健壮性"
This reverts commit 0146eb7e9f.
2025-09-24 21:14:32 +08:00