前言¶
DeepSeek Harness (DSH) 的插件生态允许对界面进行灵活扩展。dsh-scroll-piano 插件将聊天区右边缘的竖条转化为乐器。当鼠标滑过该区域时,音高由纵向位置决定(越上越高,特雷门琴风格)。
核心功能¶
该插件通过以下机制实现交互:
- 音效生成:鼠标滑过聊天区右边缘竖条时触发音效。音高与鼠标纵向位置成正比,越靠上音越高,越靠下音越低,默认音域为 C3–C6。
- 消息刻度:竖条上显示「我的消息」的蓝色横杠。这些刻度基于消息在内容流中的位置锚定,与滚动无关,因此无论对话多深,消息刻度始终可见。
- 消息预览:当鼠标靠近某条消息刻度(±16px)时,显示该消息的正文气泡(最多3行)。其他位置不显示任何文字。
- 消息跳转:点击蓝色横杠或预览气泡,会平滑滚动到对应消息位置。
- 控制胶囊:左下角提供一枚可拖动的胶囊。胶囊包含 ON/OFF 开关和音量滑块。设置会保存到
localStorage。拖动胶囊位移超过 6px 会触发拖动逻辑。
安装与启用¶
通过官方命令安装插件:
dsh plugin --profile desktop add dsh-scroll-piano
安装后,左下角会出现 🎵 滚动钢琴 ON/OFF 胶囊。首次出声需通过点击开关或首次滑动触发一次用户手势,以解锁 AudioContext。
使用方法¶
- 刮奏:在聊天区右侧竖条上纵向滑动鼠标,即可演奏出钢琴音。
- 查看与跳转:鼠标靠近蓝色刻度查看消息预览,点击刻度或气泡跳转到该消息。
- 控制音量:点击胶囊上的开关切换,拖动胶囊右侧滑块调整音量。
技术细节与注意事项¶
- 触发区域:触发区是聊天区滚动容器的右边缘,而非窗口右边缘。这确保了右侧面板打开时不会误触发。
- 定位逻辑:使用
[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 找不到包。