Commit Graph

39 Commits

Author SHA1 Message Date
明天好像没什么
f5e82685a0 feat(plugin): 集成 MCP 协议支持并优化代码风格
- 新增 fastmcp 依赖,支持通过 Streamable HTTP 连接外部工具服务器
- 在 component_registry 与 tool_api 中实现 MCP 工具加载、注册及调用链路
- 补充 README 中的 MCP 特性说明
- 统一修复多处 import 顺序、空行、引号及类型注解,提升代码整洁度
- 在 pyproject.toml 中忽略 PERF203 规则,允许循环内异常处理
- 优化语音缓存与本地 ASR 调用逻辑,减少冗余代码
2025-11-19 23:27:03 +08:00
minecraft1024a
87f88c5913 refactor(plugin): 统一插件日志记录器为 get_logger
将 hello_world_plugin 中直接使用 `logging` 模块的方式,改为从 `src.common.logger` 导入并使用 `get_logger`。

这确保了插件日志与核心应用日志格式和配置的一致性,便于集中管理和问题排查。同时,此举也修正了 Pylance 关于导入顺序的警告。
2025-11-19 23:25:05 +08:00
minecraft1024a
92f5f9bbd9 feat(plugin_system): 引入高级Prompt注入规则系统以取代旧注入点机制
引入了一套全新的、基于规则的Prompt注入系统,以取代原有的 `injection_point` 机制。这套新系统提供了更强大、更灵活的Prompt内容注入能力。

主要变更包括:
- **引入 `InjectionRule` 和 `InjectionType`**:定义了注入规则的数据结构和注入类型(如 `PREPEND`, `APPEND`, `REPLACE`, `REMOVE`, `INSERT_AFTER`),允许插件开发者精确控制注入行为。
- **重构 `PromptComponentManager`**:核心逻辑从简单地拼接字符串 (`execute_components_for`) 重构为按优先级应用注入规则 (`apply_injections`),支持正则表达式匹配和更复杂的注入操作。
- **向后兼容**:`PromptInfo` 中增加了兼容逻辑,能自动将旧的 `injection_point` 定义转换为新的 `injection_rules`,确保现有插件无需立即修改即可正常工作。
- **更新 `BasePrompt`**:废弃了 `injection_point` 属性,并推荐使用新的 `injection_rules` 属性。
- **更新示例插件**:`hello_world_plugin` 已更新,展示了新注入规则的使用方法。

BREAKING CHANGE: `BasePrompt` 中的 `injection_point` 属性已被废弃。虽然目前存在向后兼容逻辑,但未来版本将移除该属性。所有Prompt组件都应迁移至使用 `injection_rules` 以获得更强的控制力和未来的兼容性。
2025-11-19 23:24:45 +08:00
minecraft1024a
f1dfe64f88 chore: 代码格式化与类型注解优化
对项目中的多个文件进行了代码风格调整和类型注解更新。

- 使用 ruff 工具对代码进行自动格式化,主要包括:
    - 统一 import 语句的顺序和风格。
    - 移除未使用的 import。
    - 调整代码间距和空行。
- 将部分 `Optional[str]` 和 `List[T]` 等旧式类型注解更新为现代的 `str | None` 和 `list[T]` 语法。
- 修复了一些小的代码风格问题,例如将 `f'...'` 更改为 `f"..."`。
2025-11-19 23:24:42 +08:00
minecraft1024a
0917318cbd feat(plugin): 引入Prompt组件系统以实现动态Prompt注入
引入了一个新的插件组件类型 `BasePrompt`,允许插件动态地向核心Prompt模板中注入额外的上下文信息。该系统旨在提高Prompt的可扩展性和可定制性,使得开发者可以在不修改核心代码的情况下,通过插件来丰富和调整模型的行为。

主要变更包括:
- **`BasePrompt` 基类**: 定义了Prompt组件的标准接口,包括 `execute` 方法用于生成注入内容,以及 `injection_point` 属性用于指定目标Prompt。
- **`PromptComponentManager`**: 一个新的管理器,负责注册、分类和执行所有 `BasePrompt` 组件。它会在构建核心Prompt时,自动查找并执行相关组件,将其输出拼接到主Prompt内容之前。
- **核心Prompt逻辑更新**: `src.chat.utils.prompt.Prompt` 类现在会调用 `PromptComponentManager` 来获取并注入组件内容。
- **插件系统集成**: `ComponentRegistry` 和 `PluginManager` 已更新,以支持 `BasePrompt` 组件的注册、管理和统计。
- **示例插件更新**: `hello_world_plugin` 中增加了一个 `WeatherPrompt` 示例,演示了如何创建和注册一个新的Prompt组件。
- **代码重构**: 将 `PromptParameters` 类从 `prompt.py` 移动到独立的 `prompt_params.py` 文件中,以改善模块化和解决循环依赖问题。
2025-11-19 23:23:28 +08:00
minecraft1024a
2e1ca1ac78 ruff ci 2025-11-19 23:23:02 +08:00
Windpicker-owo
963bcd19e1 feat(action): 重构 Action 激活机制并添加 go_activate() 方法
引入新的 Action 激活机制,允许通过重写 go_activate() 方法来自定义激活逻辑。提供了三个工具函数:
- _random_activation(): 随机概率激活
- _keyword_match(): 关键词匹配激活
- _llm_judge_activation(): LLM 智能判断激活

