Skip to content

Releases: 1a125/dsh-bili-chat-whale

v0.2.0 · 巡游时间段、停摆省 token、结束前自动日记

Choose a tag to compare

@1a125 1a125 released this 27 Oct 18:32

聊天鲸 v0.2.0 · 巡游时间段、停摆省 token、结束前自动日记

1. 巡游时间段

  • 设置页新增「巡游时间段」,可设开始/结束时间
  • 支持跨天,例如 20:00 → 次日 02:00
  • 不在时间段内会离开直播间、断开弹幕、停止语音子进程,并停止抓流/画面/叫醒/巡查/关注判断
  • 不再空耗 token

2. 停着 / 关闭主动巡查

  • 点「停着」或关闭「主动巡查」时也会停止全部后台工作
  • 手动「下一间 / 重新发现」在停摆状态下会被拒绝,避免偷偷启动

3. 结束前自动日记

  • 巡游结束前 10 分钟自动生成并保存观察日记
  • 保存在 <DSH_HOME>/chat-whale/reports/YYYY-MM-DD.md
  • 跨天窗口按巡游开始日归档,覆盖整段窗口(含凌晨)的活动
  • 日记仍由聊天鲸自己取标题、二次润色、500 字内

4. 日记按钮

  • 当天已开始巡游:显示「生成今日观察日记」
  • 当天未开始 / 已结束 / 停着 / 关闭巡查:显示「查看上次的日记」
  • 查看上次不会调用模型,只读取上次保存的文件

验证

  • 46 个单元测试通过
  • GitHub Actions success
  • 实测不在时段时房间清空、相关子进程为 0
  • 实测自动日记成功写入,lastReport.auto = true

升级

git pull
npm install

重启一次 DSH,刷新设置页。时间段默认关闭,需要先填时间再打开。

v0.1.12 · 关注前由聊天鲸自己判断

Choose a tag to compare

@1a125 1a125 released this 27 Oct 18:03

聊天鲸 v0.1.12 · 关注前由聊天鲸自己判断

参数条件不再是「满足就关注」,只是候选门槛。

现在流程

  1. 至少 4 条真实弹幕
  2. 至少待 6 分钟
  3. 你开口后至少 3 条别人弹幕,或有人提到你的名字
  4. 再由聊天鲸自己判断:把房间标题、主播、你说过的话、最近弹幕、听到/看到的片段交给文本模型,以自己的兴趣和人设决定要不要关注
  5. 模型说不感兴趣 / 不确定 / 没有可用模型 / 判断失败 → 不关注

判断规则

  • 只是热闹、被点名、礼貌、条件凑够 → 不关注
  • 不需要为了礼貌关注任何人
  • 不感兴趣就明确拒绝
  • 结果必须明确;含糊的一律保守拒绝

其他

  • 隐藏彩蛋主播仍按原约定自动关注,不受这层判断限制
  • 已有关注不会自动取关
  • 当前本机阈值仍是 4 条 / 6 分钟 / 3 条回应 / 每天 5 个,且自动关注开着

43 个单元测试通过;GitHub Actions success。

v0.1.11 · 收紧自动关注条件

Choose a tag to compare

@1a125 1a125 released this 27 Oct 17:58

聊天鲸 v0.1.11 · 收紧自动关注条件

之前只要发过 2 条、待过 3 分钟就可能关注,确实太宽松。

现在必须同时满足

  • 至少发过 4 条真实弹幕
  • 至少待过 6 分钟
  • 你开口之后,至少有 3 条别人的弹幕,或有人(主播/弹幕)直接提到你的名字
  • 每天最多关注默认 5 个(设置页可调)

其他

  • 关注判断提前到离开房间之前,避免「待够 8 分钟先走了,永远来不及关注」
  • 设置页新增「至少发过几条 / 至少待过几分钟 / 至少几条回应」三个阈值
  • 彩蛋主播仍不受条数与回应限制,但每日上限照常生效
  • 已经被关注的人不会自动取关;如果之前关注多了,需要手动清理
  • 当前本机配置已同步收紧为 4 条 / 6 分钟 / 3 条回应 / 每天 5 个

