dsh-whale-bridge
串联 pet-whale 与 dsh-whale-widget:桌宠靠近挂件时进入「假装工作」并转身面向挂件,挂件扫到桌宠时用默认气泡播一条默认文字(不改动两个前置插件的源文件) 适合同时使用桌宠与挂件插件的用户,实现两者靠近时的联动交互。
インストール
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:COH2357/dsh-whale-bridgeドキュメント
README 全文を読む ↗3. 配置
配置文件即设置命名空间 dsh-whale-bridge(宿主半导出了 volatile Config,DSH 会自动生成设置表单)。
优先级:设置页 > localStorage['dsh-whale-bridge:config'] > 内置默认值。
| 字段 | 默认 | 说明 |
|---|---|---|
enabled | true | 总线开关,关掉会立刻退出假装工作并停止播报 |
faceWidget | true | 假装工作时让桌宠贴图面向挂件(转向 + 歪头;只改内层 svg 的内联 transform,不动原插件代码/属性) |
leanMaxDeg | 26 | 最大歪头角度(度)。挂件相对桌宠的垂直偏差拉满时就是它 |
leanRangePx | 240 | 垂直偏差到多少像素算"拉满"(超出按上限截断) |
leanDeadPx | 12 | 垂直偏差小于该值就不歪头(避免挂件与桌宠几乎等高时轻微晃动) |
pitchRatio | 0.35 | 仰角剪切占歪头角度的比例(skewY(θ × 该值)),0 = 只转不切 |
faceTransitionMs | 180 | 转向/歪头的过渡时长(ms),0 = 硬切;prefers-reduced-motion 时自动归零 |
faceWhileDragging | true | 拖拽桌宠期间是否继续接管朝向(锁定拖拽开始时的方向、角度实时跟随;false = 拖拽期让位给 pet-whale 自己的抓取朝向) |
nearGapPx | 140 | 桌宠与挂件的间距 ≤ 该值算"靠近"(相交为 0) |
releaseGapPx | 300 | 间距 > 该值算"远离";两者之间是迟滞区,保持现状不抖动 |
scanGapPx | 200 | 挂件视野与桌宠的间距 ≤ 该值算"看到";0 = 关闭播报 |
scanFacingOnly | true | 只认挂件前侧那半边贴图作为视野 |
speakIntervalMs | 25000 | 两次播报的最小间隔(防闪烁) |
pretendSettleMs | 400 | 靠得多近多久才进入假装工作 |
releaseSettleMs | 1000 | 离开多久才退出假装工作 |
debug | false | 打开后把决策日志打到 console |
运行时 API(调试用)
window.__dshWhaleBridge.getConfig() // 当前生效配置
window.__dshWhaleBridge.setConfig({ ... }) // 局部覆盖(写 localStorage,立即生效)
window.__dshWhaleBridge.resetConfig() // 清掉本地覆盖,回到设置页/默认值
window.__dshWhaleBridge.status() // 快照:可见性、gap、sensorGap、seeing、speakCount、pretend 所有权…
window.__dshWhaleBridge.speakNow() // 忽略间隔,允许下一次播报
window.__dshWhaleBridge.setPretend(true) // 手动开关一次 pretend(走合成右键,等价于用户点菜单)
window.__dshWhaleBridge.tick() // 立即跑一次决策(调试)
不抢用户的手
- 只有在本桥接自己打开假装工作(
localStorage['dsh-whale-bridge:owned'] === '1')时才会去关它; 用户手动开着假装工作时,桥接不接管、远离也不关。 - 自动开启后用户自己关掉 → 本轮"靠近回合"内不再抢,直到桌宠真的离开过再回来。
- 刷新页面后如果发现
owned=1且 pretend 还开着,会重新接管(避免刷新一次就永远假装工作)。