Repository navigation
Releases: 1a125/dsh-bili-chat-whale
Releases · 1a125/dsh-bili-chat-whale
Release list
v0.2.0 · 巡游时间段、停摆省 token、结束前自动日记
聊天鲸 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 · 关注前由聊天鲸自己判断
聊天鲸 v0.1.12 · 关注前由聊天鲸自己判断
参数条件不再是「满足就关注」,只是候选门槛。
现在流程
- 至少 4 条真实弹幕
- 至少待 6 分钟
- 你开口后至少 3 条别人弹幕,或有人提到你的名字
- 再由聊天鲸自己判断:把房间标题、主播、你说过的话、最近弹幕、听到/看到的片段交给文本模型,以自己的兴趣和人设决定要不要关注
- 模型说不感兴趣 / 不确定 / 没有可用模型 / 判断失败 → 不关注
判断规则
- 只是热闹、被点名、礼貌、条件凑够 → 不关注
- 不需要为了礼貌关注任何人
- 不感兴趣就明确拒绝
- 结果必须明确;含糊的一律保守拒绝
其他
- 隐藏彩蛋主播仍按原约定自动关注,不受这层判断限制
- 已有关注不会自动取关
- 当前本机阈值仍是 4 条 / 6 分钟 / 3 条回应 / 每天 5 个,且自动关注开着
43 个单元测试通过;GitHub Actions success。
v0.1.11 · 收紧自动关注条件
聊天鲸 v0.1.11 · 收紧自动关注条件
之前只要发过 2 条、待过 3 分钟就可能关注,确实太宽松。
现在必须同时满足
- 至少发过 4 条真实弹幕
- 至少待过 6 分钟
- 你开口之后,至少有 3 条别人的弹幕,或有人(主播/弹幕)直接提到你的名字
- 每天最多关注默认 5 个(设置页可调)
其他
- 关注判断提前到离开房间之前,避免「待够 8 分钟先走了,永远来不及关注」
- 设置页新增「至少发过几条 / 至少待过几分钟 / 至少几条回应」三个阈值
- 彩蛋主播仍不受条数与回应限制,但每日上限照常生效
- 已经被关注的人不会自动取关;如果之前关注多了,需要手动清理
- 当前本机配置已同步收紧为 4 条 / 6 分钟 / 3 条回应 / 每天 5 个
40 个单元测试通过;GitHub Actions success。
v0.1.10 · 观察日记重写:先理解、再写、再润色
聊天鲸 v0.1.10 · 观察日记重写:先理解、再写、再润色
改了什么
- 观察日记从「拼日志」改成三遍模型流程:
- 整理回忆:结合画面纠正语音识别里的同音字/断句,按直播间归并,挑出有情绪的瞬间
- 写草稿:第一人称回忆,不再直接复述活动日志
- 润色成日记:重写成通顺的日记,自己取标题,正文 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 · 自动关注、关注列表巡查、今日观察日记
聊天鲸 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 · 修复限流/登录态误显示/抓不到画面
聊天鲸 v0.1.8 · 修复扫码登录后全局限流、登录态误显示与抓不到画面
问题根因
- 新版
getDanmuInfo对当前账号返回-352,旧代码把所有 code 级风控写成全局 5 分钟熔断,导致 playUrl、截图、语音、whoami 全被本地 ban 挡住,于是表现成「每个直播间都限流」「抓不到画面」「登录变未登录」。 - 扫码登录只拿到 SESSDATA/bili_jct,没有 buvid3/buvid4;缺少设备指纹会加大直播接口风控概率。
/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 · 检查更新 + 隐藏彩蛋
聊天鲸 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 · 主动巡查、点名搭话、模糊语音还原
聊天鲸 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、冷却可设、保存/登录修复
聊天鲸 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 · 修人气/候选/时间显示,下一间不再灰
聊天鲸 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。