Commit Graph

558 Commits

Author SHA1 Message Date
minecraft1024a
af17290595 feat(tool_system): implement declarative caching for tools
This commit refactors the tool caching system to be more robust, configurable, and easier to use. The caching logic is centralized within the `wrap_tool_executor`, removing the need for boilerplate code within individual tool implementations.

Key changes:
- Adds `enable_cache`, `cache_ttl`, and `semantic_cache_query_key` attributes to `BaseTool` for declarative cache configuration.
- Moves caching logic from a simple history-based lookup and individual tools into a unified handling process in `wrap_tool_executor`.
- The new system leverages the central `tool_cache` manager for both exact and semantic caching based on tool configuration.
- Refactors `WebSurfingTool` and `URLParserTool` to utilize the new declarative caching mechanism, simplifying their code.
2025-08-27 18:45:59 +08:00
Furina-1013-create
b4e83c448b Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-08-27 18:28:41 +08:00
tt-P607
0a277c656e fix(chat): 处理截断消息时message为None的情况
在 `truncate_message` 函数中,如果传入的 `message` 参数为 `None`,会导致 `len(message)` 抛出 `TypeError`。本次提交增加了对 `None` 值的检查,确保在处理 `None` 时函数能正常返回空字符串,从而提高代码的健壮性。
2025-08-27 18:21:35 +08:00
minecraft1024a
1fd1c76a84 ruff这一块 2025-08-27 18:03:07 +08:00
minecraft1024a
be114223b4 fix(memory_system): 修复即时记忆的 orjson 编码与解码问题
`orjson.dumps` 返回 `bytes` 类型,在存入数据库前需要解码为 `str`。

同时,将关键词的反序列化库从标准 `json` 统一为 `orjson`,以保持序列化和反序列化操作的一致性。
2025-08-27 18:01:12 +08:00
minecraft1024a
5076410a00 Reapply "【迁移】工具系统再完善:工具缓存、ttl支持、自动记录、长期保存、自动清理缓存、将记录与执行分离、api记录查询、时间聊天工具筛选查询..."
This reverts commit 3d93bc4079.
2025-08-27 17:58:18 +08:00
Windpicker-owo
c360f016dd Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-08-27 17:39:32 +08:00
Windpicker-owo
bbbb9df112 修复空回复检测,同时修复tool_call 2025-08-27 17:39:28 +08:00
Furina-1013-create
9fca087b2c feat(plugin_system): 增加工具执行日志记录
feat(plugin_system): 增加工具执行日志记录

在工具执行前添加一行日志,用于记录正在调用的工具名称和参数,方便调试和追踪。
2025-08-27 17:10:56 +08:00
Windpicker-owo
4ebc07b6dc add event 2025-08-27 15:55:30 +08:00
Windpicker-owo
6c885afe9d Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-08-27 12:46:38 +08:00
Windpicker-owo
3d93bc4079 Revert "【迁移】工具系统再完善:工具缓存、ttl支持、自动记录、长期保存、自动清理缓存、将记录与执行分离、api记录查询、时间聊天工具筛选查询..."
This reverts commit 80ab0c687c.
2025-08-27 12:46:00 +08:00
雅诺狐
dec88bf20d Update instant_memory.py 2025-08-27 12:09:14 +08:00
Windpicker-owo
80ab0c687c 【迁移】工具系统再完善:工具缓存、ttl支持、自动记录、长期保存、自动清理缓存、将记录与执行分离、api记录查询、时间聊天工具筛选查询... 2025-08-27 11:04:20 +08:00
Furina-1013-create
434c174dcc chore(deps): 导入 json 模块 2025-08-27 10:00:52 +08:00
Windpicker-owo
47bdb63150 Merge branch 'master' into windpicker-adapter 2025-08-27 02:02:30 +08:00
Windpicker-owo
9663c4c679 Merge branch 'master' into windpicker-adapter 2025-08-27 01:59:59 +08:00
Windpicker-owo
84ea2c41de 接入event 2025-08-27 01:55:14 +08:00
minecraft1024a
51cb1688f8 chore(llm_models): 在 LLMRequest 初始化中定义 model_name 变量,來修复某些神秘的bug 2025-08-26 21:54:20 +08:00
minecraft1024a
531232b8ea refactor(config): 移除主动思考提示词模板以简化配置
主动思考的提示词 (`proactive_thinking_prompt_template`) 已从配置文件中移除。此举旨在简化用户的配置过程,现在该提示词将由内部动态管理,以确保更佳的适应性和效果。