主要变更:
- 在 BaseAction 中添加 go_activate() 抽象方法和相关工具函数
- 更新 ActionModifier 使用新的激活判断逻辑
- 在 hello_world_plugin 中添加新的激活方式示例
- 更新文档说明新的激活机制
- 保持向后兼容,旧的激活类型配置仍然可用

BREAKING CHANGE: Action 激活判断现在通过 go_activate() 方法进行,旧的激活类型字段已标记为废弃但仍然兼容
2025-11-19 23:22:46 +08:00
雅诺狐
635a39fa5a refactor: 清理项目结构并修复类型注解问题
修复 SQLAlchemy 模型的类型注解,使用 Mapped 类型避免类型检查器错误
- 修正异步数据库操作中缺少 await 的问题
- 优化反注入统计系统的数值字段处理逻辑
- 添加缺失的导入语句修复模块依赖问题
2025-11-19 23:20:11 +08:00
John Richard
a79253c714 re-style: 格式化代码 2025-11-19 23:13:20 +08:00
Windpicker-owo
fe472dff60 修复代码格式和文件名大小写问题 2025-11-19 22:55:55 +08:00
minecraft1024a
01e06ae95b ruff ci 2025-11-19 22:51:31 +08:00
minecraft1024a
b3206f5e7e feat:重写了hello_world 2025-11-19 22:50:06 +08:00
tt-P607
f989d674bf 小修复,还有就是炸掉hello world! 2025-11-19 22:50:00 +08:00
雅诺狐
bb4592846c Refactor config system to use Pydantic validation
Refactored configuration classes to inherit from a new ValidatedConfigBase using Pydantic for robust validation and error reporting. Updated api_ada_configs.py, config.py, config_base.py, and official_configs.py to replace dataclasses with Pydantic models, add field validation, and improve error messages. This change enhances configuration reliability and developer feedback for misconfigurations. Also includes minor code cleanups and removal of unused variables in other modules.
2025-11-19 22:44:45 +08:00
minecraft1024a
38fed9b4cc 添加聊天类型限制功能,支持根据聊天类型过滤命令和动作,新增私聊和群聊专用命令及动作,优化相关日志记录。 2025-11-19 22:40:01 +08:00
雅诺狐
2e6ae2419b 优化项目结构,格式化代码 2025-11-19 22:35:40 +08:00
雅诺狐
b966a2f09c 小修复 2025-11-19 22:35:34 +08:00
雅诺狐
4a1a1510c5 更新插件示例,及信息类型问题 2025-11-19 22:35:31 +08:00
雅诺狐
23ee3767ef 初始化 2025-11-19 22:34:56 +08:00
UnCLAS-Prommer
44f53213af fix typing 2025-08-03 13:08:28 +08:00
UnCLAS-Prommer
52acfe5958 knowledge系统对应修改 2025-07-31 13:38:56 +08:00
UnCLAS-Prommer
16c644a666 转换原来的tools到新的(虽然没转) 2025-07-29 00:15:29 +08:00
UnCLAS-Prommer
af27d0dbf0 tools整合彻底完成 2025-07-28 23:57:55 +08:00
Windpicker-owo
8aa8f0e6b7 修改了hello_world_plugin 2025-07-26 22:29:44 +08:00
Windpicker-owo
44d86c8847 尝试整合工具和插件系统 2025-07-26 18:37:29 +08:00
UnCLAS-Prommer
229d45083d command简化,修复unregister的bug 2025-07-25 13:39:27 +08:00
UnCLAS-Prommer
bbb112d803 动态控制命令后续处理 2025-07-25 11:01:14 +08:00
UnCLAS-Prommer
e15183a422 管理插件,但是只有一半 2025-07-23 15:53:59 +08:00
UnCLAS-Prommer
484fc20983 typing and plugins 2025-07-21 01:23:23 +08:00
UnCLAS-Prommer
8d20134cbb 合并BaseEventPlugin到BasePlugin,重写了components_registry,修正了统计输出 2025-07-19 19:16:42 +08:00
UnCLAS-Prommer
400ffd0b53 增加样例插件,修复统计数据(部分),修复一个bug 2025-07-19 00:46:04 +08:00
UnCLAS-Prommer
ab61b1bb22 插件系统info修复,见changes.md 2025-07-10 16:46:37 +08:00
UnCLAS-Prommer
8e2b7523e6 修复typing,但是保留疑问 2025-06-23 13:47:11 +08:00
SengokuCola
79bcb5b783 fix:更新插件属性 2025-06-20 00:02:19 +08:00
github-actions[bot]
2bc0451f62 🤖 自动格式化代码 [skip ci] 2025-06-19 15:24:29 +00:00
SengokuCola
d153887b8a Merge branch 'dev' of https://github.com/MaiM-with-u/MaiBot into dev 2025-06-19 23:23:18 +08:00
SengokuCola
43425b3c1f doc:完善doc 2025-06-19 23:21:31 +08:00
github-actions[bot]
264561144d 🤖 自动格式化代码 [skip ci] 2025-06-19 12:23:47 +00:00
SengokuCola
bbf6233744 update:示例插件 2025-06-19 20:23:03 +08:00