Commit Graph

941 Commits

Author SHA1 Message Date
Windpicker-owo
a9fc842287 feat(expression): 添加解析聊天流配置和获取相关聊天ID的功能以支持共享组训练 2025-12-03 12:48:31 +08:00
Windpicker-owo
1acead1f9d feat(cache): 添加 LRU 淘汰机制和缓存大小限制以优化内存使用 2025-12-03 11:42:38 +08:00
Windpicker-owo
d5e6746a21 fix(stream): 修复 Chatter 处理标志的假死状态并增强并发保护 2025-12-02 23:11:29 +08:00
tt-P607
03f27be2cd Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-02 14:41:10 +08:00
tt-P607
659a8e0d78 refactor(api, chat): 改进异步处理并解决并发问题
内存可视化器 API 端点之前在异步路由中执行同步的阻塞操作(文件 I/O、数据处理)。在处理大型图文件时,这可能导致服务器冻结。现在,这些任务已被移至 ThreadPoolExecutor,从而使 API 非阻塞并显著提高响应速度。

在聊天消息管理器中,竞争条件可能导致消息处理重叠或中断后数据流停滞。此提交引入了:
- 并发锁(`is_chatter_processing`)以防止流循环同时运行多个 chatter 实例。
- 故障保护机制,在中断时重置处理状态,确保数据流能够恢复并正确继续。
2025-12-02 14:40:58 +08:00
Windpicker-owo
143302065b Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-02 13:05:19 +08:00
Windpicker-owo
bcdd987e4c feat(statistic): 优化内存使用,添加分批查询和统计处理上限
feat(typo_generator): 实现单例模式以复用拼音字典和字频数据
feat(query): 添加分批迭代获取结果的功能,优化内存使用
2025-12-02 12:45:10 +08:00
tt-P607
1027c5abf7 feat(chat): 添加群组静音功能并提升私聊响应速度
此提交引入了消息处理的两个主要增强功能:

1. **群组静音功能**:
新增的 `mute_group_list` 配置允许指定机器人默认保持沉默的群组。仅在被明确提及(通过@、回复或使用其名称/别名)时,它才会在这些群组中响应,从而减少繁忙频道的噪音。

2. **私聊响应能力**:
消息分发循环现在会动态调整轮询间隔。对于私聊,它使用更短的间隔,从而实现显著更快、接近实时的响应。

此外,此次提交还包括 Kokoro Flow 聊天器的若干改进:
- refactor(kokoro-flow):系统提示进行了大幅修订,以强制执行单个 `kfc_reply` 动作,引导 LLM 生成更可靠且格式正确的输出。
- fix(kokoro-flow):在执行动作时使用 `action.params.copy()`,以防止潜在的副作用来自下游的修改。
2025-12-02 01:40:39 +08:00
Windpicker-owo
18906826d4 chore(config): 更新 MMC_VERSION 至 0.13.0-alpha.5 2025-12-01 16:20:29 +08:00
拾风
28c54dbec6 Merge branch 'dev' into feature/kfc 2025-12-01 16:06:47 +08:00
tt-P607
85efff4e7a chore(logging): 调整流处理的日志级别
在流循环管理器中降低非关键事件的日志级别,以减少生产环境日志的噪音。

- 将任务处理失败消息从 `warning` 改为 `debug`,因为在某些情况下这是可恢复和预期的状态。
- 将并发保护消息从 `warning` 改为 `debug`,因为这是流控中的正常且预期的部分,而不是错误。
2025-12-01 15:28:34 +08:00
tt-P607
5d14bab259 feat: 为Kokoro Flow Chatter实现统一模式,支持模块化提示生成
新增统一模式:通过单次LLM调用同时处理推理与响应生成
采用模块化提示组件:系统提示与用户提示分离,提升灵活性和可维护性
日志更新:更清晰地记录生成响应与执行动作
版本更新:在机器人配置模板中递增版本号以反映变更
上下文处理优化:改进用户交互与记忆管理
2025-12-01 01:32:56 +08:00
Windpicker-owo
d11c56524c Merge branch 'feature/kfc' of https://github.com/MoFox-Studio/MoFox-Core into feature/kfc 2025-11-30 17:08:48 +08:00
Windpicker-owo
c6f34992d1 feat(KFC): 更新聊天处理器和回复模块,优化动作名称及上下文构建逻辑 2025-11-30 15:52:01 +08:00
Windpicker-owo
1750004ffa feat: 添加KFC V2专属动作模块及相关功能,优化回复机制 2025-11-30 15:04:00 +08:00
minecraft1024a
dd12c441a9 feat(report): 优化报告图表并引入对数坐标轴
本次提交对报告页面的 ECharts 图表进行了多项视觉和可用性优化,以提升数据可读性和展示效果。

