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
|
af59966d8b
|
feat(plugin): 防止禁用最后一个启用的 Chatter 组件
为了确保系统的核心对话功能始终可用,在禁用插件时增加了保护机制。
该机制会检查目标插件是否包含 Chatter 组件。如果是,它会进一步判断禁用该插件是否会导致系统中没有任何已启用的 Chatter 组件。如果出现这种情况,禁用操作将被阻止并返回失败,从而避免因误操作导致系统核心功能失效。
|
2025-12-06 18:40:02 +08:00 |
|
minecraft1024a
|
b1e7b6972d
|
feat(plugin): 添加动态加载插件的 API
新增 `load_plugin` 函数,允许在运行时加载一个已注册但未加载的插件。
这为更灵活的插件管理(例如热加载)提供了基础支持。
|
2025-12-06 18:32:15 +08:00 |
|
minecraft1024a
|
ad0f495911
|
feat(permission_api): 增强权限API文档,添加详细注释和示例
fix(system_management): 修复系统命令执行时缺失用户信息的错误处理
|
2025-11-29 20:20:59 +08:00 |
|
minecraft1024a
|
02ffef92cc
|
refactor(plugin_system): 将插件管理API拆分为更专注的模块
`plugin_manage_api` 模块的职责过于宽泛,混合了插件生命周期、组件状态管理和信息查询等多种功能。为了提高代码的可维护性和清晰度,遵循单一职责原则,现将其进行拆分。
- 新增 `component_state_api.py` 模块,专门负责处理组件的启用/禁用状态管理,包括全局和局部作用域。
- 新增 `plugin_info_api.py` 模块,用于提供插件和组件的信息查询、报告生成和状态统计功能。
- `plugin_manage_api.py` 现在专注于插件的生命周期管理,如加载、重载、启用/禁用和卸载。
- 更新了内部调用方(例如 system_management 插件)以使用新的、职责更明确的API。
BREAKING CHANGE: 原 `plugin_manage_api` 中的大量函数已被移动。组件状态管理相关函数移至 `component_state_api`,信息查询和报告相关函数移至 `plugin_info_api`。
|
2025-11-29 19:45:00 +08:00 |
|
minecraft1024a
|
7638dde6f3
|
refactor(plugin_system): 整合插件状态管理至主管理API
将 `plugin_state_api.py` 模块的功能完全合并到 `plugin_manage_api.py` 中,并删除了前者。
此更改旨在简化插件系统的API结构,减少不必要的模块拆分。通过将所有插件生命周期、状态管理和信息查询的逻辑集中在单一的 `plugin_manage_api.py` 模块中,提高了代码的内聚性和可维护性。
主要变更:
- 删除了 `src/plugin_system/apis/plugin_state_api.py` 文件。
- 将其所有功能(如插件和组件的启用/禁用、状态查询等)直接实现在 `plugin_manage_api.py` 中,移除了原有的包装层。
- 对 `plugin_manage_api.py` 的内部结构进行了重新组织,按功能划分为更清晰的区域。
|
2025-11-29 19:09:36 +08:00 |
|
minecraft1024a
|
d4d6922a4c
|
refactor(plugin_system): 重构插件API,分离状态管理逻辑
将插件和组件的状态管理逻辑从 `plugin_manage_api.py` 迁移至一个新的专用模块 `plugin_state_api.py`。
`plugin_manage_api.py` 现在作为面向下层开发者的主要API入口,其实现转为对 `plugin_state_api` 的包装调用。
此次重构旨在实现关注点分离,使API层与核心状态管理逻辑解耦,提高了代码的可维护性,并为未来在API层添加权限检查等功能提供了便利。
|
2025-11-29 09:16:28 +08:00 |
|
minecraft1024a
|
722c8bc5a9
|
feat(context): 新增面向单一用户的跨上下文构建API
新增 `build_cross_context_for_user` 函数,提供一个简化的接口来构建指定用户的跨聊天上下文。
该函数会优先获取用户与机器人的私聊记录,然后聚合用户在其他群聊中的近期发言。通过整合这些信息,可以为需要了解用户近期跨聊天活动的插件提供一个便捷的数据来源。
|
2025-11-28 21:15:28 +08:00 |
|
minecraft1024a
|
a8f899a22f
|
refactor(context): 简化跨上下文功能,移除通用共享组模式
移除了基于白名单/黑名单的通用上下文共享组(ContextGroup)功能。此模式实现复杂且与S4U模式功能重叠,移除后可大幅简化配置项和内部逻辑。
主要变更:
- 从配置中删除了 `ContextGroup` 模型和 `cross_context.groups` 列表。
- 删除了 `build_cross_context_normal` 和 `get_context_group` 函数。
- 保留并增强了S4U(Search for User)模式,为其增加了更详细的日志和健壮性检查。
- `get_intercom_group_context` 函数被调整为专门服务于 `maizone_context_group`。
BREAKING CHANGE: 移除了 `cross_context.groups` 配置项及相关的通用上下文共享组功能。请迁移至S4U模式以实现跨上下文需求。
|
2025-11-28 20:39:16 +08:00 |
|
tt-P607
|
103a6edaf3
|
feat(emoji): 增强消息上下文下的表情选择并修复存储用户信息的问题
该提交对表情操作及相关消息发送 API 进行了重大改进。
现在,表情选择逻辑更加具备上下文感知能力。LLM 提示现在包括机器人的待发送回复内容,使其能够根据对话历史和自身回复选择更合适的表情。用于上下文的近期聊天记录也有所增加。
此外,修复了插件发送 API (`send_api`) 中的一个错误。之前,当机器人发送消息时,消息在数据库中存储的是接收者的用户信息,而非机器人的信息。本次提交通过显式传递并使用机器人的用户信息进行存储,确保消息历史准确反映发送者。
其他更改包括:
- 重构表情操作的激活逻辑以提高清晰度。
- 改进 LLM 选择的表情描述匹配算法。- 为配置访问添加必要的类型安全检查。
|
2025-11-28 15:24:08 +08:00 |
|
tt-P607
|
655e535d96
|
Revert "feat(chat): 通过动作参数实现专用的 @用户 功能"
This reverts commit e5117720c6.
|
2025-11-28 08:21:06 +08:00 |
|
tt-P607
|
e5117720c6
|
feat(chat): 通过动作参数实现专用的 @用户 功能
此提交引入了一种在回复中提及(@)用户的稳健机制。此功能不再由 LLM 直接生成“@”文本,而是通过 `reply` 和 `respond` 动作中新增加的 `at_user_id` 参数来处理。
主要变化包括:
- **核心动作:** 在 `ReplyAction` 和 `RespondAction` 中添加可选的 `at_user_id` 参数,用于指定要提及的用户。
- **提示工程:** 更新了 `default_generator` 提示,以指导 LLM 如何使用新的 `at_user_id` 参数,而不是生成“@”文本。
- **动作管理器:** `ChatterActionManager` 现在会检查动作数据中的 `at_user_id`。如果存在,它会使用新的 `SEND_AT_MESSAGE` 命令,确保提及格式正确并发送。
- **发送 API:** 在 `send_api` 中引入新的 `at_user_to_stream` 函数,用于处理发送独立的 `@` 段落。
- **类型安全与重构:** 改进了类型提示跨多个文件(`mofox_wire` 类型、`cast` 等)进行了修改,并增加了对 `global_config` 是否存在的检查,以防止运行时可能出现的 `NoneType` 错误,从而提高了整体代码的稳定性。
|
2025-11-28 02:54:47 +08:00 |
|
Windpicker-owo
|
369639a8f1
|
feat: 添加守护线程版本的队列监听器以避免阻塞退出,优化配置初始化逻辑,改进消息构建中的用户信息处理
|
2025-11-27 14:06:17 +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
|
d28ba27f26
|
重构:统一平台字段命名,更新相关数据模型和消息处理逻辑
|
2025-11-26 17:34:25 +08:00 |
|
Windpicker-owo
|
8a6b141017
|
重构代码以使用 mofox_wire 替代 mofox_bus,更新相关文档和示例
|
2025-11-25 22:45:57 +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 |
|
minecraft1024a
|
9f342bd5b2
|
refactor(individuality): 移除废弃的场景式人格生成模块
删除位于 `src/individuality/not_using/` 目录下的整套人格生成系统。
该系统是早期用于通过预设场景问答和 LLM 评分来构建 Bot 人格的一种尝试。由于此方法已被弃用且不再集成于当前工作流中,为保持代码库的简洁性和可维护性,决定将其完全移除。
|
2025-11-22 21:47:01 +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
|
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 |
|
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
|
695a6b7319
|
feat(plugin_system): 增加对最后一个启用 Chatter 的禁用保护
为了确保每个 stream 至少有一个可用的 Chatter 组件,此更改引入了一项保护机制。
在尝试禁用一个 Chatter 组件时,系统现在会检查它是否是当前 stream 中唯一启用的 Chatter。如果是,则禁用操作将被阻止,以避免导致该 stream 无法响应。
|
2025-11-21 21:21:21 +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
|
fee7611e99
|
feat: 实现消息编解码器和消息处理模型
- 添加编解码器,用于序列化和反序列化MessageEnvelope对象。
- 创建消息模型,包括分段(Seg)、群组信息(GroupInfo)、用户信息(UserInfo)、格式信息(FormatInfo)、模板信息(TemplateInfo)、基础消息信息(BaseMessageInfo)和消息基础(MessageBase)。
引入路由器以管理消息路由和连接。
- 实现运行时机制,通过钩子和路由来处理消息处理。
- 使用HTTP和WebSocket客户端和服务器开发传输层,以进行消息传输。
- 为消息内容和信封定义类型,以标准化消息结构。
|
2025-11-21 18:40:51 +08:00 |
|
Windpicker-owo
|
14133410e6
|
feat: 批量生成文本embedding,优化兴趣匹配计算逻辑,支持消息兴趣值的批量更新
|
2025-11-19 16:30:44 +08:00 |
|
minecraft1024a
|
fe65ba6df6
|
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-13 16:01:40 +08:00 |
|
minecraft1024a
|
271b4a5285
|
feat(plugin_system): 新增 mood_api 插件接口
|
2025-11-13 15:12:01 +08:00 |
|
Windpicker-owo
|
80736a0deb
|
refactor(distribution_manager): 优化流循环管理逻辑,减少重复代码并改进异常处理
refactor(action_manager): 将异步存储操作改为非阻塞任务,提升性能
refactor(default_generator): 简化回复生成器中的消息处理逻辑
refactor(generator_api): 更新类型提示,增强代码可读性
refactor(affinity_chatter): 清理异常处理中的冗余代码,确保处理标记的正确清理
refactor(affinity_interest_calculator): 重命名阈值调整方法,提升代码一致性
refactor(plan_executor): 移除冗余的已读消息处理逻辑
refactor(planner): 优化规划器中的异常处理,确保正常模式的退出检查
|
2025-11-12 16:08:52 +08:00 |
|
minecraft1024a
|
ac4c592590
|
refactor(scheduler): 将统一调度器移动至插件系统API
将统一调度器模块从 `src/schedule/` 目录重构至 `src/plugin_system/apis/` 目录下。
这次调整旨在将调度器明确地定位为插件系统的核心API之一,从而改善代码的组织结构和架构清晰度。所有引用该模块的内部导入路径均已同步更新。
|
2025-11-12 13:47:00 +08:00 |
|
minecraft1024a
|
0e1e9935b2
|
style: 统一代码风格并采用现代化类型注解
对整个代码库进行了一次全面的代码风格清理和现代化改造,主要包括:
- 移除了所有文件中多余的行尾空格。
- 将类型提示更新为 PEP 585 和 PEP 604 引入的现代语法(例如,使用 `list` 代替 `List`,使用 `|` 代替 `Optional`)。
- 清理了多个模块中未被使用的导入语句。
- 移除了不含插值变量的冗余 f-string。
- 调整了部分 `__init__.py` 文件中的 `__all__` 导出顺序,以保持一致性。
这些改动旨在提升代码的可读性和可维护性,使其与现代 Python 最佳实践保持一致,但未修改任何核心逻辑。
|
2025-11-12 12:49:40 +08:00 |
|
Windpicker-owo
|
8c4a54c75d
|
feat(reply): 引入 reply 和 respond 动作,优化消息回复机制
- 增加 reply 动作,针对单条消息进行深度回复,使用 s4u 模板。
- 增加 respond 动作,统一回应未读消息,使用 normal 模板。
- 更新核心动作插件以支持新动作,确保配置选项可用。
- 优化动作执行逻辑,提升对话流畅性和响应准确性。
|
2025-11-10 13:24:45 +08:00 |
|
明天好像没什么
|
626dbfe998
|
权限已修复
|
2025-11-09 11:10:08 +08:00 |
|
明天好像没什么
|
6c00e41ef7
|
权限
|
2025-11-09 09:13:09 +08:00 |
|
tt-P607
|
130a0fdb31
|
refactor(core): 简化回复清理并加强 API 调用此次提交彻底重构了回复清理逻辑,以提升可维护性,并在发送 API 中引入了多项防御性检查,以防止常见的运行时错误。通过将复杂的迭代清理算法替换为单一且更高效的正则表达式,回复生成过程得到了简化。这不仅提高了去除模型生成的头信息的可靠性,还显著降低了代码复杂性。在发送 API 中,实现了多个安全措施:- 修正了异步处理错误,通过移除同步字典操作上无效的 await,防止出现 TypeError。- 添加了预检验证,以确保文件上传有定义的目标,并且临时流指定了平台。- 现在一致将机器人用户 ID 转换为字符串,以消除潜在的类型相关不一致。最后,为了清晰起见,机器人的行为原则术语也进行了调整。
|
2025-11-09 00:50:23 +08:00 |
|
明天好像没什么
|
c8d7c09625
|
ruff
|
2025-11-07 21:01:45 +08:00 |
|
Windpicker-owo
|
17c1d4b4f9
|
feat: 将 JSON 处理库从 json 更改为 orjson,以提高性能和兼容性
|
2025-11-06 12:47:56 +08:00 |
|
明天好像没什么
|
cb97b2d8d3
|
rufffffff
|
2025-11-01 21:10:01 +08:00 |
|
拾风
|
c358386a53
|
Merge pull request #56 from MoFox-Studio/feature/database-refactoring
重构数据库系统,优化数据库性能
|
2025-11-01 17:38:18 +08:00 |
|
minecraft1024a
|
af5d75b463
|
回复器你不许传dict
|
2025-11-01 16:56:44 +08:00 |
|
minecraft1024a
|
444c458986
|
refactor(core): 统一消息对象类型并增强代码健壮性
本次提交对多个核心模块进行了重构和修复,主要目标是统一内部消息对象的类型为 `DatabaseMessages`,并增加多处空值检查和类型注解,以提升代码的健壮性和可维护性。
- **统一消息类型**: 在 `action_manager` 中,将 `action_message` 和 `target_message` 的类型注解和处理逻辑统一为 `DatabaseMessages`,消除了对 `dict` 类型的兼容代码,使逻辑更清晰。
- **增强健壮性**:
- 在 `permission_api` 中,为所有对外方法增加了对 `_permission_manager` 未初始化时的空值检查,防止在管理器未就绪时调用引发异常。
- 在 `chat_api` 和 `cross_context_api` 中,增加了对 `stream.user_info` 的存在性检查,避免在私聊场景下 `user_info` 为空时导致 `AttributeError`。
- **类型修复**: 修正了 `action_modifier` 和 `plugin_base` 中的类型注解错误,并解决了 `action_modifier` 中因 `chat_stream` 未初始化可能导致的潜在问题。
- **代码简化**: 移除了 `action_manager` 中因兼容 `dict` 类型而产生的冗余代码分支,使逻辑更直接。
|
2025-11-01 16:51:04 +08:00 |
|
minecraft1024a
|
01ab7ff151
|
perf(storage): 降低插件存储的延迟写入时间
将插件存储的 `save_delay` 从 5 秒调整为 2 秒,以更快地将数据持久化到磁盘,减少因意外关闭导致数据丢失的风险,同时在可接受的范围内平衡了性能开销。
|
2025-11-01 16:44:49 +08:00 |
|
minecraft1024a
|
14f6a31810
|
feat(storage): 引入插件存储延迟写入与退出时强制保存机制
对插件本地存储API进行了重要优化,引入了延迟写入(de-bouncing)机制,以减少频繁的磁盘I/O操作,提升性能。现在,对存储的修改会在一个短暂的延迟后批量写入,而不是每次操作都立即写入。
此外,增加了程序退出时的钩子(atexit hook),确保在主程序关闭前,所有插件缓存中未保存的数据都会被强制写入磁盘,防止数据丢失。
同时,此提交包含了一些小的修复:
- 修复了 `cross_context_api` 在私聊场景下 `user_info` 为空时可能出现的逻辑问题。
- 清理了 `plugin_base` 中不必要的 `ClassVar` 类型提示。
|
2025-11-01 16:41:37 +08:00 |
|
Windpicker-owo
|
ce1c3288fd
|
fix: 修复数据库导入错误
- 修复12处从错误位置导入get_db_session/get_engine的问题
- 函数应从core导入,模型应从core.models导入
- 修复bot.py使用check_and_migrate_database代替不存在的initialize_database
影响文件:
- bot.py: 使用正确的初始化函数
- schedule_manager.py: 修复get_db_session导入
- relationship_service.py: 修复get_db_session导入
- schedule_api.py: 修复get_db_session导入
- utils.py (llm_models): 修复get_db_session导入
- utils_image.py: 修复get_db_session导入
- utils_video.py: 修复get_db_session导入
- user_ban.py: 修复get_db_session导入
- statistics.py: 修复get_db_session导入
- storage.py: 修复get_db_session导入
- anti_injector.py: 修复2处get_db_session导入
- permission_manager.py: 修复get_engine导入
|
2025-11-01 14:44:13 +08:00 |
|
Windpicker-owo
|
a1dc03cacc
|
refactor: 完成数据库重构 - 批量更新导入路径
- 更新35个文件的导入路径 (共65处修改)
- sqlalchemy_models core.models (模型类)
- sqlalchemy_database_api compatibility (兼容函数)
- database.database core (初始化/关闭函数)
- 添加自动化导入更新工具 (scripts/update_database_imports.py)
- 所有兼容性层测试通过 (26/26)
- 数据库核心功能测试通过 (18/21)
|
2025-11-01 14:22:54 +08:00 |
|
minecraft1024a
|
5e7f17ebf9
|
refactor(api): 合并兴趣度API和关系API,以及扩展关系API
|
2025-11-01 11:38:12 +08:00 |
|
明天好像没什么
|
0e129d385e
|
refactor: 统一类型注解风格并优化代码结构
- 将裸 except 改为显式 Exception 捕获
- 用列表推导式替换冗余 for 循环
- 为类属性添加 ClassVar 注解
- 统一 Union/Optional 写法为 |
- 移除未使用的导入
- 修复 SQLAlchemy 空值比较语法
- 优化字符串拼接与字典更新逻辑
- 补充缺失的 noqa 注释与异常链
BREAKING CHANGE: 所有插件基类的类级字段现要求显式 ClassVar 注解,自定义插件需同步更新
|
2025-10-31 22:42:39 +08:00 |
|