[Feature] 插件支持声明依赖其他插件(必须依赖 / 可选依赖)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 18/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- python, yaml
調査の方向性
The request centres on the dependencies block in metadata.yaml, which is the declaration point to read first, along with whatever code parses it and loads plugins. The issue leaves the declaration format open (a plain name list or the repository-style identifier) and asks for several load-time and WebUI behaviours. Settle the format and the required/optional semantics with maintainers before any code, since the done state is not defined yet.
索引モデルが issue の本文から書いたものです。
説明
功能描述
希望插件能在 metadata.yaml 里声明「我依赖哪个插件」,并把依赖分成两档:
- 必须依赖:缺了它这个插件无法工作。缺失时插件不加载,并给出明确原因(缺哪个插件、要求什么版本)。
- 可选依赖:有它则增强功能,没有也能照常运行,只是拿不到增强能力。
然后可以再安装插件的时候弹出二级窗口提示安装依赖,必装的自动安装,可选的给出窗口选择性安装
期望由框架统一处理这几件事:
- 依赖的插件先于依赖方加载;出现循环依赖时报错,而不是卡住。
- 缺必须依赖时,插件进入「加载失败」列表并说明缺什么,而不是抛出一堆异常。
- 被依赖的插件被禁用、卸载或重载时,依赖方有明确行为,不会静默失效。
- WebUI 能显示依赖关系和是否满足;卸载被依赖的插件时给出提示。
声明大致长这样:
dependencies:
required:
- astrbot_plugin_xxx_core
optional:
- astrbot_plugin_yyy
或是采用仓库的格式,避免不同作者制作同名插件
使用场景
- 多个插件共用同一套底层能力:比如渲染图片、发送富文本、存储记忆、管理表情包。把底层抽成一个独立插件,上层只需声明依赖。现在只能每个插件各自复制一份,底层一升级就要改很多个仓库。
- 可选增强:某插件装了「通用生图」就走高质量生图,没装就回退到内置实现。
- 分层插件:中台类、适配类插件天然会被别的插件依赖,现在只能靠在 README 里写「请先安装我,再用某种方式对接服务」。
- 避免半坏状态:用户禁用或卸载了某个底层插件之后,上层插件仍在降级状态下运行,却没有任何提示,问题只能靠翻日志发现。
检查清单
- 主要言語
- Python
- スター
- 46.4k
- フォーク
- 3.4k
- 平均マージ
- 1日 11時間
- マージ済み PR(30日)
- 120
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
AstrBotDevs/AstrBot のほかの issue
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
AstrBotDevs/AstrBot#11038 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
AstrBotDevs/AstrBot#11034 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
AstrBotDevs/AstrBot#10999 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] OpenAI-compatible Gemini 工具 schema const 导致 400対応中かも @arccat-114 が 17 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
AstrBotDevs/AstrBot#10720 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] Discord slash command sync aborts with KeyError when a plugin handler is defined in a submodule対応中かも @yuexia5 が 22 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
AstrBotDevs/AstrBot#10626 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
AstrBotDevs/AstrBot の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
navikt/tiltakspenger#129 ·
-
難易度 1/5 1〜3時間 初心者へのやさしさ 83/100
FinanceFlash/unvibecode#652 ·
メンテナーはふだん 1 日以内に返信
-
netbox status: needs triage type: documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
netbox-community/netbox#23655 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
MCDReforged/MCDReforged#442 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
bytedance/agentkit-samples#277 ·