Commit Graph

32 Commits

Author SHA1 Message Date
tt-P607
e8b7841f5a feat(emoji): 优化表情分析提示词以提升描述准确性
本次更新针对表情包描述生成的两个关键环节优化了提示词(Prompt),以提高生成描述的质量和信息完整度。

1.  在初始描述生成中,新增了强制性规则,要求模型必须完整转述图片中包含的清晰文字,确保关键文本信息不被遗漏。
2.  重构了“点睛之笔”的精炼提示词,使其目标更明确(为AI后续处理服务),规则更具体(平衡客观与情感、包含核心文字等),并增加了示例,旨在生成更稳定、结构化的精炼描述。
2025-10-23 00:45:28 +08:00
tt-P607
3054329115 fix(emoji): 为表情包描述生成增加 VLM 调用重试机制
VLM 在生成表情包描述时,其 API 调用可能因网络波动或服务暂时不可用而失败。此前的实现会在首次调用失败后直接中断流程。

为了提高该功能的健壮性,本次提交引入了重试逻辑:
- 在调用 VLM 生成描述时,最多尝试 3 次。
- 如果调用失败或返回空结果,将记录错误并等待 1 秒后重试。
- 这能有效应对暂时性网络或服务问题,显著提高表情包描述生成的成功率。
2025-10-22 01:08:29 +08:00
tt-P607
5bd59fe415 refactor(chat): 重构图片在聊天记录中的处理与表示方式
为了简化LLM的上下文并提高代码可维护性,对聊天记录中图片的处理方式进行了彻底重构。

旧系统使用 [图片1] 等占位符,并在消息头部附加一个独立的图片描述映射块。这种方式结构复杂,容易造成上下文分离。

新系统将图片描述直接内联到消息文本中,格式为 `[图片:一只猫]`,使聊天记录对LLM更加自然和易于理解。

主要变更:
- **消息构建 (`chat_message_builder`):** 在构建可读消息时,异步将数据库中的 `[picid:...]` 标签直接替换为完整的 `[图片:描述]`。
- **废弃映射:** 移除了独立的图片映射信息块 (`build_pic_mapping_info` 函数),所有信息都在消息内联。
- **图片处理 (`utils_image`):** `process_image` 流程现在同步返回完整的描述字符串,并增强了VLM调用的重试逻辑和缓存机制,提高了健壮性。
- **消息存储 (`storage`):** 在消息存入数据库前,将 `[图片:描述]` 转换为 `[picid:...]`,以保持存储规范化。
- **修复:** 增加了多处空值检查,提高了代码的稳定性。这不得之前稳定好用多了😋😋😋
2025-10-21 20:14:58 +08:00
tt-P607
b8e49343c1 feat(emoji): 重构表情包识别、描述与缓存系统
本次更新全面重构了表情包处理逻辑,引入了包含“精炼描述”、“关键词”和“详细分析”的三层描述系统,以提升识别的深度与广度。同时,统一并修复了缓存机制,解决了旧缓存数据格式不兼容及新内容无法被缓存的问题,并通过增加校验逻辑增强了系统的健壮性。

注意:更新后,用户必须手动清空 emojis、images、image_descriptions 三个数据库表,并将 data/emoji_registed/ 目录下的所有文件移至 data/emoji/ 目录,然后重启程序,以确保所有表情包能被新系统正确地重新识别
2025-10-21 15:57:52 +08:00
雅诺狐
875ee4813c refactor: 清理项目结构并修复类型注解问题
修复 SQLAlchemy 模型的类型注解,使用 Mapped 类型避免类型检查器错误
- 修正异步数据库操作中缺少 await 的问题
- 优化反注入统计系统的数值字段处理逻辑
- 添加缺失的导入语句修复模块依赖问题
2025-10-07 11:35:12 +08:00
minecraft1024a
da1b1a4999 refactor(core): 统一和改进程序优雅关闭逻辑
将分散的关闭逻辑集中到`MainSystem`中,并由`bot.py`中的顶层异常处理块统一调用。这简化了关闭流程,提高了系统的健壮性和可维护性。

