前言¶
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 找不到包。