# dsh-plugin-danmu

为 DeepSeek Harness（dsh）提供实时弹幕，将智能体的推理、工具调用和任务进度等文本内容插入对话区域内滚动展示。

使用其他语言阅读：[English](./README.md) | 简体中文

## 什么是弹幕？

弹幕是一种网站的互动机制，最早出现在日本的 [ニコニコ動画](https://www.nicovideo.jp)（以下简称 N 站）上。用户可以将自己发送的评论以流动字幕的形式显示在站点画面上。该机制后来在中国由 [哔哩哔哩](https://www.bilibili.com)（以下简称 B 站）广为传播，如今你能在很多视频平台中发现弹幕的身影。

值得注意的是，「弹幕」一词本是日语中的军事用语「弾幕（だんまく）」，英文常译作「barrage」，指不追求精确瞄准、以大量弹丸覆盖目标的射击方式。

随着中国互联网的发展，现如今「弹幕」一词在中文中一般用来指代「视频弹幕」，并由此诞生了 danmu 这个独特的术语。中文里的「弹幕（danmu）」与日语「弾幕（danmaku）」含义并不相同，而 N 站的留言功能自始就称作「コメント（comment）」。

因此，本项目使用 danmu 作为命名，而不是 danmaku 的日语罗马音。

## 安装

你可以在 dsh 的插件管理器中，通过输入 `dsh-plugin-danmu` 来进行安装。安装后插件在列表中以「智能体弹幕」显示。

DSH 通过 pnpm 进行依赖管理，而 pnpm 的 [`minimumReleaseAge`](https://pnpm.io/zh/11.x/supply-chain-security) 策略会跳过发布时间未满规定时长（最多不会超过 24 小时）的版本，因此在安装插件时可能下载到较旧的版本。

如果你想马上使用最新版插件，可以直接输入版本号进行安装，例如 `dsh-plugin-danmu@^0.3.0`。也可以等待一段时间，待新版本满足该策略后再按包名安装。

## 使用

安装插件并启用后，弹幕活动区域会跟随当前会话，在智能体开始输出时自动发送。

弹幕只绘制在对话内容区内，不会覆盖左侧会话列表、右侧边栏和头部。输入框与底部信息栏也在活动区域内，弹幕会短暂经过它们，与 B 站视频画面里的控件一致。整层点击穿透，不影响选中文字或点击按钮。

表现对齐 B 站网页端播放器，速度、字号、行分配和内容区放不下时的处理方式都与其一致。

如需关闭，在插件管理器中停用本插件即可。

## 常见问题

| 问题                 | 说明                                                                                      |
| -------------------- | ----------------------------------------------------------------------------------------- |
| 看不到弹幕           | 文本只在对话时出现，看不见就证明大肥鱼没在思考                                            |
| 少了部分弹幕         | 内容区放不下时文本会被丢弃，与 B 站行为一致                                               |
| 偶尔会有特别长的弹幕 | B 站单条弹幕限制 100 字，本项目没有限制，超长行会按句子边界拆分，但单句和表格行不会被拆开 |
| 亮色主题下字体是白色 | 与 B 站样式一致，依靠黑色描边保证可读性                                                   |
| 显示 emoji 吗        | B 站在最近几年给弹幕过滤了 emoji，本项目未跟随，依然正常显示                              |
| 调整弹幕样式         | 点输入框左下角的「弹」按钮即可打开设置悬浮窗                                              |

## 图标

图标中的「弹」字形取自 [萝莉体](https://www.fonts.net.cn/font-33402852359.html)，这是一款非商业免费字体，字体版权归原作者所有。图标颜色使用 DeepSeek 主题色 #4D6BFE。

## 路线图

- [x] 滚动弹幕：速度、字号和行分配规则对齐 B 站网页端播放器
- [x] 顶部弹幕：轮次、步骤、重试和上下文压缩提示在活动区域顶端居中显示
- [x] emoji：原样显示
- [x] 设置界面：全局速度、字号、不透明度、显示区域
- [ ] 设置界面：按事件单独开关弹幕
- [ ] 彩色弹幕：按内容类型或来源区分颜色
- [ ] 高级弹幕：图片和动画弹幕
