Commit Graph

1375 Commits

Author SHA1 Message Date
ikun-11451
e68b805cfb 修复了导入错误喵...... 2025-10-17 12:05:28 +08:00
tt-P607
aa35581cbc Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-17 02:34:51 +08:00
tt-P607
1f26238368 refactor(chat): overhaul response processing for robustness and integrity
This commit redesigns the LLM response handling pipeline to gracefully manage complex, long, and structured outputs, shifting from a restrictive filtering model to a more resilient and content-aware approach.

The previous implementation suffered from brittleness, often discarding valid responses or corrupting formatted content. This refactor introduces two core changes to ensure response integrity:

1.  **Adaptive Message Merging:** Replaces the rigid message count and length limits, which caused the silent dropping of valid long-form answers. The new logic dynamically merges the shortest adjacent sentences if a response is overly fragmented, ensuring the full thought is preserved while adhering to display limits.

2.  **Content-Aware Pre-processing:** Implements a protection mechanism for special text formats. It now identifies and isolates Markdown code blocks, LaTeX-style math equations, and other code-like segments using placeholders before splitting or typo generation. This prevents formatting corruption and ensures technical content is rendered correctly.

Additionally, the LLM prompt for splitting has been refined to emphasize logical coherence over simple fragmentation.

Finally, this commit also hardens the `LLMRequest` class against race conditions by adding an `asyncio.Lock` to serialize generation requests, improving the system's stability under concurrent workloads.
2025-10-17 02:34:39 +08:00
ikun-11451
f57d0f3213 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-17 01:48:06 +08:00
ikun-11451
e1dde64fc6 实现了新的睡眠系统喵~ 2025-10-17 01:47:43 +08:00
tt-P607
514da0b56f Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-17 01:09:36 +08:00
tt-P607
59e94ea7aa 嗯,llm分割提示词优化一下 2025-10-17 01:09:08 +08:00
LuiKlee
bfbba6879c 修复格式问题
修改613行的标点
如果功能异常,请提交报告
2025-10-16 20:28:15 +08:00
LuiKlee
bd864b43ab Update README.md 2025-10-15 23:39:59 +08:00
LuiKlee
7601f881fc Update README.md 2025-10-15 23:34:29 +08:00
LuiKlee
f587565502 调整 2025-10-15 23:33:06 +08:00
LuiKlee
ea95d56177 调整排版 2025-10-15 23:28:45 +08:00
ikun两年半
21e4f7f659 更正依赖名字喵~ 2025-10-13 17:43:40 +08:00
tt-P607
109aef4623 feat(chat): 实现延迟重处理并修复并发问题
本次提交为聊天处理逻辑带来了两项关键改进:

1.  **中断后的延迟重处理:**
    当机器人被新消息打断时,系统现在会等待一个短暂的延迟(例如0.5秒)再重新处理。这允许多条快速连续发送的消息被合并到同一次处理中,避免了因消息轰炸导致的多次、零碎的处理流程,提高了效率和响应的连贯性。

2.  **为聊天器添加并发锁:**
    在 `AffinityChatter` 中引入了 `asyncio.Lock`,以确保每个实例一次只处理一个流上下文。这可以防止在并发场景下可能出现的竞争条件,保证了数据处理的原子性和状态的一致性。
2025-10-13 09:22:57 +08:00
ikun-11451
95959b2c16 将获取方式改成get喵~ 2025-10-12 22:12:20 +08:00
LuiKlee
dc1a919eda 减少 .env 文件的重复读取
只在开始时加载一次.env,后续从 os.environ 读取
2025-10-12 20:53:15 +08:00
minecraft1024a
dcd7e27cdc Merge branches 'dev' and 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-12 14:28:58 +08:00
LuiKlee
cae9026ea1 添加重试机制
如果 ui_logger 服务 长期不可用,该版本会多尝试几次,可能增加少量 CPU 开销
3次重试 + 0.1s 间隔
2025-10-12 14:28:58 +08:00
minecraft1024a
4ded724f49 chore(chatter): 添加关于迁移逻辑的 TODO 注释 2025-10-12 14:28:22 +08:00
minecraft1024a
adfe15a10f **我撞到dict了 2025-10-12 14:25:02 +08:00
minecraft1024a
54c75a1930 Revert "refactor(chatter): 简化 action_message 的数据类型处理"
This reverts commit 540b162c04.
2025-10-12 14:20:07 +08:00
minecraft1024a
540b162c04 refactor(chatter): 简化 action_message 的数据类型处理
在 `ActionPlannerInfo` 中,将 `action_message` 的类型直接设为 `target_message_obj` (dict),移除了之前将其转换为 `DatabaseMessages` 对象的逻辑。

