dsh-scroll-piano:基于滚动位置的特雷门琴式音效

前言

DeepSeek Harness (DSH) 的插件生态允许对界面进行灵活扩展。dsh-scroll-piano 插件将聊天区右边缘的竖条转化为乐器。当鼠标滑过该区域时,音高由纵向位置决定(越上越高,特雷门琴风格)。

核心功能

该插件通过以下机制实现交互:

  1. 音效生成:鼠标滑过聊天区右边缘竖条时触发音效。音高与鼠标纵向位置成正比,越靠上音越高,越靠下音越低,默认音域为 C3–C6。
  2. 消息刻度:竖条上显示「我的消息」的蓝色横杠。这些刻度基于消息在内容流中的位置锚定,与滚动无关,因此无论对话多深,消息刻度始终可见。
  3. 消息预览:当鼠标靠近某条消息刻度(±16px)时,显示该消息的正文气泡(最多3行)。其他位置不显示任何文字。
  4. 消息跳转:点击蓝色横杠或预览气泡,会平滑滚动到对应消息位置。
  5. 控制胶囊:左下角提供一枚可拖动的胶囊。胶囊包含 ON/OFF 开关和音量滑块。设置会保存到 localStorage。拖动胶囊位移超过 6px 会触发拖动逻辑。

安装与启用

通过官方命令安装插件:

dsh plugin --profile desktop add dsh-scroll-piano

安装后,左下角会出现 🎵 滚动钢琴 ON/OFF 胶囊。首次出声需通过点击开关或首次滑动触发一次用户手势,以解锁 AudioContext。

使用方法

  1. 刮奏:在聊天区右侧竖条上纵向滑动鼠标,即可演奏出钢琴音。
  2. 查看与跳转:鼠标靠近蓝色刻度查看消息预览,点击刻度或气泡跳转到该消息。
  3. 控制音量:点击胶囊上的开关切换,拖动胶囊右侧滑块调整音量。

技术细节与注意事项

  • 触发区域:触发区是聊天区滚动容器的右边缘,而非窗口右边缘。这确保了右侧面板打开时不会误触发。
  • 定位逻辑:使用 [data-chat-flow] 作为锚点,通过计算内容偏移量归一化刻度位置,保证刻度与消息内容绑定,而非与滚动位置绑定。
  • 依赖环境:需要 DSH 版本 >= 0.2.0-rc.2。开发环境需要 Node >= 22。
  • 独立运行:与 dsh-piano 插件独立,可共存。

本地开发安装

若需修改源码进行开发,需配置软链和热载入:

NODE=~/.dsh/dsh-runtimes/dsh-primary-runtime/dependencies/node/bin/node
PNPM=~/.dsh/dsh-runtimes/dsh-primary-runtime/dependencies/pnpm/bin/pnpm.mjs
# profile/package.json 的 dependencies 加: "dsh-scroll-piano": "link:<本目录>"
# profile/cordis.patch.yml 加:
#   - insert:
#       - id: dsh-scroll-piano
#         name: dsh-scroll-piano
cd ~/.dsh/profiles/desktop && "$NODE" "$PNPM" install --no-frozen-lockfile

顺序很重要:先 pnpm install 建软链,再触发 cordis.patch.yml 热载入,否则 loader 首次 require 找不到包。

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

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

小夜