mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-16 01:40:15 +08:00
- Moved legacy LLM and tool compatibility logic from `_legacy_api.py` to a new module `_legacy_llm.py` for better organization and separation of concerns. - Updated `_legacy_api.py` to import necessary components from `_legacy_llm.py`, removing redundant code. - Enhanced database client functionality by adding support for batch read/write operations and change event subscriptions. - Improved documentation in the database client and capability router to reflect new features. - Refined environment management process in the loader to better handle plugin grouping and virtual environment management.
2.1 KiB
2.1 KiB
AstrBot SDK v4 重构设计(历史说明)
本文档保留最初的 v4 重构意图与设计取舍,不再作为当前实现文档。
当前代码、兼容面、能力集合、目录结构与版本语义,请以 ARCHITECTURE.md 为准。
1. 这份文档现在的用途
- 记录最初为什么要做 v4 分层与协议化重构
- 保留当时的重要设计原则,供后续判断“方向有没有跑偏”
- 帮助阅读历史提交和旧讨论
它不再负责描述当前仓库现状。
2. 仍然有效的核心原则
以下原则仍然是当前实现的主线:
- 协议优先:插件与宿主通过显式协议消息交互
- 统一
id:所有请求/响应使用单一关联字段 handler.invoke:handler 回调不引入额外消息类型event只服务于stream=true- runtime 根导出保持窄接口
- legacy 适配与原生 v4 协议模型分开管理
3. 已经演化的地方
最初方案中的下列假设,当前已经不再成立或只部分成立:
compat.py不是当前 compat 的全部实现,compat 已演化为长期维护子系统- runtime 不能完全“感知不到 compat”,但 compat 执行细节应继续收口到
_legacy_runtime.py - 环境管理不再只是“每插件一个独立 venv”,现在有
runtime.environment_groups做共享环境规划 - capability 集合已经扩展,当前不止早期文档中的那一组
- 旧包名兼容不再只有
astrbot_sdk.api.*,还包括受控的src-new/astrbotfacade
4. 当前维护约定
如果你要修改实现,请按下面的顺序看文档:
- 先看
ARCHITECTURE.md - 再看相关代码和
tests_v4 - 最后把本文档当作历史背景材料
如果 ARCHITECTURE.md 与本文档冲突:
- 以
ARCHITECTURE.md为准 - 若仍有歧义,以代码和测试为准
5. 对后续重构的约束
后续清理实现时,应继续坚持:
- 不破坏旧插件现有兼容面
- 不把 legacy 逻辑重新扩散进 runtime 主干
- 不把
src-new/astrbot扩张成旧应用整棵树 - 不让文档再次脱离代码与测试