voyager
Nagi-ovo
Enhancement suite for Gemini, AI Studio, Claude & ChatGPT — plus a prompt manager for any websites, DeepSeek Harness included. / 面向 Gemini、AI Studio、Claude 与 ChatGPT 的增强套件;其中的提示词管理器可用于任意网站,如 DeepSeek Harness。
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:nienieai/dsh-chime-alerts
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
给 DeepSeek Harness (DSH) 加一组轻量声音提醒:Agent 干完活、需要你批准、提交计划等你评审、有问题问你、目标受阻、后台任务完成/挂了,电脑响一声——不用一直盯着页面。
wscript+WMP);Linux 播 freedesktop 主题音(canberra-gtk-play → 回退 paplay);macOS 用 afplay 播系统音npm test,247 项断言)默认声音全部是浏览器合成的(Web Audio 振荡器实时生成,每类事件独立音型,如任务完成=渐强上行琶音、需要授权=慢叮咚、插件授权=短叮咚),不附带任何音频文件,无版权、无许可证负担,开箱即用可商用。
宿主蜂鸣(可选,默认关)使用操作系统自带音效(Windows wav / Linux freedesktop / macOS 系统音),受系统许可条款约束;不开启就完全不涉及。
一键安装(CLI 会写入 profile 依赖并注册 bundle 层):
dsh plugin --profile web add dsh-chime-alerts
npm 包地址:https://www.npmjs.com/package/dsh-chime-alerts ;GitHub Release:https://github.com/nienieai/dsh-chime-alerts/releases
安装/升级后需重启 DSH + 重开网页标签生效。若插件装了但不加载(CLI 偶发只写依赖、漏注册 bundle 层),手动确认 profile 的 package.json 两处齐备:
dependencies(或 devDependencies)里有 dsh-chime-alerts——npm 包名,或本地调试用 link:/file: 指向插件目录dsh.profile.bundles 数组里有 "dsh-chime-alerts"然后在 profile 目录执行 pnpm install,再重启 DSH + 重开网页标签。
lib/index.js 自动加载;客户端半(浏览器合成音 + 设置页 + 工作区静音)经 exports["./client"] 以经典脚本加载(dsh.client.platform: "web")pendingInteraction 不在会话列表快照内),改由宿主半检测后经 /dsh-chime-alerts/events 增量转发;设置存浏览器(键与动态版相同,切换安装方式设置自动继承)cordis_define:code.host 粘贴 lib/host.js 全文,code.client 粘贴 lib/client.js 全文(kind: "new",idPrefix 自取)cordis_run(mode run)激活,客户端包首次激活需在页面上批准两条必须注意的坑(都实测踩过)
- 两半要放在同一个包里。 后续用
cordis_run的update切换版本时是整包替换,不是「只换宿主半」——如果你先只定义客户端半、再用一个 host-only 的新包去 update,会把它从浏览器里卸载掉(表现为设置页消失、浏览器不响),而cordis_inspect_self只会告诉你hasClientHalf: false。改代码时请一次性给出 host+client 的新包。- 别用
.chunks/host.txt之外的旧文本:.chunks/*.txt由npm run chunks从lib/*.js生成、并由npm test校验一致(见下);直接抄 README 之外的任何旧副本都可能装到过期宿主。
设置 → 「🔊 声音提醒」:
存储位置:动态安装优先 sandboxPolicy.workspaceRoot,落在系统目录时(如 DSH 从 System32 启动)自动改用 DSH 数据目录;静态安装固定存 DSH 数据目录 %USERPROFILE%\.dsh\plugins\dsh-chime-alerts\(Linux/macOS 对应 $HOME/...,经 node:fs 直写,旧数据自动迁移)。
agent/status(完成/打断/子任务)、session/event(授权)、goal/changed(目标受阻)、tools/execute(提问、计划评审)、tools/result(插件授权,v0.4.4+)、jobs.onJobDone(后台任务完成/失败,静态安装延迟挂接,v0.5.4+),节流 3s(种类+来源)后入事件缓冲inbox.hasPending 跳过。静态客户端订阅 sessions/workspaces 快照检测「完成 / 子任务 / 后台任务 / 目标受阻」(running 边沿 / goal 投影 / jobsBySession 终态),并每 1500ms 拉 /dsh-chime-alerts/events 补齐「授权 / 提问 / 计划评审 / 插件授权」(宿主只对这四类入队,与快照自检不重叠).vbs + wscript.exe + WMP(避开安全软件拦截 PowerShell;静态安装经 node:fs 直写,v0.5.4+),Linux/macOS 见上document.querySelectorAll('div[role="treeitem"][aria-expanded]') 取工作区行,再把整行 textContent 与
工作区标题做精确相等匹配(client.web.js 的 syncWorkspaceMuteButtons);匹配不上就 continue 静默跳过——
按钮不出现且不报任何错。因此只要外壳把行文本改成「标题 + 计数 / 图标 / 空白」之类,或在行内渲染了额外文本,
按钮就会整片消失而没有任何迹象。已知代码层面该 role/属性确实存在(dsh-client-ui-workspace),但尚未在真实
DOM 上确认匹配成功;现象待复现后再决定改法(候选:改用行元素上的稳定标识而非文本、或加一次匹配失败告警日志)goal/changed、Session.ownEvents()、SessionSummary 字段)不是公开 API,DSH 升级可能再次漂移;本仓库的测试用真实契约做回归(见 tools/test-host.mjs 的「契约回归」与 tools/test-client-web.mjs 的 /events 用例),升级 DSH 后请先跑 npm testsession/event 的 listener 只收到 2 个实参(Session、SessionEvent),而 inspect 签名写的是 3 个位置参数;插件因此按对象形状而非实参位置识别(type 字段判事件、id+snapshotEvents() 判 Session),两种布局都能工作。同类坑:动态宿主半没有 process(故动态安装的平台检测恒为 null,走 win32 兼容分支),静态安装是真实 Node 模块、不受此限lib/host.js 宿主半(函数体,动态安装粘贴;静态入口也消费它)
lib/client.js 客户端半(函数体,动态安装粘贴)
lib/client.web.js 静态客户端(经典脚本封套,npm 安装使用)
lib/index.js 静态宿主入口(npm 包 main)
lib/types/index.d.ts 类型声明
cordis.patch.yml bundle 补丁层
tools/ syntax-check + 宿主/客户端/静态客户端测试
docs/REGISTRIES.md 社区市场上架指南
本插件由 AI Agent 工具辅助开发(功能设计、代码实现、代码审计、测试与文档),详见 CHANGELOG.md。
npm test # 宿主 104 + 客户端 96 + 静态客户端 47 项断言(Node 即可,无需浏览器/DSH)
npm run check # 语法检查 + .chunks 与源码一致性检查
npm run chunks # 改完 lib/host.js 或 lib/client.js 后重建动态安装用的 .chunks/*.txt
见 docs/REGISTRIES.md(npm 发布清单 + 社区市场提交入口)。
MIT © 2026 dsh-chime-alerts contributors
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: notification。