Commit Graph

5519 Commits

Author SHA1 Message Date
ikun两年半
829bc9b4bc 更正了python版本喵! 2025-11-19 23:39:00 +08:00
ikun两年半
bbe8e18cae 将依赖名字修正喵!!! 2025-11-19 23:39:00 +08:00
minecraft1024a
7e52b2f546 perf(memory): 优化记忆系统数据库操作并修复并发问题
将消息记忆次数的更新方式从单次写入重构为批量更新,在记忆构建任务结束时统一执行,大幅减少数据库写入次数,显著提升性能。

此外,为 `HippocampusManager` 添加了异步锁,以防止记忆巩固和遗忘操作并发执行时产生竞争条件。同时,增加了节点去重逻辑,在插入数据库前检查重复的概念,确保数据一致性。
2025-11-19 23:38:59 +08:00
Furina-1013-create
58626d00fa Clean up deleted web_search_tool files after merge 2025-11-19 23:38:52 +08:00
Windpicker-owo
ddd22740c6 增强 ModuleColoredConsoleRenderer,支持 Rich 标记语言解析,改进消息内容着色逻辑 2025-11-19 23:37:58 +08:00
Windpicker-owo
e455bbcfb0 优化 build_chat_stream_impression 方法,增加对现有 ChatStream 记录的查询,改进平台信息获取逻辑 2025-11-19 23:37:57 +08:00
Windpicker-owo
55ac2b55f8 调整配置文件,优化消息缓存、打断系统及主动思考功能的参数设置 2025-11-19 23:37:57 +08:00
Windpicker-owo
4bf583b265 优化 Windows 平台的文件替换操作,增加安全的原子写入功能,改进备份文件清理机制 2025-11-19 23:37:57 +08:00
拾风
e4033fd662 Potential fix for code scanning alert no. 26: Use of a broken or weak cryptographic hashing algorithm on sensitive data
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-11-19 23:37:56 +08:00
Windpicker-owo
bb95ae934a 更新 changelog.md,发布 MoFox_Bot v0.12.0 正式版,包含架构重构、性能优化及新功能介绍 2025-11-19 23:37:56 +08:00
拾风
d63cb41b62 Potential fix for code scanning alert no. 15: Use of a broken or weak cryptographic hashing algorithm on sensitive data
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-11-19 23:37:56 +08:00
tt-P607
44b824a690 refactor(chat): 简化括号内容过滤
将用于过滤 `[表情包:...]` 和 `[图片:...]` 等内容的多个特定正则表达式模式替换为一个更通用的 `[.*?]` 模式。

此更改简化了代码,并通过处理方括号内的任何内容(包括未处理的格式如 `[at=...]`)提高了过滤的稳健性。
2025-11-19 23:37:56 +08:00
Windpicker-owo
05205c60b3 更新版本号 2025-11-19 23:37:54 +08:00
minecraft1024a
c3f8cf9c53 fix(statistic): 增强统计数据处理的健壮性
此前的统计处理逻辑在某些统计项(如模型调用、消息数)在特定周期内未产生数据时,会因为直接访问字典键而引发 `KeyError`,导致统计任务失败。

本次提交通过以下方式解决了该问题:
- 在访问统计字典时,全面使用 `dict.get()` 并提供默认值,避免因键不存在而崩溃。
- 使用 `setdefault` 来确保在计算平均耗时等指标前,相关的数据结构已被初始化。
- 简化并重构了历史总览数据的合并逻辑,使其在处理不完整数据时更加稳健。
2025-11-19 23:37:53 +08:00
Windpicker-owo
dece5adb33 fix(planner): 更新动作过滤逻辑以确保回复动作在未达到阈值时被排除 2025-11-19 23:37:53 +08:00
tt-P607
4e909a016e feat(visualizer): 在图上实现内存搜索和节点高亮显示
这增强了内存可视化工具,使其具有强大的搜索和高亮功能。

后端 API(`/api/search`)现在会返回搜索结果中与每个内存相关的节点 ID。错误响应也已改进,以确保前端数据结构的一致性。

