liceses/dsh-hmm-wait0

dsh-hmm-wait

Hmm-Wait 思维链弹幕:监听模型思维链(reasoning)输出,当出现 hmm / wait / let me 等触发词时,在 dsh Web GUI 上弹出可配置的弹幕动画(方向 / 速度 / 抖动 / 样式均可调),并带官方设置面板开关。

包名
dsh-hmm-wait
版本
0.1.0
最近更新
2026年8月26日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:liceses/dsh-hmm-wait

4. 重启 dsh 或在设置页 → 插件 → 可配置 中找到 Hmm-Wait 卡片


> 从 Release 直接安装 tgz:`dsh plugin --profile web add ./dsh-hmm-wait-0.1.0.tgz`(file: 依赖)。
>
> 详细装配说明(bundle patch / dsh.client 声明 / 如何卸载)见 [docs/ARCHITECTURE.md](https://github.com/liceses/dsh-hmm-wait/blob/b2a6970c67ad4a625eebafb1dfd9b3ba0b67292e/docs/ARCHITECTURE.md)。

## 使用

1. 打开 **设置 → 插件 → 可配置**,找到 **Hmm-Wait 思维链弹幕** 卡片(官方折叠卡片风格:点标题栏展开字段表单;编辑先暂存,点"保存"生效,或"丢弃"还原)。
2. 开关:**已启用 / 已停用**(关闭后 host 完全停止监听,零开销)。
3. 点 **测试弹幕** 立即验证显示效果。
4. 正常使用:给模型发一条需要"想一想"的任务,思考链里出现 `hmm` / `wait` / `let me` 时弹幕飞过。

### 配置项一览

| 配置 | 默认 | 说明 |
| --- | --- | --- |
| 开关 enabled | true | 总开关(host 监听 + 弹幕层) |
| 触发词 triggers | hmm, wait, let me | 逗号分隔,正则自动转义 |
| 匹配位置 match | sentence-start | 句子/段首(推荐)或任意位置 |
| 大小写敏感 caseSensitive | false | 对英文触发词有效 |
| 冷却 cooldownMs | 5000 | 同一触发词防重复弹幕 |
| 限流 maxPerSecond | 3 | 全局限流 |
| 方向 direction | right-to-left | 四种流动方向 |
| 速度 speed | 120 | px/s |
| 区域 zone | top | 顶部 / 底部 / 全屏 |
| 字号 fontSize | 18 | px |
| 颜色 color | #ffd866 | CSS 颜色 |
| 透明度 opacity | 0.92 | 0.05–1 |
| 抖动 shake / shakeIntensity | on / 4px | 出现时抖动提醒 |
| 同屏上限 maxOnScreen | 12 | 超出挤掉最旧 |
| 弹幕文本 showContext / maxContextChars | 所在句 / 80 | 或仅触发词 |
| 字体 fontFamily | 继承 | CSS font-family,留空继承界面字体 |
| 框阴影 shadow | on | 弹幕背景框阴影开关 |
| 连击 HUD comboEnabled | on | Combo 连击计数(街机风) |
| 连击窗口 comboWindowMs | 6000 | 两次命中间隔超过则中断连击 |
| HUD 位置 comboPosition | 右下 | 右下/左下/右上/左上 |
| 里程碑播报 comboMilestones | on | ×10/×20/… 全屏提示 |

## 工作原理(30 秒版)

模型流式输出 (llm/stream) │ ▼ host 插件 tap ── 扫描 reasoning-delta 文本 ── 命中 hmm/wait/let me │ │ │ 检测器(句子边界/冷却/限流) │ ▼ │ combo 状态机(进程级,连击递增) ▼ ▼ SSE: /api/dsh-hmm-wait/events ◄─────── 广播 DanmakuEvent(含 combo) │ ▼ 浏览器:弹幕层(飞行+抖动) + Combo HUD(弹跳/变色/里程碑/中断动画)


- **事件源**:`llm/stream`(dsh-llm 官方 waterfall 事件),监听器是"观察者":不改写、不吞 chunk,检测异常也不影响模型流。
- **配置**:host 注册 `dsh-hmm-wait` settings 命名空间;client 把快照镜像到页面,live 生效。
- **推送**:SSE(GET `/api/dsh-hmm-wait/events`),断线自动 1s 重连 + 半开看门狗 + 重连补发最近 50 条;另有一个 POST `/api/dsh-hmm-wait/test` 用于测试。
- **连击**:host 侧 combo 状态机(挂进程级根上下文,热重载不丢),每个事件携带 `combo`/`comboMax`,浏览器只负责渲染。

## 无强版本依赖

- `peerDependencies` 全部是宿主已有包(cordis / schemastery / dsh-settings / dsh-host-webserver / dsh-client-runtime / dsh-client-ui-slots / react),不打包、不锁定 dsh 版本。
- 运行时只依赖两个字符串契约:事件名 `llm/stream` 与 chunk 的 `reasoning-delta` 形状(均为 dsh-llm 公开流协议)。
- dsh 升级后,本插件无需重装;如宿主 API 变更导致契约失效,插件只"安静失效"(不拖垮会话),且设置面板与测试弹幕仍可用。

## 开发与扩展

完整开发文档:**[docs/ARCHITECTURE.md](https://github.com/liceses/dsh-hmm-wait/blob/b2a6970c67ad4a625eebafb1dfd9b3ba0b67292e/docs/ARCHITECTURE.md)**(含目录结构、构建、发布、扩展指南:加触发词算法、改弹幕动效、加新事件源等)。

```bash
npm run typecheck   # 类型检查
npm test            # 检测器回归测试(16 用例)
npm run build       # 构建 lib/(host ESM + client CJS bundle)
npm pack            # 产出可分发 tgz

许可证

BSD-3-Clause

使用

  1. 打开 设置 → 插件 → 可配置,找到 Hmm-Wait 思维链弹幕 卡片(官方折叠卡片风格:点标题栏展开字段表单;编辑先暂存,点"保存"生效,或"丢弃"还原)。
  2. 开关:已启用 / 已停用(关闭后 host 完全停止监听,零开销)。
  3. 测试弹幕 立即验证显示效果。
  4. 正常使用:给模型发一条需要"想一想"的任务,思考链里出现 hmm / wait / let me 时弹幕飞过。

配置项一览

配置默认说明
开关 enabledtrue总开关(host 监听 + 弹幕层)
触发词 triggershmm, wait, let me逗号分隔,正则自动转义
匹配位置 matchsentence-start句子/段首(推荐)或任意位置
大小写敏感 caseSensitivefalse对英文触发词有效
冷却 cooldownMs5000同一触发词防重复弹幕
限流 maxPerSecond3全局限流
方向 directionright-to-left四种流动方向
速度 speed120px/s
区域 zonetop顶部 / 底部 / 全屏
字号 fontSize18px
颜色 color#ffd866CSS 颜色
透明度 opacity0.920.05–1
抖动 shake / shakeIntensityon / 4px出现时抖动提醒
同屏上限 maxOnScreen12超出挤掉最旧
弹幕文本 showContext / maxContextChars所在句 / 80或仅触发词
字体 fontFamily继承CSS font-family,留空继承界面字体
框阴影 shadowon弹幕背景框阴影开关
连击 HUD comboEnabledonCombo 连击计数(街机风)
连击窗口 comboWindowMs6000两次命中间隔超过则中断连击
HUD 位置 comboPosition右下右下/左下/右上/左上
里程碑播报 comboMilestoneson×10/×20/… 全屏提示

配置项一览

配置默认说明
开关 enabledtrue总开关(host 监听 + 弹幕层)
触发词 triggershmm, wait, let me逗号分隔,正则自动转义
匹配位置 matchsentence-start句子/段首(推荐)或任意位置
大小写敏感 caseSensitivefalse对英文触发词有效
冷却 cooldownMs5000同一触发词防重复弹幕
限流 maxPerSecond3全局限流
方向 directionright-to-left四种流动方向
速度 speed120px/s
区域 zonetop顶部 / 底部 / 全屏
字号 fontSize18px
颜色 color#ffd866CSS 颜色
透明度 opacity0.920.05–1
抖动 shake / shakeIntensityon / 4px出现时抖动提醒
同屏上限 maxOnScreen12超出挤掉最旧
弹幕文本 showContext / maxContextChars所在句 / 80或仅触发词
字体 fontFamily继承CSS font-family,留空继承界面字体
框阴影 shadowon弹幕背景框阴影开关
连击 HUD comboEnabledonCombo 连击计数(街机风)
连击窗口 comboWindowMs6000两次命中间隔超过则中断连击
HUD 位置 comboPosition右下右下/左下/右上/左上
里程碑播报 comboMilestoneson×10/×20/… 全屏提示