这一改动简化了代码,并与最近 `reply_message` 模型重构的目的一致,即在流程中优先使用更通用的字典类型,仅在需要时进行模型转换。
2025-10-12 14:19:26 +08:00
minecraft1024a
9fdae38b6a refactor(replyer): 迁移 reply_messageDatabaseMessages 数据模型
将 `default_generator` 中使用的 `reply_message` 参数及其相关逻辑从旧的 SQLAlchemy `Messages` 模型迁移到新的 Pydantic `DatabaseMessages` 数据模型。

此更改统一了内部数据处理模型,提高了类型安全性和代码清晰度。同时,更新了所有对 `reply_message` 属性的访问方式,以适应新的嵌套数据结构(例如 `chat_info.platform` 和 `user_info.user_id`)。
2025-10-12 14:10:27 +08:00
minecraft1024a
e851dfbc62 refactor(replyer): 将 reply_message 类型从 dict 更改为 Messages 模型
将 `DefaultReplyer` 中多个方法的 `reply_message` 参数类型从通用的 `dict` 更改为更具体的 SQLAlchemy 模型 `Messages`。

这一更改提高了代码的类型安全性和可读性,使得数据结构更加明确。同时,更新了相关代码以直接访问模型属性,而不是使用字典的 `get()` 方法。
2025-10-12 14:03:20 +08:00
minecraft1024a
4df61eba1c fix(chatter): 修复私聊场景下目标信息类型不匹配问题
在 affinity_flow_chatter 插件中,处理私聊上下文时,`plan.target_info` 可能是一个字典(dict)类型,而不是预期的对象类型。这会导致在访问 `plan.target_info.person_name` 等属性时引发 `AttributeError`。

本次提交通过增加类型检查来处理这种情况,确保无论是对象还是字典类型的 `target_info` 都能被正确解析,从而增强了代码的健壮性并修复了潜在的运行时错误。
2025-10-12 13:48:05 +08:00
minecraft1024a
2f9dc64d1e refactor(maizone): 移除生成文案时对跨群聊上下文的依赖
此更改删除了在生成内容时获取和注入跨群聊上下文(`maizone_context_group`)的逻辑。

该功能已被新的、更通用的 S4U 上下文检索机制所取代,因此旧的硬编码实现不再需要,移除它可以简化代码并消除冗余。
2025-10-12 13:08:41 +08:00
minecraft1024a
86ab01996d feat(schedule): 优化日程提示并增加时间感知能力
日程系统现在可以更详细地描述当前活动,包括计划的起止时间、已进行时间和剩余时间,为AI角色提供更强的时间感知和情境感。

主要变更:
- `schedule_manager`的`get_current_activity`现在返回包含活动和时间范围的字典,而不仅仅是活动名称。
- 在`default_generator`中,重构了日程提示的生成逻辑,使其能够计算并展示活动的详细时间信息。
- 修复了多处可能因变量为空(如`msg_content`、`user_nickname`)或事件处理结果为`None`而引发的潜在错误。
- 统一了各处对日程信息的调用方式。
2025-10-12 12:57:48 +08:00
minecraft1024a
146a142b47 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-12 12:41:14 +08:00
minecraft1024a
c01607b17b chore: 代码清理和格式化
对项目代码进行了一系列小幅度的清理和改进,包括:
- 移除未使用的导入语句
- 统一代码格式,如调整空行和导入顺序
- 优化日志输出的可读性
- 更新类型注解以符合现代 Python 语法
- 修复代码风格检查器(linter)报告的问题
2025-10-12 12:41:05 +08:00
minecraft1024a
d10f0e81cb refactor(cross_context): 重构S4U上下文检索逻辑并更新配置
将S4U(Search for User)上下文检索模式从依赖于共享组(ContextGroup)的配置中解耦,改为使用独立的全局配置。这使得S4U模式的管理更加清晰和灵活。

