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桌面端用户,在模型需要审批、提问或运行结束时接收系统提醒。

パッケージ
dsh-notice
互換性
未検証
バージョン
0.1.0
ライセンス
MIT
最終更新
2026/10/10

同名パッケージの別リポジトリ

インストール

検証済み bundle がないか、互換性チェックに失敗しています。先にリポジトリの説明を読んでください。 README 全文を読む ↗

ドキュメント

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」里的
> 声音开关互不影响。