主要变更包括:

1.  **饼图优化**:
    -   统一将图例(Legend)固定在图表顶部,以获得更一致和整洁的布局。
    -   增大了饼图的半径,使其在视觉上更突出。

2.  **Token 对比图重构**:
    -   从垂直条形图改为水平条形图,更利于展示较长的标签。
    -   将数值轴(现为 X 轴)改为对数(log)坐标轴,有效解决了 Token 数量差异巨大时的显示问题,让小数值也能清晰可见。
    -   为对数轴处理了 0 值的情况,并在提示框中恢复显示原始值。
    -   数据缩放(dataZoom)也相应调整为在 Y 轴上进行。

3.  **其他条形图**:
    -   增加了条形的宽度,增强了视觉冲击力。
2025-11-30 14:16:50 +08:00
minecraft1024a
474f86af54 feat(report): migrate charting library from Chart.js to ECharts
This commit replaces the Chart.js library with Apache ECharts for all charts in the statistics report page. The migration aims to significantly enhance chart interactivity, visual appeal, and performance, especially with larger datasets.

Key improvements include:
- **Enhanced Interactivity**: Implemented data zooming and panning (`dataZoom`) for all time-series and bar charts, allowing for detailed data exploration.
- **Improved Visuals**: Leveraged ECharts' capabilities to introduce smoother lines, gradient area fills, better animations, and a more modern aesthetic.
- **Smart Legends**: Legends now automatically become scrollable when there are too many items, resolving UI clutter and improving readability.
- **Performance Optimization**: Optimized charts like the model cost bar chart and response time scatter plot to handle large numbers of data points smoothly.
- **Responsive Resizing**: Reworked the chart resizing logic to ensure all charts correctly and smoothly redraw when the window size changes.
2025-11-30 13:53:53 +08:00
Windpicker-owo
c68bf4ad4f 重构Kokoro Flow Chatter:移除已弃用的响应后处理器和会话管理器
- 删除了`response_post_processor.py`和`session_manager.py`,因为它们已不再需要。
- 更新了`__init__.py`文件,移除了对`ActionExecutor`的引用。
- 删除了`action_executor.py`,并将动作执行直接集成到`chatter.py`和`proactive_thinker.py`中。
- 在`KokoroFlowChatterV2`中重构了动作执行逻辑,以直接使用`ChatterActionManager`。
- 增强了主动思考逻辑,以简化操作执行,而无需依赖已移除的`ActionExecutor`。
2025-11-30 13:40:59 +08:00
minecraft1024a
46f88ebc70 feat(report): 重构统计报告页面,引入全新现代化UI主题
本次提交对统计报告页面进行了一次全面的视觉和代码重构,旨在提升用户体验和可维护性。

主要更新包括:
- **UI/UX 重构**: 废弃原有的 Material Design 3 主题,采用更简洁、现代的仪表盘风格,优化了色彩、字体和布局,提升了整体视觉效果和数据可读性。
- **布局优化**: 使用 CSS Grid 构建主布局,提高了响应式设计的灵活性和健壮性。
- **图表美化**: 更新了所有图表的视觉样式,包括新的调色板、交互式工具提示和更清晰的坐标轴。
- **代码优化**:
  - 将图表数据从内联 JavaScript 字符串改为通过 `<script type="application/json">` 标签注入,更加安全和规范。
  - 实现了图表的懒加载,仅在切换到对应标签页时才进行初始化,提升了初始加载速度。
  - 移除大量内联样式,统一使用 CSS 类进行管理,增强了代码的可维护性。