- 将信号处理逻辑从`MainSystem`移除,改由`bot.py`中的`try...finally`块处理,以捕获更广泛的退出场景(如`KeyboardInterrupt`)。
- `graceful_shutdown`函数现在接收`main_system`实例,直接调用其`shutdown`方法,实现了责任的单一化。
- 为`EmojiManager`和`VectorMemoryStorage`添加了`shutdown`/`cleanup`方法,确保其后台任务和资源能被正确清理。
- 调整了`MemorySystem`中对`unified_storage.cleanup()`的调用,使其与接口保持一致。
2025-10-04 16:47:55 +08:00
John Richard
7923eafef3 re-style: 格式化代码 2025-10-02 20:26:01 +08:00
John Richard
ecb02cae31 style: 格式化代码 2025-10-02 19:38:39 +08:00
Windpicker-owo
08ef960947 refactor(database): 将同步数据库操作迁移为异步操作
将整个项目的数据库操作从同步模式迁移为异步模式,主要涉及以下修改:

- 将 `with get_db_session()` 改为 `async with get_db_session()`
- 将同步的 SQLAlchemy 查询方法改为异步执行
- 更新相关的方法签名,添加 async/await 关键字
- 修复由于异步化导致的并发问题和性能问题

这些修改提高了数据库操作的并发性能,避免了阻塞主线程,提升了系统的整体响应能力。涉及修改的模块包括表情包管理、反提示注入统计、用户封禁管理、记忆系统、消息存储等多个核心组件。

BREAKING CHANGE: 所有涉及数据库操作的方法现在都需要使用异步调用,同步调用将不再工作
2025-09-28 15:42:30 +08:00
Windpicker-owo
444f1ca315 ruff,私聊视为提及了bot 2025-09-20 22:34:22 +08:00
tt-P607
a0d33dffdc feat(emoji): 避免发送近期使用过的表情包以减少重复
为了提升表情包发送的自然度和多样性,引入了表情包历史记录机制。

该功能通过以下方式工作:
- 在选择表情包之前,系统会获取当前会话最近发送过的表情包记录。
- 从候选表情包池中过滤掉这些近期已使用过的表情,从而鼓励使用更多不同的表情。
- 当一个表情包成功发送后,其描述会被添加到历史记录中,用于未来的筛选。
2025-09-15 03:04:37 +08:00
tt-P607
5bf798ed0a 呀,柒柒,这次我们对表情包系统进行了一次超级棒的大升级哦!它现在变得更聪明、更懂我们的心意啦!就像我一样,总能找到最完美的表情来点亮对话!♪~
这是我为你准备的提交信息,你看看喜不喜欢~

feat(chat): 使用 LLM 优化表情包选择与分析

本次提交对表情包系统进行了核心重构,从原有的基于关键词相似度匹配的简单算法,升级为由大型语言模型(LLM)驱动的智能决策流程。这使得表情包的选择和分析更加精准、智能和人性化。

主要变更包括:

1.  **引入 LLM 进行表情包选择**
    -   重写了 `get_emoji_for_text` 方法,废弃了原有的编辑距离算法。
    -   新流程会根据配置随机抽取一部分表情包作为候选,并构建一个精细的 Prompt,引导 LLM 根据输入的“情感描述”选择最匹配的表情包。这让选择不再局限于字面匹配,而是能理解更深层次的语境和情绪。

2.  **优化表情包描述与分析流程**
    -   大幅改进了 `build_emoji_description` 中的 VLM 和 LLM 提示词,使其能生成更懂网络文化、更详细的表情包描述,并提炼出更精准的情感关键词。
    -   为动态图(GIF)和静态图设计了不同的分析策略,以获得更高质量的描述结果。

3.  **增强 Planner 动作连贯性**
    -   更新了 `planner_prompts`,明确要求当 `reply` 和 `emoji` 动作同时触发时,`emoji` 的选择必须基于 `reply` 动作生成的最终文本内容。这确保了文字和表情包的表达高度一致。

4.  **逻辑与配置微调**
    -   在 `utils_image` 中,现在只有当“偷表情包”功能开启时,才会保存接收到的表情包,避免了不必要的文件存储。
    -   将表情包检查间隔 `check_interval` 的类型从 `int` 改为 `float`,允许更灵活的配置。
