dsh-quit-idle-fix: Fix false alarm of interruption during DSH desktop idle exit

前言

用 DSH 桌面端做开发时,一个容易被忽略的干扰是:明明没有任务在跑,退出应用却弹出”当前正在运行的任务将会中断”。这个提示来自桌面端的退出检查逻辑。先把它为什么误报讲清楚,再看这个插件怎么解决。

真正原因是桌面端会把所有待处理的 next-step 消息都当成”有任务”。但切换审批策略、工作目录、计划模式,或者增删、运行插件时,官方功能只是用 agent.inject() 投递了一条提示。这类消息不会唤醒已经空闲的 agent,于是一直留在队列里。当这些操作发生在空闲会话中时,提示永远等不到被消费,退出检查就一直看到待处理消息并报警。

这是 harness 自身的交互 bug(官方 dsh-desktop-host 的判断逻辑加上官方提示生产者),不是装了别的插件导致的冲突。

这是什么

dsh-quit-idle-fix 是 shuaichewang 维护的 DSH 客户端插件,用来修复上面这个退出提示 bug。当前版本 0.1.0,MIT 许可证,作者声明与 DeepSeek 无从属关系。它不是改 app.asar,而是以 profile bundle 的方式安装,因此能通过桌面端签名检查。

思路很直接:空闲会话里那几条纯提示本来就不会叫醒 agent,直接清掉即可。运行时上下文和插件工具里仍然能查到对应状态,所以信息并没有丢失。

核心能力

插件只在 agent 处于 idle 时,消费 source.kind 为以下四类的 next-step 消息:

  • user-approval:审批策略变化
  • working-directory:工作目录变化或恢复
  • cordis-host-runner:插件增删/运行结果
  • plan-mode:计划模式切换

这些信息不是被删掉了:审批策略和工作目录已经写在运行时上下文里,计划模式体现在 prompt 中,Cordis 插件状态可以用插件工具再次查看。

工作方式如下:

1、运行中的 agent 一律不碰,turn 中途排进来的通知仍会走到下一步。
2、如果已有用户 turn 排队,清扫会退让,让该 turn 自己去消费这些通知。
3、每 500 ms 检查一次,加载时立即扫一次,进程内不保存任何状态。
4、带 next-turn 用户消息的 agent 会被跳过。

安装与启用

通过 GitHub 安装:

dsh plugin --profile desktop add github:shuaichewang/dsh-quit-idle-fix

如果已发布到 npm,也可以用包名安装:

dsh plugin --profile desktop add dsh-quit-idle-fix

或者从插件市场安装。装完后重启桌面应用;如果改动没有立即生效,再重启一次。

运行环境要求:Node.js >= 20,dsh 版本在 >=0.2.0-rc.1 <0.3.0-0 之间。

验证是否生效

先跑插件自带的测试:

node test.mjs
# ok: idle notices removed, running agent untouched, timer disposed

这条命令验证三件事:空闲时的通知被清掉、运行中的 agent 未被触碰、定时器已释放。然后再确认没有会话在运行、没有后台作业,退出桌面应用。误报的中断警告这时应该不再出现。如果有真实任务或 turn 在跑,警告仍会出现,这是预期行为。

适用场景与注意

适合使用 DSH 桌面端、在空闲时切换审批策略/工作目录/计划模式或增删插件后遇到退出误警告的开发场景。社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系,不是应用商店。

需要注意:

1、插件以当前 dsh 进程的权限运行,安装前应先读一遍源码,确认行为符合预期;许可证是 MIT。
2、只清理上面四类 source.kind。未来新增功能或第三方插件注入其他类型的通知,仍可能触发误报,遇到可提 issue。
3、它不碰 next-turn、真实用户消息、运行中的 agent、作业和排程任务。
4、只读内存中的 agent 列表和 inbox,不联网、不访问文件、不读取凭据。
5、仅桌面端有效,Web profile 没有退出确认对话框。
6、它是绕过方案。更彻底的修法在上游 dsh-desktop-host:不要把通知形态的 next-step 消息计为活跃工作,或避免把不唤醒会话的通知留在 inbox 里。

写在最后

这个插件解决的是一个很具体的交互问题:空闲会话里的系统提示被退出检查误当成活跃任务。它只关心四类通知,不改 agent 行为,也没有状态,装上去就能跑。

  • 目录页:https://www.skillhub.cn/plugins/shuaichewang/dsh-quit-idle-fix
  • GitHub:https://github.com/shuaichewang/dsh-quit-idle-fix
羽毛球分组比赛记分
小程序二维码

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

Xiaoye