Files
AstrBot/refactor.md
whatevertogo a3c4c6b096 Refactor legacy API and LLM compatibility logic
- 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.
2026-03-13 19:31:14 +08:00

2.1 KiB
Raw Blame History

AstrBot SDK v4 重构设计(历史说明)

本文档保留最初的 v4 重构意图与设计取舍,不再作为当前实现文档
当前代码、兼容面、能力集合、目录结构与版本语义,请以 ARCHITECTURE.md 为准。

1. 这份文档现在的用途

  • 记录最初为什么要做 v4 分层与协议化重构
  • 保留当时的重要设计原则,供后续判断“方向有没有跑偏”
  • 帮助阅读历史提交和旧讨论

不再负责描述当前仓库现状。

2. 仍然有效的核心原则

以下原则仍然是当前实现的主线:

  • 协议优先:插件与宿主通过显式协议消息交互
  • 统一 id:所有请求/响应使用单一关联字段
  • handler.invokehandler 回调不引入额外消息类型
  • 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/astrbot facade

4. 当前维护约定

如果你要修改实现,请按下面的顺序看文档:

  1. 先看 ARCHITECTURE.md
  2. 再看相关代码和 tests_v4
  3. 最后把本文档当作历史背景材料

如果 ARCHITECTURE.md 与本文档冲突:

  • ARCHITECTURE.md 为准
  • 若仍有歧义,以代码和测试为准

5. 对后续重构的约束

后续清理实现时,应继续坚持:

  • 不破坏旧插件现有兼容面
  • 不把 legacy 逻辑重新扩散进 runtime 主干
  • 不把 src-new/astrbot 扩张成旧应用整棵树
  • 不让文档再次脱离代码与测试