2025-09-14 16:44:35 +08:00
minecraft1024a
513757a8ee chore: format code and remove redundant blank lines
This commit applies automated code formatting across the project. The changes primarily involve removing unnecessary blank lines and ensuring consistent code style, improving readability and maintainability without altering functionality.
2025-09-05 20:58:03 +08:00
Windpicker-owo
ee15f45559 typing和防炸 2025-09-03 21:36:22 +08:00
Windpicker-owo
e361bf429f 迁移:1515cef(fix:必要性修复) 2025-09-02 17:24:27 +08:00
Windpicker-owo
8149731925 修复代码格式和文件名大小写问题 2025-08-31 20:50:17 +08:00
tt-P607
68e1e1e046 chore(chat): 增加临时表情缓存上限 2025-08-27 19:34:26 +08:00
雅诺狐
1405b50d5a Refactor config system to use Pydantic validation
Refactored configuration classes to inherit from a new ValidatedConfigBase using Pydantic for robust validation and error reporting. Updated api_ada_configs.py, config.py, config_base.py, and official_configs.py to replace dataclasses with Pydantic models, add field validation, and improve error messages. This change enhances configuration reliability and developer feedback for misconfigurations. Also includes minor code cleanups and removal of unused variables in other modules.
2025-08-19 15:33:43 +08:00
雅诺狐
5e91f9ef5f Remove unused imports across multiple modules
Cleaned up various files by removing unused or redundant import statements to improve code readability and reduce potential confusion. No functional changes were made.
2025-08-19 11:55:24 +08:00
雅诺狐
37684fea51 Update emoji_manager.py 2025-08-17 13:59:09 +08:00
雅诺狐
a9d5cd8958 fix:数据库修复 2025-08-17 13:56:15 +08:00
雅诺狐
93901f4851 Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-16 23:48:07 +08:00
雅诺狐
d46d689c43 数据库重构 2025-08-16 23:43:45 +08:00
minecraft1024a
8588a21c75 feat(config): 为表情包识别添加独立的VLM模型配置
为表情包识别功能(emoji_vlm)引入了专门的模型任务配置,使其与通用的视觉语言模型(VLM)配置分离。这提高了配置的灵活性和模块化程度。

- 在 `api_ada_configs.py` 中新增 `emoji_vlm` 任务配置。
- 更新 `emoji_manager.py` 以使用新的 `emoji_vlm` 配置。
- 在 `model_config_template.toml` 中添加了相应的配置模板。
2025-08-16 22:15:08 +08:00
minecraft1024a
e95d105f8f 添加表情包情感分析功能,允许通过配置启用二次识别以生成情感关键词,并更新相关文档和配置模板。 2025-08-13 21:32:19 +08:00
minecraft1024a
370176bffa 优化表情包删除逻辑,确保成功删除记录后返回正确的结果。同时,更新聊天提示模板,新增日程和心情信息,以提升聊天互动的自然性和趣味性(希望能更好的回复) 2025-08-13 16:10:45 +08:00
minecraft1024a
c0720a72cb 优化图片格式处理,统一将'jpg'格式转换为'jpeg',新增标准化和MIME类型转换功能,以确保API兼容性和提高代码可读性(最主要的还是为了gemini) 2025-08-13 13:20:15 +08:00
minecraft1024a
9c11dd9b0f 修复emoji_manager.py中的数据库持久化逻辑;更新Maizone插件的作者信息和项目链接。 2025-08-13 11:30:44 +08:00
minecraft1024a
0e21aa602c fix(emoji_manager): 添加异常处理以记录删除数据库记录时的错误信息,确保在出错时返回0而不是抛出异常(同时在主程序加载的时候也不会笑笑boom了) 2025-08-12 15:15:30 +08:00
minecraft1024a
0371ada16c fix(emoji_manager): 优化表情包删除和使用记录逻辑,确保在未找到记录时不再抛出异常,改为记录警告信息 2025-08-12 15:01:45 +08:00
minecraft1024a
f42d4043e4 feat:requirements.txt中添加多个新依赖项(为了适配联网搜索和麦麦空间插件)
优化emoji_manager.py中的数据库查询代码。
2025-08-11 21:45:55 +08:00
雅诺狐
2d4745cd58 初始化 2025-08-11 19:34:18 +08:00