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 |
|
tt-P607
|
82c288db6e
|
之前改的打字有点快了()
|
2025-10-21 11:59:26 +08:00 |
|
tt-P607
|
08b990eb70
|
聊天记录互通完全回归😋
|
2025-10-20 10:57:02 +08:00 |
|
tt-P607
|
c1fa237ba7
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
|
2025-10-20 10:05:45 +08:00 |
|
tt-P607
|
723e83ffc8
|
忘记改模板配置文件了
|
2025-10-20 10:05:32 +08:00 |
|
tt-P607
|
30f2f1345c
|
perf(cross_context): 优化S4U上下文生成性能与逻辑
通过引入批量数据库查询,显著提升了跨群聊上下文(S4U)功能的性能和效率。旧的实现方式会对每个群聊进行一次数据库查询,导致在群聊数量多时性能低下。
主要变更:
- 在 `message_repository` 中新增 `get_user_messages_from_streams` 函数,使用 CTE 和 `row_number()` 在单个请求中高效检索所有目标聊天流中的用户消息。
- 重构 `build_cross_context_s4u` 以使用新的批量查询方法,大幅减少了数据库I/O和应用层循环。
- 增强了私聊场景下的逻辑,会同时获取机器人的消息以提供更完整的对话历史。
- 改进了私聊上下文的标题,使其对用户更加友好。
- 为S4U流程添加了更详细的日志,便于问题排查。
|
2025-10-20 09:25:27 +08:00 |
|
Windpicker-owo
|
ca14904076
|
refactor(notice): 移除硬编码的notice作用域判定逻辑
- 重构notice系统,作用域完全由additional_config中的is_public_notice字段决定
- 移除_determine_notice_scope方法中的硬编码notice类型检查
- 提供更灵活和可控的notice管理方式,支持显式配置公共notice
- 更新相关文档说明新的使用方式
BREAKING CHANGE: 之前依赖特定notice类型自动成为公共notice的插件需要显式设置is_public_notice=true
|
2025-10-19 23:34:38 +08:00 |
|
Windpicker-owo
|
2bdc7b5fe5
|
feat(chat): 为PromptParameters添加notice_block字段
|
2025-10-19 23:24:03 +08:00 |
|
Windpicker-owo
|
73cddf1121
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
|
2025-10-19 22:49:14 +08:00 |
|
Windpicker-owo
|
2ec3be7c84
|
feat(notice): 实现全局notice消息管理系统
添加全局notice管理器,将notice消息与普通消息分离处理。主要功能包括:
- 创建 GlobalNoticeManager 单例类,支持公共和特定聊天流作用域
- 在 message_manager 中集成notice检测和处理逻辑
- 扩展数据库模型和消息类,添加notice相关字段
- 在提示词生成器中添加notice信息块展示
- 配置系统支持notice相关参数设置
- 适配器插件增强notice类型识别和配置
notice消息特点:
- 默认不触发聊天流程,只记录到全局管理器
- 可在提示词中展示最近的系统通知
- 支持按类型设置不同的生存时间
- 支持公共notice(所有聊天可见)和流特定notice
BREAKING CHANGE: 数据库消息表结构变更,需要添加 is_public_notice 和 notice_type 字段
|
2025-10-19 22:45:19 +08:00 |
|
雅诺狐
|
7d182aa22a
|
Merge pull request #46 from Eric-Terminal/dev
修复(聊天): 为 message_process 增加 message_info 防御性检查
|
2025-10-19 14:27:03 +08:00 |
|
Eric-Terminal
|
3a8dc433ad
|
修复(聊天): 为 message_process 增加 message_info 防御性检查
message_process 方法在收到没有 'message_info' 字段的 payload(例如来自 Napcat 的握手/心跳控制消息)时,会因 KeyError 而失败。
此更改增加了防御性检查,在处理前验证 'message_info' 的存在和类型。如果缺失,则记录并跳过该 payload,防止主处理循环崩溃。
|
2025-10-19 14:25:37 +08:00 |
|
tt-P607
|
59534f5dfc
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
|
2025-10-19 14:11:57 +08:00 |
|
tt-P607
|
88a4b01556
|
孩子们,知识库的高并发太恐怖了
|
2025-10-19 14:11:45 +08:00 |
|
minecraft1024a
|
b4ad2daff4
|
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-10-19 14:01:51 +08:00 |
|
minecraft1024a
|
eb4a48d45a
|
fix(chatter): 修复私聊时获取用户昵称的属性错误
在私聊场景下,`plan.target_info` 是一个 `UserInfo` 对象,而不是字典。此前的代码使用字典方式 `get("person_name")` 访问属性,会导致 `AttributeError`。
本次修改将属性访问方式从 `plan.target_info.get("person_name")` 调整为 `plan.target_info.person_name`,以正确获取用户信息。同时,更新了相关注释,阐明了情绪模块的依赖关系,防止因配置关闭而引发错误。
|
2025-10-19 13:52:28 +08:00 |
|
minecraft1024a
|
73383f8246
|
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-10-19 13:32:49 +08:00 |
|
minecraft1024a
|
50a6c2de58
|
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-10-19 13:00:23 +08:00 |
|
tt-P607
|
4f2cb56740
|
refactor(learning): 在线程池工作函数中实例化LLMRequest
将 `LLMRequest` 对象的实例化从 `extract_information` 函数移动到线程池执行的 `extract_info_sync` 函数内部。
此更改确保每个工作线程都有自己独立的 `LLMRequest` 实例,避免了在多线程环境下共享同一实例可能引发的潜在并发问题。
|
2025-10-18 23:38:03 +08:00 |
|
tt-P607
|
2bb7e51252
|
feat(knowledge): 新增问答段落相似度阈值
为知识库问答中的段落检索增加相似度阈值过滤功能。
此前,即使相似度很低的段落也会被返回,可能导致问答结果不准确。通过新增 `qa_paragraph_threshold` 配置项,可以过滤掉低于设定阈值的段落,从而提高问答的精准度和相关性。
|
2025-10-18 23:17:24 +08:00 |
|
minecraft1024a
|
22ef271c89
|
fix(chat): 修复知识库相关性得分格式化问题
当知识库返回的相关性得分(relevance)不是有效的浮点数时,格式化字符串 `f"{relevance:.2f}"` 会引发 `TypeError` 或 `ValueError`,导致程序崩溃。
本次修改通过添加 `try-except` 块来捕获潜在的异常。如果 `relevance` 可以成功转换为浮点数,则将其格式化为两位小数;如果转换失败,则直接使用其原始字符串表示形式,从而增强了代码的健壮性,避免了因数据类型不匹配而导致的运行时错误。
|
2025-10-18 21:57:27 +08:00 |
|
minecraft1024a
|
a2ac0d01bc
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
|
2025-10-18 21:29:48 +08:00 |
|
minecraft1024a
|
599dc95a99
|
refactor(knowledge): 简化知识库问答管理器的使用
将 `QAManager` 类实例化改为直接导入和使用单例 `qa_manager`,以简化代码并提高效率。同时,移除了对 `get_knowledge` 方法中不再需要的参数,使其调用更加清晰。
|
2025-10-18 21:29:44 +08:00 |
|
明天好像没什么
|
a6947a95d8
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
|
2025-10-18 20:58:52 +08:00 |
|
明天好像没什么
|
5c9d7db7fa
|
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-10-18 20:58:47 +08:00 |
|
tt-P607
|
d65f6dcefe
|
chore(scripts): 为学习工具脚本引入并发依赖
|
2025-10-18 20:21:54 +08:00 |
|
明天好像没什么
|
5f85b5d52c
|
refactor(docker): 重构容器化配置,移除冗余服务并迁移至 uv 包管理
- 精简 Dockerfile:删除 lpmm 编译步骤,改用 pyproject.toml 与 uv sync
- 移除 docker-compose 中的 adapters、sqlite-web 服务,仅保留 core 与 napcat
- 统一工作目录与卷挂载路径,由 /MaiMBot 更名为 /InkFox
- 网络名称由 maim_bot 改为 mofox
- 入口命令切换为 uv run,提升启动速度与依赖隔离
|
2025-10-18 20:13:01 +08:00 |
|
明天好像没什么
|
92d5b096c8
|
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-10-18 20:11:17 +08:00 |
|
minecraft1024a
|
c9c2de40ee
|
chore(scripts): 移除过时的一次性脚本
移除了两个用于项目重构的一次性脚本:
- `convert_sqlalchemy_models.py`:用于将 SQLAlchemy 模型从旧版 `Column` 语法转换为 `Mapped` 语法。
- `update_prompt_imports.py`:用于批量更新 `Prompt` 类的导入路径。
这些脚本已完成其历史使命,不再需要维护。
同时,对插件加载日志和 manifest 转换脚本进行了小幅改进:
- 插件加载日志现在会显示组件的简短描述,方便快速了解其功能。
- manifest 转换脚本增加了对更多元数据字段(如仓库地址、关键字、分类等)的支持。
|
2025-10-18 19:22:34 +08:00 |
|
tt-P607
|
e702480411
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
|
2025-10-18 17:09:35 +08:00 |
|
tt-P607
|
373db77768
|
Revert "总之就是知识库"
This reverts commit 0383a999fb.
|
2025-10-18 17:09:18 +08:00 |
|
LuiKlee
|
bafddb39e8
|
调整格式
|
2025-10-18 12:08:21 +08:00 |
|
minecraft1024a
|
efded9b03a
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
|
2025-10-18 11:13:54 +08:00 |
|
minecraft1024a
|
8c97774465
|
ruff ci
|
2025-10-18 11:11:05 +08:00 |
|
tt-P607
|
72ea362e29
|
feat(web_search): 新增 Metaso 搜索引擎支持
为联网搜索工具集成了新的搜索引擎 Metaso,为用户提供更多搜索选择。
- 在搜索引擎基类 `BaseSearchEngine` 中添加了可选的 `read_url` 方法,为未来支持直接读取网页内容奠定基础。
- 更新了插件加载、工具执行逻辑和配置文件模板,以完整支持 Metaso 引擎。
- 将默认回复生成器的任务超时时间从 15 秒延长至 45 秒,以适应联网搜索等耗时较长的操作,提高稳定性。
|
2025-10-18 00:46:17 +08:00 |
|
minecraft1024a
|
39e672a1d5
|
docs: 更新 README.md 中的功能描述和 admonition 语法
- 将 admonition 语法从 `[!docs: 更新 README.md 功能描述和 admonition 语法
- 将 admonition 语法从 `[!IMPORTANT]` 和 `[!WARNING]` 调整为 GitHub 支持的 `[IMPORTANT]` 和 `[WARNING]` 格式。
- 在“拓展功能”部分新增了“AFC 智能对话”特性。
- 移除了“原版功能”中重复列出的“智能对话系统”条目,使其更加清晰。
|
2025-10-17 21:25:26 +08:00 |
|
minecraft1024a
|
afeac77d1c
|
docs(config): 更新配置文件注释说明
将配置类继承说明从“重要的”改为“所有”,以强调所有配置类都必须继承自 `ValidatedConfigBase`。
|
2025-10-17 21:20:43 +08:00 |
|
minecraft1024a
|
8c17a22947
|
现在不是空盒子了
|
2025-10-17 21:15:12 +08:00 |
|
minecraft1024a
|
7c4af00b62
|
fix(server): 移除启动日志中多余的协议前缀
|
2025-10-17 21:07:34 +08:00 |
|
minecraft1024a
|
fb1e4ff110
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
|
2025-10-17 20:25:47 +08:00 |
|
minecraft1024a
|
0b5a536855
|
chore(scripts): 移除无用的脚本文件
删除了两个已不再需要的脚本:
- `run_multi_stage_smoke.py`: 用于早期烟雾测试,现已过时。
- `text_length_analysis.py`: 用于分析数据库中的消息文本长度,功能已不再需要。
feat(scripts):为来自MaiBot的插件提供了转换插件的 _manifest.json 文件的脚本
|
2025-10-17 20:25:44 +08:00 |
|
Windpicker-owo
|
6eb6bab4df
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
|
2025-10-17 20:16:27 +08:00 |
|
Windpicker-owo
|
f22e6365cc
|
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-10-17 20:16:15 +08:00 |
|
minecraft1024a
|
9e39d28e80
|
fix(chat): 修复睡眠和情绪系统中的空值和逻辑问题
修复了两个问题:
1. 在睡眠状态下,如果没有设置起床时间,且当天也无法从日程中获取新的起床时间,程序会错误地继续执行后续的唤醒判断逻辑,而不是直接返回并继续睡眠。
2. 在更新情绪状态时,如果消息的`interest_value`为`None`,会导致类型错误。已增加空值检查,将其默认处理为 0.0。
|
2025-10-17 20:04:12 +08:00 |
|
minecraft1024a
|
02a54fd3c9
|
feat(chat): 引入睡眠系统,在睡眠状态下拦截消息
在消息处理的最前端 (`MessageManager`) 增加了对睡眠状态的检查。当系统处于 `SLEEPING` 状态时,将直接拦截所有新消息,不再进行后续处理。
同时,为了配合睡眠系统的正常运作:
- 将睡眠系统的定时任务初始化移至 `main.py`,确保其在应用启动时正确加载。
- 在主动思维插件 (`proactive_thinker`) 的定时任务(冷启动和日常唤醒)中增加了睡眠状态检查,避免在睡眠期间触发主动行为。
|
2025-10-17 19:55:11 +08:00 |
|
minecraft1024a
|
1eade97633
|
refactor(config): 简化睡眠系统配置项
移除旧的、基于睡眠压力模型的多个配置项,包括睡眠压力阈值、失眠概率(区分不同压力)、压力增减值等。
这些配置项在新系统中已不再使用,将其移除可以简化配置文件,避免引起混淆。现在的睡眠逻辑更加直接,不再依赖复杂的压力计算。
|
2025-10-17 19:04:52 +08:00 |
|
minecraft1024a
|
559ad03fe0
|
refactor(chat): 从 MessageManager 中移除睡眠和唤醒管理器的残留代码
在之前的提交 (cb51446) 中,睡眠管理器模块已被移除。本次提交清除了 `MessageManager` 中与之相关的残留代码,包括导入语句、实例初始化以及启动/停止逻辑,完成了整个重构过程。
|
2025-10-17 19:02:49 +08:00 |
|
minecraft1024a
|
cb514465a2
|
refactor(chat): 移除旧的睡眠管理器模块
删除了位于 `src/chat/message_manager/sleep_manager/` 目录下的整个旧版睡眠管理器。该模块包含了 `sleep_manager`, `wakeup_manager`, `sleep_state` 等多个文件,其功能将被新的实现所取代。
同时,对 `context_manager.py` 中的群聊判断逻辑进行了微调,以适应新的消息结构。
|
2025-10-17 18:57:59 +08:00 |
|
minecraft1024a
|
ff3b35a5d3
|
Revert "实现了新的睡眠系统喵~",我看了不如我回去自己写一个()
This reverts commit e1dde64fc6.
|
2025-10-17 18:44:38 +08:00 |
|