Commit Graph

7765 Commits

Author SHA1 Message Date
Windpicker-owo
8a6b141017 重构代码以使用 mofox_wire 替代 mofox_bus,更新相关文档和示例 2025-11-25 22:45:57 +08:00
tt-P607
fd65d8c4eb feat(person_info): 实施基于稳健 ID 的用户信息同步。本次提交重构了用户识别和信息检索系统,使其基于稳定的平台和用户 ID,不再依赖脆弱的姓名解析机制。同时引入了自动后台进程,以保持用户信息的实时更新。主要变更包括:
- 在 `PersonInfoManager` 中新增 `sync_user_info` 方法,根据 `platform` 和 `user_id` 来创建和更新用户记录。
- `ChatManager` 现在会在处理消息时触发该同步作为非阻塞后台任务,确保用户数据(如昵称)保持最新。
- 提示生成逻辑,特别是关系和上下文信息的生成,已重构为使用稳定的 `user_id`,而非从回复消息内容中解析姓名。
- `PromptParameters` 已被扩展,以在整个回复生成流程中传递 `platform` 和 `user_id`。
- 弃用依赖名称到 ID 查找的脆弱方法。
2025-11-25 22:01:41 +08:00
Windpicker-owo
b6de9b5a9c 重构聊天系统中的消息发送与处理
- 更新了`uni_message_sender.py`,使用`MessageEnvelope`来发送消息,取代了之前的`MessageSending`结构。
- 引入了`send_envelope`函数,通过改进日志记录和错误处理来简化消息发送流程。
- 修改了`HeartFCSender`以直接处理`MessageEnvelope`,确保与新消息结构的兼容性。
- 重构了`default_generator.py`,以构建`MessageEnvelope`而不是`MessageSending`,从而增强了消息构建逻辑。
- 调整了`utils.py`中的效用函数,以使用`DatabaseUserInfo`来处理用户信息。
- 更新了`send_api.py`以构建和发送`MessageEnvelope`,从而改进了消息分发逻辑。
- 从插件系统中移除了已弃用的`MaiMessages`类,清理了未使用的代码。
- 增强了`napcat_adapter_plugin`以适应新的消息结构,确保消息的正确处理和发送。
- 对代码进行整体清理和整理,以提高可维护性和可读性。
2025-11-25 21:54:27 +08:00
Windpicker-owo
c268ea2fb2 修复ChatStream循环导入问题 2025-11-25 20:29:48 +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
1ebdc37b22 重构ChatStream和StreamContext:移除context_manager引用
- 在ChatStream及相关类中,将所有context_manager的实例替换为直接上下文访问。
- 更新方法,利用新的上下文结构来管理聊天状态和消息。
- 增强的StreamContext,增加了用于消息处理、统计和历史管理的方法。
- 在重构过程中改进了错误处理和日志记录。
2025-11-25 12:01:26 +08:00
Windpicker-owo
d30b0544b5 重构消息处理和信封转换
- 从代码库中移除了EnvelopeConverter类及其相关方法,因为它们已不再需要。
- 更新了主系统,使其能够直接处理MessageEnvelope对象,而无需将其转换为旧格式。
- 增强了MessageRuntime类,以支持多种消息类型并防止重复注册处理程序。
引入了一个新的MessageHandler类来管理消息处理,包括预处理和数据库存储。
- 改进了整个消息处理工作流程中的错误处理和日志记录。
- 更新了类型提示和数据模型,以确保消息结构的一致性和清晰度。
2025-11-24 22:36:33 +08:00
tt-P607
714bef7c2b feat(chatter): 优化主动聊天的决策和话题生成
优化主动聊天的提示,以提高决策质量。

- 为“do_nothing”选项添加了高优先级规则,以防止机器人在最后一次发送消息后再次发言。
- 引入了结构化的“三级方法”来生成新话题,确保话题与最近的对话相关,并且感觉更自然、更像人类。
2025-11-24 15:58:52 +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
tt-P607
690d4e4fca Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-23 19:30:09 +08:00
tt-P607
8f1dc4c70b feat(napcat):增加 websocket 连接重试次数
此更改将建立 websocket 连接的最大重试次数从 3 次提高到 10 次。此调整有助于提高适配器的稳定性,以及在网络不稳定的环境中建立连接的能力。
2025-11-23 19:30:03 +08:00
minecraft1024a
33c6ddc6dd style(log): 统一日志格式,使用文本标签替代emoji前缀
将日志消息中的 emoji 前缀(如 , , ⚠️)替换为更清晰、更易于解析的文本标签(如 [成功], [错误], [警告])。

