Commit Graph

1470 Commits

Author SHA1 Message Date
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
minecraft1024a
3172f36fa5 Revert "feat(cross_context): 优化跨上下文检索,区分群聊与私聊记录"
This reverts commit f09af9fe56.
2025-10-11 18:54:42 +08:00
minecraft1024a
4db6a532fd refactor(schedule): 优化日程生成日志输出
将月度计划的日志记录逻辑从 `plan_manager` 迁移到 `schedule_manager` 中,使其仅在生成日程并实际使用到月度计划时才打印相关信息,避免了不必要的日志输出。

- 从 `plan_manager` 中移除了获取月度计划后的日志打印。
- 在 `schedule_manager` 的日志函数中增加了对参考月度计划的展示,使日志内容更具上下文。
2025-10-11 18:52:15 +08:00
tt-P607
244b95e0af revert: 回退 commit 94e34c9370 2025-10-11 15:40:55 +08:00
tt-P607
0383a999fb 总之就是知识库 2025-10-11 14:18:54 +08:00
tt-P607
94e34c9370 fix(chat): 修复消息打断会取消正在进行的回复任务的问题
之前的消息打断逻辑会无差别地取消处理流中的所有任务。这会导致一个问题:当用户在机器人生成回复期间快速发送新消息时,回复任务会被意外中断,导致机器人无法正常完成回复。

本次修改通过引入 `is_replying` 状态来解决此问题:
1.  在 `StreamContext` 中新增 `is_replying` 状态标志,用于追踪回复生成过程。
2.  当开始生成回复时,设置该标志为 `True`,并在回复完成或取消后通过 `finally` 块确保其恢复为 `False`。
3.  `MessageManager` 的打断检查逻辑现在会首先检查此标志,如果为 `True` 则跳过打断,从而保护正在进行的回复。
4.  `cancel_all_stream_tasks` 也增加了 `exclude_reply` 选项,确保即使触发打断,也不会取消回复任务。
2025-10-11 02:11:32 +08:00