DeepSeek Harness 插件

falling-ts/dsh-web-ding

Star 数 ★ 2 下载量(近 30 天) 1,894 分类 通知与集成 收录于 2026-08-28 npm @falling-ts/dsh-web-ding

agent 回合结束时在浏览器标签页里播放一声合成的叮,纯前端 Web Audio 发音,不经过后端、不弹系统通知。

安装

# npm 包(预构建)

dsh plugin --profile web add @falling-ts/dsh-web-ding

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:falling-ts/dsh-web-ding

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

一个 DSH Cordis 插件:当 agent 回合结束(所有轮次安静、转入空闲)时,在 浏览器里播放一声"叮"。声音完全由前端 JavaScript(Web Audio API)合成—— Node/后端从不发声,也不走 Windows/系统通知。

架构参照 dsh-force-compact: 纯监听器的 Host 半部 + 浏览器 client 半部,之间用官方 settings/document-updated 镜像通道相连。

工作方式

层 行为
Host(index.js + src/) 监听 agent/status 的 idle 转变(全部轮次与子代理结束、下一次人为对话之前;新建会话从未运行过的首次 idle 与重复 idle tick 都保持静默)。向 falling-ts-web-ding 设置命名空间写入 { phase:'done', at, sessionId, title }——title 在这里从官方 sessionProjections 的 title 投影读出,浏览器因此无需自己去取。绝不发声、绝不调用系统。
浏览器(web/client.js) 经 configForms 实时镜像命名空间;收到 at 严格更新的 done 信号后用 Web Audio API 合成一声短"叮",经标签页播放——同一瞬间在右下角弹出 Win11 风格 toast。点击 toast 展开右侧消息列表,展示全部回合结束消息(存在浏览器 localStorage,上限 100、按 signal at 去重),支持单条删除与全部删除。全程纯前端:后端不发声、不弹系统通知。

除了提示音,每次回合结束还会在右下角弹出一条 Win11 风格 toast(6 秒自动消失)。点击它即可打开右侧消息列表:最近 100 条回合结束消息保存在浏览器 localStorage(键 falling-ts-web-ding.notify.v1),每条可单独删除,顶部"全部删除"按钮一键清空。消息记录纯前端——Host 不读也不写。

安装

dsh plugin --profile web add github:falling-ts/dsh-web-ding

(需要 Web 应用带上 client bundle——package.json 的 dsh.client 声明会自动 完成。)

配置(falling-ts-web-ding 命名空间,写进 profile 的 cordis.patch.yml)

两块独立配置,各自有开关与音色:

块 1 — 弹出用户选择 —— harness 弹出用户选择题时在浏览器播放一声"叮"。 检测在浏览器侧完成(DOM 上 QuestionComposer 的 [data-question-key] 锚点): 宿主看不到 question 帧,故本块完全由前端实现。

字段 类型 默认 含义
questionEnabled boolean true 弹出用户选择提示音开关。
questionVolume number 0..1 0.7 Web Audio 播放音量。
questionFreq number 80..4000 880 "叮"的基频(Hz)。
questionDecayMs number 100..4000 900 音色衰减时长(ms)。

块 2 — 回合结束 —— 经典的 agent/status idle 转变提示音。Host 观察 agent/status,在 idle 转变(全部轮次与子代理结束、下一次人为对话之前; 新建后从未运行过的会话与重复 idle tick 保持静默)时发布 done 信号。

字段 类型 默认 含义
turnEndEnabled boolean true 回合结束提示音开关(关闭时 Host 跳过发布)。
turnEndVolume number 0..1 0.7 Web Audio 播放音量。
turnEndFreq number 80..4000 880 "叮"的基频(Hz)。
turnEndDecayMs number 100..4000 900 音色衰减时长(ms)。

浏览器自动播放策略

浏览器要求一次用户手势后才允许出声。客户端在首次指针/按键交互(以及点击 "试听"按钮)时预热 AudioContext,所以:与页面交互一次(或点一下试听),之后 每次回合结束就能听到叮。后台标签页里的 AudioContext 可能被浏览器自身挂起—— 保持标签页可见才能听到声音。

开发

# 作为开发覆盖层挂载(plain JS,无构建步骤)
dsh web --patch $(pwd)/cordis.patch.yml   # 你的 CLI 支持该选项时
# 或从本地路径安装
dsh plugin --profile web add /path/to/dsh-web-ding

插件自身规则见 AGENTS.md(纯 Host 监听器、后端不发声、不弹系统通知、只用 官方 settings 镜像通道通向浏览器)。

效果截图

设置页——「提示音配置」分区,两块各自开关与音色,免重启实时可调

设置页——「提示音配置」分区:「弹出用户选择」与「回合结束」两块,各自 开关、音量、频率、衰减时长,免重启实时可调,各带"试听"按钮预热浏览器 AudioContext。


License

MIT

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。