这一改动有以下好处:
- 提高了在不同终端和环境下的日志可读性与一致性。
- 避免了 emoji 字符可能导致的渲染问题。
- 使日志更易于被自动化工具进行筛选和分析。
2025-11-23 14:40:34 +08:00
minecraft1024a
787b8f01f3 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-23 14:26:48 +08:00
minecraft1024a
7f74fc473e style(log): 移除日志输出中的 emoji 符号
为了在不同终端和环境中保持日志输出的整洁与一致性,统一移除了日志信息中的 emoji 符号。

此举旨在避免潜在的渲染问题,并使日志更易于程序化解析和人工阅读。同时,对部分代码进行了微小的类型标注优化。
2025-11-23 14:26:44 +08:00
tt-P607
9d1ebba373 feat(proactive_thinking): 优化主动思考功能,实现场景化响应
本次更新针对主动思考(Proactive Thinking)功能进行了多项重要优化,旨在提升其智能化、灵活性和稳定性。

主要变更:

1.  **新增聊天场景区分**:
    *   在 `proactive_thinking_executor.py` 中增加了对群聊(group)和私聊(private)场景的判断逻辑。
    *   为两种场景分别创建了独立的、更具针对性的决策和回复提示词模板(`_group` 和 `_private` 后缀),使主动发言更贴合不同聊天氛围。

2.  **上下文长度配置化**:
    *   移除了原先在代码中硬编码的上下文长度(`limit=40`)。
    *   现在,功能会直接读取 `bot_config.toml` 中 `[chat]` 部分的 `max_context_size` 配置,实现了与全局配置的统一,增强了灵活性。

3.  **优化触发机制,减少跳过**:
    *   针对群聊等繁忙场景下,因 `chatter` 正在处理消息而导致主动思考被频繁跳过的问题,增加了一个短暂的等待和重试机制。
    *   现在,当检测到 `chatter` 忙碌时,会等待3秒后再次检查,提高了主动思考的成功触发率。

