dsh-ask-notify:Agent 等你回答时的右下角提醒

前言

在 DSH Web GUI 里跑 agent 时,一旦触发 ask_user_question、审批或计划确认,界面会进入「等你作答」的等待态。内置问题卡片会接管输入区——只有当你正看着这个标签页时,才容易发现 agent 已经停下来了。切到别的标签、别的窗口或别的程序时,会话可能长时间卡在等待里,页面上却没有足够醒目的信号把你拉回来。

下面介绍社区插件 dsh-ask-notify(维护者 liujianqiao701):在 DSH 客户端侧监听与会话列表「琥珀色小圆点」同一份运行时状态,把「需要你回答」主动推到右下角提醒卡;若页面不可见或未聚焦,再补系统通知和标签标题闪烁。插件当前版本 1.0.4(MIT),分类为客户端;在 SkillHub 插件目录 可找到条目,源码在 GitHub。

这是什么

dsh-ask-notify 是 DSH Web GUI 的客户端插件,不抓取 DOM,而是从宿主已有的 uiSession / 会话列表快照里读取等待态(question、approval、plan-review 等 kind)。有等待时弹出右下角提醒;你不在当前页面时再触发 Windows 桌面通知,并把标签标题改成带 ❓ 的闪烁样式。

本插件不发起任何网络请求;偏好写在浏览器 localStorage,系统通知走 Notification API。安装前建议自行查看源码与许可证——插件随当前 dsh web 进程在浏览器环境中运行。

三个提醒通道

通道 出现条件 作用
右下角提醒卡 存在任意等待(是否在页面均会显示) 回到页面时一眼看到还剩什么问题
系统通知 页面不可见或未聚焦,且已授权通知 在别的标签或程序里也能被叫到
标题闪烁 页面不可见 在标签栏上区分「有个标签在等我」

卡片提供 去回答(切到对应会话并滚到输入区)、稍后提醒(本条不再弹,下一条等待仍会弹)、以及 桌面提醒 / 声音 开关。

安装与启用

首选:插件市场

在 DSH 界面 设置 → 插件市场 → 搜索 dsh-ask-notify → 安装。装完后看市场卡片上的状态:

卡片状态 还要做什么
已生效 刷新页面:F5,不行再 Ctrl+F5
已安装,重启后生效 重启 dsh web,然后 Ctrl+F5
已安装,未生效 / 已停用 点「为什么未生效?」——常见原因是「有 agent 正在运行」,停掉再装

插件条目随页面启动清单(window.__DSH_BOOT__)下发;不刷新页面,浏览器不会加载新插件。市场显示「已生效」却「没效果」时,多数只差这一步刷新。

备选:命令行

dsh plugin --profile web add github:liujianqiao701/dsh-ask-notify

命令行或本包 install.ps1 登记在 bundle 层,bundle 只在 dsh web 启动时读一次,因此装完后必须重启 dsh web,再 Ctrl+F5 刷新页面。

环境要求

  • Windows + dsh web。
  • Harness 1.0.4 起各版本可用:插件按优先级读取 uiSession.sessionStatus(0.1.7+)、uiSession.pendingInteractions(0.1.2~0.1.6)、会话列表行上的 pendingInteraction(≤0.1.1-rc.x);三个源都读不到时会扫描 map 型成员并可在控制台 __dshAskNotify.sources() 查看 discovered。
  • 1.0.4 起无强制 cordis 注入依赖;服务暂时缺失时仍会挂载,约 15 秒读不到数据会在控制台报警并在右下角显示提示卡。

典型用法与自检

平时无需配置:agent 进入等待态后,插件通过订阅与约 2 秒轮询更新提醒。不必真等问题,可在页面控制台自检:

__dshAskNotify.version                    // 当前安装版本(资料中示例为 1.0.4)
__dshAskNotify.selftest()                 // 右下角卡片保持约 12 秒
__dshAskNotify.sources()                  // used / carries / discovered
__dshAskNotify.state()                    // 等待、偏好、通知权限、页面是否可见
__dshAskNotify.collect()                  // 当前等待列表;空数组表示现在无人等你
__dshAskNotify.show('approval', '试试审批样式')
__dshAskNotify.hide()

sources().used 表示真正在供数据的源;used: "none" 且控制台出现读不到数据源的警告时,可把 sources() 输出反馈给维护者。

偏好键(localStorage):

key 含义
dsh-ask-notify:prefs 各类等待与系统通知、声音的布尔开关
dsh-ask-notify:autoasked 首次用户手势申请通知权限的标记
dsh-ask-notify:lastshot 多标签下系统通知约 20 秒内去重

通知权限在第一次点击或按键时自动申请一次;若曾被拒绝,可在卡片上开启桌面提醒,或在 http://127.0.0.1 的站点设置里允许。

适用场景与注意

适合谁:长时间在 DSH Web 里跑 agent、经常多标签或多窗口并行,又希望「审批 / 追问 / 计划确认」不要静默耗在等待态上的开发者。

排障要点:

  1. 先 Ctrl+F5,再执行 __dshAskNotify.selftest();若返回 undefined 表示客户端脚本未加载(命令行安装未重启、或未刷新页面)。
  2. 不要用不带 ?rev= 的 /plugins/.../client.js URL 手敲判活;新代 harness 路由带 rev,手敲可能 404。可用 Ctrl+U 搜 boot payload,或看 __dshAskNotify.sources()。
  3. 市场更新时若有 agent 在跑,市场会拦截更新;等会话结束或取消后再点更新。
  4. 系统通知不弹时检查 __dshAskNotify.state().permission;用局域网 IP 打开时浏览器可能禁用通知。
  5. 若页面已有 dsh-whale-mascot,提醒卡叠在其上方;同一等待多标签各有一张卡,系统通知跨标签只弹一次。

插件以你当前 DSH 进程与浏览器权限运行;安装前请阅读 仓库 README 与源码。SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-ask-notify 把「agent blocked 等你回答」从「必须盯着输入区才发现」变成右下角可见、离页可通知、标签可闪烁的三通道提醒,且数据来自与会话 UI 一致的运行时状态,不依赖 DOM 结构。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