Commit Graph

5074 Commits

Author SHA1 Message Date
明天好像没什么
86f6e97a1e refactor(docker): 重构容器化配置,移除冗余服务并迁移至 uv 包管理
- 精简 Dockerfile:删除 lpmm 编译步骤,改用 pyproject.toml 与 uv sync
- 移除 docker-compose 中的 adapters、sqlite-web 服务,仅保留 core 与 napcat
- 统一工作目录与卷挂载路径,由 /MaiMBot 更名为 /InkFox
- 网络名称由 maim_bot 改为 mofox
- 入口命令切换为 uv run,提升启动速度与依赖隔离
2025-11-19 23:23:08 +08:00
明天好像没什么
9eeea8fd41 chore(deps): 精简依赖并升级Python基线至3.11
- 移除3.10兼容层,清理旧版本wheel与回退包
- 统一numpy、scipy、networkx为单版本,削减重复解析
- 新增mcp>=0.9.0与sse-starlette>=2.2.1,解锁新能力
- inkfox升至0.1.1,新增arm64/aarch64原生支持
- 通过更严格的平台标记,锁文件体积减少八成
2025-11-19 23:23:07 +08:00
minecraft1024a
823d432152 refactor(knowledge): 简化知识库问答管理器的使用
将 `QAManager` 类实例化改为直接导入和使用单例 `qa_manager`,以简化代码并提高效率。同时,移除了对 `get_knowledge` 方法中不再需要的参数,使其调用更加清晰。
2025-11-19 23:23:06 +08:00
minecraft1024a
8549778f9c chore(scripts): 移除过时的一次性脚本
移除了两个用于项目重构的一次性脚本:
- `convert_sqlalchemy_models.py`:用于将 SQLAlchemy 模型从旧版 `Column` 语法转换为 `Mapped` 语法。
- `update_prompt_imports.py`:用于批量更新 `Prompt` 类的导入路径。

这些脚本已完成其历史使命,不再需要维护。

同时,对插件加载日志和 manifest 转换脚本进行了小幅改进:
- 插件加载日志现在会显示组件的简短描述,方便快速了解其功能。
- manifest 转换脚本增加了对更多元数据字段(如仓库地址、关键字、分类等)的支持。
2025-11-19 23:23:04 +08:00
LuiKlee
453ada5d6a 调整格式 2025-11-19 23:23:03 +08:00
minecraft1024a
2e1ca1ac78 ruff ci 2025-11-19 23:23:02 +08:00
tt-P607
10b0148204 Revert "总之就是知识库"
This reverts commit 0383a999fb.
2025-11-19 23:22:57 +08:00
tt-P607
b86f92a457 feat(web_search): 新增 Metaso 搜索引擎支持
为联网搜索工具集成了新的搜索引擎 Metaso,为用户提供更多搜索选择。