此外,为支持未来的功能扩展,本次更新在日志系统中为多个新模块(如计划生成器、权限管理、网页搜索插件、反注入系统等)添加了颜色和别名配置,提高了日志输出的可读性。

BREAKING CHANGE: 配置项 `proactive_thinking_prompt_template` 已被废弃并移除。请从您的配置文件中删除此项,主动思考功能将自动使用新的内部提示词逻辑。
2025-08-26 21:38:23 +08:00
minecraft1024a
5f3329e7c9 refactor(llm_models): 移除官方Gemini客户端并改用aiohttp实现
官方的 `google-generativeai` 库存在一些问题且似乎已不再积极维护,导致依赖关系和稳定性方面存在风险。

为提高稳定性和可维护性,现已移除基于该官方库的 `gemini_client.py` 实现。相应地,在配置文件模板中,`client_type` 已从 "gemini" 更新为 "aiohttp_gemini",以引导用户使用新的、基于 `aiohttp` 的异步客户端。
2025-08-26 21:14:07 +08:00
minecraft1024a
2db42292d2 refactor(config): 整合搜索服务配置并移除废弃选项
将原先独立的 Exa 和 Tavily 搜索引擎配置项合并到 `web_search` 配置块中,以实现更统一的管理。同时,移除了已废弃的 `Telemetry` 和部分 `Experimental` 功能配置,简化了整体配置文件结构。

主要变更:
-   `ExaConfig` 和 `TavilyConfig` 被移除,其 API 密钥设置已迁移至 `WebSearchConfig`。
-   删除了 `TelemetryConfig` 及其在主配置中的引用。
-   简化了 `planner` 的自定义提示词逻辑,现在仅通过内容是否为空来判断是否启用。
-   更新了配置文件模板,以反映上述结构调整并移除过时的注释和配置项。
2025-08-26 21:10:06 +08:00
minecraft1024a
d64cfc651f Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-08-26 20:45:11 +08:00
minecraft1024a
c63de5ddd5 refactor(config): 将反截断设置移至模型配置 #真的能算refactor吗
反截断(anti-truncation)功能与特定模型的行为和能力更为相关,而不是任务本身的属性。

此更改将该设置从 `TaskConfig` 移动到 `ModelInfo`,以实现更合理的配置分组和更精细的控制。代码逻辑和配置文件模板也已相应更新。

BREAKING CHANGE: `anti_truncation` 配置项已从 `[model_task_config]` 部分移动到 `[[models]]` 下的具体模型配置中。用户需要更新其配置文件以适配新结构。
2025-08-26 20:45:04 +08:00
Windpicker-owo
6bf312e043 Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-08-26 20:21:28 +08:00
minecraft1024a
1e037e5ce9 feat(maizone): 新增QQ空间互通组功能,根据聊天上下文生成说说
引入了全新的“QQ空间互通组”功能。用户可以配置多个群聊为一个互通组。
在通过指令发布说说时,系统会自动获取这些群聊的近期聊天记录作为上下文,从而生成与当前讨论话题更相关的说说内容。

- 在 `config.toml` 中新增了 `[maizone_intercom]` 配置项用于定义互通组。
- 重构并增强了动态(说说)的拉取逻辑,提高了对不同数据格式的兼容性和解析的稳定性。
- 对项目中的多个文件进行了代码清理,移除了未使用的导入,使代码更加整洁。
2025-08-26 20:20:54 +08:00
Windpicker-owo
38fba02e36 修复双引号问题 2025-08-26 20:20:25 +08:00
Windpicker-owo
441ba8f62d 至少让插件跑起来了 2025-08-26 19:52:04 +08:00
minecraft1024a
cbd115efdb feat(monthly_plan): 增强月度计划系统,引入状态管理和智能抽取
对月度计划系统进行了全面的重构和功能增强,以提供更智能、更可持续的计划管理体验。

