聊天鲸(dsh-bili-chat-whale):让 DSH Agent 自主蹲 B 站冷门直播间陪聊

前言

在 DSH 里跑 agent,常见做法是接 API、查文档、改本地仓库。若希望 agent 能「在场」——进真实直播间、感知主播在说什么、画面在发生什么,再决定是否接一句短弹幕——需要自己拼 B 站直播搜索、拉流、弹幕 WebSocket、语音识别和视觉理解,还要处理发言频率、账号风险与权限沙箱。聊天鲸(dsh-bili-chat-whale)把这条链路做成 DSH 插件:由宿主负责发现房间、蹲房、听看与闸门,agent 只在被叫醒时通过 CLI 决定说、换房或沉默。

下面介绍插件定位、能力边界、安装步骤与典型协作方式。事实以仓库 README 与 package.json(当前发布 v0.2.0,MIT)为准。

这是什么

聊天鲸是维护者 1a125 发布的 DSH 联网工具类插件(社区目录:SkillHub 条目)。一句话定位:让 DSH 里的 agent 自己去找冷清的 B 站直播间,蹲进去,听懂主播在说什么、看懂画面在发生什么,再用一句短弹幕陪聊。初衷是刚开播、观众少的房间缺一个会接话的人。

源码与说明:https://github.com/1a125/dsh-bili-chat-whale。

核心功能

自主找房与蹲房

  • 自主发现:按兴趣关键词搜直播间;多条关键词同时命中优先;按「人少 + 兴趣命中 + 新主播」挑房间。
  • 分区导航:可只进某些直播分区,也可排除多个不想去的分区(父分区/子分区名都匹配)。
  • 蹲房:弹幕 WebSocket 常驻;主播下播、待够时间、连续没声音没画面或抓流失败时自动换下一间。
  • 刷新候选:设置页「刷新候选」重跑发现;「下一间」进入当前评分最高的候选,而不是只换列表。
  • 主动巡查:待命超过设定秒数自动清冷却重新找房;被主播或弹幕点名会优先搭话。
  • 关注与日记:可自动关注聊得来的主播(每日上限),并巡查关注列表中正在直播的主播;按人设生成观察日记,结束前自动保存。
  • 巡游时间段:可设跨天时段;不在时段、停着或关闭主动巡查时停止抓流、语音、弹幕和巡查,避免空耗 token。

听懂、看懂、感受弹幕

插件不依赖主播配合,也不走 B 站字幕接口,分三层拼成「一次观察」:

  1. 声音 → 文字(本地 SenseVoice)
    每轮用 Node 抓 20 秒直播流(FLV),ffmpeg 转成 16kHz 单声道 WAV;常驻 worker 用 sherpa-onnx-node + SenseVoiceSmall(int8,约 240MB)做 VAD 分段识别。音频不出本机,模型默认落在 <DSH_HOME>/chat-whale/asr/sensevoice。识别器不可用时,提示词会写明「这段没听到」,不让 agent 编造听到的内容。

  2. 画面 → 描述(三级梯队)
    优先级依次为:DSH 视觉模型(ctx.llm + 图片附件)→ OpenAI 兼容的 HTTP 视觉接口 → Windows 本机 OCR(Windows.Media.Ocr)。同一轮 2 帧拼成一张图,只调用一次;auto 模式按 1 → 2 → 3 退避,失败会记原因。

  3. 弹幕 → 现场气氛
    WebSocket 监听 DANMU_MSG、SUPER_CHAT_MESSAGE、SEND_GIFT、WATCHED_CHANGE、PREPARE 等,把最近 10 条弹幕、在线人数与下播信号交给 agent;主播提到「弹幕」「大家」等词时会提前叫醒 agent。

Agent 协作与可刹车

宿主不替 agent 发言。到点把最近观察、弹幕、互动状态与规矩拼成提示,投递到专属会话 bili-chat-whale(工作目录 <DSH_HOME>/chat-whale-work)。agent 通过 CLI 三选一:say(过闸门后才发)、next(换一间)或沉默。

默认 演练模式:say --go 也只记录「本来要说什么」,不发网络请求。条数、间隔、每日总量、禁用词、重复检测均可配。仓库 README 明确提示:用自动化账号在直播间发言可能违反 B 站规则;真要关闭演练前需自行评估账号风险。

