dsh-qbittorrent
English | 中文
A DeepSeek Harness (DSH) plugin that registers qBittorrent's WebAPI v2 as
model-facing tools: list and inspect torrents, triage stuck downloads, and
apply a small set of guarded mutations. No browser window, no MCP subprocess —
the tools are registered natively through @deepseek-ai/dsh-tools.
Install
dsh plugin --profile web add @wuzhican/dsh-qbittorrent
Restart dsh web if the profile does not compose patches on reload.
Configuration
The plugin works with no configuration. Every key is optional and can be set
in the patch row's config:
| Key | Default | Meaning |
|---|---|---|
url |
http://127.0.0.1:8080 |
qBittorrent WebUI origin (QBT_URL env also honoured) |
tokenRef |
QBT_API_KEY |
Credential name holding the Bearer token (QBT_TOKEN_REF env also honoured) |
timeoutMs |
30000 |
Per-request deadline |
- insert:
- id: qbittorrent
name: '@wuzhican/dsh-qbittorrent'
config:
url: http://192.168.1.10:8080
tokenRef: QBT_API_KEY
The token is never stored in a patch file. It is resolved through the DSH
credential service by name, falling back to process.env. qBittorrent v5.2.x
accepts only Authorization: Bearer <token> here; X-API-Key, api-key and
query-parameter forms all return 403.
Tools
Nine tools are registered:
| Tool | Purpose |
|---|---|
qb_status |
Version, WebAPI version, per-state torrent counts, transfer stats |
qb_list_torrents |
List with filter / category / tag / hashes / sort, capped at 200 items |
qb_torrent_detail |
One torrent's properties plus file list |
qb_list_categories |
Every category and its save path |
qb_find_orphans |
Torrents whose metadata never resolved, whose name is still the bare infohash, or that error / miss files |
qb_resume_torrent |
Resume — requires confirm: true |
qb_pause_torrent |
Pause — requires confirm: true |
qb_set_category |
Move into a category — requires confirm: true |
qb_delete_torrent |
Remove — requires confirm: true plus expect matching the hash count; max 20 per call; deleteFiles: true also erases data on disk |
Write calls refuse to run without confirm: true. An API failure returns as a
tool result rather than an exception, so one bad call does not end the turn.
Requirements
- DSH
>=0.2.0-rc.1 - Node >= 18 (global
fetchandAbortSignal.timeout) - qBittorrent WebAPI v2 with an API token
No runtime dependencies. @deepseek-ai/cordis and @deepseek-ai/dsh-tools are
peer dependencies supplied by the harness.
License
MIT
No comments yet. Be the first to write one.