主要变更包括:
- **引入状态生命周期**: 废弃了原有的 `is_deleted` 软删除标记,引入了更明确的 `status` 字段 (`active`, `completed`, `archived`),用于管理计划的整个生命周期。
- **增加使用统计与自动完成**: 新增 `usage_count` 和 `last_used_date` 字段来跟踪计划的使用情况。当计划使用次数达到可配置的阈值后,会自动标记为 `completed`。
- **实现智能计划抽取**: 为每日日程生成实现了新的智能抽取算法。该算法会优先选择使用次数较少且近期未被使用的计划,以增加计划的多样性并避免重复。
- **更新配置选项**: 移除了旧的概率删除相关配置,增加了 `completion_threshold`、`avoid_repetition_days` 等新选项以支持新逻辑。
- **数据库模型更新**: 更新了 `MonthlyPlan` 的数据库模型和索引,以支持新功能并优化查询性能。保留 `is_deleted` 字段以兼容旧数据。
2025-08-26 19:19:53 +08:00
雅诺狐
a31df44e09 Update README.md 2025-08-26 15:13:10 +08:00
雅诺狐
ec9601710d Update README.md 2025-08-26 15:10:22 +08:00
雅诺狐
d85436d670 精简readme 2025-08-26 14:52:51 +08:00
雅诺狐
0e815779b7 Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-26 14:20:32 +08:00
雅诺狐
4a44ba9866 全面更换orjson 2025-08-26 14:20:26 +08:00
ikun两年半
a265926ac4 更新了文档中机器人的名字喵~ 2025-08-26 12:26:25 +08:00
ikun两年半
8e6cb5b00b 更改了文档中机器人的名字喵~ 2025-08-26 12:24:58 +08:00
ikun两年半
8b8a657096 更改了文档中机器人的名字喵~ 2025-08-26 12:23:00 +08:00
ikun两年半
d870e0a24b 更改了文档中机器人的名字喵~ 2025-08-26 12:21:50 +08:00
tt-P607
1ca365168a fix(maizone_refactored): 修复获取cookie时响应为空导致的错误 2025-08-26 12:11:08 +08:00
tt-P607
e5d6b6979b fix(chat): 修复关键词非列表形式时导致的解析错误
在处理记忆关键词时,旧代码使用 `ast.literal_eval` 来解析存储为字符串的关键词列表。当关键词字段为空或格式不正确时,这会引发 `ValueError` 或 `SyntaxError`。

本次修改将解析方式更换为 `json.loads`,并增加了 `try-except` 块来处理可能的 `json.JSONDecodeError`。同时,在添加记忆时,使用 `json.dumps` 来确保关键词列表被正确地序列化为 JSON 字符串,从而保证了数据存储和读取的健壮性和一致性。
2025-08-26 12:07:30 +08:00
tt-P607
9cea223c13 Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-26 12:03:07 +08:00
tt-P607
45ccab6033 fix(llm_models): 修复模型信息不存在时引发的属性错误
在处理模型信息 `model_info` 为 `None` 的情况下,直接访问 `model_info.name` 会导致 `AttributeError`。

此提交通过以下方式修复了该问题:
- 在 `_select_model` 调用后立即将 `model_info.name` 赋值给 `model_name` 变量,确保后续使用时该变量已定义。
- 在 `_handle_error` 方法中,当 `model_info` 可能为 `None` 时,增加了一个条件检查,如果 `model_info` 不存在,则将 `model_name` 设为 "unknown",从而避免了潜在的 `AttributeError`。
2025-08-26 12:01:39 +08:00
ikun两年半
83ff158dd8 更改了文档中机器人的名字喵~ 2025-08-25 23:30:43 +08:00
ikun两年半
a55bdfd0e3 笨蛋猫猫又有几个地方没改喵…… 2025-08-25 23:27:57 +08:00
ikun两年半
8ae4ce3e1b 笨蛋猫猫又有几个地方忘记改了喵…… 2025-08-25 23:23:25 +08:00
ikun两年半
07b03970b5 更改了文档中机器人的名字喵 2025-08-25 23:21:21 +08:00
ikun两年半
1b129b6bd7 更改了文档中机器人的名字喵~ 2025-08-25 23:14:39 +08:00
ikun两年半
2512983f77 更改了文档中机器人的名字喵~ 2025-08-25 23:13:29 +08:00
ikun两年半
68191ba090 笨蛋猫猫又有一点忘改了喵…… 2025-08-25 23:10:43 +08:00
ikun两年半
c00b087a7f 更改了文档中机器人的名字喵~ 2025-08-25 23:10:01 +08:00