All plugins

DSH / BUNDLE / CLIENT-UI

dsh-dudulu

v0.5.5Cmjingahaha / dsh-dudulucca6ea51e2

InstallableBundlesUI & client pluginsCommunity · Topic auto-analysisWeb UI

Overview

dsh-dudulu

嘟一声 · 任务提示音插件:任务完成、任务暂停(等待审批/提问)、出错时播放【嘟嘟噜~】。检测与播放全部在浏览器端完成——通过 dsh-client-connection 的 sessions store 直接监听 pendingInteraction / running 边沿(比 turn/end reason 推断更准),声音在你开网页的那台机器上响,无需服务端音频设备。子代理不响。设置存 localStorage:三类通知开关、音量滑条、自定义提示音(上传,<1MB)。默认提示音为内置的 dudulu01.mp3(base64 内嵌进 client.js,开箱即响,不依赖任何音频文件托管)。

README / EN

Package documentation

dsh-dudulu(嘟一声)

DeepSeek Harness (dsh) 网页界面的任务提示音插件:任务完成、任务暂停(等待审批 / 提问)出错时播放【嘟嘟噜~】。

检测与播放全部在浏览器端完成——声音在你开网页的那台机器上响,与 DSH 服务端跑在哪台机器、什么操作系统无关。Windows / Linux 都行,不需要在服务端装播放器或配置声卡。

它解决什么

DSH 跑在 Kali / 远程机、你从 Windows 浏览器(甚至 SSH 隧道)访问时,原来服务端本地播放的声音你根本听不见。这个插件把"判定 + 出声"都放到浏览器:网页开着,任务有进展就响,你随时能知道 agent 卡住等你了。

工作原理(v0.5.5)

适配 DeepSeek Harness 0.1.1-rc.2 及以后settings.section 按新版 list slot 契约注册(slots.register(options, Component)options 必须带全局唯一 id + label 函数)。旧版 {title, component} 写法会抛 list slot "settings.section" requires options.id 导致插件加载失败。

通过 @deepseek-ai/dsh-client-connection 提供的 sessions store 直接监听会话状态边沿(参考 dsh-alert-sound 的同款做法):

触发 信号 说明
任务暂停 pendingInteraction === 'approval' / 'question' 直接信号,比 turn/end 的 reason 推断更准
任务完成 running 由真 → 假,且会话无错
出错 running 由真 → 假,且会话有错(turn-error / lastAgentError
  • Host 半片是空占位:只为让 bundle 按包名注册;判定、播放、设置全在 client/client.js
  • 播放用 Web Audio API默认提示音是内置的 dudulu01.mp3(你提供的音频,base64 内嵌进 client.js,开箱即响,不依赖任何音频文件托管);仅当该音频解码失败时才回落**内置合成音「嘟嘟噜」**兜底(三段上行短音,A5→D6→E6,纯 oscillator 生成,不落盘)。
  • 浏览器自动播放策略:首次点击 / 按键后解锁 AudioContext,之后照常响。

通知类型

默认三类都开,可在设置页分别关:

  • 任务完成
  • 任务暂停(等待审批 / 提问)
  • 出错

子代理(subagent)不响。

设置(存 localStorage)

偏好保存在浏览器 localStoragedsh-dudulu.v1 键下,刷新 / 重启保留:

  • 总开关
  • 三类通知各自的开关
  • 音量滑条(0–100,拖动即试听)
  • 默认提示音为内置 dudulu01.mp3;可上传 <1MB 的自定义音频覆盖,支持「恢复默认」(回到 dudulu01.mp3)与「清除」(清除后回落内置合成音「嘟嘟噜」)

打开 设置 → dudulu · 嘟一声 配置。

要求

  • DeepSeek Harness web profile(dsh web
  • 支持 Web Audio 的浏览器
  • 网页需保持打开(关了就不响);首次需一次用户手势解锁声音

安装

# 方式一(默认):git-over-HTTPS 走 github.com 主域
dsh plugin --profile web add github:Cmjingahaha/dsh-dudulu

# 方式二(备用):github.com 主域不可达、仅 codeload.github.com 可达时,
# 用源码压缩包安装(实测该网络下 git-over-HTTPS 会静默挂起)
dsh plugin --profile web add https://codeload.github.com/Cmjingahaha/dsh-dudulu/tar.gz/refs/heads/main

重启 dsh web,打开 设置 → dudulu · 嘟一声 即可。

故障排查

  • 设置页没有「dudulu · 嘟一声」条目:先看浏览器 F12 控制台是否报 failed to apply loader entry (dsh-dudulu)apply() 抛错会让整个插件条目回滚——设置面板和提示音会一起失效(同一根因的两个表现)。
  • 确认软链存在:~/.dsh/profiles/web/node_modules/dsh-dudulu → ~/.dsh/plugins-local/dsh-dudulu(host 端 bare specifier 解析依赖它)。
  • 修改插件后务必硬刷新浏览器(Ctrl+Shift+R)——前端会缓存旧的 client bundle。

项目结构

├─ package.json        # dsh.bundle + dsh.client(声明注入 dsh-client-connection 等)
├─ cordis.patch.yml    # 组合补丁:插入一行 host 占位
├─ index.js            # Host 半片(空占位)
└─ client/
   └─ client.js        # Client 逻辑:sessions 边沿检测 + WebAudio 播放 + 设置面板

许可

MIT