40 个单元测试通过;GitHub Actions success。

v0.1.10 · 观察日记重写:先理解、再写、再润色

Choose a tag to compare

@1a125 1a125 released this 27 Oct 17:45

聊天鲸 v0.1.10 · 观察日记重写:先理解、再写、再润色

改了什么

  • 观察日记从「拼日志」改成三遍模型流程:
    1. 整理回忆:结合画面纠正语音识别里的同音字/断句,按直播间归并,挑出有情绪的瞬间
    2. 写草稿:第一人称回忆,不再直接复述活动日志
    3. 润色成日记:重写成通顺的日记,自己取标题,正文 500 字内
  • 标题不再固定「XX的今日观察日记」,由聊天鲸自己取(8–16 字)
  • 推理模型会把 token 花在思考上,已提高生成预算,避免「只思考不输出」退回拼凑稿
  • 没有模型/失败时,兜底稿也改成成篇叙事,不再是 bullet 列表
  • 设置页日记卡显示标题、日期、模型、是否已润色

实测

2026-10-27 的日记生成结果:

  • 标题:在鱼塘里横跳的一晚
  • 正文:489 字,已润色
  • 模型:deepseek-official/deepseek-flash
  • 不再是「去了 N 个直播间」+ 列表

验证

  • 40 个单元测试通过;GitHub Actions success

升级

git pull
npm install

重启一次 DSH,刷新设置页。

v0.1.9 · 自动关注、关注列表巡查、今日观察日记

Choose a tag to compare

@1a125 1a125 released this 27 Oct 10:28

聊天鲸 v0.1.9 · 自动关注、关注列表巡查、今日观察日记

1. 自动关注

  • 设置页新增「自动关注聊得来的主播」,默认关
  • 真实模式(非演练)+ 本房间发够 2 条 + 待够 3 分钟才会关注;每天最多默认 5 个,可改
  • 隐藏彩蛋的特别关注主播开播即关注(开启本功能且非演练时),每天上限仍然生效
  • 已关注过的人不重复关注;失败后 10 分钟才重试

2. 巡查关注列表

  • 设置页新增「巡查关注列表」,默认关
  • 读取当前账号关注列表(最多 200 个),批量查直播状态,把正在直播的主播加入候选池
  • 关注主播在排序中 +30 权重,但不强制进入;仍受分区、人气上限、重复进入冷却限制,也会去其他直播间

3. 今日观察日记

  • 设置页新增「生成今日观察日记」按钮
  • 汇总当天真实活动:去了哪些直播间、听了什么、发了哪些弹幕、关注了谁
  • 有 DSH 文本模型时按聊天鲸人设写 300–600 字第一人称日记;没有模型时生成朴素版
  • 自动保存到 <DSH_HOME>/chat-whale/reports/YYYY-MM-DD.md

验证

  • 关注列表读取实测:当前账号 1167 个关注,第一页 20 个;批量直播状态查询正常
  • 40 个单元测试通过;GitHub Actions success

升级

git pull
npm install

重启一次 DSH,刷新设置页。

v0.1.8 · 修复限流/登录态误显示/抓不到画面

Choose a tag to compare

@1a125 1a125 released this 27 Oct 10:05

聊天鲸 v0.1.8 · 修复扫码登录后全局限流、登录态误显示与抓不到画面

问题根因

  1. 新版 getDanmuInfo 对当前账号返回 -352,旧代码把所有 code 级风控写成全局 5 分钟熔断,导致 playUrl、截图、语音、whoami 全被本地 ban 挡住,于是表现成「每个直播间都限流」「抓不到画面」「登录变未登录」。
  2. 扫码登录只拿到 SESSDATA/bili_jct,没有 buvid3/buvid4;缺少设备指纹会加大直播接口风控概率。
  3. /whoami 遇到网络/风控失败时直接返回 ok:false,前端误判成账号掉线。

