dsh-pet
PC2005-cloud/dsh-petDSH Web UI 桌面宠物,Windows / macOS / Linux 三端可用:浏览器浮层或透明置顶桌面窗口,106 个透明动画、带挤压与粒子的甩抛反弹物理、随会话事件实时联动的工作状态气泡、碎碎念与带持久记忆的对话、余额展示、表情包配图、多开同屏,并支持直接放入的自定义动画与宠物种类(pet pack)。
一条按自己作息过日子的 B 站插件:宿主里每 60 秒一次心跳,在设定的作息窗口里随机挑一个时刻叫醒专用会话(今天不想看是按概率跳过),再交给自带的 38 个子命令——信息流、字幕、弹幕、评论、ffmpeg 抽帧、两本日记。每天最多发 N 条评论/动态并 @ 主人(默认 3,按配额账本计数,撞到限流或验证码就停手)。同时轮询评论回复、私信和直播间弹幕;除主人以外的回复先入队,等主人在设置页批准。设置 → 养鱼 写 ~/.dsh/bili-whale.config.json;cookie 单独在 ~/.bili-ai/credentials.json,只写不回显。HTTP 路由只认回环地址并过 DSH 信任栅栏。抽帧需要 Node 18+ 与 ffmpeg。
2026-10-25 扫码增补版:在最新 BUG 修复版上加入「设置 → 养鱼 → B 站登录 → 扫码登录」。使用与验证说明见 QR-LOGIN-2026-10-25.md。
给 DSH 装一条有日子的鱼:它自己按作息刷 B 站、真看懂视频、写两本日记,把值得的 @ 你。
不是"定时任务 + 关键词搜索",是生物钟 + 偏好 + 克制:每天只醒一两次,筛五条、深读两三条、最多 @ 你三次。
她该长成什么,见 VISION.md;每一版的改动见 CHANGELOG.md。
新装用户的默认配置是保守的。原因很直接:长时间高频轮询是小号被风控的头号原因 ✗
项 · 默认值 · 为什么 评论监听 · 关 ✗ · 开了就是每 60 秒一次请求,一天 1440 次 ✗ 小号扛不住 私信监听 · 开 ✓ 但 60 秒一轮 · 私信是她唯一的"叫得应"通道,但间隔不能短 全天监听 · 关 ✗ · 只在作息窗口(默认 20:00–24:00)内听 同一个人只回一条 · 开 ✓ · 30 天内不重复骚扰同一个人 请求间隔 · 1500 ms · 连击是最容易被判机器人的特征 读预算 · 600/时 · 3000/天 · 私信 60 秒一轮 ≈ 1440/天,留一半余量给看视频 写预算 · 12/时 · 30/天 · 评论+私信+收藏都算写 写冷却 · 120 秒 · 两次写之间至少 2 分钟 私信冷却 · 60 秒 · 撞 412/429 · 暂停 5/10/20/30 分钟 · 尊重平台,别硬顶
你自己的号够老、够干净? 那就去 ~/.dsh/bili-whale.config.json 里把 risk 那几个数调大 ✓ 新号别动 ✗ —— 默认值就是替你挡这一刀的 ✓
「设置 → 养鱼 → B 站登录」→「扫码登录」→ 手机 B 站 App 扫一下、确认。 二维码约 3 分钟有效,过期可重新生成。
细节见 QR-LOGIN-2026-10-25.md。
① 分享前多一道「疑似 AI 评论」闸(默认关)—— 主动 @ 分享前先采一段该视频的评论, 由当前模型逐条判;疑似比例 ≥ 30%(写死) 就暂缓这次分享并推送到你配置的渠道。 只对「主动视频 @ 分享」生效,普通回复/动态/私信/弹幕都不走。细节见 AI-SHARE-TRIAL.md。
② 请求保护层——全局请求间隔 600ms(跨进程)、读 3000/天、写 30/天、撞 412 全局暂停、防重复发送。 这些值写死不给旋钮(给了也不一定按你填的走 ✗ 那不如不给)。想看真实值:node tools/bili.mjs traffic status。
③ 监听与失败退避——私信 / 评论按配置间隔轮询(默认 60 秒),无消息不降频。只有失败才翻倍退避,默认间隔下最长 15 分钟;成功读取后恢复基础间隔。平台暂停仍优先。
④ 两个省 token 的开关(默认都关,设置页「会话成本」)—— 会话轮换天数(默认 0 = 不轮换)· 每会话减少重复人设(默认关;开了之后每次重启后第一次投递会重新注入一次)。
另外:抽帧九宫格每格默认 720 像素(原来 360,界面文字糊)、--tile 可调; 唤醒提示压短 26%(1459 → 1086 字),判据一条没丢。
debrief --substrip —— 把字幕带按时间裁下来拼成一张图,整片台词一张图读完它用你自己的账号说话 —— 所以默认是"少说、看准了再说"。
插件不内置任何人格 —— 默认是个中性助手:不叫你"主人"、不撒娇、不说"人家"。
它读两个地方,按下面的顺序生效:
~/.bili-ai/persona.md(推荐)设置页「养鱼 → 她是谁」下面有一个人设正文输入框,写完点注入人设即可。
~/.bili-ai/persona.md(和凭据、账本放在一起 —— 换机器时拷 .bili-ai 就带着走 ✓)建议写法(顺序就按这个来,因为只取前 3000 字):
# 我是谁
身份、来历、外形、一句话的自我认知
# 说话
句子长短、标点习惯、口头禅、哪些词不用、自称/称呼的腔调
# 我在意什么
判断标准、偏好、怕什么
# 我绝不会
明确不要的行为(底线)
# 日记怎么写 / 分享的标准
让她自己知道"什么时候该写、什么值得发"AGENTS.md(兜底 / 通用底色)~/.dsh/AGENTS.md 会被 DSH 在所有会话里热加载 —— 所以它对每一个 agent 生效, 不只对她 ✗ 想只改她就用上面的 persona.md ✓
这里适合放通用红线(不说假话、不冒充你、不伤害第三方)和跨端的协作约定。
设置页里那三个(角色名 / 怎么称呼你 / 怎么自称)会拼成一行身份提示:
[身份]你是「…」,称用户「…」,自称「…」。只是称呼提醒,放不下详细人设 ✓ 详细内容写 persona.md ✓
旧版本的 persona.example.md 已移除:那是某个具体的人的人设,不该当模板发出来 ✗这个插件是两个号的模型:「她」一个号,「你(主人)」一个号。同一个号做不到"她跟你说话"。
通道 · 需要什么 · 只有一个号时怎么办 看视频 / 写日记 / 学偏好 · 只要一个号(她的 cookie) · ✅ 完全可用 分享(share.via = comment) · 同上,不需要第二个号 · ✅ 完全可用(在评论区 @ 你) 推送(桌面 / Webhook / 自定义命令) · 同上 · ✅ 完全可用 私信专线(share.via = dm + notify.type = dm) · 两个不同的、可登录的实名账号,且双方手动互关 · ❌ 做不到 —— 见下
⚠️ 国内一个身份证通常只能实名一个 B 站号 ✗
所以「第二个号」对很多人是过不了实名的硬墙 ✗
只有一个号时:分享方式选「评论区 @」,推送选桌面通知 / Webhook / 自定义命令 ✓
单号模式不能做:私信专线、以完全独立的第二个身份出现 ✗
前提:Node 18+;ffmpeg(看画面要用,见下)。
# 1) 装插件(本地目录 / npm 都行)
dsh plugin --profile desktop add "link:C:\path\to\dsh-bili-whale"
# 2) 重启一次 DSH(bundle 层要重启才组装)
# 3) 打开「设置 → 养鱼」(不是 /dsh-bili/ 那个页面 —— 那个被 DSH 的信任栅栏挡着 ✗)设置页里三件事:
bilibili.com 页面按 F12 → Application(应用)→ Cookies → https://www.bilibili.com,手动复制 SESSDATA、bili_jct、buvid3 三个值粘进设置页 ✓ (⚠️ 别用 document.cookie ✗ —— SESSDATA 是 HttpOnly,脚本里读不到,照那个做会得到一份缺件的 cookie 然后卡在体检)
⚠️ 改完一定要点「保存」 —— 设置页的输入框是先改在本地、点保存才落盘的 ✓
不点保存 = 什么都没发生(刷新一下就变回原样 ✗,这个坑本鲸自己也踩过 ✗)
✅ 保存即生效:作息窗口 / 评论监听 / 直播间开关 / 消息推送 / 分享闸门,都是保存后立刻重算 ✓
⚠️ 只有换插件代码/版本才需要重启 DSH(改配置不用 ✗)
设置保存在 ~/.dsh/bili-whale.config.json(不含凭据);凭据单独在 ~/.bili-ai/credentials.json,永远不回显。
node <插件目录>/tools/bili.mjs selftest(Windows 路径换成 %USERPROFILE%.dsh\plugins\dsh-bili-whale\tools\bili.mjs)
它会把该确认的事列成一张表:配置 / 凭据 / 登录态 / 数据目录 / 依赖体检, 缺哪项就直说缺哪项,最后两行是绝大多数人卡住的地方:
────────── 接下来要做的两件事(很多人卡在这)──────────
① 【找到她的会话】
插件启动时会自动开一个会话,位置在:
左侧「工作区」→ 展开「未分组」文件夹 → 里面那个 bili-whale
⚠️ 不点开「未分组」是看不见它的 —— 这一步最容易漏 ✗
② 【给她完全权限】
打开那个会话 → 权限设置 → 选「完全访问 / danger-full-access」
否则她起来后跑不了命令、发不了评论、写不了日记 ✗
══════════ 全部通过 ✓ 可以用了 ══════════症状 · 真正原因 「装完了,但找不到她」 · 她的会话在 工作区 → 未分组 里,不点开那个文件夹看不见 ✗ 「找到了,但她什么都不干 / 一直报错」 · 那个新会话默认没有完全权限 ✗ 给她 danger-full-access ✓ 「设置页保存了还是红的」 · 没点「保存」(输入框是先改在本地)✗ 「cookie 填了还是未登录」 · 用了 document.cookie 取 SESSDATA ✗ 它是 HttpOnly,必须 F12 手动复制 ✓
设置页 →「生物钟」→ 把作息窗口改成现在之后 2 分钟的一小段 → 保存 → 等她自己醒 ✓ (她醒来会:体检 → 选题 → 看懂 → 写两本日记 → 推给你;不用你说话 ✓)
设置页「分享」里可以选:
方式 · 行为 · 适合 评论区 @ 你 · 在视频评论区发一条带 @ 的公开评论 · 想让别人也看到 ✓ B站私信 · 不发公开评论,把分享内容 + 视频链接私信给你 · 不想吵到别人 ✓(就是评论区那 110 条里喊"艾特泛滥"的人要的 ✓)
两种方式共用同一本分享额度:≤3 条/天 · 同一视频 7 天一次 · 评分 ≥13/20 ✓
判重按 BV 号算(不是按"发给谁"算)✓
两条通道走同一套校验(v0.4.0 起)—— 关掉分享总开关,私信也发不出去:
校验 · 说明 share.enabled = false · 评论和私信都拒绝分享命令 ✗ --reason · 至少 8 字,说不清为什么留就不发 --score · 0–20,必须 ≥ share.minScore(默认 13) --rank 1 · 只允许第一名
以前私信那条绕过了这些校验(关掉分享还能发)✗ v0.4.0 修了 ✓
普通聊天私信(不分享视频)不受这些限制 —— 它不需要评分 ✓
想把东西私密地送到你手里、又不想在评论区吵到别人?用 dm(一天同一个人不限条数 ✓):
node bili.mjs dm --status # 看今天额度 + 互关状态
node bili.mjs dm --msg "…" --dry # 预演
node bili.mjs dm --msg "…" --go # 真发