tt-P607
4f277c1eed
fix(chat): 防止回复媒体内容处理失败的消息
...
机器人此前会将 "[图片(描述生成失败)]" 等系统提示误解为用户消息并进行回复,导致异常的对话行为。
本次修复通过两个层面解决此问题:
1. 在 `ChatBot` 中添加硬编码过滤器,作为第一道防线,直接静默处理包含失败关键词的消息。
2. 更新 Planner Prompt,明确禁止 AI 回复此类消息,作为第二道保险,确保系统行为的健壮性。
2025-11-19 23:24:13 +08:00
tt-P607
c5bd89d6f5
feat(chat): 在群组静默列表中忽略图片和表情包
...
原有的群组静默功能只对非@的文本消息生效,导致在静默群组中发送的图片和表情包依然会被消息管理器处理。
本次更新将静默逻辑扩展,现在也会忽略图片和表情包类型的消息,从而更彻底地实现群组消息的静默,减少不必要的资源消耗。
2025-11-19 23:24:12 +08:00
tt-P607
a892642b7d
fix(chat): 修复消息处理中的潜在空指针和类型错误
...
为多个关键步骤增加了健壮性检查,以防止在处理消息时因意外的空值或类型不匹配而导致程序崩溃。
主要修复包括:
- 在记录消息日志前,检查 `user_info` 是否存在。
- 在判断事件是否中断前,检查事件处理结果 `result` 是否为 None。
- 在获取消息时间戳前,使用 `hasattr` 确认 `time` 属性的存在。
- 在检查群组静默状态时,将 `group_id` 转换为字符串以匹配配置列表。
2025-11-19 23:24:11 +08:00
tt-P607
d0c46cdf56
feat(emoji): 优化表情分析提示词以提升描述准确性
...
本次更新针对表情包描述生成的两个关键环节优化了提示词(Prompt),以提高生成描述的质量和信息完整度。
1. 在初始描述生成中,新增了强制性规则,要求模型必须完整转述图片中包含的清晰文字,确保关键文本信息不被遗漏。
2. 重构了“点睛之笔”的精炼提示词,使其目标更明确(为AI后续处理服务),规则更具体(平衡客观与情感、包含核心文字等),并增加了示例,旨在生成更稳定、结构化的精炼描述。
2025-11-19 23:24:09 +08:00
tt-P607
5786b84ad4
feat(chat): 新增群组静默列表以忽略非@消息
...
引入了 `mute_group_list` 配置项。对于被添加到此列表的群组,机器人将只在被明确@或回复时才处理消息,从而避免在活跃群组中造成不必要的打扰。
- 在 `MessageReceiveConfig` 中添加 `mute_group_list` 选项。
- 在消息接收逻辑中实现检查,如果消息来自静默群组且不是@或回复,则跳过消息管理器处理。
- 调整了 `is_mentioned` 的计算时机,移至消息内容处理之后,以确保静默判断的准确性。
- 附带修复了处理适配器响应时因数据非字典类型导致的潜在错误。
2025-11-19 23:24:08 +08:00
tt-P607
391204f025
refactor(chat): 简化 GIF 抽帧逻辑为均匀采样
...
旧的基于均方误差(MSE)的 GIF 抽帧逻辑过于复杂,其参数难以调整且结果不可预测。
现在,该逻辑被重构为一个简单的均匀采样算法,固定抽取 4 帧来代表整个动画。这不仅简化了代码、移除了不必要的参数,还确保了对于任何 GIF 都能生成一致且有代表性的预览图,同时提升了处理性能。
BREAKING CHANGE: `transform_gif` 函数签名已更改,移除了 `similarity_threshold` 和 `max_frames` 参数。
2025-11-19 23:24:05 +08:00
tt-P607
d4100ca3e2
feat(tts): 为 TTS 插件引入混合激活机制
...
重构了 TTSVoiceAction 的激活逻辑,以提升语音交互的自然度和趣味性。
此前的纯关键词触发方式较为僵硬,新的机制结合了多种判断方式,使语音回复更加智能和生动。
新的混合激活机制包含三种并行的判断方式:
1. **随机激活**: 以 55% 的概率随机触发,为对话增添惊喜感和自发性。
2. **关键词激活**: 响应用户的明确语音请求,如“发语音”、“用语音说”等。
3. **LLM 判断**: 利用大模型分析上下文,在讲故事、情感表达等适宜场景下智能激活。
任意一种方式满足条件即可触发语音回复,使机器人的回应更加人性化。
2025-11-19 23:24:04 +08:00
tt-P607
c0d2ddab5a
fix(emoji): 为表情包描述生成增加 VLM 调用重试机制
...
VLM 在生成表情包描述时,其 API 调用可能因网络波动或服务暂时不可用而失败。此前的实现会在首次调用失败后直接中断流程。
为了提高该功能的健壮性,本次提交引入了重试逻辑:
- 在调用 VLM 生成描述时,最多尝试 3 次。
- 如果调用失败或返回空结果,将记录错误并等待 1 秒后重试。
- 这能有效应对暂时性网络或服务问题,显著提高表情包描述生成的成功率。
2025-11-19 23:24:03 +08:00
tt-P607
cba200520b
refactor(chat): 重构图片在聊天记录中的处理与表示方式
...
为了简化LLM的上下文并提高代码可维护性,对聊天记录中图片的处理方式进行了彻底重构。
旧系统使用 [图片1] 等占位符,并在消息头部附加一个独立的图片描述映射块。这种方式结构复杂,容易造成上下文分离。
新系统将图片描述直接内联到消息文本中,格式为 `[图片:一只猫]`,使聊天记录对LLM更加自然和易于理解。
主要变更:
- **消息构建 (`chat_message_builder`):** 在构建可读消息时,异步将数据库中的 `[picid:...]` 标签直接替换为完整的 `[图片:描述]`。
- **废弃映射:** 移除了独立的图片映射信息块 (`build_pic_mapping_info` 函数),所有信息都在消息内联。
- **图片处理 (`utils_image`):** `process_image` 流程现在同步返回完整的描述字符串,并增强了VLM调用的重试逻辑和缓存机制,提高了健壮性。
- **消息存储 (`storage`):** 在消息存入数据库前,将 `[图片:描述]` 转换为 `[picid:...]`,以保持存储规范化。
- **修复:** 增加了多处空值检查,提高了代码的稳定性。这不得之前稳定好用多了😋 😋 😋
2025-11-19 23:24:02 +08:00
tt-P607
3accbabd3a
feat(emoji): 重构表情包识别、描述与缓存系统
...
本次更新全面重构了表情包处理逻辑,引入了包含“精炼描述”、“关键词”和“详细分析”的三层描述系统,以提升识别的深度与广度。同时,统一并修复了缓存机制,解决了旧缓存数据格式不兼容及新内容无法被缓存的问题,并通过增加校验逻辑增强了系统的健壮性。
注意:更新后,用户必须手动清空 emojis、images、image_descriptions 三个数据库表,并将 data/emoji_registed/ 目录下的所有文件移至 data/emoji/ 目录,然后重启程序,以确保所有表情包能被新系统正确地重新识别
2025-11-19 23:24:01 +08:00
tt-P607
b2fa9d36b4
之前改的打字有点快了()
2025-11-19 23:24:00 +08:00
tt-P607
237e53c847
聊天记录互通完全回归 😋
2025-11-19 23:23:59 +08:00
Windpicker-owo
1ff266237d
refactor(notice): 移除硬编码的notice作用域判定逻辑
...
- 重构notice系统,作用域完全由additional_config中的is_public_notice字段决定
- 移除_determine_notice_scope方法中的硬编码notice类型检查
- 提供更灵活和可控的notice管理方式,支持显式配置公共notice
- 更新相关文档说明新的使用方式
BREAKING CHANGE: 之前依赖特定notice类型自动成为公共notice的插件需要显式设置is_public_notice=true
2025-11-19 23:23:59 +08:00
Windpicker-owo
2416888d4d
feat(chat): 为PromptParameters添加notice_block字段
2025-11-19 23:23:58 +08:00
Eric-Terminal
c5b4c93833
修复(聊天): 为 message_process 增加 message_info 防御性检查
...
message_process 方法在收到没有 'message_info' 字段的 payload(例如来自 Napcat 的握手/心跳控制消息)时,会因 KeyError 而失败。
此更改增加了防御性检查,在处理前验证 'message_info' 的存在和类型。如果缺失,则记录并跳过该 payload,防止主处理循环崩溃。
2025-11-19 23:23:57 +08:00
Windpicker-owo
1eda54cb8f
feat(notice): 实现全局notice消息管理系统
...
添加全局notice管理器,将notice消息与普通消息分离处理。主要功能包括:
- 创建 GlobalNoticeManager 单例类,支持公共和特定聊天流作用域
- 在 message_manager 中集成notice检测和处理逻辑
- 扩展数据库模型和消息类,添加notice相关字段
- 在提示词生成器中添加notice信息块展示
- 配置系统支持notice相关参数设置
- 适配器插件增强notice类型识别和配置
notice消息特点:
- 默认不触发聊天流程,只记录到全局管理器
- 可在提示词中展示最近的系统通知
- 支持按类型设置不同的生存时间
- 支持公共notice(所有聊天可见)和流特定notice
BREAKING CHANGE: 数据库消息表结构变更,需要添加 is_public_notice 和 notice_type 字段
2025-11-19 23:23:55 +08:00
tt-P607
803e54b920
忘记改模板配置文件了
2025-11-19 23:23:44 +08:00
tt-P607
9a6e51b5a6
perf(cross_context): 优化S4U上下文生成性能与逻辑
...
通过引入批量数据库查询,显著提升了跨群聊上下文(S4U)功能的性能和效率。旧的实现方式会对每个群聊进行一次数据库查询,导致在群聊数量多时性能低下。
主要变更:
- 在 `message_repository` 中新增 `get_user_messages_from_streams` 函数,使用 CTE 和 `row_number()` 在单个请求中高效检索所有目标聊天流中的用户消息。
- 重构 `build_cross_context_s4u` 以使用新的批量查询方法,大幅减少了数据库I/O和应用层循环。
- 增强了私聊场景下的逻辑,会同时获取机器人的消息以提供更完整的对话历史。
- 改进了私聊上下文的标题,使其对用户更加友好。
- 为S4U流程添加了更详细的日志,便于问题排查。
2025-11-19 23:23:43 +08:00
minecraft1024a
016099a997
fix(chatter): 修复计划生成和后台任务处理中的多项问题
...
此次更新包含对 `affinity_flow_chatter` 插件的多项修复和健壮性改进:
1. **计划生成器 (`plan_generator.py`)**:
* 修复了 `target_info` 未能正确实例化为 `TargetPersonInfo` 对象的问题,现在可以确保类型安全。
* 增加了对未知聊天类型的处理,将其默认为私聊,增强了鲁棒性。
* 将获取聊天记录的上限从 `short_memory_length` 调整为更通用的 `max_context_size`。
2. **规划器 (`planner.py`)**:
* 引入了后台任务管理机制,确保由 `_commit_interest_updates` 创建的异步任务能够被追踪。
* 增加了 `_handle_task_result` 回调函数,用于捕获和记录后台任务中可能出现的异常,防止任务静默失败并提高系统的可维护性。
2025-11-19 23:23:40 +08:00
minecraft1024a
b633175e54
fix(chatter): 修复私聊时获取用户昵称的属性错误
...
在私聊场景下,`plan.target_info` 是一个 `UserInfo` 对象,而不是字典。此前的代码使用字典方式 `get("person_name")` 访问属性,会导致 `AttributeError`。
本次修改将属性访问方式从 `plan.target_info.get("person_name")` 调整为 `plan.target_info.person_name`,以正确获取用户信息。同时,更新了相关注释,阐明了情绪模块的依赖关系,防止因配置关闭而引发错误。
2025-11-19 23:23:38 +08:00
minecraft1024a
dc98e75487
refactor(prompt): 优化Prompt组件注入逻辑并简化代码
...
将Prompt组件的注入逻辑从`Prompt.format`方法前置到`PromptManager.get_prompt_async`和`create_prompt_async`中。这使得注入时机更早,逻辑更清晰,并允许在获取Prompt时就能动态传入参数以影响注入内容。
主要变更:
- `PromptManager`: `get_prompt_async`现在负责处理组件注入,并接收可选的`parameters`参数。`format_prompt`相应地传递参数。
- `create_prompt_async`: 现在也支持在创建时进行动态注入。
- `Prompt.format`: 移除了原有的组件注入逻辑,简化了方法实现。
- `PromptComponentManager`: 重构为直接从全局`component_registry`获取组件,移除了自身的注册和存储逻辑,减少了状态管理的复杂性。
- `plan_filter.py`: 删除了大量冗余和重复的代码块,包括主动聊天模式的独立逻辑和旧的历史消息构建方式。
2025-11-19 23:23:35 +08:00
minecraft1024a
0917318cbd
feat(plugin): 引入Prompt组件系统以实现动态Prompt注入
...
引入了一个新的插件组件类型 `BasePrompt`,允许插件动态地向核心Prompt模板中注入额外的上下文信息。该系统旨在提高Prompt的可扩展性和可定制性,使得开发者可以在不修改核心代码的情况下,通过插件来丰富和调整模型的行为。
主要变更包括:
- **`BasePrompt` 基类**: 定义了Prompt组件的标准接口,包括 `execute` 方法用于生成注入内容,以及 `injection_point` 属性用于指定目标Prompt。
- **`PromptComponentManager`**: 一个新的管理器,负责注册、分类和执行所有 `BasePrompt` 组件。它会在构建核心Prompt时,自动查找并执行相关组件,将其输出拼接到主Prompt内容之前。
- **核心Prompt逻辑更新**: `src.chat.utils.prompt.Prompt` 类现在会调用 `PromptComponentManager` 来获取并注入组件内容。
- **插件系统集成**: `ComponentRegistry` 和 `PluginManager` 已更新,以支持 `BasePrompt` 组件的注册、管理和统计。
- **示例插件更新**: `hello_world_plugin` 中增加了一个 `WeatherPrompt` 示例,演示了如何创建和注册一个新的Prompt组件。
- **代码重构**: 将 `PromptParameters` 类从 `prompt.py` 移动到独立的 `prompt_params.py` 文件中,以改善模块化和解决循环依赖问题。
2025-11-19 23:23:28 +08:00
tt-P607
baefca2115
孩子们,知识库的高并发太恐怖了
2025-11-19 23:23:22 +08:00
tt-P607
59fb160ea4
refactor(learning): 在线程池工作函数中实例化LLMRequest
...
将 `LLMRequest` 对象的实例化从 `extract_information` 函数移动到线程池执行的 `extract_info_sync` 函数内部。
此更改确保每个工作线程都有自己独立的 `LLMRequest` 实例,避免了在多线程环境下共享同一实例可能引发的潜在并发问题。
2025-11-19 23:23:18 +08:00
tt-P607
b4a707c62a
feat(knowledge): 新增问答段落相似度阈值
...
为知识库问答中的段落检索增加相似度阈值过滤功能。
此前,即使相似度很低的段落也会被返回,可能导致问答结果不准确。通过新增 `qa_paragraph_threshold` 配置项,可以过滤掉低于设定阈值的段落,从而提高问答的精准度和相关性。
2025-11-19 23:23:17 +08:00
minecraft1024a
65f1cecbc9
fix(chat): 修复知识库相关性得分格式化问题
...
当知识库返回的相关性得分(relevance)不是有效的浮点数时,格式化字符串 `f"{relevance:.2f}"` 会引发 `TypeError` 或 `ValueError`,导致程序崩溃。
本次修改通过添加 `try-except` 块来捕获潜在的异常。如果 `relevance` 可以成功转换为浮点数,则将其格式化为两位小数;如果转换失败,则直接使用其原始字符串表示形式,从而增强了代码的健壮性,避免了因数据类型不匹配而导致的运行时错误。
2025-11-19 23:23:13 +08:00
tt-P607
4e6a40509b
chore(scripts): 为学习工具脚本引入并发依赖
2025-11-19 23:23:10 +08:00
明天好像没什么
892a4ec455
ci(docker): 重构CI/CD流程,支持多架构构建与自动推送
...
- 启用push触发,支持master/dev分支及版本标签
- 新增ARM64独立构建任务,使用ubuntu-24.04-arm运行器
- 引入docker/metadata-action自动生成标签,支持分支、标签、semver及sha
- 采用push-by-digest方式分别构建AMD64/ARM64镜像,最后合并多架构manifest
- 移除maim_message与MaiMBot-LPMM子模块克隆步骤,镜像名由maibot改为mofox
- docker-compose同步更新镜像名、容器名及挂载路径,保持与CI一致
2025-11-19 23:23:09 +08:00
明天好像没什么
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