其它能力包括:检查 GitHub Release 更新(git 官方仓库安装可一键更新,更新后需重启 DSH)等。

安装与启用

依赖

  • Node 24(DSH 自带或本机 Node 均可)。
  • ffmpeg:仓库不带二进制;可在设置页「运行环境部署 → ffmpeg → 下载 ffmpeg」装到 <DSH_HOME>/chat-whale/bin/,或自行安装并放入 PATH / 插件 bin/。
  • sherpa-onnx-node:不随插件安装;DSH 实验性语音输入包会一并装上。缺失时设置页会报「sherpa-onnx」,语音不可用但其它功能仍可运行。
  • SenseVoice 模型:首次在设置页点「下载模型」(约 240MB,HF-Mirror 优先并校验 SHA-256),或指定自有模型目录,或改用 DSH 内已就绪的语音服务。

装进 profile

若当前 DSH 支持 npm 规格,在 PowerShell 中执行:

dsh plugin --profile web add "github:1a125/dsh-bili-chat-whale"

也可通过 DSH 插件管理页安装本地目录(需先在目录内 npm install)。装完重启或热加载后,设置 → 聊天鲸 会出现新的一节。

第一次用(三步)

  1. 打开「运行环境部署」,按提示补齐 ffmpeg、语音模型、sherpa-onnx、指令通道。
  2. B 站登录:设置页扫码;登录态写入 ~/.bili-ai/credentials.json,界面永不回显。
  3. 先演练:保持演练模式,模式选「只看不说」或「会开口」跑一轮,核对「主播刚才在说」、画面描述/OCR、活动记录里的拟发内容;确认后再关闭演练模式。

典型用法

设置页要点

分组 要点
状态 「停着 / 只看不说 / 会开口」;演练模式开着时不真发弹幕
找房 兴趣关键词、避开词、在线人数上限(默认 30)、每间停留与每小时进房上限
说话规矩 每间条数、间隔、每小时/每天总量;默认约 150 秒考虑说一句
听 / 看 ASR 引擎(自动 / 本地 SenseVoice / DSH 语音服务 / 关);视觉方式(自动 / DSH 模型 / HTTP / 仅 OCR / 关)

可选环境变量(一般不必设):FFMPEG、CHAT_WHALE_NPM_REGISTRY、CHAT_WHALE_SHERPA / DSH_SHERPA_ROOT、CHAT_WHALE_NODE、CHAT_WHALE_VISION_API_KEY、CHAT_WHALE_CONFIG。密钥只进 DSH 凭据服务或环境变量,仓库不含 API Key 或 Cookie。

Agent 侧 CLI

agent 在沙箱中不直接写宿主状态目录;CLI 把请求写入会话工作区 .chat-whale/inbox/,由宿主每秒扫描执行:

# 说一句(默认仍演练;配置关闭 dry-run 且闸门通过才真发)
node "<插件目录>\tools\chat-whale.mjs" say --text "这句接得挺自然" --go

# 换一间
node "<插件目录>\tools\chat-whale.mjs" next --reason "主播在引导刷礼物"

# 调试与运维
node "<插件目录>\tools\chat-whale.mjs" status
node "<插件目录>\tools\chat-whale.mjs" discover
node "<插件目录>\tools\chat-whale.mjs" observe --json
node "<插件目录>\tools\chat-whale.mjs" deps --json

配置与状态主要落在 <DSH_HOME>/bili-chat-whale.config.json 与 <DSH_HOME>/chat-whale/(含 state.json、activity.jsonl、各房间 events.jsonl / session.jsonl 等)。

适用场景与注意

适合谁:已在用 DSH、希望 agent 在 B 站冷门直播间做「听 + 看 + 可选短弹幕」实验的开发者;需要 Windows 环境才能用到本机 OCR 第三级,语音与拉流依赖 ffmpeg 与 SenseVoice 部署。

使用前请知悉:

  • 插件以当前 DSH 进程权限运行;安装前应自行阅读源码与 MIT 许可证,评估 B 站账号与社区规则风险。
  • 默认演练不真发弹幕;关闭演练前务必理解 README 中的平台风险提示。
  • DSH 生态是「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

聊天鲸把「搜冷门房 → 拉流听看 → 弹幕上下文 → agent 决策 → 多层发言闸门」收成一条可配置的 DSH 插件链路,适合在可控演练下验证 agent 是否真的接得住直播现场。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye