DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Whale Dive — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
W

dsh-whale-dive

Whale Dive

用于 DeepSeek Harness 的 Bilibili 和 Douyin 内容获取工具:通过请求节流器实现签名的 Bilibili API 访问,并通过 CDP 使用真实的 Edge 浏览器渲染 Douyin 页面。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:nisew2/dsh-whale-dive#c5bef9cf4d212cef8dc6ca6d1c9b5984dcf4f182
README兼容性版本

兼容性与来源证明

Whale Dive 以 dsh-whale-dive 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/10/17

版本

0.1.0stable
2026/10/17

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/17
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 search-research 分类下经过校验的插件。

Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "树外 wechat_scrape 工具:获取微信公众号文章,过滤推广区块,并将每篇文章保存为 Markdown 文件,供此机器的 dsh 配置文件维护者使用。" kind: "package-reference" ---Ab Market Researchdsh-ab-market-research一个树外 DeepSeek Harness 插件:将 trade_search 工具(多轮扩展方面的查询规划、出版商级别排序、来源多样性、JSON 快照)及其浏览器卡片集成在一个包中。Weknora@wxg-prc-cpg/dsh-weknora适用于 DeepSeek Harness (dsh) 的 WeKnora 知识检索工具:通过自有知识库进行语义搜索、文档阅读以及 RAG/代理回答。Free Searchdsh-free-searchDeepSeek Harness 的免费网页搜索:27 个引擎(Bing/DuckDuckGo/AnySearch/SearXNG/Exa/Tavily/Keenable/Firecrawl/Parallel 无需密钥;通过 MCP 支持 Zhihu 全网/站内搜索,以及 Perplexity/SerpBase/DeepSeek(官方 + 原生工具/搜索)/You.com/Baidu/Kimi/Aliyun/Douba)

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.