前端逻辑已进行了重大更新:
- 搜索时,现在会直观地高亮显示对应的节点及其连接的边。
- 不匹配的元素会被调暗,以将用户的注意力集中在搜索结果上。
- 智能处理结果不在当前视图中的情况(由于分页/聚类)或使用没有节点 ID 的旧数据时,为用户提供提示信息。
2025-11-19 23:37:52 +08:00
Windpicker-owo
7157a82662 fix(affinity_interest_calculator): 修复回复后阈值调整逻辑并移除弃用方法 2025-11-19 23:37:52 +08:00
Windpicker-owo
853e702d2e fix(planner): 修复 Focus 模式下的回复动作处理逻辑 2025-11-19 23:37:52 +08:00
minecraft1024a
cf1bb967fd feat(system): 为 system 命令添加 prompt 子命令 2025-11-19 23:37:51 +08:00
minecraft1024a
6d5623e21d feat(statistic): 支持按 provider 统计请求 2025-11-19 23:37:51 +08:00
Windpicker-owo
7f6180e677 feat(visualizer): 增加可渲染节点和边的最大限制,提高图形处理能力 2025-11-19 23:37:51 +08:00
minecraft1024a
c3e4091bc2 feat(prompt): 为提示词组件提供注入目标上下文
为了让单个提示词组件在注入到不同目标时能够有不同的行为,现在向组件的执行上下文中传递当前注入的目标提示词名称 (`target_prompt_name`)。

这使得组件可以根据注入点动态调整其生成的内容。例如,一个工具列表组件在注入到 planner prompt 和 reflection prompt 时可以提供不同详尽程度的列表。

主要变更:
- `BasePrompt` 初始化时接收 `target_prompt_name`。
- `PromptComponentManager` 在应用注入规则时会传递此参数。
- `add_injection_rule` 方法现在支持批量添加规则,以简化注册流程。

BREAKING CHANGE: `PromptComponentManager.add_injection_rule` 中 `content_provider` 的函数签名已更改,现在需要接受第二个参数 `target_prompt_name: str`。

