前言¶
在 DeepSeek Harness(DSH)里让模型查 B 站或抖音,常见做法是手写 HTTP 或挂一层搜索。B 站新接口要带 WBI 签名,请求过猛还会触发按 IP 维度的 HTTP 412;抖音侧则依赖页面内 VM 算出的 a_bogus、X-Bogus 等参数,纯客户端往往 403 或空体。社区插件 dsh-whale-dive(维护者 nisew2,SkillHub 分类为联网工具)把两条链路封装成九个面向模型的只读工具:B 站走带限速的 HTTPS,抖音走本机 Edge/Chrome 经 CDP 渲染 DOM。下面介绍其定位、能力与安装配置要点。
这是什么¶
dsh-whale-dive 是 DSH 社区插件,当前包版本 0.1.0(MIT)。它在 Harness 进程内提供 Bilibili 与 Douyin 的只读读取面:不发帖、不点赞、不关注、不写数据。B 站侧优先调用无需 WBI 的公开路由,必要时再回退签名接口,并内置按主机的令牌桶、并发上限与熔断冷却;抖音侧因无法靠普通 HTTP 复现签名,插件会启动独立用户数据目录下的真实浏览器,经 Chrome DevTools Protocol 读渲染结果。
核心功能:九个工具¶
README 列出的模型可调工具如下(名称即 DSH 中的 tool id):
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
whale_dive_status 用于查看限速层健康度、冷却状态、是否配置 cookie、WBI 密钥年龄等。B 站工具覆盖单视频元数据、热门/相关推荐、关键词搜索(视频/用户/专栏/番剧)、UP 主资料与投稿列表、评论页、弹幕、字幕轨道(部分字幕正文需 cookie)。whale_dive_douyin 聚合抖音的热榜、推荐流、单视频、搜索、状态与关闭浏览器等动作。
B 站:为何需要 pacing¶
资料中的实测说明:B 站在持续突发请求下会对 IP 返回 HTTP 412,且封锁可延续数分钟。插件因此不是裸 fetch,而是每主机令牌桶、maxConcurrent 并发 cap,以及连续触发后冷却时间翻倍的熔断器。同时按路由是否需 WBI 签名选择接口,例如 x/web-interface/view、popular、related、x/v2/reply、x/player/v2、弹幕与 UP 主相关路由等多为无签名路径;搜索与部分投稿排序则走 WBI 路由作为必要时的回退。
抖音:为何用真实浏览器¶
抖音 API 参数在混淆 VM 内运行时生成,无头环境也常遇验证码。插件选择本机 Microsoft Edge 或 Google Chrome,独立 profile,经 CDP 驱动。单次调用耗时可达数秒;窗口若被系统判定为遮挡,Chromium 可能停止绘制导致 DOM 为空,因此启动参数包含 --disable-backgrounding-occluded-windows、--disable-renderer-backgrounding、--disable-background-timer-throttling。热榜与推荐流无需登录;关键词搜索对匿名用户有登录墙,需按 README 用 action: "video" 唤起浏览器扫码,会话保存在插件专用 profile,而非日常浏览器目录。
输出约定¶
各工具遵循两条规则:字段只省略、不捏造;受门禁限制时仍返回成功并在 note 中说明如何解锁。数值统一做类型规整(含上游 null、缺失键、"1.2万" 等)。触及平台风控限速时抛出 HttpError,code: "RISK"、risk: true,并携带冷却窗口,便于模型停止对该主机重试。
环境与依赖¶
- DSH:
>= 0.2.0-rc.1且< 0.3.0-0 - Node:
>= 20(抖音路径使用全局WebSocket) - 抖音路径需要本机 Edge 或 Chrome;仅 B 站路径不需要浏览器
安装与启用¶
官方安装命令(desktop profile):
dsh plugin --profile desktop add dsh-whale-dive
包内自带 cordis.patch.yml,加载时会插入对应 loader 行,不替换 base 配置、不注册搜索 provider,README 称因此不易与其他选 provider 的插件冲突。安装后需重启 DSH,profile 变更在启动时生效。
配置项¶
配置位于插件 settings 段,每次工具调用都会读取,改完即对下一次调用生效,无需重载。默认值与含义如下(摘自 README):
| Key | Default | Meaning |
|---|---|---|
requestsPerSecond |
4 |
每主机请求速率;资料称实测安全区间约 5–10 req/s,默认 4 留余量 |
burst |
8 |
令牌桶容量 |
maxConcurrent |
3 |
同时进行的请求数 |
cooldownMs |
120000 |
风险信号后主机暂停时长,连续触发则翻倍 |
maxCooldownMs |
600000 |
冷却翻倍上限 |
timeoutMs |
20000 |
单次请求超时 |
cookie |
"" |
SESSDATA=...;字幕正文及部分需会话的路由 |
douyinBrowser |
"" |
Edge/Chrome 路径,空则自动探测 |
douyinPort |
47821 |
辅助浏览器 DevTools 端口 |
douyinUserDataDir |
"" |
profile 目录,空则用临时目录 |
douyinKeepAliveMs |
900000 |
空闲时浏览器保活时间 |
douyinWaitMs |
11000 |
Douyin loadEventFired 后的等待,用于异步 hydrate |
danmakuLimit |
500 |
弹幕默认条数上限 |
commentPageSize |
20 |
评论页默认大小 |
典型用法思路¶
- 安装并重启 DSH 后,可先调用
whale_dive_status确认限速与 cookie、WBI 状态。 - 查 B 站:按任务选用
whale_dive_bili_video、whale_dive_bili_feed、whale_dive_bili_search等;需要字幕全文时在 settings 填入cookie。 - 查抖音:热榜/推荐可直接走
whale_dive_douyin对应 action;搜索前按 README 完成可选扫码登录。 - 长时间不用抖音浏览器时可调用
whale_dive_douyin的close,或依赖douyinKeepAliveMs自动回收。
具体参数以 Harness 内工具 schema 为准;README 未给出完整 JSON 调用示例时,不宜臆造字段名。
适用场景与注意¶
适合需要在 DSH 对话或智能体流程中只读引用 B 站视频元数据、评论、弹幕、字幕,或抖音热榜/流/单条内容的开发者。插件以当前 DSH 进程权限运行,会发起外网请求并可能启动本机浏览器;安装前应在 GitHub 仓库 查阅源码与 MIT 许可证,并自行评估合规与账号风险。DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-whale-dive 把 B 站签名与限速、抖音 CDP 渲染两条差异很大的传输问题收敛到九个只读工具,并附带可调的 pacing 与抖音浏览器生命周期配置。若要安装或查 issue,见目录页 skillhub.cn/plugins/nisew2/dsh-whale-dive 与源码 github.com/nisew2/dsh-whale-dive。