2025-11-30 13:00:09 +08:00
tt-P607
f489020a12 feat(core): 实现死锁检测器并改进 LLM 消息拆分 本次提交引入了两个主要增强功能:在 StreamLoopManager 中增加死锁检测机制以提高系统稳定性,以及对 Kokoro Flow Chatter (KFC) 的消息拆分策略进行调整,以生成更自然、更贴近人类的对话。 **StreamLoopManager 中的死锁检测:** - 新的死锁检测器现在会定期运行,监控所有活动消息流。 - 它会跟踪每个消息流的最后活动时间,并标记任何超过两分钟未活动的流为潜在死锁。 - 这种主动监控有助于识别和诊断可能卡住的消息流,防止系统整体冻结。 - 为了避免在长时间等待(例如等待用户回复或长时间 LLM 生成)期间出现误报,消息流循环现在即使在睡眠或处理阶段也会定期更新其活动时间戳。 **KFC 中的消息拆分优化:** - 自动,响应后处理器中的基于规则的消息拆分器已被禁用。- 消息拆分的责任现在完全交由大型语言模型(LLM)处理。- 系统提示已更新,明确指示LLM使用多个 reply 操作,将长响应拆分为更短、更自然的段落,模仿真实的人类消息模式。- 此更改允许进行更加上下文感知和情感适宜的消息分段,从而提供更具吸引力的用户体验。**VectorStore 的异步安全性:**- 所有对同步 ChromaDB 库的调用现在都被封装在 asyncio.to_thread() 中。这可以防止阻塞主 asyncio 事件循环,而这正是新检测器设计用来捕获的潜在死锁来源。 2025-11-30 11:59:27 +08:00
ikun-11451
acafc074b1 依旧修pyright喵喵喵~ 2025-11-29 22:20:55 +08:00
ikun-11451
72e7492953 依旧修pyright喵~ 2025-11-29 21:26:42 +08:00
ikun-11451
f0b6a969d5 修了点pyright错误喵~ 2025-11-29 20:40:21 +08:00
ikun-11451
311a161941 喵呜!修好了好多 Pyright 的报错捏~ 🐾
主人主人,猫猫把代码里的红红的报错都赶跑啦!
1. memory_visualizer_router.py: 把 load_graph_data_from_file 变成异步的啦,这样就不会卡住咯~
2. message_router.py: 加上了 global_config 的检查,不会再因为空空的配置摔倒啦!
3. emoji_manager.py: 修复了好多类型转换的问题,还加上了配置检查,表情包系统更稳定了捏!
4. energy_manager.py: 能量计算器的类型也修好啦,统计数据不会再打架了~

代码现在变得干干净净的,猫猫是不是很棒?快摸摸头!🐱💕
2025-11-29 20:03:29 +08:00
minecraft1024a
36dd6ead1a fix(report): 修复报告图表懒加载时的函数调用问题
`showTab` 函数可能会在 `DOMContentLoaded` 事件完全执行完毕之前被调用,此时 `initializeStaticChartsForPeriod` 函数尚未定义,会导致引用错误。

本次修改通过将函数声明提升到外部作用域,并确保在调用前检查其是否存在,解决了这个问题,从而保证了图表懒加载的稳定性。
2025-11-29 11:03:55 +08:00
minecraft1024a
95a221a41d feat(report): 丰富统计报告,增加多种高级可视化图表
新增了五种高级数据可视化图表,以提供更深入的模型性能和使用情况分析:

- **Token使用对比图**: 直观展示各模型的输入与输出Token数量。
- **供应商请求占比图**: 显示不同服务供应商的请求分布。
- **平均响应时间图**: 对比各模型的平均响应速度。
- **模型效率雷达图**: 从多个维度(请求量、TPS、速度、成本、容量)综合评估模型性能。
- **响应时间分布散点图**: 展示每次请求的具体响应时间,分析性能稳定性。

此外,对报告的UI/UX进行了全面优化,包括采用卡片式布局、实现可交互的图例以筛选数据、以及改进图表样式和提示信息,提升了报告的可读性和易用性。
2025-11-29 10:51:34 +08:00
minecraft1024a
9dff133146 feat(report): 增强统计报告,增加模块花费图表并优化UI
本次更新对统计报告进行了多项功能增强和界面优化,旨在提供更丰富的分析维度和更佳的用户体验。

主要变更包括:
- **新功能**:
  - 新增“按模块花费”饼图,以提供新的成本分析维度。
  - 在供应商统计表格中加入“平均耗时”指标,用于性能评估。
  - 在报告顶部添加“名词解释”卡片,帮助用户理解关键指标。

- **UI/UX 优化**:
  - 重构页面布局为主内容区与图表侧边栏,提升信息密度和可读性,并实现响应式设计。
  - 全面优化图表视觉效果,包括更新调色板、增加加载动画、改进提示框,使其更具表现力和交互性。
