dsh-plugin
DayuanJiang/next-ai-draw-iodsh 的 draw.io 绘图插件:通过 next-ai-drawio MCP 服务器作图,点回复里的链接在右侧栏打开实时预览,可以手动修改图,AI 的每次修改都是可以恢复的版本。需 Node.js 18+,首次使用由 npx 下载 MCP 服务器。
DSH 追番订阅管理器:Bangumi 查番、nyaa/dmhy 搜种、qBittorrent 自动下载(RSS 判新轮询)、本地媒体库查重,附日历/进度侧边栏 GUI 与 11 个 LLM 工具(bangumi_lookup / bangumi_search / bangumi_subscribe / bangumi_unsubscribe / bangumi_list / bangumi_progress / bangumi_calendar / qb_status / qb_configure / qb_add_torrent / library_scan)。
追番订阅插件(DSH hybrid:host + client):Bangumi 元数据、nyaa/dmhy 搜种、qBittorrent RSS 判新下载、本地媒体库查重、日历与进度 GUI。侧边栏「追番」独立页入口,点击进入全功能面板。
启动 DSH Web 后,左侧边栏顶部(新会话/记忆系统入口附近)点击「追番」图标进入独立页。面板含四个标签页:
有具体磁链或想指定资源时:搜索页找到条目后展开种子列表,选匹配的磁链下载(自动套用番剧分类目录)。
在 DSH 对话里可直接调用内置工具,例如:
bangumi_lookup 某番名:返回该番完整资料卡(封面/简介/已放送/本地下载进度/缺集)bangumi_subscribebangumi_progress / bangumi_listbangumi_calendarqb_status / qb_configure / qb_add_torrentbangumi)/标签/保存目录,番剧按「分类根/作品[/第N季]」分层归类;分类名自动取简短核心名(剥英文副标,如 攻壳机动队 THE GHOST IN THE SHELL → 攻壳机动队),启动巡检保证同剧各入口(订阅/手动下载/工具)归类一致并迁移旧长名任务;整包下载后自动停止订阅跟踪bangumi_lookup(唯一 HTML 资料卡)/ bangumi_search / bangumi_subscribe / bangumi_unsubscribe / bangumi_list / bangumi_progress / bangumi_calendar / qb_status / qb_configure / qb_add_torrent / library_scandata-dsh-bangumi-entry),与 taskboard/ssh/mnemon 互斥激活src/
├── index.ts host 入口:配置/运行时、REST /api/bangumi/*、定时轮询、LLM 工具
├── host/
│ ├── bangumi.ts bgm.tv API(7 天主体 / 6h 剧集缓存)
│ ├── rss.ts RSS 解析(手写正则)、magnet 合成、nyaa/dmhy 搜索
│ ├── parse.ts 标题归一 / 集号解析 / 整包识别(multiSeason/seasonFull/rangeRaw)
│ ├── match.ts 种子打分排序(别名/集号/分辨率/组/seeders/整包)
│ ├── decision.ts 下载决策纯函数(finished→全集优先,airing→只补缺集)
│ ├── net.ts 可配置代理网络层(http/https/socks5,纯 Node 原生,零依赖)
│ ├── ai-review.ts AI 审核层(llm.stream 流式裁决,失败回退原逻辑)
│ ├── qb.ts qBittorrent 客户端(401 重登 cookie、RSS 规则、分类)
│ ├── library.ts 媒体库扫描 + byTitle/byDir 索引
│ ├── store.ts 内存镜像 state(含 data_version 侦测)
│ ├── db.ts SQLite WAL(订阅/下载/媒体库/封面缓存 schema)
│ └── card.ts HTML 资料卡统一模板
├── client/
│ ├── index.ts 侧栏入口 + 独立页(React,无 JSX 手写 h())
│ └── diag.ts 浏览器端诊断探针(开发用)
└── test/ 决策矩阵真实样本测试
优先级:环境变量 DSH_BANGUMI_* → ~/.dsh/dsh-bangumi.json → 默认值。设置页写入后 reloadRuntime 立即生效,无需重启。
| 键 | 默认 | 说明 |
|---|---|---|
| qbUrl | http://127.0.0.1:8080 | qBittorrent WebUI |
| qbCategory / qbTags | bangumi | 下载分类 / 标签 |
| qbCategoryRoot | 番 | 番剧分类根(按需改成自己的分类体系) |
| qbBaseDir | 源码默认路径 | 番剧保存根目录(作品目录建在其下) |
| pollIntervalMinutes | 30 | 判新轮询间隔 |
| minMatchScore | 60 | 种子最低匹配分 |
| rssIgnoreDays | 3 | 判新回看窗(天),0=不限(慎用) |
DSH_CHECKOUT=<checkout> bash scripts/build.sh # host:tsc 编译 src → lib
npm run build:client # client:tsdown 打包 lib/client.js
# 注入器环境内:
dev_inject_plugin <本目录> # 运行时注入(host+UI 同通道)
dev_reload_package dsh-bangumi # 热重载(确认输出「清缓存 N 模块 重建 1 fiber」才真正换新)
状态持久化:~/.dsh/dsh-bangumi/state.json(旧版)+ ~/.dsh/dsh-bangumi/bangumi.db(SQLite,启动自动迁移)。配置文件:~/.dsh/dsh-bangumi.json。
hybrid 面板注意:client 为纯 DOM 面板形态(无
slots.register),依赖注入器looksPanelForm豁免放行;卸载需同时dev_uninject_plugin。