Repository navigation
Releases
v0.3.0 · 覆盖 macOS 管理员密码弹窗
v0.3.0 · 覆盖 macOS 管理员密码弹窗
新增第四类触发来源:SecurityAgent 的提权密码表单(「想要进行更改」)。
之前只监听 TCC(com.apple.TCC / AUTHREQ_PROMPTING),而 sudo、sfltool、
安装器请求 system.privilege.admin 时弹出的是 Authorization Services 的密码框,
走 com.apple.Authorization 子系统,没有任何 AUTHREQ_* 行,所以插件完全不会响。
新增
lib/tcc.js:抽出共用的log stream底座,新增createPrivilegeWatcher、
parsePrivilegeLine、PRIVILEGE_PREDICATE。Using modern UI/SC confirmation dialog detected→ 密码框出现。ExecuteWithPrivileges的完成记录(带successfulMechanism)→ 密码框关闭。
lib/index.js:两条链路共用一个系统弹窗注册表与提醒引擎;同一对话框同时命中
TCC 与提权两条线时只响一次(2 秒去重窗口),但仍各自跟踪结束信号。- 新配置:
watchPrivilegePrompts(默认开)、privilegePromptTimeoutMs(默认
180000,点取消/通过后立即停止,仅作兜底)。 - 配置表单、
cordis.patch.yml、locale 描述同步更新。 - 测试:新增提权解析、流式监听、以及用假
log脚本跑通「出现→响→完成→停」的
端到端用例,共 25 个。
说明
- 只读日志,不读密码、不注入进程、不需要任何隐私授权。
- 提权弹窗无法归属到某个 App,所以不按 bundle identity 过滤;不想要就在表单里
单独关掉「macOS 管理员密码弹窗」。
v0.2.2 · 修复 web profile 启动,补齐插件市场徽章
v0.2.2 · 修复 web profile 启动,补齐插件市场徽章
本版修复了 dsh.so 安装验证中暴露的 L5 Web 冒烟失败,并补上 dsh.so 作者徽章。
修复
- 移除
dsh.client.inject对@deepseek-ai/dsh-client-ui-plugin-manager的硬依赖。
该包不在最小webprofile 中,之前的声明会让dsh plugin --profile web add ...
的 Web 启动在「插件目录树加载」阶段失败。 - 客户端配置表单仍然注册在
plugins.row.config;在带插件管理器的 desktop profile 中正常显示,
在最小 web profile 中只是不显示配置入口,不影响启动。 - 新增一条 CI 用例,防止
dsh.client.inject再次引入不在 web profile 的 UI 包。
插件市场
- dsh.so 插件市场:已收录;本版 README 加入官方作者徽章:
[](https://www.dsh.so/artifact/dsh-approval-alert/) - DSH 社区插件目录:已向 awesome-dsh-plugin 提交 PR,分类
notify;
本版 tarball 作为市场预构建附件。 - dsh.so 会重新扫描 v0.2.2;L5 Web 冒烟应在该版本通过。
功能回顾
- 标准 DSH bundle:侧边栏 插件 → 已安装插件 显示「授权提醒」卡片、开关和中文配置表单。
- 覆盖 DSH 工具审批、Agent 提问/计划审阅、macOS TCC 权限弹窗(
log stream+AUTHREQ_PROMPTING)。 - 提醒节奏:第一次立即响,之后 25 / 20 / 15 / 10 秒,第六次起每 5 秒一次。
- 声音用
afplay,跟随系统输出音量;默认 Glass 双响。
安装
git clone https://github.com/kongbaiming5/dsh-approval-alert.git
cd dsh-approval-alert
./scripts/install.sh desktop或从 GitHub 直接安装:
dsh plugin --profile desktop add github:kongbaiming5/dsh-approval-alertTarball 校验
dsh-approval-alert-0.2.2.tgz
SHA-256: db3ce45bf41f3c079c16a022c5d9a593253ad377557a17ae2051f9d9c7584dbf
验证
npm test:19 个用例通过。- 本机已验证 Host watcher(
log stream)运行、声音正常。
v0.2.1 · 插件市场上架
v0.2.1 · 插件市场上架
本版把 dsh-approval-alert 提交到 DSH 社区插件市场目录(awesome-dsh-plugin),并提供 GitHub Release 预构建 tarball,市场安装时可跳过源码构建。
新增
- 插件市场收录:向 awesome-dsh-plugin 提交条目,分类
notify;合并后可在 DSH 插件市场搜索「授权提醒」或dsh-approval-alert。 - 预构建 tarball:
dsh-approval-alert-0.2.1.tgz作为 GitHub Release 附件,供市场优先安装。 - README 市场安装说明:支持
dsh plugin --profile desktop add github:kongbaiming5/dsh-approval-alert。
v0.2.0 功能回顾
- 标准 DSH bundle:侧边栏 插件 → 已安装插件 显示「授权提醒」卡片、开关和中文配置表单。
- 覆盖 DSH 工具审批、Agent 提问/计划审阅、macOS TCC 权限弹窗(
log stream+AUTHREQ_PROMPTING)。 - 提醒节奏:第一次立即响,之后 25 / 20 / 15 / 10 秒,第六次起每 5 秒一次。
- 声音用
afplay,跟随系统输出音量;默认 Glass 双响。 - 配置表单保存后立即生效(volatile Config)。
安装
git clone https://github.com/kongbaiming5/dsh-approval-alert.git
cd dsh-approval-alert
./scripts/install.sh desktop或从 GitHub 直接安装:
dsh plugin --profile desktop add github:kongbaiming5/dsh-approval-alertTarball 校验
dsh-approval-alert-0.2.1.tgz
SHA-256: 05734382a64b9881b82b8406312e568276edf9ed947e96572dc209633c48f5ea
验证
npm test:18 个用例通过。- 本机已验证 Host watcher(
log stream)运行、声音正常。
v0.2.0 · 插件页开关与中文配置表单
v0.2.0 · 插件页开关与中文配置表单
dsh-approval-alert 现在是一个标准 DSH bundle,会出现在侧边栏 插件 → 已安装插件,带开关和中文配置表单。
新增
- 插件页可见:卡片名称「授权提醒」,带图标和中文描述。
- 开关:卡片开关控制整个 bundle;
approval-alert行也有独立开关。 - 中文配置表单:提示音、音量、每次响几声、DSH 审批、Agent 提问、macOS 权限弹窗、系统弹窗安全上限、通知、通知语言、诊断日志;保存后立即生效。
- 显示元数据:
locale/zh.json、locale/en.json和原创icon.svg。 - 配置热更新:所有 Config 字段改为
volatile,表单保存不需要重启插件。 - 测试:新增浏览器配置页注册测试,共 18 个用例通过。
保留
- 第一次提醒立即响,之后 25 / 20 / 15 / 10 秒,第六次起每 5 秒一次。
- 覆盖 DSH 工具审批、Agent 提问/计划审阅,以及 DSH 触发的 macOS TCC 权限弹窗。
- 声音用
afplay,跟随系统输出音量;默认 Glass 双响。 - macOS 权限弹窗通过
log stream+AUTHREQ_PROMPTING/AUTHREQ_RESULT检测,不需要 Accessibility 权限。
升级注意
- 以前用手动
insert条目安装的用户,请删除cordis.patch.yml里的旧条目;bundle 会提供同名行,保留旧条目会重复挂载。 - 安装/启用 bundle 后,建议重启一次 DeepSeek Harness,让
dsh.profile.bundles的变更生效。 - 安装脚本
scripts/install.sh会自动把包加入dsh.profile.bundles,并提示清理旧条目。
安装
git clone https://github.com/kongbaiming5/dsh-approval-alert.git
cd dsh-approval-alert
./scripts/install.sh desktop然后打开侧边栏 插件,在「已安装插件」里找到「授权提醒」。
验证
- 在配置表单里打开「启用授权提醒」并保存。
- 触发 DSH 审批或 macOS 权限弹窗:第一声应立即响。
- 麦克风弹窗复测:
tccutil reset Microphone com.deepseek.dsh
ffmpeg -f avfoundation -i ":0" -t 0.5 -y /tmp/dsh-mic-test.wav- 测试:
npm test(18 个用例)。
v0.1.0 · Initial release
v0.1.0
First public release of dsh-approval-alert — a macOS approval chime for DeepSeek Harness.
Highlights
- DSH tool approvals (
approval/request): sandbox escalation, destructive commands,
writes outside the workspace. - DSH agent questions and plan review (
user-questions/request). - macOS TCC permission prompts triggered by DeepSeek Harness: microphone, camera,
screen recording, accessibility, automation, files and folders, Full Disk Access.
Detected through the unified log (log stream+AUTHREQ_PROMPTING), so no
Accessibility or Automation grant is required. - Reminder cadence: first chime immediately, then 25s, 20s, 15s, 10s, and every 5s
after that, until the request is answered. - Plays a real macOS system sound with
afplay, at the current output volume
(default: Glass, double chime). - Best-effort system notification (Electron native when available,
osascriptotherwise). - Configurable via the profile patch: sound, volume, burst, per-source toggles,
notification, locale, and a local trace file. - No network access, no credentials, no third-party runtime dependencies.
Install
git clone https://github.com/kongbaiming5/dsh-approval-alert.git
cd dsh-approval-alert
./scripts/install.sh desktopThe script adds the local package to the DSH profile and appends the loader entry if it
is missing. A running DSH desktop app hot-reloads cordis.patch.yml; otherwise restart
the app.
Verify
Set startupChime: true in the profile entry (or run the microphone test in the README)
to confirm the audio path.
Notes
- Tested with DeepSeek Harness 0.2.1-rc.2 on macOS (Apple Silicon).
- macOS logs can change between releases; if TCC prompt detection stops working, check
AUTHREQ_PROMPTING/AUTHREQ_RESULTinlog streamand open an issue. - Notifications may appear as “Script Editor” because the current Host does not expose
Electron's Notification API; setnotify: falseif you do not want them.
Full changelog: initial release.