主要变更:
- **配置模型更新**: 在`CrossContextConfig`中移除了与S4U相关的字段(如`s4u_ignore_whitelist`),并添加了新的S4U专用配置项,包括`s4u_mode`, `s4u_limit`, `s4u_stream_limit`, `s4u_whitelist_chats`, 和 `s4u_blacklist_chats`。
- **S4U逻辑重构**: `build_cross_context_s4u`函数不再接收`context_group`参数,而是直接读取全局的S4U配置来检索用户在白名单或黑名单聊天中的消息。
- **简化调用**: `Prompt.get_cross_context_prompt`中的调用逻辑被简化,以适应新的函数签名。
- **文档与模板更新**: 更新了`bot_config_template.toml`配置文件模板,以反映新的S4U配置结构,并提供了更清晰的注释说明。

此次重构将Normal模式(群组共享)和S4U模式(用户中心)的配置和实现完全分离,提高了代码的可维护性和配置的直观性。
2025-10-12 12:38:13 +08:00
tt-P607
2d2571a9ed refactor(napcat): 将 MoFox-Bot 重命名为 MaiBot
在 NapCat 适配器插件中,将 `mofox_bot` 相关的变量和函数名重命名为 `maibot`,以保持项目内部命名的一致性。这是在之前从 MaiBot 重命名为 MoFox-Bot 后的修正操作。
2025-10-11 23:35:55 +08:00
tt-P607
96bff37827 Revert "fix(napcat): 修复消息处理和事件注册逻辑"
This reverts commit 3737c6d458.
2025-10-11 23:24:16 +08:00
tt-P607
3737c6d458 fix(napcat): 修复消息处理和事件注册逻辑
- 增加对字节类型消息的解码处理,增强了与不同 WebSocket 实现的兼容性。
- 修复了在 `register_events` 中使用 `Enum` 成员而非其 `value` 进行注册的错误。
- 将 `_start_maibot_connection` 重命名为 `_start_mofox_bot_connection` 以匹配项目重命名。
- 使用 `setattr` 动态设置 `mofox_bot_router`,提高代码的灵活性。
2025-10-11 23:13:10 +08:00
minecraft1024a
1fb01ef8a5 refactor(cross_context): 重构互通组上下文获取逻辑
重构并简化了互通组上下文的获取函数 `get_intercom_group_context`。旧的 `get_chat_history_by_group_name` 和 `get_intercom_group_context_by_name` 函数被合并和优化。

主要变更:
- 移除了冗余的 `get_chat_history_by_group_name` 函数。
- 将 `get_intercom_group_context_by_name` 重命名为 `get_intercom_group_context`,并简化了其参数。
- 增加了对黑名单模式的支持,现在可以正确地从所有聊天中排除指定会话。
- 优化了消息获取和格式化流程,现在按聊天会话分块返回消息,而不是将所有消息混合在一起排序,提高了上下文的可读性。
- 清理了代码格式和移除了未使用的导入。
2025-10-11 20:56:15 +08:00
minecraft1024a
3040000531 refactor: 将项目名称从 MaiBot 重命名为 MoFox-Bot
本次更新在整个代码库范围内将项目名称 "MaiBot" 及其相关变体(如 "maibot")统一重命名为 "MoFox-Bot"。

主要变更包括:
- 修改配置文件、模板和日志输出中的项目名称。
- 更新文档、注释和用户可见的字符串,以反映新的品牌名称。
- 调整插件元数据和描述。
2025-10-11 20:46:00 +08:00
minecraft1024a
6774d2a6c2 refactor(napcat): 重命名 MaiBot 为 MoFox-Bot
将日志和注释中的 "MaiBot" 实例更新为新的项目名称 "MoFox-Bot",以保持品牌一致性。
2025-10-11 20:32:17 +08:00
minecraft1024a
fb922ede39 feat(server): 增加端口占用自动检测和递增功能
当服务器启动时指定的端口被占用时,会自动检测并尝试使用下一个可用端口,避免因端口冲突导致启动失败。

同时,更新了 NapCat 适配器插件,使其能够从全局服务器实例中获取正确的地址和端口,确保与核心服务器的通信。
2025-10-11 20:31:16 +08:00
minecraft1024a
e91efad9aa build(deps): 更新项目元数据和依赖项
- 将项目名称从 `MaiBot` 更改为 `MoFox-Bot`
- 将 Python 版本要求提升至 `>=3.11`
- 调整 `rjieba` 依赖版本
2025-10-11 20:14:52 +08:00
minecraft1024a
4623e4b3e1 Revert "refactor(maizone): 升级上下文检索为用户中心模式"
This reverts commit dbe9d616d2.
2025-10-11 20:13:15 +08:00
minecraft1024a
f7ed5211a3 feat(context): 增加跨上下文黑名单模式
为跨上下文共享功能引入了黑名单模式,并增加了相应的配置选项。

