Windpicker-owo
01bcfb491a
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev
2025-12-08 17:19:33 +08:00
Windpicker-owo
a1d60ab026
启用数据库预加载器,清理日志
2025-12-08 17:17:53 +08:00
雅诺狐
3edcc9d169
ruff
2025-12-08 15:48:40 +08:00
minecraft1024a
2235920908
fix(plugin): 检查组件可用性时增加对其所属插件状态的判断
...
在 `is_component_enabled` 方法中,增加了对组件所属插件启用状态的检查。
此前,该方法仅检查组件自身的全局或局部状态,这可能导致一个已禁用插件下的组件仍然被错误地判断为“可用”,从而引发非预期行为。
本次修改确保在检查组件自身状态前,先验证其所属插件是否已启用。这使得组件的生命周期与其所属插件的状态保持一致,提高了系统的健壮性。
2025-12-06 19:03:32 +08:00
minecraft1024a
b8bbd7228f
feat(plugin): 调整插件路由前缀以避免组件冲突
...
将插件组件的路由前缀从 `/plugins/{plugin_name}` 修改为 `/plugins/{plugin_name}/{component_name}`。
此项更改旨在解决单个插件注册多个路由组件时可能出现的路径冲突问题,确保每个组件都拥有唯一的 API 端点。
此外,为了支持新的前端开发环境,已将端口 11451 和 3001 添加到 CORS 允许源列表中。
BREAKING CHANGE: 插件 API 的 URL 结构已发生变更。所有对插件接口的调用都需要更新为新的 `/plugins/{plugin_name}/{component_name}` 格式。
2025-12-05 19:15:14 +08:00
tt-P607
22767ce234
feat(context): 为大语言模型提供过去网页搜索的上下文记忆
...
此更改使聊天机器人能够记住并引用过去网页搜索的相关信息,从而显著提高响应质量和连贯性。
系统不再将每个查询视为孤立事件,而是在生成新响应之前,对之前的 `web_search` 结果缓存进行向量相似度搜索。如果发现过去的相关信息,会自动作为“相关历史搜索结果”注入到大语言模型的提示中。
这使模型能够立即访问相关背景信息,避免对已经讨论过的主题重复搜索。
为了支持这一新功能:
- 对 `web_search` 工具的提示进行了改写,以通过确保结果被高效缓存和调用,鼓励大语言模型更频繁地使用它。
- 重要工具结果(如网页搜索)的预览长度已增加
2025-12-04 04:12:36 +08:00
tt-P607
cba6d34197
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev
2025-12-03 17:02:39 +08:00
tt-P607
39c52490d9
feat(chatter): 整合工具使用并增强主聊天流程中的上下文
...
此提交为聊天系统引入了若干重大增强,以提高回应质量、上下文感知能力和角色一致性。
**Kokoro 流程中的工具整合:**
- 在主聊天提示中新增了一个 `tool_info` 上下文块。
- `KFCContextBuilder` 现在通过 `ToolExecutor` 执行工具后再生成回复,使聊天模型能够感知实时信息和操作。
**以角色为驱动的用户画像:**
- `update_user_profile` 工具被重构为两阶段过程。工具使用模型提供一个简单的“印象提示”,专门的 `relationship_tracker` 模型将其扩展为丰富且符合角色的一致印象。
- 工具使用提示已更新,明确指示模型在生成工具参数时保持机器人的角色。
**记忆系统改进:**
- 记忆检索判定提示已更新,更加主动地获取长期记忆,目标是为了提供更丰富的上下文。- 记忆查询现在从最近的一组消息中生成,而不是单条消息,从而提高检索的相关性。**其他更改:** - 在上下文构建过程中添加了性能时间日志,以识别瓶颈。- 在响应过滤中进行了小修复,以清理特定前缀,如“,说:”。
2025-12-03 14:04:29 +08:00
Windpicker-owo
1acead1f9d
feat(cache): 添加 LRU 淘汰机制和缓存大小限制以优化内存使用
2025-12-03 11:42:38 +08:00
Windpicker-owo
943c2a6566
feat(data-models): 使用 __slots__ 优化内存占用和属性访问性能,更新多个数据模型
2025-12-01 19:57:33 +08:00
minecraft1024a
251a7fcbfb
fix(plugin_system): 禁止启用或禁用适配器类型组件
...
适配器(Adapter)作为核心连接组件,其状态不应由用户直接启用或禁用,以防止核心功能中断。
本次修改在启用和禁用逻辑中加入了对适配器类型的检查,以确保系统稳定性。
2025-11-29 19:26:06 +08:00
minecraft1024a
b2dadfa418
refactor(plugin_system): 将组件状态管理逻辑提取到专职类中
...
将原先分散在 `ComponentRegistry` 中的组件状态管理逻辑(包括全局启用/禁用和基于会话的局部状态覆盖)重构并迁移到一个新的 `ComponentStateManager` 类中。
`ComponentRegistry` 现在通过持有一个 `ComponentStateManager` 实例,将所有状态相关的操作(如 `enable_component`, `disable_component`, `is_component_available`)委托给该类处理。
此次重构的主要目的:
- **关注点分离**: `ComponentRegistry` 的职责更加清晰,专注于组件的注册和查询。
- **提升内聚性**: 所有状态管理的复杂逻辑都集中在 `ComponentStateManager` 中,便于维护和扩展。
- **简化代码**: `ComponentRegistry` 的代码变得更加简洁易懂。
2025-11-29 19:24:25 +08:00
minecraft1024a
ff98187c54
refactor(plugin_system): overhaul ComponentRegistry for clarity and add local state management
...
The `ComponentRegistry` class has been extensively refactored to improve its structure, maintainability, and functionality. This overhaul simplifies core logic and introduces a new capability for session-level component control.
Key improvements include:
- **Structural Reorganization**: The class is now divided into logical sections (Initialization, Registration, State Management, etc.) for better readability.
- **Simplified Registration**: The main `register_component` method now uses a dictionary-based handler dispatch, replacing a large `match-case` block and improving extensibility.
- **Local State Management**: Introduced a new feature for session-level (stream-specific) component state. This allows temporary enabling/disabling of components within a single conversation via `set_local_component_state` and `is_component_available`.
- **Consistent Methods**: Internal registration, removal, and state-change methods have been streamlined for consistency and robustness.
- **Enhanced Querying**: Component query methods now correctly factor in both global and local (session) availability states.
- **Code Quality**: Improved docstrings, type hints, and general code simplification throughout the module.
2025-11-29 08:55:31 +08:00
Windpicker-owo
6c808d1052
feat(event_manager): 添加 ON_NOTICE_RECEIVED 事件到默认事件列表
2025-11-28 13:54:57 +08:00
Windpicker-owo
4af6a5ec0c
fix: 修复组件移除时的错误处理逻辑,确保日志记录和返回值一致
2025-11-26 23:17:27 +08:00
Windpicker-owo
9f82671972
Merge branch 'dev' into mofox-bus
2025-11-26 22:25:39 +08:00
Windpicker-owo
0908fb50a0
优化日志
2025-11-26 21:16:16 +08:00
Windpicker-owo
8fc4cd4c3b
重构:移除过时的napcat_adapter_plugin组件
...
- 从napcat_adapter_plugin中删除了stream_router.py、utils.py、video_handler.py、websocket_manager.py和todo.md文件。
- 在napcat_cache.json中为组和成员信息引入了一种新的缓存结构。
- 通过移除未使用的模块和整合功能,简化了插件的架构。
2025-11-26 16:40:31 +08:00
Windpicker-owo
8a6b141017
重构代码以使用 mofox_wire 替代 mofox_bus,更新相关文档和示例
2025-11-25 22:45:57 +08:00
Windpicker-owo
6b3b2a8245
重构并增强Napcat适配器的功能
...
- 更新了`BaseAdapter`以简化子进程处理。
- 对`AdapterManager`进行了重构,以便根据适配器的`run_in_subprocess`属性来管理适配器。
- 增强了`NapcatAdapter`,以利用新的`CoreSinkManager`实现更优的进程管理。
- 在`utils.py`中实现了针对群组和成员信息的缓存机制。
- 改进了`message_handler.py`中的消息处理,以支持各种消息类型和格式。
- 已将插件配置版本更新至7.8.3。
2025-11-25 19:55:36 +08:00
Windpicker-owo
81a209ed87
feat: 更新代码中的日志信息和注释为中文,增强可读性,修改适配器注册流程
2025-11-24 14:35:20 +08:00
Windpicker-owo
36fce6ca98
feat: 添加带有消息处理和路由功能的NEW_napcat_adapter插件
...
- 为NEW_napcat_adapter插件实现了核心模块,包括消息处理、事件处理和路由。
- 创建了MessageHandler、MetaEventHandler和NoticeHandler来处理收到的消息和事件。
- 开发了SendHandler,用于向Napcat发送回消息。
引入了StreamRouter来管理多个聊天流,确保消息的顺序和高效处理。
- 增加了对各种消息类型和格式的支持,包括文本、图像和通知。
- 建立了一个用于监控和调试的日志系统。
2025-11-24 13:24:55 +08:00
minecraft1024a
7f74fc473e
style(log): 移除日志输出中的 emoji 符号
...
为了在不同终端和环境中保持日志输出的整洁与一致性,统一移除了日志信息中的 emoji 符号。
此举旨在避免潜在的渲染问题,并使日志更易于程序化解析和人工阅读。同时,对部分代码进行了微小的类型标注优化。
2025-11-23 14:26:44 +08:00
minecraft1024a
7b8660bb69
refactor(plugin_system): 统一插件卸载逻辑到注册中心
...
将 `PluginManager.unload_plugin` 中的卸载逻辑移至 `component_registry`。现在 `PluginManager` 直接调用 `component_registry.unregister_plugin` 来处理所有组件和插件的注销,简化了插件管理器的职责,使卸载过程更加集中和一致。
2025-11-22 16:59:41 +08:00
Windpicker-owo
b08c70dfa6
feat: 添加插件配置支持,优化适配器和组件初始化
2025-11-22 13:24:09 +08:00
Windpicker-owo
7c579e6ee4
重构适配器系统并增强插件架构
...
- 在mofox_bus中,将BaseAdapter重命名为AdapterBase以提高清晰度。
- 引入了AdapterInfo类来封装适配器组件信息。
- 增强的PluginManager,支持核心消息接收器配置和适配器注册。
- 实现了EnvelopeConverter,用于将MessageEnvelope转换为内部消息格式。
- 创建了BaseAdapter类来管理插件的生命周期、配置和健康检查。
- 开发了AdapterManager,用于管理适配器实例和子流程。
- 添加了一个示例适配器插件,以展示与新适配器系统的集成。
- 删除了过时的Phi插件文档。
2025-11-22 12:49:37 +08:00
minecraft1024a
94b4123039
refactor(plugin_system): 废弃旧版Command系统并重构注册中心
...
本次提交完全移除了对旧版 `BaseCommand` 系统的支持,统一使用 `PlusCommand`。所有旧版命令现在通过一个兼容性适配器在加载时自动转换为 `PlusCommand`,简化了命令处理流程和代码库。
主要变更:
- **移除旧版命令处理**: 删除了 `ChatBot` 中专门处理旧版 `BaseCommand` 的方法 (`_process_commands_with_new_system`) 和相关逻辑,现在所有命令都通过 `PlusCommand` 的处理流程。
- **重构组件注册中心**: 对 `ComponentRegistry` 进行了大规模重构和清理:
- 添加了大量文档字符串和类型提示,显著提升了代码的可读性和可维护性。
- 废弃了特定于 `BaseCommand` 的注册表和查找方法 (`_command_registry`, `_command_patterns`, `find_command_by_text`)。
- 实现了 `unregister_plugin` 和 `remove_component` 方法,支持插件和组件在运行时的动态卸载。
- 统一并简化了各类组件的注册、查询和状态管理逻辑,使其更加一致和健壮。
BREAKING CHANGE: 废弃了 `BaseCommand` 类。所有自定义命令现在必须继承自 `PlusCommand`。虽然系统提供了向后兼容的适配器,但强烈建议将现有命令迁移到 `PlusCommand` 以获得全部功能和最佳性能。直接依赖旧版 `BaseCommand` 注册和查找机制的代码将无法工作。
2025-11-22 12:35:37 +08:00
minecraft1024a
f3ae22d622
refactor(plugin_system): 移除对部分组件的局部状态支持
...
根据新的设计,某些组件类型,如 ROUTER、EVENT_HANDLER 和 PROMPT,不应再支持局部启用/禁用状态。这些组件的状态应该在全局范围内进行管理。
此更改包括:
- 在 `ComponentRegistry` 中引入 `_no_local_state_types` 集合,明确指定不支持局部状态的组件类型。
- 移除 `get_enabled_event_handlers` 和 `get_enabled_prompt_registry` 方法中的 `stream_id` 参数和局部状态检查逻辑,使其只返回全局启用的组件。
这一重构简化了状态管理逻辑,并使组件行为与设计意图保持一致。
2025-11-22 11:24:26 +08:00
minecraft1024a
30bf1f68b1
refactor(plugin_system): 重构 Prompt 注入逻辑以实现动态化
...
本次重构的核心目标是将 Prompt 注入规则的处理方式从系统启动时的一次性加载,转变为在每次需要注入时实时、动态地构建。这解决了之前静态加载机制下,运行时启用/禁用 Prompt 组件无法影响其注入行为的问题。
主要变更包括:
- **PromptComponentManager 动态化**:
- 移除了 `load_static_rules` 和 `_initialized` 标志,规则不再在启动时预加载到 `_dynamic_rules` 中。
- `_dynamic_rules` 现在只存储通过 API 动态添加的纯运行时规则。
- 新增 `_build_rules_for_target` 方法,该方法在 `apply_injections` 时被调用,实时从 `component_registry` 获取所有已启用的静态组件规则,并与 `_dynamic_rules` 中的运行时规则合并,确保规则集始终反映当前系统状态。
- **依赖 ComponentRegistry**:
- `PromptComponentManager` 现在直接依赖 `component_registry` 来获取组件的最新启用状态和信息,而不是依赖自己预加载的缓存。
- `get_registered_prompt_component_info`, `get_injection_info`, `get_injection_rules` 等多个 API 方法被修改为 `async`,并重写了内部逻辑,以动态查询和构建信息,确保返回的数据准确反映了当前所有可用组件(包括静态和纯动态)的注入配置。
- **ComponentRegistry 增强**:
- 增加了对 Prompt 组件在禁用时从内部启用的注册表中移除的逻辑。
- 扩展了 `is_component_available` 的逻辑,使其能正确处理不支持局部(stream-specific)状态的组件类型。
2025-11-22 11:15:45 +08:00
minecraft1024a
affd70b165
refactor(chat): 简化Action和PlusCommand的调用预处理
...
移除 `ChatBot` 和 `ActionModifier` 中用于过滤禁用组件的模板代码。
这两个模块现在直接从 `ComponentRegistry` 获取为当前聊天会话(`stream_id`)定制的可用组件列表。所有关于组件是否启用的判断逻辑都已下沉到 `plugin_system` 核心中,使得上层调用代码更清晰,且不再需要依赖 `global_announcement_manager` 来进行手动过滤。
2025-11-22 09:51:31 +08:00
minecraft1024a
a0618fb3c4
feat(plugin_system): 引入组件局部状态管理并重构插件API
...
引入了基于 `stream_id` 的组件局部状态管理机制。这允许在不修改全局配置的情况下,为特定会话临时启用或禁用组件,提供了更高的灵活性。
全面重构了 `plugin_manage_api`,提供了更强大和稳定的插件管理功能:
- 新增 `reload_all_plugins` 和 `get_system_report` API,方便进行批量重载和系统状态诊断。
- 增强了组件卸载逻辑,确保在插件移除时能更彻底地清理资源,特别是对 `EventHandler` 的订阅。
- 重写了内置的 `/system plugin` 命令,以利用新的API,并为相关操作添加了权限控制。
组件注册中心(ComponentRegistry)中的多个 `get_enabled_*` 方法现在可以接受 `stream_id`,以正确反映局部状态。
BREAKING CHANGE: `plugin_manage_api` 中的多个函数已被移除或替换。例如 `list_loaded_plugins` 和 `remove_plugin` 已被移除,加载插件的逻辑已整合到 `register_plugin_from_file` 中。内置的 `/system plugin` 命令的子命令也已更改。
2025-11-21 21:05:02 +08:00
Windpicker-owo
ff1321e017
refactor(tool_executor): 移除串行执行模式,优化工具执行性能
2025-11-20 22:50:52 +08:00
tt-P607
5a93867417
fix(config): 临时修复 master_users 加载失败问题
...
问题描述:
由于未明原因,配置文件(bot_config.toml)中的 `permission.master_users` 字段在加载过程中被意外清空,导致权限系统无法正确识别 Master 用户。初步排查指向复杂的配置版本自动更新与迁移逻辑。
解决方案:
在 `config.py` 的 `load_config` 函数中,于 Pydantic 模型验证完成后,增加了一段临时修复代码。该代码会从 `tomlkit` 解析出的原始配置数据中,重新读取 `master_users` 的值,并将其强制赋给最终的 `config` 对象。
具体实现:
1. 使用 `config_data.unwrap()` 将 `tomlkit` 对象安全地转换为标准 Python 字典。
2. 从字典中提取 `permission.master_users` 的值。
3. 将提取到的值直接赋给 `config.permission.master_users`。
4. 添加了详细的日志,以便追踪此修复操作的执行情况。
影响:
- **正面**:立即恢复了 Master 用户的识别功能,解决了权限检查失效的核心问题。
- **注意**:这是一个临时性的解决方案(workaround),并未从根本上解决配置更新逻辑中可能存在的缺陷。后续仍需对该逻辑进行深入排查和重构。
2025-11-20 14:39:27 +08:00
Windpicker-owo
4c7bc1928e
feat: 优化长期记忆检索和合并操作,支持图结构扩展和智能合并
2025-11-19 23:58:49 +08:00
Windpicker-owo
f3ea6a692e
feat: 添加工具调用状态缓存和标准化工具历史记录管理器
2025-11-19 23:58:49 +08:00
Windpicker-owo
8c6242026d
feat: 优化事件管理,添加事件处理超时和并发限制功能
2025-11-19 23:58:49 +08:00
minecraft1024a
334df4d87f
refactor(plugin_system): 移除路由级认证,引入端点级安全依赖
...
之前的插件路由认证机制通过在 `RouterInfo` 中设置 `auth_required` 标志,对整个路由组件统一应用API密钥验证。这种方式缺乏灵活性,无法对单个端点进行细粒度的安全控制。
本次重构移除了 `auth_required` 机制,转而引入一个可重用的 FastAPI 依赖项 `VerifiedDep`。插件开发者现在可以按需将其应用到需要保护的特定端点上,从而实现更灵活、更精确的访问控制。
`hello_world_plugin` 已更新,以演示新的认证方式。
BREAKING CHANGE: 移除了 `RouterInfo` 中的 `auth_required` 属性。所有依赖此属性进行认证的插件路由都需要更新,改为在需要保护的端点上使用 `VerifiedDep` 依赖项。
2025-11-19 23:58:48 +08:00
minecraft1024a
717d4ba555
feat(plugin_system): 引入插件HTTP端点系统
...
引入了全新的 `BaseRouterComponent` 组件类型,允许插件开发者通过继承并实现 `register_endpoints` 方法来创建 FastAPI 路由。
- 插件系统现在可以自动发现并注册这些路由组件,并将它们挂载到主 FastAPI 应用的 `/plugins/<plugin_name>` 前缀下。
- 新增了全局配置 `[plugin_http_system]`,提供了总开关、API 速率限制和 API 密钥认证 (`X-API-Key`) 等功能,以确保端点的安全性和稳定性。
- 更新了 `hello_world_plugin` 插件,增加了一个简单的 `/greet` 端点作为实现示例。
2025-11-19 23:58:48 +08:00
Windpicker-owo
40709d95de
rebase 清理
2025-11-19 23:45:47 +08:00
Windpicker-owo
1afcf51d61
refactor: 移除对机器人自身用户ID的特殊处理,统一使用QQ号进行比较
2025-11-19 23:37:31 +08:00
明天好像没什么
be8574ac72
权限已修复
2025-11-19 23:36:34 +08:00
明天好像没什么
63f8b131b9
权限
2025-11-19 23:36:33 +08:00
Windpicker-owo
e716dee371
feat(event-manager): 引入asyncio库以支持异步事件处理
2025-11-19 23:36:30 +08:00
Windpicker-owo
43d4aa3f0b
feat(scheduler): 新增死锁检测器,改进任务取消机制,优化异步通知
2025-11-19 23:36:28 +08:00
明天好像没什么
26d22e5dd8
ruff
2025-11-19 23:36:06 +08:00
Windpicker-owo
e6f3dfc1e7
feat(tool_history): 实现流工具历史管理器,以增强工具调用跟踪和缓存- 添加了 StreamToolHistoryManager,用于管理聊天流级别的工具调用历史。- 引入了 ToolCallRecord,用于详细记录工具调用,包括执行时间和缓存命中情况。- 集成了内存缓存和全局缓存系统,以高效检索结果。- 更新了 ToolExecutor,以使用新的历史管理器记录和获取工具调用。- 增强了 ExaSearchEngine,以限制返回结果数量并提升答案质量。- 重构了 CacheManager 中的缓存管理,以包括工具调用统计和性能指标。
2025-11-19 23:35:27 +08:00
Windpicker-owo
de24580dec
feat: 将 JSON 处理库从 json 更改为 orjson,以提高性能和兼容性
2025-11-19 23:35:23 +08:00
Windpicker-owo
b6a693895b
feat: 重构聊天系统的内存处理与格式化功能
...
- 更新了DefaultReplyer,采用新的内存格式化工具以提供更优质的内存描述。
- 已移除 Config 类中已弃用的内存配置。
- 在主系统中增强内存系统初始化检查,确保配置正确。
- 优化了MemoryManager,使其可直接使用全局配置进行内存设置。
- 新增了一个内存格式化工具,用于将内存对象转换为自然语言描述。
- 更新了内存工具,提供了更清晰的内存创建与管理指南。
- 精炼插件工具与使用提示,提升用户交互体验与记忆准确性。
- 根据内存系统结构的变化调整了机器人配置模板。
2025-11-19 23:32:11 +08:00
Windpicker-owo
dfb0626521
refactor(tool_use): 添加工具调用历史记录功能,优化工具执行器的提示词和历史管理
...
refactor(chat_stream_impression_tool): 简化聊天流印象更新逻辑,直接使用传入参数更新
refactor(user_profile_tool): 优化用户画像更新逻辑,直接覆盖更新并移除二步调用机制
2025-11-19 23:31:53 +08:00
明天好像没什么
3db00aa8f3
ruff归零
2025-11-19 23:31:42 +08:00