修复

  • -352 不再全局熔断:code 级风控只影响当前接口;旧版本留下的 code= 全局 ban 记录直接忽略
  • 自动补 buvid3/buvid4:从 B 站 finger/spi 获取,QR 登录/manual Cookie 保存时一并写入;已有凭据请求时自动补齐
  • 弹幕 token 回退:getDanmuInfo 失败时自动改用旧接口 room/v1/Danmu/getConf,弹幕监听可继续连接
  • 登录态防误判:/whoami 区分「真未登录」与「网络/风控暂时失败」,后者保留已登录显示
  • 画面恢复:弹幕 token 失败不再连带熔断 playUrl/截图

实测

  • danmuInfo 仍返回 -352 时:本地 ban 不再产生,playUrl 正常,captureRoom 成功抓到 3.9MB 流并生成截图/音频
  • 旧 token 接口回退成功,live-ws 能连上弹幕服务器(WS_READY)
  • 36 个单元测试通过;GitHub Actions success

升级

git pull
npm install

重启一次 DSH,刷新设置页。

v0.1.7 · 检查更新 + 隐藏彩蛋

Choose a tag to compare

@1a125 1a125 released this 26 Oct 19:09

聊天鲸 v0.1.7 · 检查更新 + 隐藏彩蛋

检查更新

  • 设置页新增「版本更新」卡:打开页面自动检测 GitHub Release 最新版本
  • 显示当前版本 / 云端最新版本;有新版本时出现「立即更新」按钮
  • 官方 git 仓库安装:一键执行 git pull --ff-only origin main,更新后提示重启 DSH
  • npm / 复制安装:不强行改文件,提示按 Release 页面手动更新
  • Node 证书链不可用时自动回退系统 curl,避免「检查更新失败」

隐藏彩蛋

  • 特别关注的主播开播时,其房间在候选池里获得排序权重
  • 不强制进入、不打断当前直播间或用户指定进入的直播间
  • 仍然受分区、避开词、人气上限、重复进入冷却限制;去过一次后按设置的 revisitMinutes 冷却
  • 不在设置页展示

验证

  • 36 个单元测试通过;GitHub Actions(Windows)success
  • 更新检查实测可读取最新 Release(Node fetch 证书失败时 curl 回退成功)

升级

git pull
npm install

重启一次 DSH,刷新设置页;版本卡会自动检测本版本。

v0.1.6 · 主动巡查、点名搭话、模糊语音还原

Choose a tag to compare

@1a125 1a125 released this 26 Oct 18:53

聊天鲸 v0.1.6 · 主动巡查、点名搭话、模糊语音还原

1. 主动巡查,解决卡在待命

  • 设置页开头新增「主动巡查」开关 + 「待命等待(秒)」,默认开启、30 秒
  • 待命超过等待时间就清掉冷却、重新发现直播间,不再因为 4 分钟冷却一直不动
  • 发现任务超过 90 秒会自动重置巡查锁
  • 实测:手动离开后 20 秒内自动进入下一间

2. 被点名主动搭话

  • 主播语音里出现聊天鲸的名字,或弹幕里有人提到名字,会触发「点名」叫醒
  • 点名可以绕过正常 150 秒间隔:15 秒后即可叫醒,最多等 30 秒的发言间隔
  • 同一条弹幕/同一句语音不会反复触发
  • 实测:写入「大肥鱼在吗?」后,活动记录出现「触发:弹幕里有人提到了你的名字「大肥鱼」」,并完成 dry-run 发言

3. 主动理解模糊语音

  • 新增 voice.clarify(默认开)和设置页开关「自动纠正模糊语音」
  • 识别太短、重复字、乱码、超长无标点时,结合画面和上一句,用 DSH 文本模型做一次保守还原
  • 保留原始识别文本;没有模型/失败时自动回退原文
  • 提示词明确要求:结合画面/上下文猜意思,不逐字复述错词

验证

  • 33 个单元测试通过;GitHub Actions(Windows)success
  • 本机已恢复 mode=off + 演练模式,主动巡查默认开启

升级

