dsh
OpenPetsHQ/openpets将 DeepSeek Harness 的生命周期状态、错误与审批请求,桥接到本地运行的 OpenPets 桌面伙伴。
在 DeepSeek Harness 网页界面里,任务完成、等待授权或出错中断时响一声提示音,并在右上角弹出一条通知。
| 场景 | 触发条件 | 通知条颜色 |
|---|---|---|
| 任务完成 | 会话从 running 变回空闲,且没有等你的交互 | 绿 #2ea043 |
| 需要你确认 | 出现 pendingInteraction(授权 / 确认弹窗) | 黄 #d29922 |
| 出错 / 被中断 | 本轮结束但带错误标记 | 红 #f85149 |
声音只负责「叫你一声」,三种场景用同一个音型(同音双响);区别只体现在通知条的文字和颜色上。想区分场景,改 lib/client.cjs 里的 CALL_SHAPE 即可。

×Npointer-events:none,只有卡片本身可点,不挡其他操作transform / filter 的祖先,position:fixed 会失效,插件每帧测量并补偿,浮层始终贴在视口右上角需要 DSH 的 Web GUI(插件声明了
"platform": "web",TUI 不适用)。
方式一:一行命令
dsh plugin --profile web add github:Su-1003/dsh-notify-sound
桌面端的 profile 名通常是 desktop,按你的实际配置替换 --profile 后的名字。
方式二:手动放进去
git clone https://github.com/Su-1003/dsh-notify-sound.git "$env:USERPROFILE\.dsh\plugins\dsh-notify-sound"
然后在 GUI 的 设置 → 插件 → 本地开发 里选中这个目录安装,成功后就是下面这张卡:

装完重启 DSH,或刷新 Web GUI。
初次使用注意:浏览器规定必须有一次用户手势才允许出声,所以请先在界面上点一下或敲一下键 —— 插件会在这时解锁 AudioContext,之后才会响。
现在没有设置界面,两种改法:
lib/client.cjs 里的 DEFAULT_SOUND_SET(可选:clean / soft / bell / alarm / minimal / wood),刷新 GUI;localStorage.setItem("dsh-notify-sound.style", "bell") —— 键名固定,刷新后按这个恢复。lib/index.js),全部行为在浏览器半边 lib/client.cjs。cordis.patch.yml 把插件行插入 profile 名册
lib/index.js 宿主半边:空壳,只提供一个可挂载的 apply
lib/client.cjs 浏览器半边:状态跟踪 + 提示音合成 + 通知浮层(预构建,无需构建步骤)
判定逻辑全部来自 DSH 客户端 uiSession.sessionStatus 的状态迁移:pendingInteraction 出现 → 需要确认;running 由真变假且无待办 → 完成或出错。插件在 ui-session 之后激活也来得及(会轮询 15 秒等待服务就绪)。