安装
插件是 bundle:自带 cordis.patch.yml,自我激活——一条命令,无需手动改 patch。
# 本地目录安装
dsh plugin --profile web add ./dsh-livechat
# npm 安装(预构建,免 allowBuilds 构建授权)
dsh plugin --profile web add dsh-livechat
# GitHub 安装
dsh plugin --profile web add github:huashenglian/dsh-livechat
# tarball 安装(pnpm pack / npm pack 打包后)
dsh plugin --profile web add ./dsh-livechat-0.2.0.tgz
重启 dsh web 后打开 http://127.0.0.1:3080。弹幕覆盖层与浮动控制球会出现在对话区上方。
[!NOTE]
bundle 自带 cordis.patch.yml 自我激活(insert id: livechat)。不要在 profile 的 patch 里重复 insert——二次 insert 启动时会报 duplicate loader entry id: livechat。
若还没有 dsh CLI,可直接启动 web 服务:
npx @deepseek-ai/dsh web
快速健康检查
curl http://127.0.0.1:3080/api/danmaku/health
# {"ok":true,"name":"dsh-danmaku","version":"0.4.3"}
它做什么
当 agent 发送消息、回复完成、调用工具或完成任务时,一串弹幕飘过对话列——就像看直播。预设包覆盖通用 / 编程 / 闲聊氛围,可选 LLM 按节流生成即时、贴合上下文的吐槽。拖球提供快捷控制;设置卡可调一切。
弹幕实际演示
agent 工作时弹幕飘过对话区——多轨道、加权配色、右上浮动控制球。
功能
亮点
- 三种布局:滚动、顶部固定、底部固定——按权重生成
- 防遮挡:阅读时覆盖层变暗,热闹时亮起
- LLM 安全降级:生成失败→静默降级预设,无报错弹窗
- 分会话记忆:点赞/回放过的弹幕会重现;删除会话自动清理池
- Chromium 优先:为 Edge / Chrome 调优;
translate3d、页面 hidden 暂停、同屏上限
- 暂停不消失:悬停/详情锁定的弹幕会一直留在画面,直到恢复滚动并离开范围
- 配置不再重置:每次保存同时写本地镜像(
$DSH_HOME/danmaku-config.json)与 settings.yaml 里的精简 danmaku: 段;启动按「镜像 → settings → 默认」解析,重启不会丢配置
- 会话显名称:弹幕库编辑器用 dsh 的真实会话名标注每个弹幕池,不再是截断的 sessionId
架构
dsh-livechat/
├─ package.json # dsh.bundle + dsh.client 声明
├─ cordis.patch.yml # 自激活 bundle 层(insert id: livechat)
├─ lib/
│ ├─ index.js # Host:settings 命名空间、session/event 触发环、HTTP 路由、可选 LLM
│ ├─ client.js # Client:shell.overlay 覆盖层 + 设置卡 + DOM 渲染器 + 拖球
│ ├─ presets.js # 共享:预设包、抽样、轨道碰撞纯函数
│ └─ emoji-lib.js # 表情库:文件夹、导入(git/zip)、权重、manifest
├─ tests/presets.test.js # 单元测试(node --test)
├─ docs/ # 模块文档(英文 *.md / 中文 *.zh-CN.md)
└─ assets/ # 演示截图与封面图
- Host(
lib/index.js):注册 danmaku settings 命名空间,观测 session/event 进入触发环形缓冲,提供 config/trigger/LLM/pool HTTP 路由,可选经配置的 LLM 生成弹幕。
- Client(
lib/client.js):自包含 window.__ModuleLoader__ 工厂——在 shell.overlay 挂载 pointer-events:none 覆盖层,DOM 渲染(translate3d),驱动拖球、设置卡(settings.plugin.item)、池编辑器。
- 共享(
lib/presets.js):预设包、加权抽样、布局/颜色选取、轨道碰撞检查——全为纯函数,有单元测试。
渲染器接口对齐设计文档(参考文档/danmaku-renderer-design.md)。首版发布 L5 DOM 后端;架构预留平滑升级到 WebGL2 / Worker+WebGL2,业务层不变。
测试
node --test tests/presets.test.js
卸载
dsh plugin --profile web remove dsh-livechat
会移除依赖与 bundle 条目。若服务仍在运行时卸载,会一并清理弹幕库缓存(~/.dsh/danmaku-pools/)。也可在「库编辑器」右上角用红色「清空弹幕库」一键删除全部缓存。
许可证
MIT