git pull
npm install

重启一次 DSH,刷新设置页。

v0.1.5 · 关键词为空不限制、候选固定8、冷却可设、保存/登录修复

Choose a tag to compare

@1a125 1a125 released this 26 Oct 18:10

聊天鲸 v0.1.5 · 关键词为空不限制、候选固定 8、冷却可设、保存/登录修复

1. 关键词为空 = 不限制关键词

  • 不再因为「一个词都没命中」扣 12 分
  • 发现仍会用分区名/宽泛词召回,但排序主要看分区、人气、开播时间、关注数
  • 想完全按分区找时,把「只进这些分区」填上即可

2. 候选列表固定 8 个

  • 统一发现上限为 8(「下一间」取 9 个再排除当前房间)
  • 有分区筛选时最多复核 96 个房间,尽量凑满 8
  • 设置页显示「候选 N/8」

3. 重复进入冷却改成分钟

  • 新增 revisitMinutes,默认 360 分钟,设置页可直接改
  • 旧配置的 revisitHours 自动换算,不会丢

4. 保存配置

  • 逗号列表输入改为每次输入即同步父状态;删完关键词立刻保存不会拿到旧值
  • 保存成功提示「已保存到本地配置,下次打开直接读取」

5. 登录状态

  • 打开设置页时用 /whoami 实际校验一次,不再只凭凭据文件存在就显示「已登录」
  • 登录成功后账号写入本地配置,下次打开仍显示
  • 未登录但本地有上次账号时,显示「上次登录:…(登录已失效,请重新扫码)」,不再误显示成当前登录

6. 「最近在做什么」统一人气

  • 进入房间的活动记录和叫醒提示词不再写「在线 N 人」
  • 旧活动记录显示时自动把「在线 N 人」兼容成「人气 N」

验证

  • 关键词清空 + 只进「娱乐/生活」:候选 8/8,全部为允许分区,人气 0–265
  • 30 个单元测试通过;GitHub Actions(Windows)success

升级

git pull
npm install

重启一次 DSH,刷新设置页。

v0.1.4 · 修人气/候选/时间显示,下一间不再灰

Choose a tag to compare

@1a125 1a125 released this 26 Oct 17:52

聊天鲸 v0.1.4 · 修人气/候选/时间显示,下一间不再灰

这版针对你报的 5 个问题:

1. 「最近在做什么」时间对不上

以前直接截 ISO 字符串的 11..19,显示的是 UTC 时间;现在按本地时区格式化,和系统时间一致。

2. 在线人数显示不对

B 站公开接口的 online 实际是人气值,不是精确在线人数(17060 人气的房间可能只有几个人说话)。界面统一改叫「人气」,并加说明;不再把旧配置的 maxViewers=30 当在线人数用——这正是之前几乎筛不到房的原因。

3. 候选刷不出来

  • 新增「人气上限」maxPopularity,默认 3000,0 = 不限;想更冷清可设 500
  • 关键词清空时用「刚开播/聊天/新人…」宽泛词,不再只搜「聊天」
  • 「只进这些分区」会作为搜索词参与发现(搜「娱乐」「生活」),并搜完多个词再停,不会只搜第一个词就结束
  • 同一间房冷却从 7 天改为 revisitHours(默认 6 小时)
  • 低人气房间排序更靠前

实测:关键词清空 + 只进「娱乐/生活」→ 搜到 110 个可用候选,候选列表 5 个,人气 7–26。

4. 「下一间」按钮永远灰

不再因为 mode=off 禁用;从「停着」点下一间会自动切到「只看不说」再进入。候选第一个刚好下播/限流时会依次尝试前 5 个,不会整次失败。

5. 关键词小字描述

改成真实行为:每轮轮流搜最多 4 个词、多词同时命中优先、分区名也参与搜索、留空用宽泛词。

升级

git pull
npm install

重启一次 DSH(清掉旧热重载实例),然后刷新设置页。本机已恢复 mode=off + 演练模式。

28 个单元测试通过;GitHub Actions(Windows)success。