Chuyển đến nội dung chính

dsh-dingo

Đã xác minh

dsh-dingo · v1.0.0 · MIT · Giao diện web

DSH 声音提醒 + 对话直达插件:多对话并行时,哪个对话有回复就出声提醒,点右上角卡片直达对应对话;切到别的应用时还有系统级通知(macOS 通知中心 / Windows toast),点击直达。当前对话当/当当(crisp 档),其他对话叮/叮叮(soft 档)。

Cài đặt

dsh plugin add dsh-dingo

Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.

Mã nguồn

Phát hành lên npm mà không có repository công khai. Hãy kiểm tra nội dung package trước khi cài.

Thẻ

Tác giả

Readme

dsh-dingo

English | 中文

Ding + Go —— DSH(DeepSeek Harness)声音提醒 + 对话直达插件。

听到即到达:其他对话回复时出声提醒你,右上角卡片点一下直达对应对话——切到别的应用时,系统级通知(macOS 通知中心 / Windows toast)也不会漏,点一下同样直达。不只是告诉你"有动静",而是直接把你送到对话面前(这是区别于纯提醒方案的核心能力)。

多对话并行时的得力助手:DSH 里同时开好几个对话(含子代理)并行干活时,不用挨个盯着——哪个对话有回复,出声提醒你 + 卡片标注工作区/对话名;点一下直达那个对话,处理完继续干别的。提醒不打扰,直达不迷路,多任务并行也能从容切换。

当前对话回复 → 当 / 当当 提示音区分(crisp 清脆档);其他对话回复 → 另一套声音(叮,soft 柔和档) + 右上角小卡片,点击卡片直达对应对话。提醒只在最终回复(或等你回答的提问)时触发,过程中的中间回复不打扰。纯事件驱动,轻量。


它到底做了什么

场景 声音 卡片
当前对话有回复(普通陈述) 当(1 声,crisp 档) 无(你正在看这个对话)
当前对话需回答(回复含疑问/请求确认) 当当(2 声,crisp 档)
其他对话有回复 另一套声音(叮,soft 档)1 声 ✅ 右上角小卡片
其他对话需回答 另一套声音 2 声 ✅ 右上角小卡片
任务失败 咚(低音) ✅ 小卡片

"需回答"怎么判定(2026-08-15 收紧,中英文通用):优先看结构化信号——ask_user 工具调用、审批请求(approval/asked)、questions 域提问 → 一律"需回答"。纯文本兜底判定更严格,避免把 AI 思考过程中的自问自答误判成"等你回答":

  • 明确请求动作/决策/确认(请确认、请选择、需要你拍板、你怎么看、你觉得呢… / please confirm、your call、what do you think…)→ 需回答;
  • 问号 + 疑问语气(吗/呢/怎么/是否… / what、why、how、助动词开头问句…)→ 需回答,但排除反问句(难道…吗?/ Isn't…?)、自问自答(…吗?因为/其实… / …? Because/Actually…)、问题清单列举(…?其次… / …? Next…);
  • 疑问词只出现在陈述句里(无问号,"我在想是否需要优化…")→ 有回复。

小卡片(其他对话专属):

  • 固定 200×56 尺寸,半透明悬浮;
  • 内容:状态图标 + 工作区名(≤12 字)+ 对话标题(≤10 字);
    • 🟩 绿方块 = 有回复,🟠 问号 = 需回答,🔴 感叹号 = 失败;
  • 点击卡片 → 直达该对话;右上角 × 关闭
  • 多卡片从右上角(Session log 按钮下方)从上往下排列,间距 8px;点击某对话的卡片会清除该对话的所有卡片,其余卡片自动补位;
  • 卡片不自动消失——直到你点击跳转(清除该对话所有卡片)或手动 × 关闭

提醒纪律

  • 同一对话同样的提示 10 秒内不重复(按内容去重:不同样的提示各自响;每个对话各自计时);
  • /dingo dnd on 免打扰:任务完成类静音、需回答类仍提醒;
  • 可配静音时段(quietHours "HH:mm",支持跨夜)——任务类只入队不发声,结束后补播;
  • /dingo off 一键关闭全部提醒。

系统级通知(macOS 通知中心 / Windows toast,可选):

  • DSH Web UI 不在前台时,任何对话(含当前对话)需回答 / 有回复 / 任务失败都会发系统通知——切到别的应用也不错过;
  • 双通道、各司其职:系统通知告诉你"有动静";浏览器内卡片(DSH 界面开着就一直有)告诉你"是哪个对话"——点卡片直达;
  • Windows:点击系统通知本身也可直达对应会话(深链 ?dingOpen=);
  • macOS:系统通知仅作提醒(无点击回调,macOS 系统限制;直达由浏览器内卡片完成);
  • DSH Web UI 前台可见时不发(浏览器内叮当音 + 卡片已够);页面在后台或未打开时发;
  • 零安装:macOS 用系统内置 osascript;Windows 用系统自带 PowerShell(脚本在 scripts/)。

安装

# 本地源码安装(开发)
dsh plugin --profile web add /path/to/dsh-dingo

# 或 npm 安装(发布后)
dsh plugin --profile web add dsh-dingo

# <profile> 换成你要安装的目标 profile 名(本机常用 web)

系统通知前置要求(可选功能)

系统级通知(macOS 通知中心 / Windows toast)两个平台都无需安装

  • macOS:用系统内置 osascriptdisplay notification)。
  • Windows:用系统自带 PowerShell(scripts/notify.ps1 + scripts/toast-activate.ps1)。

随时可用 systemNotify: false 关闭(见下方配置)。

profile 的 cordis.patch.yml 或插件配置里可覆盖:

- id: dsh-dingo
  config:
    enabled: true
    feedback:
      toneStyle: soft        # 提示音档位:soft(其他对话"叮")/ crisp(当前对话"当")
      dnd: false
      dedupeWindowMs: 10000  # 同会话同内容去重窗口(同样提示不重复、不同样各自响)
      quietHours: { start: '', end: '' }
    # systemNotify: true       # 其他对话的系统级通知(默认开)
    # systemNotifyBaseUrl: ''  # 深链基地址(默认 http://127.0.0.1:3080)

命令

/dingo on|off        # 开/关提醒
/dingo status        # 开关、DND、插播队列
/dingo dnd [on|off]  # 免打扰(任务完成类静音、需回答仍提醒)

技术实现(架构)

  • host 半src/index.ts + src/feedback.ts):
    • 订阅 session/eventturn/end(completed) / approval/asked / tool/call(ask_user) / assistant/message → 判定级别 → 入提醒队列(优先级:需回答 > 有回复 > 失败);
    • 当前对话回复(客户端上报的当前查看会话)→ 直接入队 own 提醒(只播提示音、不显示卡片);
    • 队列按优先级串行播报,客户端 spoken 上报后播下一条;
  • client 半src/client/FeedbackCard.tsx + tones.ts):
    • 轮询 /dingo.feedback 快照 → 当前对话项播 crisp 档提示音(当/当当)、其他对话项播 soft 档(叮) + 渲染卡片;
    • 内置两套提示音(soft/crisp,data URL WAV),不依赖任何外部音频文件;
    • 点击卡片 → client 侧 sessions.open 直达对应对话(与侧边栏点击同一入口)。
  • RPC/dingo 通道):feedback / set-current-session

开发

npm install
npm run typecheck   # 类型检查
npm test            # vitest
npm run verify      # typecheck + test + build

License

MIT

Windows 系统通知脚本参考自 CAOGGL/dsh-ding(MIT)——详见 LICENSE 的第三方声明。