旧签名: `async def provider(params: PromptParameters) -> str`
新签名: `async def provider(params: PromptParameters, target_prompt_name: str) -> str
2025-11-19 23:37:50 +08:00
minecraft1024a
a72bf27ad6 refactor(prompt): 简化和统一提示词注入查询方法
将多个功能重叠的查询方法整合为两个核心方法,以提供更清晰、更灵活的 API,方便获取注入信息和规则。

- `get_injection_info` 方法取代了原有的 `get_full_injection_map` 和 `get_injections_for_prompt`。它现在支持按目标提示词进行筛选,并能通过 `detailed` 参数控制返回信息的详细程度。
- `get_injection_rules` 方法整合了 `get_all_dynamic_rules`、`get_rules_for_target` 和 `get_rules_by_component` 的功能。现在可以通过一个方法,灵活地按目标、按组件或按两者的组合来筛选注入规则。
- 已更新 `system_management` 插件中的相关命令以适配新的 API。

BREAKING CHANGE: `PromptComponentManager` 的公共 API 已更改。
移除了 `get_full_injection_map`, `get_injections_for_prompt`, `get_all_dynamic_rules`, `get_rules_for_target`, `get_rules_by_component` 方法。
请分别使用新的 `get_injection_info` 和 `get_injection_rules` 方法进行替代。
2025-11-19 23:37:50 +08:00
tt-P607
9f2f031966 feat(config): 添加配置以切换知识摘要
这在 `lpmm_knowledge` 部分引入了一个新的配置选项 `enable_summary`。用户现在可以将其设置为 `false`,以防止知识库摘要被包含在最终提示上下文中。

这提供了对输出冗长程度的更多控制,并有助于管理令牌消耗。该功能默认启用,以保持现有行为。
2025-11-19 23:37:49 +08:00
Windpicker-owo
e119b33a69 feat(path_expansion): 添加性能优化参数和批量计算功能,提升路径评分效率 2025-11-19 23:37:49 +08:00
minecraft1024a
fd24e7cb0f refactor(mood_api): 为情绪API函数增加布尔返回值和错误处理
此重构修改了 `set_mood`, `lock_mood`, 和 `unlock_mood` 函数,使其返回布尔值以明确指示操作是否成功。

- 为 `set_mood` 和 `lock_mood` 添加了 `try...except` 块,以捕获异常并在失败时返回 `False`。
- `unlock_mood` 现在会在情绪本未锁定的情况下返回 `False`,提供了更清晰的状态反馈。

这些更改提高了API的健壮性,使插件等调用方能够更可靠地处理操作结果。

BREAKING CHANGE: `set_mood`, `lock_mood`, 和 `unlock_mood` 函数现在返回一个布尔值来表示操作是否成功,而不再是隐式地返回 `None`。
2025-11-19 23:37:48 +08:00
Windpicker-owo
c684b2a5a9 feat(config): 添加表情包回复配置,允许或禁止回复表情包消息 2025-11-19 23:37:48 +08:00
Windpicker-owo
4ca15db0d6 feat: 更新 action_type 为 'reply' 并添加 action_parameters 的 JSON 示例 2025-11-19 23:37:48 +08:00
Windpicker-owo
7ca2f1bd6f fix: 修正 _get_stream_context 方法的类型注解格式 2025-11-19 23:37:47 +08:00
Windpicker-owo
4c5bf88c05 refactor: 延迟导入 StreamContext 以提高类型检查性能 2025-11-19 23:37:47 +08:00
minecraft1024a
f34ba04487 feat(plugin_system): 新增 mood_api 插件接口 2025-11-19 23:37:46 +08:00
Windpicker-owo
3f03394b1f refactor(planner): 移除Normal模式下的引用回复设置以保持对话流畅 2025-11-19 23:37:46 +08:00
minecraft1024a
b5b89309d7 refactor(report): 优化报告样式和数据加载逻辑
- 调整了报告页面的CSS样式,包括颜色、阴影和布局,以提供更专业、现代的视觉效果。
- 改进了从后端向前端JavaScript传递图表数据的方式。现在通过一个独立的`<script>`标签注入JSON字符串,而不是直接嵌入到JS代码中,这增强了鲁棒性并避免了特殊字符导致的解析错误。
- 在JavaScript中增加了对JSON解析和图表数据有效性的检查,以防止因数据格式错误或缺失导致页面渲染失败。
- 将统计模块中的耗时相关键名统一为大写格式,以提高代码一致性。
2025-11-19 23:37:45 +08:00
minecraft1024a
9117a4aad3 1 2025-11-19 23:37:45 +08:00
minecraft1024a
70cad6625d add igorne 2025-11-19 23:37:45 +08:00
minecraft1024a
56e25c0b51 refactor(config): 移除废弃的数据库配置模块
旧的数据库配置模块 `src/common/database/config` 已被完全移除。该模块已被标记为废弃,其功能已统一整合到 `global_config` 中。

本次重构旨在:
- 简化代码库,消除冗余和过时的文件。
- 统一配置管理,提高可维护性。

此外,对 `AttentionOptimizer` 中的类变量添加了 `ClassVar` 类型注解,以增强代码的清晰度和类型安全性。
2025-11-19 23:37:44 +08:00
minecraft1024a
f604eacea0 feat(report): 优化统计报告页面的UI和布局
对生成的HTML统计报告进行了全面的视觉和结构重构,以提供更现代化、更具可读性的用户界面。

- 采用仪表盘式的双栏布局(主内容区和侧边栏),将图表移至侧边栏,使数据表格更聚焦。
- 全面更新了CSS样式,包括配色、字体、卡片、表格和标签页,提升了整体的美观度和用户体验。
- 引入了响应式设计,以更好地适配移动设备。
- 将默认输出文件名从 `maibot_statistics.html` 更改为 `mofox_bot_statistics.html` 以保持项目命名一致性。
2025-11-19 23:37:44 +08:00
minecraft1024a
cfb111eca5 refactor(report): 使用Jinja2模板重构报告生成器
将报告生成逻辑与表示层分离,以提高代码的可维护性和可读性。

- HTML、CSS 和 JavaScript 从 Python f-string 中提取到独立的模板文件中。
- 引入 Jinja2 模板引擎动态渲染报告内容,使未来修改报告样式和结构更加方便,实现了逻辑和视图的分离。
2025-11-19 23:37:43 +08:00
minecraft1024a
7ac83cc77b Revert "refactor(report): 移除HTML报告生成功能"
This reverts commit bc533880dd.
2025-11-19 23:37:43 +08:00
minecraft1024a
dfd31d7515 refactor(report): 移除HTML报告生成功能
移除了HTML报告生成功能,包括 `HTMLReportGenerator` 类及其在统计输出任务中的调用逻辑。

此举旨在简化代码库,剥离一个维护成本较高的功能。删除该组件可以简化统计模块并减少依赖,同时也为未来可能采用更现代、更灵活的报告方案做准备。

BREAKING CHANGE: 系统不再生成HTML格式的统计报告。
2025-11-19 23:37:43 +08:00
tt-P607
8b27df216a refactor(chat):简化和改进回复格式过滤
之前用于过滤 `[回复...]` 格式的实现依赖于多个正则表达式。这种方法比较复杂,并且无法正确处理深度嵌套的回复字符串。

此提交重构了逻辑,采用更简单、更稳健的基于字符串的方法。通过在以 `[回复` 开头的字符串中找到最后一个闭合括号 `]`,新逻辑可以可靠地去除整个回复前缀,无论嵌套深度如何。这提高了解析的准确性,并简化了代码。
2025-11-19 23:37:42 +08:00
minecraft1024a
81c5aaccfd feat(report): 为统计报告引入图形化费用分析视图
为增强 HTML 报告的可读性和洞察力,此变更集成了 Chart.js 来将关键的成本数据进行可视化。

现在,报告的每个标签页都会包含一个“数据总览”部分,其中有两个核心图表:
1.  **供应商成本构成图 (饼图)**: 直观展示不同供应商的费用占比,帮助快速定位主要开销来源。
2.  **模型成本排行榜 (条形图)**: 按费用降序排列各个模型,清晰地识别出成本最高的模型。

这些图表是动态生成的,如果统计周期内数据不足,将显示提示信息,避免用户面对空白图表。
2025-11-19 23:37:42 +08:00
tt-P607
606fe3fd2e feat(prompt): 添加动态群聊提醒并修复内存搜索
在系统提示中引入动态群聊提醒,使其具备上下文意识。现在仅在对话发生在群聊环境中时注入该提醒,从而防止在私聊中可能引起模型混淆。

这是通过向`PromptParameters`添加`group_chat_reminder_block`实现的,该模块会根据聊天类型有条件地填充。

此外,本次提交还包括修复在内存搜索过程中可能出现的`AttributeError`,确保在尝试使用内存模块之前先进行配置。
2025-11-19 23:37:41 +08:00
Windpicker-owo
3a87db0448 feat(planner): 使用标准化的JSON格式重构动作规划系统
- 将聊天流和消息管理器中的默认聊天模式从“normal”更改为“focus”
- 从ActionPlannerInfo数据模型中移除已弃用的should_quote_reply字段
- 通过移除回复可用性检查和基于兴趣的过滤,简化计划过滤逻辑
- 采用新的标准化JSON操作格式,并强制使用操作列表结构
- 更新规划器提示,以强制执行一致的动作输出格式
- 移除遗留操作参数过滤,简化消息目标解析
- 清理计划过滤器中未使用的导入和已弃用的代码路径
2025-11-19 23:37:39 +08:00
Windpicker-owo
67dfa1e3b1 feat(plan_filter): 优化动作过滤逻辑,增强对reply和respond动作的可用性检查 2025-11-19 23:37:38 +08:00
Windpicker-owo
a873fb7769 feat(persistence): 实现异步保存图存储以提高性能和响应性 2025-11-19 23:37:37 +08:00
Windpicker-owo
d95233ea67 feat(persistence): 使用aiofiles实现异步文件读写以提高性能 2025-11-19 23:37:37 +08:00
minecraft1024a
1b00000485 1 2025-11-19 23:37:37 +08:00
Windpicker-owo
c0e400f423 feat(attention): 添加注意力优化器以增强提示词多样性和防止注意力退化
refactor(prompt): 使用 asyncio.gather 替代 as_completed 以提升并发性能
refactor(config): 添加注意力优化配置选项
refactor(prompt_params): 增加注意力优化开关
2025-11-19 23:37:37 +08:00
minecraft1024a
8721546390 refactor(statistic): decouple statistics collection from report generation
Introduces a dedicated `HTMLReportGenerator` class in `report_generator.py` to handle all aspects of HTML and chart rendering. This decouples the report presentation logic from the data collection process within `StatisticOutputTask`.

Key changes include:
- Migrated all HTML and JavaScript generation into the new `HTMLReportGenerator`.
- Extracted all statistic key constants into a separate `statistic_keys.py` file for improved organization.
- Renamed `_generate_chart_data` to `_collect_chart_data` to better reflect its purpose.
- Improved data handling robustness by using `.get()` for dictionary access and safely handling database query results.
2025-11-19 23:37:36 +08:00