此次修改使得主动思考功能更加智能、可配置,并能更好地适应复杂的聊天环境。
```
2025-11-23 10:53:06 +08:00
tt-P607
19fefeb284 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-23 02:24:35 +08:00
tt-P607
f464befe66 fix(planner): 当缺少 target_id 时确保设置动作消息
当 LLM 规划器没有为某个动作指定 `target_message_id` 时,系统现在将默认使用上下文中的最新消息。这确保了需要消息上下文的动作(如引用或回复)有一个有效的 `action_message` 对象,从而防止潜在的 `None` 引用错误。
2025-11-23 02:24:23 +08:00
minecraft1024a
dad86bcbc0 build(docker): 更新 Docker 镜像仓库地址为 ericterminal 2025-11-22 22:30:23 +08:00
minecraft1024a
9f342bd5b2 refactor(individuality): 移除废弃的场景式人格生成模块
删除位于 `src/individuality/not_using/` 目录下的整套人格生成系统。

该系统是早期用于通过预设场景问答和 LLM 评分来构建 Bot 人格的一种尝试。由于此方法已被弃用且不再集成于当前工作流中,为保持代码库的简洁性和可维护性,决定将其完全移除。
2025-11-22 21:47:01 +08:00
minecraft1024a
725df21215 feat(plugin): 简化局部组件管理命令,自动检测组件类型
移除了 `enable_local` 和 `disable_local` 命令中的组件类型参数,改为通过组件名称自动搜索。这简化了用户操作,无需记忆组件的具体类型。

- 当找到多个同名组件时,将提示用户并中止操作,避免歧义。
- 新增保护机制,防止用户局部禁用路由、提示词等核心类型的组件,以增强系统稳定性。
2025-11-22 21:29:08 +08:00
minecraft1024a
24dc2abe2f feat(plugin_system): 扩展插件管理API,增加多种查询与辅助函数
对 `plugin_manage_api.py` 进行了大规模的重构和功能增强,以提高其可维护性和可用性。

主要变更包括:
- **结构重构**: 将API按功能划分为四个逻辑部分:生命周期管理、状态管理、信息查询和工具函数,使代码结构更清晰。
- **功能扩展**: 新增了多个API端点用于查询插件和组件状态,例如 `get_plugin_details`, `list_plugins`, `search_components_by_name` 等。
- **文档完善**: 为所有公共API添加了详细的中文文档字符串和内联注释,解释了其用途、参数和返回值。

这些变更旨在为上层应用(如UI、CLI工具)提供一个更强大、更易于集成的插件系统管理接口。
2025-11-22 21:18:08 +08:00
minecraft1024a
ffdb8e26e6 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-22 20:31:24 +08:00
minecraft1024a
4a4175c246 feat(plugin_system): 实现组件的局部启用与禁用功能
新增了 `/system plugin enable_local` 和 `/system plugin disable_local` 命令,允许管理员在指定的会话(群聊或私聊)中动态地启用或禁用插件组件。

- 通过 stream_id 对组件状态进行局部覆盖,提供了更精细的控制粒度。
- 引入新的 `plugin.manage.local` 权限节点以控制此高级功能。
- 在 API 层面增加了对组件存在性的检查,增强了系统的健壮性。
2025-11-22 20:22:46 +08:00
拾风
0cdd206014 Merge pull request #4 from Eric-Terminal/dev
feat:修复依赖缺失问题
2025-11-22 19:43:12 +08:00
Eric-Terminal
1c653ee021 feat:修复依赖缺失问题 2025-11-22 19:35:28 +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
3e927f45bb chore: 更新启动信息中的项目地址 2025-11-21 21:28:57 +08:00
minecraft1024a
515d6ee62b refactor(maizone): 移除调度器中的随机主题生成逻辑
移除 `SchedulerService` 中直接调用LLM生成随机说说主题的功能。

现在,当没有日程安排时,调度器会发送一个通用的指令(“随意发挥”),将具体内容的生成职责完全委托给 `QzoneService`。
这一改动简化了调度器的职责,使其专注于任务调度,提高了模块的内聚性。
2025-11-21 21:27:13 +08:00
minecraft1024a
695a6b7319 feat(plugin_system): 增加对最后一个启用 Chatter 的禁用保护
为了确保每个 stream 至少有一个可用的 Chatter 组件,此更改引入了一项保护机制。

在尝试禁用一个 Chatter 组件时,系统现在会检查它是否是当前 stream 中唯一启用的 Chatter。如果是,则禁用操作将被阻止,以避免导致该 stream 无法响应。
2025-11-21 21:21:21 +08:00
minecraft1024a
ca83e7b228 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-21 21:05:08 +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
yishan
01d26ca018 Merge pull request #2 from LuisKlee/patch-2
移除技术群群号
2025-11-21 19:04:43 +08:00
yishan
2666eb405b Merge branch 'dev' into patch-2 2025-11-21 19:03:06 +08:00
Windpicker-owo
fee7611e99 feat: 实现消息编解码器和消息处理模型
- 添加编解码器,用于序列化和反序列化MessageEnvelope对象。
- 创建消息模型,包括分段(Seg)、群组信息(GroupInfo)、用户信息(UserInfo)、格式信息(FormatInfo)、模板信息(TemplateInfo)、基础消息信息(BaseMessageInfo)和消息基础(MessageBase)。
引入路由器以管理消息路由和连接。
- 实现运行时机制,通过钩子和路由来处理消息处理。
- 使用HTTP和WebSocket客户端和服务器开发传输层,以进行消息传输。
- 为消息内容和信封定义类型,以标准化消息结构。
2025-11-21 18:40:51 +08:00
Windpicker-owo
ccfe17c986 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-20 22:51:15 +08:00
Windpicker-owo
ff1321e017 refactor(tool_executor): 移除串行执行模式,优化工具执行性能 2025-11-20 22:50:52 +08:00
Windpicker-owo
ddc68b9257 feat(similarity): 添加异步和批量相似度计算功能,优化性能
feat(graph_store): 增强图存储管理,添加边的注册和注销功能
feat(memory_tools): 支持批量生成嵌入向量
feat(unified_manager): 优化感知记忆和短期记忆的检索逻辑
2025-11-20 22:40:53 +08:00
LuiKlee
52ccbfd395 Merge pull request #3 from LuisKlee/patch-3
是的,这是关于一键部署的文档
2025-11-20 22:33:59 +08:00
Windpicker-owo
8dc754e562 fix(config): 更新 MMC_VERSION 至 0.13.0-alpha.2 2025-11-20 18:40:07 +08:00
Windpicker-owo
bd4e36b1cf feat(replyer): 添加最近消息支持以构建记忆块和查询文本 2025-11-20 18:06:23 +08:00
Windpicker-owo
e46a900f10 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-20 16:48:50 +08:00
Windpicker-owo
6ecf5a36f2 增强聊天管理器和数据库API,添加自动注册和异步清理功能,优化模型转换为字典的逻辑 2025-11-20 16:48:18 +08:00
tt-P607
bf4f9bf353 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-11-20 14:39:40 +08:00