Files
Auto_Bangumi/docs/dev/plugins.md
Estrella Pan ca7fcdf058 chore(deps): httpx 全面迁移到 httpx2,SOCKS5 改用原生代理,升级 LLM SDK 大版本
- 依赖 httpx[socks] 换为 httpx2[socks]>=2.15,移除 httpx-socks / python-socks 及其 mypy 覆盖
- backend/src、ab_sdk、e2e 与单元测试统一使用 httpx2(异常类与 httpx 不通用)
- request_url 与 LLM 客户端工厂合并为 proxy_url(),SOCKS5 走 httpx2 原生代理(主机名由代理解析)
- 保留 #1104 过期连接池替换:httpcore2 2.15.1 的 start_tls 失败路径仍会泄漏隧道
- 日志同时压低 httpx2 与 httpx(google-genai、mcp 仍依赖旧 httpx)
- openai 3.35.1 / anthropic 1.15.0 / google-genai 2.31.0;结构化解析改用 chat.completions.parse
- ab_sdk 升到 0.6.0,客户端类型改为 httpx2.AsyncClient,同步插件文档
2026-10-20 10:56:32 +02:00

4.5 KiB
Raw Permalink Blame History

插件开发

::: warning 预览版 SDK 插件 SDK ab_sdk 在 4.0 期间为 0.x 版本,接口可能有不兼容调整;4.1 起冻结 1.0,之后遵守语义化版本。清单里的 sdk 字段声明你依赖的版本范围,AB 会拒绝加载不兼容的插件。 :::

插件是一个 Python 包(可带前端组件),在 AutoBangumi 进程内运行。插件可以增加下载器、通知渠道、搜索站点、重命名方式,也可以在流水线上挂钩子、订阅事件、提供 REST 路由、MCP 工具和设置页界面。

五分钟上手

  1. 安装 SDK 与命令行。轮子随每个 4.0 beta / 正式版发布在 GitHub Releases 的附件中(文件名 autobangumi_sdk-<SDK 版本>-py3-none-any.whl),不发布到 PyPI。详见 获取 SDK。

    uv tool install ./autobangumi_sdk-0.6.0-py3-none-any.whl
    
  2. 生成骨架并测试。骨架的 pyproject.toml 依赖 autobangumi-sdk,而 PyPI 上没有这个包,所以先用 uv add 让它指向下载的轮子:

    ab-plugin new my-rename --kind rename   # 也可选 notifier、search
    cd my-rename
    uv add ../autobangumi_sdk-0.6.0-py3-none-any.whl   # 换成轮子的实际路径
    uv run pytest                                      # 骨架自带契约测试
    
  3. 链接到本机的 AutoBangumi 并热重载。先启动过一次 AB,使它的配置目录下有配置文件;--config-dir 指向这个目录(源码运行时为 backend/src/config):

    ab-plugin dev . --config-dir /path/to/autobangumi/config
    

    重启 AB 一次后,修改插件目录里的文件会自动重载。

  4. 打包:ab-plugin pack . 生成 dist/my-rename-0.1.0.zip。

文档导航

基础

扩展点

扩展点 类型 用途
下载器 downloader Provider 新的下载器后端
通知渠道 notifier Provider 新的通知渠道
LLM 提供商 llm_provider Provider 新的 LLM 解析提供商
搜索站点 search_site Provider 搜索框的站点
定时任务 scheduled_task Provider 周期执行的任务
元数据源 metadata_provider Provider RSS 订阅的「解析器」
重命名方式 rename_strategy Provider 文件名的生成规则
文件分类 media_files Provider 种子内文件分为正片、字幕、忽略
版本冲突策略 conflict_policy Provider 新版本种子与旧种子争用文件名
REST 路由 api_router Provider 插件自己的 HTTP 接口
MCP 工具与资源 mcp_tool mcp_resource Provider 暴露给 MCP 客户端
种子过滤 torrent.filter filter 钩子 决定种子是否下载
修正解析结果 title.parsed transform 钩子 修正标题解析
修改添加请求 torrent.adding transform 钩子 改保存路径、分类、标签
请求头 http.request transform 钩子 给 AB 的 GET 请求加 Cookie 等
通知文案模板 message_template transform 钩子 改写推送文案

此外,插件可以订阅事件(@subscribe),并使用私有的键值存储和数据目录。