- 在搜索引擎基类 `BaseSearchEngine` 中添加了可选的 `read_url` 方法,为未来支持直接读取网页内容奠定基础。
- 更新了插件加载、工具执行逻辑和配置文件模板,以完整支持 Metaso 引擎。
- 将默认回复生成器的任务超时时间从 15 秒延长至 45 秒,以适应联网搜索等耗时较长的操作,提高稳定性。
2025-11-19 23:22:55 +08:00
minecraft1024a
f1342516ca docs: 更新 README.md 中的功能描述和 admonition 语法
- 将 admonition 语法从 `[!docs: 更新 README.md 功能描述和 admonition 语法

- 将 admonition 语法从 `[!IMPORTANT]` 和 `[!WARNING]` 调整为 GitHub 支持的 `[IMPORTANT]` 和 `[WARNING]` 格式。
- 在“拓展功能”部分新增了“AFC 智能对话”特性。
- 移除了“原版功能”中重复列出的“智能对话系统”条目,使其更加清晰。
2025-11-19 23:22:51 +08:00
minecraft1024a
93227ed9fc docs(config): 更新配置文件注释说明
将配置类继承说明从“重要的”改为“所有”,以强调所有配置类都必须继承自 `ValidatedConfigBase`。
2025-11-19 23:22:50 +08:00
minecraft1024a
3e31755cd0 现在不是空盒子了 2025-11-19 23:22:48 +08:00
minecraft1024a
5103f3ed42 fix(server): 移除启动日志中多余的协议前缀 2025-11-19 23:22:47 +08:00
Windpicker-owo
963bcd19e1 feat(action): 重构 Action 激活机制并添加 go_activate() 方法
引入新的 Action 激活机制,允许通过重写 go_activate() 方法来自定义激活逻辑。提供了三个工具函数:
- _random_activation(): 随机概率激活
- _keyword_match(): 关键词匹配激活
- _llm_judge_activation(): LLM 智能判断激活

主要变更:
- 在 BaseAction 中添加 go_activate() 抽象方法和相关工具函数
- 更新 ActionModifier 使用新的激活判断逻辑
- 在 hello_world_plugin 中添加新的激活方式示例
- 更新文档说明新的激活机制
- 保持向后兼容,旧的激活类型配置仍然可用

BREAKING CHANGE: Action 激活判断现在通过 go_activate() 方法进行,旧的激活类型字段已标记为废弃但仍然兼容
2025-11-19 23:22:46 +08:00
minecraft1024a
222aa09aaf chore(scripts): 移除无用的脚本文件
删除了两个已不再需要的脚本:
- `run_multi_stage_smoke.py`: 用于早期烟雾测试,现已过时。
- `text_length_analysis.py`: 用于分析数据库中的消息文本长度,功能已不再需要。

feat(scripts):为来自MaiBot的插件提供了转换插件的 _manifest.json 文件的脚本
2025-11-19 23:22:43 +08:00
minecraft1024a
b5549ff81f fix(chat): 修复睡眠和情绪系统中的空值和逻辑问题
修复了两个问题:
1.  在睡眠状态下,如果没有设置起床时间,且当天也无法从日程中获取新的起床时间,程序会错误地继续执行后续的唤醒判断逻辑,而不是直接返回并继续睡眠。
2.  在更新情绪状态时,如果消息的`interest_value`为`None`,会导致类型错误。已增加空值检查,将其默认处理为 0.0。
2025-11-19 23:22:41 +08:00
minecraft1024a
73a40ad830 feat(chat): 引入睡眠系统,在睡眠状态下拦截消息
在消息处理的最前端 (`MessageManager`) 增加了对睡眠状态的检查。当系统处于 `SLEEPING` 状态时,将直接拦截所有新消息,不再进行后续处理。

同时,为了配合睡眠系统的正常运作:
- 将睡眠系统的定时任务初始化移至 `main.py`,确保其在应用启动时正确加载。
- 在主动思维插件 (`proactive_thinker`) 的定时任务(冷启动和日常唤醒)中增加了睡眠状态检查,避免在睡眠期间触发主动行为。
2025-11-19 23:22:38 +08:00
minecraft1024a
1cee641a8f refactor(config): 简化睡眠系统配置项
移除旧的、基于睡眠压力模型的多个配置项,包括睡眠压力阈值、失眠概率(区分不同压力)、压力增减值等。

这些配置项在新系统中已不再使用,将其移除可以简化配置文件,避免引起混淆。现在的睡眠逻辑更加直接,不再依赖复杂的压力计算。
2025-11-19 23:22:35 +08:00
minecraft1024a
ce5fc64228 refactor(chat): 从 MessageManager 中移除睡眠和唤醒管理器的残留代码
在之前的提交 (cb51446) 中,睡眠管理器模块已被移除。本次提交清除了 `MessageManager` 中与之相关的残留代码,包括导入语句、实例初始化以及启动/停止逻辑,完成了整个重构过程。
2025-11-19 23:22:35 +08:00
minecraft1024a
1b0f9b9449 refactor(chat): 移除旧的睡眠管理器模块
删除了位于 `src/chat/message_manager/sleep_manager/` 目录下的整个旧版睡眠管理器。该模块包含了 `sleep_manager`, `wakeup_manager`, `sleep_state` 等多个文件,其功能将被新的实现所取代。

同时,对 `context_manager.py` 中的群聊判断逻辑进行了微调,以适应新的消息结构。
2025-11-19 23:22:34 +08:00
minecraft1024a
0510ce9d55 Revert "实现了新的睡眠系统喵~",我看了不如我回去自己写一个()
This reverts commit e1dde64fc6.
2025-11-19 23:22:33 +08:00
tt-P607
dc3c6a235c refactor(core): make chat utils async and decouple plugin dependencies
- Convert `get_recent_group_speaker` and `count_messages_between` in `chat/utils` to async functions to align with underlying asynchronous database calls, preventing potential blocking issues.

- Implement optional import for `sleep_system` within the `affinity_flow_chatter` plugin using a try-except block. This decouples the hard dependency between the two plugins, enhancing modularity and ensuring the chatter plugin remains operational even if the sleep system is unavailable.
2025-11-19 23:22:31 +08:00
ikun-11451
6d6436c31f 修复了导入错误喵...... 2025-11-19 23:22:29 +08:00
ikun-11451
6827b740b5 实现了新的睡眠系统喵~ 2025-11-19 23:22:29 +08:00
tt-P607
8b88082031 feat(chat): add protection for quoted content in response processing
In the LLM response post-processing flow, a new protection layer for quoted content has been added. This prevents the sentence splitter from incorrectly breaking up complete sentences enclosed in quotation marks, thus ensuring the integrity of the quoted text.

- Adds `protect_quoted_content` and `recover_quoted_content` functions.
- Upgrades the response processing to a three-layer protection system (kaomoji, quotes, special blocks).
- Also adjusts the default values for typing simulation time to improve user experience.
2025-11-19 23:22:28 +08:00
tt-P607
87b1d5aec4 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-11-19 23:22:27 +08:00
LuiKlee
a095bc27fb 修复格式问题
修改613行的标点
如果功能异常,请提交报告
2025-11-19 23:22:24 +08:00
LuiKlee
8a080000f7 Update README.md 2025-11-19 23:22:23 +08:00
LuiKlee
4f3154cc85 Update README.md 2025-11-19 23:22:23 +08:00
LuiKlee
f2f7da0e11 调整 2025-11-19 23:22:22 +08:00
LuiKlee
31ae89bc9e 调整排版 2025-11-19 23:22:21 +08:00
ikun两年半
5afb8485b0 更正依赖名字喵~ 2025-11-19 23:22:21 +08:00
tt-P607
dc60d24f24 嗯,llm分割提示词优化一下 2025-11-19 23:22:20 +08:00
tt-P607
34701e34f1 feat(chat): 实现延迟重处理并修复并发问题
本次提交为聊天处理逻辑带来了两项关键改进:

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

2.  **为聊天器添加并发锁:**
    在 `AffinityChatter` 中引入了 `asyncio.Lock`,以确保每个实例一次只处理一个流上下文。这可以防止在并发场景下可能出现的竞争条件,保证了数据处理的原子性和状态的一致性。
2025-11-19 23:22:18 +08:00
ikun-11451
c88b259c0e 将获取方式改成get喵~ 2025-11-19 23:22:15 +08:00
LuiKlee
85d90e01af 减少 .env 文件的重复读取
只在开始时加载一次.env,后续从 os.environ 读取
2025-11-19 23:22:12 +08:00
LuiKlee
e5ed58c376 添加重试机制
如果 ui_logger 服务 长期不可用,该版本会多尝试几次,可能增加少量 CPU 开销
3次重试 + 0.1s 间隔
2025-11-19 23:22:12 +08:00
minecraft1024a
e7bde5d77d chore(chatter): 添加关于迁移逻辑的 TODO 注释 2025-11-19 23:22:12 +08:00
minecraft1024a
2ed9e44242 **我撞到dict了 2025-11-19 23:22:11 +08:00
minecraft1024a
159ff11524 Revert "refactor(chatter): 简化 action_message 的数据类型处理"
This reverts commit 540b162c04.
2025-11-19 23:22:10 +08:00
minecraft1024a
62dac40c6a refactor(chatter): 简化 action_message 的数据类型处理
在 `ActionPlannerInfo` 中,将 `action_message` 的类型直接设为 `target_message_obj` (dict),移除了之前将其转换为 `DatabaseMessages` 对象的逻辑。

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

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

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

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

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

主要变更:
- `schedule_manager`的`get_current_activity`现在返回包含活动和时间范围的字典,而不仅仅是活动名称。
- 在`default_generator`中,重构了日程提示的生成逻辑,使其能够计算并展示活动的详细时间信息。
- 修复了多处可能因变量为空(如`msg_content`、`user_nickname`)或事件处理结果为`None`而引发的潜在错误。
- 统一了各处对日程信息的调用方式。
2025-11-19 23:22:01 +08:00
tt-P607
b7392ffea3 refactor(napcat): 将 MoFox-Bot 重命名为 MaiBot
在 NapCat 适配器插件中,将 `mofox_bot` 相关的变量和函数名重命名为 `maibot`,以保持项目内部命名的一致性。这是在之前从 MaiBot 重命名为 MoFox-Bot 后的修正操作。
2025-11-19 23:21:58 +08:00
tt-P607
6f1ed7f0ec Revert "fix(napcat): 修复消息处理和事件注册逻辑"
This reverts commit 3737c6d458.
2025-11-19 23:21:56 +08:00
tt-P607
3d532b2945 fix(napcat): 修复消息处理和事件注册逻辑
- 增加对字节类型消息的解码处理,增强了与不同 WebSocket 实现的兼容性。
- 修复了在 `register_events` 中使用 `Enum` 成员而非其 `value` 进行注册的错误。
- 将 `_start_maibot_connection` 重命名为 `_start_mofox_bot_connection` 以匹配项目重命名。
- 使用 `setattr` 动态设置 `mofox_bot_router`,提高代码的灵活性。
2025-11-19 23:21:56 +08:00
minecraft1024a
6ce331cf0c chore: 代码清理和格式化
对项目代码进行了一系列小幅度的清理和改进,包括:
- 移除未使用的导入语句
- 统一代码格式,如调整空行和导入顺序
- 优化日志输出的可读性
- 更新类型注解以符合现代 Python 语法
- 修复代码风格检查器(linter)报告的问题
2025-11-19 23:21:54 +08:00
minecraft1024a
bfeb04969d 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-11-19 23:21:51 +08:00