# 白鲸台 · 使用手册 > 版本 **1.1.1** | 插件名 `dsh-whale-panel` | 宿主 DeepSeek Harness 0.2.x > > 这是一份“给别人看”的说明书:它是什么、怎么用、每个开关干什么、钱是怎么算的。 > 工程细节见同目录 `README.md`。 --- ## 一、它是什么 一个常驻在 Harness 里的浮窗助手。它不是单纯的推荐器,而是**带预算观念的助手**: - 按概率自己去认识你(不需要你每天点“开始学习”) - 用学到的兴趣去挑内容,按概率叫你 - 把你设的金额换算成 token 额度来花 - 把“我觉得还能加什么”攒成留言,等你拍板 一句话的成本模型:**金额是上限,token 才是实际货币,时段决定汇率。** --- ## 二、安装与打开 ```powershell plugin_manager install_bundle D:\plugins\dsh-whale-panel ``` 装好后刷新页面 → 右下角圆形「鲸」按钮 → 点开浮窗。 - 拖标题栏可移动,位置会记住 - 收起后只剩那个圆按钮,不占版面 - 页签、主题、监测开关都会记住 标题栏从左到右:Logo、白鲸台、登录状态、「N 条待回」、主题切换、收起。 --- ## 三、五个页签 ### 3.1 学习 | 项目 | 说明 | 默认 | | --- | --- | --- | | 主人号 UID | 纯数字,**不需要登录**;点「查」可确认身份 | 空 | | 手动话题 | 逗号分隔,每个词权重 +6,是你直接下命令的线 | 空 | | 补充视频链接 | 粘 BV 号,逐条解析标题与标签,最多 20 个 | 空 | | 自动学习概率 | 每次跑一轮时掷骰子,命中才去学 | 35% | | 兴趣画像 | 字号与透明度按权重变化,悬停看权重与最近出现 | — | | 半衰期 | 旧兴趣多久掉一半 | 7 天 | | 评论区语气 | 均长 / 表情率 / 高频词,每轮自动刷新 | — | **四条学习线**(并行、互不阻塞,谁挂了都不影响其它): 1. **关注动态**:用发言号登录态读 `feed/all`,只挑主人号的投稿 2. **公开投稿**:`space/wbi/arc/search`,需要 WBI 签名,常被限频 3. **手动话题**:无依赖,永远可用 4. **手动链接**:`view` + `tag/archive/tags`,最稳 ### 3.2 运行 | 项目 | 说明 | 默认 | | --- | --- | --- | | 平台 | B站已接入;小红书/抖音是占位 | B站 | | 发言号 | 扫码登录,供未来写操作使用 | 未登录 | | 峰谷模式 | 谷时自动按折扣折算 token | 开 | | 日上限 / 单次上限 | 金额,实时换算成 token | ¥2 / ¥0.2 | | 每轮目标条数 | 愿望值,实际由单次 token 额度推导 | 12 | | 最多续接次数 | 没跑够时最多补几次 | 2 | | 评论区 | 关 / 自动发 / 起草后确认 / 自检→少量自主 | 开(见边界) | | 草稿来源 | 模型结合标题、简介、UP、兴趣、语气生成;失败回退模板 | 模型优先 | | @ 概率 | 只对“兴趣”来源条目掷骰子 | 50% | **结果列表**:点标题不会新开标签页,而是跳到「监测 → 预览」,显示封面卡并可一键去站内。 ### 3.3 监测 - **干了什么**:宿主事件流,1 秒一拉,带时间戳,按 info / ok / err 三色 - **预览**:封面 + 标题 + UP + 时长 + 播放量(公开 `view` 接口),点封面或「在 B站打开」跳站内 - **试播**:默认**不**加载 iframe;点「试播(可能受限)」才挂官方播放器,6 秒后给出受限提示 - **开关**:关掉就不发请求、不占资源 事件流只存内存(环形 240 条),宿主重启会清空——这是刻意的,高频写盘不值当。 > **为什么不做“实机画面”**:UP 主可关闭站外嵌入、防盗链会降级、未登录会锁画质, > 而 iframe 跨域拿不到内部状态,插件无法判断里面是播放器还是引导页。 > 所以只承诺“看得到这条视频是什么、能一键去站内看”,不承诺“什么都能在浮窗里播”。 ### 3.4 留言 - 系统按规则自动追加建议:跑满 3 轮提定时、读到评论提语气、有画像提纠偏、登录未开评论提起草 - 每条可 **采纳 / 先不用 / 删除** - 每条下面一行「我的想法…」,失焦即存 - 顶部输入框也能直接留言(Enter 提交) ### 3.5 记录 - 发出过的评论按条留档:正文与「@ 提醒」分开打标 - 每条带时间、rpid、可点「去视频」;发送失败的单独一块,写明原因 - 顶部显示「今日 N / 上限 M 条」,是唯一能回看「它到底说了什么」的地方 --- ## 四、五个核心公式 ``` 混合单价 = 输入价 × 0.3 + 输出价 × 0.7 (¥/百万 token) 有效单价 = 混合单价 × (峰谷开 且 谷时 ? 折扣 : 1) 日额度 = 日上限 ÷ 有效单价 单次额度 = 单次上限 ÷ 有效单价 每轮目标 = min(目标条数, 单次额度 ÷ 每条估算 tokens) ``` 以默认值算一次(输入 ¥2 / 输出 ¥8 / 折扣 0.5 / 每条 1200 tokens): - 混合单价 = 2×0.3 + 8×0.7 = **¥6.2/百万** - 谷时有效单价 = **¥3.1/百万**(峰时 ¥6.2) - 日上限 ¥2 → **谷时 645,161 tokens**,峰时只有 322,580 - 单次上限 ¥0.2 → 谷时 64,516 tokens → 每轮目标 12 条(峰时约 6 条) **要点**:日上限不要求跑满,剩下的不结转也不浪费;只有累计用量碰到天花板才会拦。 **画像衰减**: ``` 旧权重' = 旧权重 × 0.5 ^ (距上次出现的天数 ÷ 半衰期) 新画像 = 旧权重' + 本次观察(同名词累加),低于地板 1 的删除,取前 14 ``` 所以最近一直在看的东西会迅速占满前列,三个月前的那点兴趣会自然消失。 --- ## 五、技术构成 ``` 浏览器(client.js) │ POST /whale-panel/api { action, patch, since, ... } ▼ Node 宿主(index.js) ├─ state.json 持久状态(权限 0600) ├─ 事件流 内存环形 240 条 ├─ B站公开接口 WBI 签名 + 匿名 buvid └─ 登录 passport 扫码轮询 ``` - 只依赖宿主的一个服务:`webServer`(注册路由) - 桥做了**同源校验**:Origin 不是 127.0.0.1 / localhost 直接 403;非 POST 返回 405 - 前端不引 Harness 的 Client 包,全部自绘,只继承 `--dsw-alias-*` 主题令牌 - 主题:跟随系统 / 日间 / 夜间三档,单一蓝色相 + 中性 + 琥珀警示 ### 接口清单 | action | 作用 | | --- | --- | | `state` | 读全量状态(顺带生成建议) | | `save` | 改配置(白名单字段 + 数值夹取) | | `learn` | 四线并行学习 + 合并衰减 | | `comments.learn` | 读 2 条视频评论区算语气 | | `run` | 选片 + 自动学习 + 语气 + token 记账 + 续接 | | `monitor` | 增量拉事件流(`since` 游标) | | `login.start` / `login.poll` / `logout` | 发言号扫码登录 | | `notes.add` / `notes.update` / `notes.remove` | 留言区增删改 | | `interest.clear` | 清空画像 | | `master.lookup` | 查主人号用户卡片 | ### 状态字段速查 | 字段 | 含义 | | --- | --- | | `interest[]` | `{ tag, weight, lastSeen }` | | `commentLearn` | `{ at, count, avgLen, emojiRate, phrases, samples }` | | `pending` | `{ remaining, attempts, at }`,没跑完的缺口 | | `quota`(只读) | `{ offPeak, factor, effectivePerM, dailyTokens, runTokens, used }` | | `tokensUsedToday` / `spentToday` | 今日 token 与折算金额 | --- ## 六、已知边界(必读) | 边界 | 说明 | | --- | --- | | 评论**不会真发** | 模式会存、会记、界面会显示;写接口需要 csrf 且不可逆,尚未接通 | | @ **只是标记** | 结果里显示「· @你」,不产生真实通知 | | 预算**不是账单** | 单价与每条 tokens 都是可配估算值,不是运营商对账单 | | 峰谷**靠系统时间** | 只看北京时间是否在 00:30–08:30,不查询 API 实况 | | 跨账号读历史**不行** | B站 限制,只能走关注动态 / 公开投稿 / 手动 | | 事件流**不落盘** | 宿主重启即清空 | | cookie **明文** | 存在 state.json 里,别同步到网盘或仓库 | > ⚠️ 若把评论区开到「自动发」,等发送通道接通后就是“不问直接发”。建议先保持在「起草后我确认」。 --- ## 七、B站 接口实测(2026-10) | 接口 | 结果 | | --- | --- | | `web-interface/card` | 通,返回昵称与粉丝数 | | `space/navnum` | 通 | | `web-interface/popular` | 通 | | `web-interface/search/type` | 通 | | `web-interface/view` | 通 | | `tag/archive/tags` | 通 | | `player.bilibili.com` | 可 iframe 嵌入 | | `space/wbi/arc/search` | 常 -799 限频 / -352 风控 | | `v3/fav/folder/created/list` | -400 | | `polymer/web-dynamic/v1/feed/space` | 412 | 观看历史私有:只有号主本人登录才能读,所以跨账号学习改用「关注动态」。 --- ## 八、开发与维护 - 改完本地包需 `remove_bundle` + `install_bundle` 才加载新的 Host 模块;只改前端刷新页面即可 - `remove_bundle` 偶尔返回 `not-removable`,但实际已移除——以 `list_bundles` 里还在不在为准 - 测接口用 node 的 `fetch`,不要用 PowerShell 5.1(中文会变 `????`) - `shell.overlay` 是点击穿透的,卡片必须显式 `pointerEvents: 'auto'` --- ## 九、版本历史 | 版本 | 变更 | | --- | --- | | 1.1.1 | 模式正式命名「峰谷模式」 | | 1.1.0 | 峰谷模式、金额→token 换算、目标条数、续接机制;修复续接计数起始值 bug | | 1.0.0 | 首个成品:四页签、双主题、概率学习、画像衰减、语气学习、监测台、留言区、同源校验 | | 0.2.0 | 双账号改公开学习、评论三档、留言区 | | 0.1.0 | 浮窗、扫码登录、只读选片、金额记账 | --- 许可:MIT。B站 相关接口属于其平台资产,使用请遵守其用户协议;自动化写入的风险由使用者自负。