2025-11-29 10:12:33 +08:00
minecraft1024a
7efbf58dda feat(report): 重构统计报告,增加效率分析并采用MD3设计
本次更新对统计报告进行了全面的重构和视觉升级,旨在提供更深入的数据洞察和更现代化的用户体验。

主要变更包括:
- **新增效率分析模块**: 引入了一系列关键的大模型效率指标,如单条消息成本、Token效率(输出/输入比)、每小时成本/请求数等,并通过新的表格进行详细展示。
- **全新UI设计**: 整体界面采用Material Design 3 (MD3) 风格重新设计,优化了色彩、字体、间距和卡片样式,提升了报告的专业性和可读性。
- **图表功能增强**: 动态图表和静态图表均进行了美化,更新了配色方案,增加了平滑的加载动画和交互效果。饼图升级为更易读的甜甜圈图,并优化了工具提示信息。
- **内容和布局优化**: 增加了更多的摘要卡片以快速概览核心数据。为各个板块标题添加了 Emoji 图标,使信息层次更清晰,并优化了整体布局。
2025-11-29 09:51:46 +08:00
tt-P607
d2d0cfc4db feat(image): 为 VLM 处理添加自动 GIF 转 JPG 转换功能
此提交引入了在将 GIF 图像发送到视觉语言模型 (VLM) 进行描述之前,自动检测并转换为 JPG 格式的功能。这确保了与不支持动画格式的 VLM 的兼容性,防止处理失败。

此外,还添加了若干空值检查断言,以提高代码的健壮性,并防止配置对象未正确初始化时可能出现的运行时错误。还实现了对 `global_config.emoji` 的防御性检查。
2025-11-28 16:00:55 +08:00
tt-P607
da4f40ebb1 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-28 15:24:16 +08:00
tt-P607
103a6edaf3 feat(emoji): 增强消息上下文下的表情选择并修复存储用户信息的问题
该提交对表情操作及相关消息发送 API 进行了重大改进。

现在,表情选择逻辑更加具备上下文感知能力。LLM 提示现在包括机器人的待发送回复内容,使其能够根据对话历史和自身回复选择更合适的表情。用于上下文的近期聊天记录也有所增加。

此外,修复了插件发送 API (`send_api`) 中的一个错误。之前,当机器人发送消息时,消息在数据库中存储的是接收者的用户信息,而非机器人的信息。本次提交通过显式传递并使用机器人的用户信息进行存储,确保消息历史准确反映发送者。

其他更改包括:
- 重构表情操作的激活逻辑以提高清晰度。
- 改进 LLM 选择的表情描述匹配算法。- 为配置访问添加必要的类型安全检查。
2025-11-28 15:24:08 +08:00
Windpicker-owo
bfc45cb4f0 fix(message_handler): 修改 ON_NOTICE_RECEIVED 事件的权限组为 SYSTEM 2025-11-28 14:12:35 +08:00
Windpicker-owo
302d48ff85 fix(emoji_manager): 优化表情包注册时描述生成的异步处理逻辑 2025-11-28 13:43:28 +08:00
Windpicker-owo
454b143db2 refactor(message_handler): 移除消息处理器中的冗余消息类型定义 2025-11-28 13:40:35 +08:00
Windpicker-owo
2bd7e93af7 fix: 更新数据库会话管理,确保事务在正常退出时自动提交,并在异常时安全回滚 2025-11-28 13:24:41 +08:00
tt-P607
c040cf08e8 Revert "refactor(core): 提升类型安全性并添加配置空值检查"
This reverts commit abfcf56941.
2025-11-28 10:33:49 +08:00
tt-P607
abfcf56941 refactor(core): 提升类型安全性并添加配置空值检查
此提交在核心模块中引入了多项改进,以增强类型安全性和健壮性,主要通过为类型提示添加 `cast` 并在访问 `global_config` 属性前进行空值检查实现。

