DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Whale Dive — DSH Plugin for DeepSeek Harness
← Plugins
W

dsh-whale-dive

Whale Dive

Bilibili and Douyin content retrieval tools for DeepSeek Harness: signed Bilibili API access behind a request pacer, plus Douyin pages rendered through a real Edge browser over CDP.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:nisew2/dsh-whale-dive#c5bef9cf4d212cef8dc6ca6d1c9b5984dcf4f182
READMECompatibilityVersions

Compatibility and provenance

Whale Dive is published as dsh-whale-dive and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
10/17/2026

Versions

0.1.0stable
10/17/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
10/17/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in search-research.

Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "The out-of-tree wechat_scrape tool: retrieves WeChat official-account articles, filters promotional blocks, and saves each as a Markdown file, for maintainers of this machine's dsh profiles." kind: "package-reference" ---Weknora@wxg-prc-cpg/dsh-weknoraWeKnora knowledge retrieval tools for DeepSeek Harness (dsh): semantic search, document reading and RAG/agent answers over your own knowledge bases.Free Searchdsh-free-searchFree web search for DeepSeek Harness: 27 engines (Bing/DuckDuckGo/AnySearch/SearXNG/Exa/Tavily/Keenable/Firecrawl/Parallel keyless; Zhihu global/site via MCP and Perplexity/SerpBase/DeepSeek (official + native tools/search)/You.com/Baidu/Kimi/Aliyun/DoubaDejadsh-dejadeja-vu memory for DeepSeek Harness: the session history of forty-one other coding agents, searchable and recalled before each step — a local index, no LLM.

README

dsh-whale-dive

Read Bilibili and Douyin from inside DeepSeek Harness: nine model-facing tools, two very different transport problems, one read-only surface.

whale_dive_status            pacer health, cool-downs, cookie presence, WBI key age
whale_dive_bili_video        one video: metadata, parts, uploader, counters
whale_dive_bili_feed         the popular board, or one video's related rail
whale_dive_bili_search       keyword search: video / user / article / bangumi
whale_dive_bili_author       uploader profile plus a page of their uploads
whale_dive_bili_comments     a comment page with each thread's top replies
whale_dive_bili_danmaku      the danmaku track of one part
whale_dive_bili_subtitles    subtitle tracks per part, bodies when a cookie allows
whale_dive_douyin            hot / feed / video / search / status / close

Why two transports

Bilibili answers plain HTTPS — but it signs its newer routes with a rotating w_rid (the "WBI" scheme) and it answers a sustained burst with an IP-scoped HTTP 412 that outlives the burst by minutes. Measured on one machine: 20 threads × 10 requests passed cleanly; 8 threads of mixed view+search+reply for 30 seconds (≈51 req/s) produced 1372 × HTTP 412 out of 2128 requests, and the block was still in force 90 seconds later. So the plugin ships a pacing layer rather than a bare fetch: a token bucket keyed per host, a concurrency cap, and a circuit breaker whose cool-down doubles on each consecutive trip.

The same measurement run also showed which routes survive without a signature, so the plugin prefers those and keeps the signed route as the fallback:

RouteSigned?Read by
x/web-interface/viewnobili_video
x/web-interface/popularnobili_feed (popular)
x/web-interface/relatednobili_feed (related)
x/v2/replynobili_comments
x/player/v2nobili_subtitles
x/v1/dm/list.sonobili_danmaku
x/web-interface/cardnobili_author (profile)
x/relation/statnobili_author (counts)
x/series/recArchivesByKeywordsnobili_author (uploads, default order)
x/web-interface/wbi/search/typeWBIbili_search
x/space/wbi/arc/searchWBIbili_author (uploads, explicit order)

Douyin cannot be read over HTTP at all. Its API calls carry a_bogus, X-Bogus and __ac_signature, all computed at runtime inside an obfuscated VM, and a plain client gets 403s, empty bodies, or a captcha interstitial. Headless browsers get the captcha too. The only route that works is a real, headful Edge/Chrome whose page computes its own signatures — so whale_dive_douyin launches one in its own profile directory, drives it over the Chrome DevTools Protocol, and reads the rendered DOM.

That path costs several seconds per call, and one detail is not obvious: a window parked off-screen is treated by Chromium as occluded, and an occluded window stops painting — the feed never hydrates and the DOM stays empty. The launcher therefore passes --disable-backgrounding-occluded-windows, --disable-renderer-backgrounding and --disable-background-timer-throttling, which is what makes the parked window actually render.

Install

dsh plugin --profile desktop add dsh-whale-dive

The package ships its own cordis.patch.yml, so the loader row is inserted for you. Nothing else in the composition is touched: no base row config is replaced, no search provider is registered, so this patch cannot collide with another plugin that selects a provider.

Restart DSH after installing — profile changes are picked up at startup.

Configuration

All fields live under the plugin's settings section and are read on every tool call, so an edit applies to the next call without a reload.

KeyDefaultMeaning
requestsPerSecond4Per-host request rate. The measured safe band is 5–10 req/s; 4 leaves headroom.
burst8Token-bucket capacity — how much idle time can be spent at once.
maxConcurrent3Requests in flight at one time.
cooldownMs120000How long one risk signal parks a host. Doubles per consecutive trip.
maxCooldownMs600000Ceiling for the doubling cool-down.
timeoutMs20000Per-request timeout.
cookie""A SESSDATA=... string. Only needed for subtitle bodies and the handful of routes that answer -101 without a session.
douyinBrowser""Explicit path to Edge/Chrome. Empty auto-detects.
douyinPort47821DevTools port for the helper browser.
douyinUserDataDir""Profile directory. Empty uses a temp directory.
douyinKeepAliveMs900000How long an idle helper browser stays alive.
douyinWaitMs11000Settle time after loadEventFired on Douyin. Not padding — the feed hydrates asynchronously.
danmakuLimit500Default cap on danmaku rows.
commentPageSize20Default comment page size.

Douyin sign-in (optional)

hot and feed need no account. Keyword search does: Douyin gates it behind a login wall and shows "登录后即可搜索更多精彩视频" to anonymous visitors. To unlock it, run whale_dive_douyin with action: "video" once — this starts the helper browser — then scan the QR code in the window that appears. The session is stored in the plugin's own profile directory (never your normal browser profile) and reused afterwards.

Output conventions

Two rules run through every tool:

  • A field is only ever omitted, never invented. When a surface is gated, the tool still succeeds and explains the gate in note, because "this is gated and here is the way in" is a useful answer and a thrown error is not.
  • Every number is coerced. Upstream sends null, missing keys and "1.2万", all of which would violate the output schema; each is projected to a typed value before the harness validates it.

Rate-limit failures are the exception: they throw an HttpError with code: "RISK" and risk: true, carrying the cool-down window. That distinction is deliberate — a model that reads "intercepted, stop calling this host" behaves differently from one that reads "request failed" and retries into a longer ban.

Requirements

  • DSH >= 0.2.0-rc.1 < 0.3.0-0
  • Node >= 20 (the Douyin path uses the global WebSocket)
  • Microsoft Edge or Google Chrome for the Douyin path; the Bilibili path needs neither

Scope

Both backends are read-only. Nothing here posts, likes, follows or writes.

License

MIT.