- 在 `ContextGroup` 配置中增加了 `mode` 字段,支持 "whitelist"(白名单)和 "blacklist"(黑名单)模式。
- 增加了 `default_limit` 配置项,用于黑名单模式下的默认消息获取数量。
- 重构了 `cross_context_api` 以支持新的黑名单逻辑,现在可以共享除了黑名单中指定聊天外的所有聊天上下文。
- 更新了配置文件模板以包含新模式的说明和示例。
2025-10-11 19:45:32 +08:00
minecraft1024a
989956ed57 feat(gemini): 为 aiohttp 客户端请求增加重试逻辑
在 `AiohttpGeminiClient` 的 `_request` 方法中引入了重试机制,以增强网络请求的健壮性。

- 对 `aiohttp.ClientError` 类型的网络连接错误,实现最多3次的重试逻辑。
- 对于 HTTP 状态码错误(如 4xx, 5xx),则立即失败,不进行重试。
- 更新了 `User-Agent` 以模拟浏览器,减少被屏蔽的风险。
- 相应地更新了文档字符串,以反映新的重试行为和异常处理。
2025-10-11 19:37:38 +08:00
minecraft1024a
9c4bce8d8f docs(gemini): 为 aiohttp_gemini_client 添加详细的文档字符串
为 `AiohttpGeminiClient` 类及其辅助函数、方法和解析器类全面添加了中文文档字符串(docstrings)。

这提高了代码的可读性和可维护性,详细解释了每个组件的功能、参数和返回值,使其他开发者更容易理解和使用该模块。
2025-10-11 19:27:35 +08:00
minecraft1024a
419d1a483a feat(context): 增强s4u跨上下文模式并重构API
在跨上下文功能中为s4u模式引入`s4u_ignore_whitelist`配置项。当启用时,除了白名单中配置的聊天记录外,还会自动获取目标用户与Bot的私聊记录,以构建更全面的用户画像。

主要变更:
- 在 `ContextGroup` 配置中添加 `s4u_ignore_whitelist` 字段。
- 重构 `cross_context_api`,将 `get_context_groups` 更改为 `get_context_group`,使其返回完整的 `ContextGroup` 对象而非仅ID列表,以便于访问新配置。
- 调整 `build_cross_context_s4u` 函数以处理新逻辑,包括获取私聊记录和避免重复处理。
- 更新了配置文件模板以包含新选项的说明和示例。
2025-10-11 19:19:52 +08:00
minecraft1024a
67ab97edef docs(config): 更新跨上下文配置的注释和示例
将 `cross_context` 配置中 `limit` 参数的格式说明从整数更新为字符串,以匹配实际代码实现。同时,相应地更新了示例代码,确保用户能够正确配置。
2025-10-11 19:07:19 +08:00
minecraft1024a
a4d06480a0 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-11 19:05:48 +08:00
minecraft1024a
25aa15eb19 chore: 更新模板配置文件版本至 7.2.8 2025-10-11 19:05:45 +08:00
tt-P607
3fcc53226f Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-11 19:04:36 +08:00
tt-P607
51abc9dbd9 蒽,小改一下llm分割提示词 2025-10-11 19:04:31 +08:00
minecraft1024a
b3956c2fa6 feat(cross_context): 支持为跨上下文聊天指定消息数量
允许用户在配置文件中为每个聊天流(群聊或私聊)单独设置要检索的历史消息数量(limit)。如果未指定,则默认为5条。

- 更新了 `build_cross_context_normal` 和 `build_cross_context_s4u` 方法以解析和使用这个新的 `limit` 参数。
- 在S4U(Search for User)模式下,获取的消息数量调整为 `limit` 的4倍,以确保有足够的消息可供筛选。
- 更新了配置文件模板 `bot_config_template.toml` 以反映此项新功能,并提供了示例。
2025-10-11 19:02:09 +08:00
minecraft1024a
604b5bc4ac Revert "feat(cross_context): 新增以用户为中心的跨上下文检索功能"
This reverts commit e9c0b8bf9a.
2025-10-11 18:54:49 +08:00