WsttXm/DshNotice--packages-dsh-notice ↗★ 0

dsh-notice

Native macOS notifications for DeepSeek Harness: a banner when the agent needs you (approval, question, plan review) and when a turn finishes 适合macOS桌面端用户,在模型需要审批、提问或运行结束时接收系统提醒。

Package
dsh-notice
Compatibility
Unverified
Version
0.1.0
License
MIT
Last updated
Oct 10, 2026

Other repositories with this package name

Install

This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗

配置

所有偏好都存在渲染进程的 localStorage 里(键名 dsh-notice:prefs),改完立即生效,不需要刷新。

怎么改

在 Harness 窗口按 ⌥⌘I 打开控制台:

window.__DSH_NOTICE__.set({ sound: false })               // 静音,只留横幅
window.__DSH_NOTICE__.set({ onComplete: false })          // 只在需要我介入时提醒,跑完别打扰
window.__DSH_NOTICE__.set({ onlyWhenUnfocused: false })   // 前台也提醒(默认不提醒)
window.__DSH_NOTICE__.set({ language: "zh" })             // 锁定中文文案
window.__DSH_NOTICE__.set({ enabled: false })             // 全部关掉

window.__DSH_NOTICE__.prefs                               // 看当前配置
window.__DSH_NOTICE__.reset()                             // 恢复出厂默认

配置项

配置项类型默认说明
enabledbooleantrue总开关。false 时以下所有通道全部静默
onInteractionbooleantrue请求授权 / 向你提问 / 计划待审时提醒
onCompletebooleantrue一轮任务结束时提醒
soundbooleantrue横幅是否带系统提示音
onlyWhenUnfocusedbooleantrue窗口在前台、且当前显示的正是要通知的那个会话时不提醒
announceOnFirstRunbooleantrue首次安装时弹一条欢迎横幅(用来验证链路)
language"auto" | "zh" | "en""auto"通知文案语言。auto = 跟随应用界面语言

sound 只决定本插件发出的通知要不要响,与「系统设置 → 通知 → DeepSeek Harness」里的 声音开关互不影响。

什么时候会提醒

插件把每个会话的状态折成一个索引,只对状态跃迁做出反应,不会因为刷新页面补发旧通知。

跃迁横幅
出现待审批请求需要你的授权 — 「会话名」想要执行 ,请回到应用确认。
出现待回答的问题需要你的回答 — 直接显示问题正文
出现待审阅的计划等待你审阅计划 — 「会话名」提交了一份计划,等待你确认。
一轮任务从运行中变为结束,且没有待处理交互任务已完成 — 「会话名」已完成本轮任务。
一轮结束时正好又要你介入(比如收尾时向你提问)只发一条,且发「需要你…」那条

会话名只在有必要时出现:当横幅讲的就是你正盯着的那个会话时,标题不重复出现在正文里。

什么时候故意不提醒

命中任意一条就不发,这是设计,不是 bug:

  • enabled 为 false;
  • 对应通道被关掉(onInteraction / onComplete);
  • 该会话是子代理或空白会话——你看不见的内部工作不该打扰你;
  • 窗口在前台,且正显示着要通知的那个会话——输入框就在你眼前,再弹横幅是噪音。 把 onlyWhenUnfocused 设为 false 可以关掉这条规则。

另外,macOS 本身在应用处于前台时通常也不画横幅(只静默进通知中心),这是系统行为, 不是插件能决定的。

语言

默认 language: "auto",跟随应用界面语言——auto 读的是 DSH 自己的语言设置, 而不是渲染进程的 navigator.language(桌面版里后者恒为 en-US,曾经导致中文应用弹出英文通知)。

想固定成某一种语言:

window.__DSH_NOTICE__.set({ language: "en" })   // 永远英文
window.__DSH_NOTICE__.set({ language: "auto" }) // 回到跟随应用

排查语言问题时,window.__DSH_NOTICE__.state() 里的 language 是实际生效的文案语言, detectedLocale 是检测到的应用语言,两者对不上就能立刻定位。

手动安装(不想跑脚本时)

安装脚本只做两件简单的事,你完全可以自己来:


### 配置项

| 配置项 | 类型 | 默认 | 说明 |
|---|---|---|---|
| `enabled` | boolean | `true` | 总开关。`false` 时以下所有通道全部静默 |
| `onInteraction` | boolean | `true` | 请求授权 / 向你提问 / 计划待审时提醒 |
| `onComplete` | boolean | `true` | 一轮任务结束时提醒 |
| `sound` | boolean | `true` | 横幅是否带系统提示音 |
| `onlyWhenUnfocused` | boolean | `true` | 窗口在前台、且当前显示的正是要通知的那个会话时**不**提醒 |
| `announceOnFirstRun` | boolean | `true` | 首次安装时弹一条欢迎横幅(用来验证链路) |
| `language` | `"auto"` \| `"zh"` \| `"en"` | `"auto"` | 通知文案语言。`auto` = 跟随应用界面语言 |

> `sound` 只决定本插件发出的通知要不要响,与「系统设置 → 通知 → DeepSeek Harness」里的
> 声音开关互不影响。