主要改动包括:
- **类型安全**:在 `message_handler.py`、`unified_manager.py` 和 `napcat_adapter` 的消息处理器中使用 `typing.cast` 来解决类型不一致问题并提高静态分析的准确性。
- **配置空值检查**:在 `message_handler.py` 和 `message_processor.py` 中添加对 `global_config` 及其嵌套属性的检查,以防止在应用启动或配置加载过程中出现 `NoneType` 错误。
- **内存管理提示**:优化了 `unified_manager.py` 中内存判断器的提示,使其在获取长期记忆时更加保守,从而提升简单交互的性能。
- **Napcat 适配器**:新增了视频处理的配置选项以及回复行为。同时改进了消息解析逻辑的鲁棒性。- **消息处理器**:重构了 `_process_message_segments` 及相关函数,移除了未使用的 `message_info` 参数,从而简化了函数签名。
2025-11-28 10:15:53 +08:00
tt-P607
655e535d96 Revert "feat(chat): 通过动作参数实现专用的 @用户 功能"
This reverts commit e5117720c6.
2025-11-28 08:21:06 +08:00
tt-P607
e5117720c6 feat(chat): 通过动作参数实现专用的 @用户 功能
此提交引入了一种在回复中提及(@)用户的稳健机制。此功能不再由 LLM 直接生成“@”文本,而是通过 `reply` 和 `respond` 动作中新增加的 `at_user_id` 参数来处理。

主要变化包括:
- **核心动作:** 在 `ReplyAction` 和 `RespondAction` 中添加可选的 `at_user_id` 参数,用于指定要提及的用户。
- **提示工程:** 更新了 `default_generator` 提示,以指导 LLM 如何使用新的 `at_user_id` 参数,而不是生成“@”文本。
- **动作管理器:** `ChatterActionManager` 现在会检查动作数据中的 `at_user_id`。如果存在,它会使用新的 `SEND_AT_MESSAGE` 命令,确保提及格式正确并发送。
- **发送 API:** 在 `send_api` 中引入新的 `at_user_to_stream` 函数,用于处理发送独立的 `@` 段落。
- **类型安全与重构:** 改进了类型提示跨多个文件(`mofox_wire` 类型、`cast` 等)进行了修改,并增加了对 `global_config` 是否存在的检查,以防止运行时可能出现的 `NoneType` 错误,从而提高了整体代码的稳定性。
2025-11-28 02:54:47 +08:00
Windpicker-owo
8287d11c49 fix: 移除不必要的后置钩子注册,简化消息处理逻辑 2025-11-27 23:08:54 +08:00
Windpicker-owo
a06510b9b6 feat: 添加通知消息处理功能,支持戳一戳、禁言等事件,并更新相关逻辑 2025-11-27 22:54:58 +08:00
Windpicker-owo
92c4c43d39 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-27 22:08:27 +08:00
Windpicker-owo
25571bf0ec fix: 修复返回的 embedding 为空时的处理逻辑 2025-11-27 22:08:22 +08:00
tt-P607
fd628bbee0 fix(chat):为 reply_to 提供回退以防止崩溃
在处理 `reply_to` 目标时,为 `platform` 和 `user_id` 提供回退值。这解决了当 `user_id` 未明确存在时(例如在涉及 QQ 空间插件的场景中)出现的 `UnboundLocalError`。
2025-11-27 21:55:05 +08:00
Windpicker-owo
43483b934e feat: 更新机器人配置并添加数据库迁移脚本
- 将bot_config_template.toml中的版本升级至7.9.0
- 增强数据库配置选项以支持PostgreSQL
- 引入一个新脚本,用于在SQLite、MySQL和PostgreSQL之间迁移数据
- 实现一个方言适配器,用于处理特定于数据库的行为和配置
2025-11-27 18:45:01 +08:00
拾风
94b889f34e Merge branch 'dev' into mofox-bus 2025-11-26 22:52:06 +08:00
copilot-swe-agent[bot]
1ca3aa6a07 fix: 修复代码质量和隐形问题 - 移除未使用导入、修复asyncio任务引用、修复类型注解
Co-authored-by: Windpicker-owo <221029311+Windpicker-owo@users.noreply.github.com>
2025-11-26 14:43:44 +00:00
Windpicker-owo
9f82671972 Merge branch 'dev' into mofox-bus 2025-11-26 22:25:39 +08:00
Windpicker-owo
0dc41bc839 refactor(emoji_manager): 使用异步任务处理表情描述生成,优化错误处理逻辑
refactor(graph_store): 移除冗余日志信息,简化内存边同步逻辑
refactor(affinity_chatter): 将信息日志级别更改为调试级别
2025-11-26 21:38:46 +08:00
Windpicker-owo
0908fb50a0 优化日志 2025-11-26 21:16:16 +08:00