Files
Auto_Bangumi/docs/ja/dev/plugins/cli.md
Estrella Pan 3258fcca4b docs(4.0-P7): 插件开发文档拆分为总览加每个扩展点一页,补齐中英日三语
- docs/dev/plugins.md 改为总览与导航,旧内容拆入 docs/dev/plugins/
- 新增核心概念、配置表单、事件、前端挂载点、命令行、签名与分发、内置插件、示例页
- 每个扩展点一页,侧边栏由页面表生成
- 改正旧文档中下载器配置、hardlink path_map 与补链按钮的过时描述
2026-10-08 14:51:00 +02:00

3.7 KiB
Raw Blame History

コマンド ab-plugin

ab-plugin は autobangumi-sdk の wheel と一緒にインストールされます。依存は ab_sdk だけで、AutoBangumi 本体のインストールは不要です。

uv tool install ./autobangumi_sdk-0.5.0-py3-none-any.whl
# プロジェクト内の場合:uv add ./autobangumi_sdk-0.5.0-py3-none-any.whl

wheel は 4.0 beta / 正式版の GitHub Release の添付ファイルです。PyPI には公開しません。コントラクトテストには pytest が必要です:uv add --dev pytest(または autobangumi-sdk[test] をインストール)。

new

ab-plugin new <id> [--kind rename|notifier|search] [--dir .]

<id>/ ディレクトリを作成します。

<id>/
├── plugin.toml
├── <id のアンダースコア形>/__init__.py   # プラグインのコード
├── tests/test_contract.py                # ab_sdk.testing のスイートを継承
├── pyproject.toml                        # 開発専用。パッケージには含まれません
└── README.md

id に使えるのは小文字、数字、ハイフンだけです。ディレクトリが既にあると実行を拒否します。ダウンローダーのひな形はありません。ダウンローダーには実際のバックエンドが必要で、そのままコントラクトを通るひな形には意味がないためです。

validate

ab-plugin validate [path]

マニフェストのフィールド、sdk の範囲に現在の SDK が含まれるか、エントリモジュールの有無、フロントエンドのエントリファイルの有無を検証します。ネイティブ拡張(.so / .pyd / .dylib / .dll)を含むディレクトリは拒否します。問題があると終了コードは 1 です。

pack

ab-plugin pack [path] [-o dist]

検証してから dist/<id>-<バージョン>.zip を作成します。内容は zip のルートに置かれ、署名付きカタログのパッケージと同じ構成です。tests/、pyproject.toml、uv.lock、キャッシュ、dist/ は除外されます。ファイルの順序とタイムスタンプは固定なので、同じ内容からは同じ sha256 が得られます。

dev

ab-plugin dev [path] [--config-dir config]
  • プラグインディレクトリを <config-dir>/plugins/local/<id> にシンボリックリンクします。
  • ホストの設定ファイル(config_dev.json、なければ config.json)に plugins.dev_mode、plugins.allow_unsigned、plugins.enabled.<id> を書き込みます。
  • 設定ファイルがないと実行を拒否します。先に AutoBangumi を一度起動してください。
  • 動作中の AB は設定ファイルを再読み込みしません。一度再起動してください。以後、dev_mode が 1 秒ごとにローカルプラグインのディレクトリを確認し、ファイルが変わるとそのプラグインをリロードします。読み込みに失敗したプラグインも監視されるので、ソースを直すと自動で復旧します。
  • dev_mode が監視するのはローカルディレクトリだけです。pip パッケージは監視しません。新しく現れたプラグインディレクトリは、次の設定変更か再起動まで検出されません。

開発ループ

ab-plugin new my-notify --kind notifier
cd my-notify
uv run pytest            # コントラクトテスト
ab-plugin dev .          # リンクしてホットリロードを有効化。AB を一度再起動
# コードを変更 → AB が自動でリロード → WebUI で確認
ab-plugin pack .