mingoyung/dsh-superagent-power:给 Super-agent 加一个全局开关

前言

Super-agent 是主动代理,启动后会在后台常驻等待事件。如果只在需要时使用它,常驻的 Node 进程、已加载模块和运行时状态仍然占用内存;而如果没有一个统一开关,多个 DSH 会话会各自控制同一个后台进程,状态互相覆盖。下面介绍的 mingoyung/dsh-superagent-power 就是为解决这个问题而生的客户端插件:把 Super-agent 后台的启动和停止放进输入栏按钮,按需退出、释放内存。

它由 MingoYung 独立维护,不是 DeepSeek 官方插件,上游是 DeepSeek Harness 与 Super-agent research prototype。插件不替代 Super-agent 本身,只管理已经安装好的独立 Super-agent profile。

这是什么

一句话定位:给 DSH 输入栏加一个 Sup 按钮,全局启停 Super-agent 独立后台进程,关闭时先走正常收尾流程再退出。

  • 维护者:MingoYung
  • 分类:客户端(浏览器端 UI + 控制服务)
  • 面向平台:Windows / DSH NEXT
  • 版本:v0.1.1,MIT 许可证
  • 目录页:https://www.skillhub.cn/plugins/MingoYung/dsh-superagent-power
  • GitHub:https://github.com/MingoYung/dsh-superagent-power

输入栏按钮是短标签 Sup,面板显示完整名称 Super-agent。按钮位于输入栏底部工具区,可以和权限、REA、并发等按钮放在一起。

核心功能

按需启停后台,释放内存

Super-agent 启动后即使没有正在执行的任务,也会持续占用内存。这个插件把进程的启停放到日常聊天入口:需要时点「开启」,用完点「关闭」。关闭会先调用 Super-agent 的正常收尾流程,再退出独立 CLI 进程;确认进程退出后,界面才显示「已关闭」。

README 记录了一次本机验收观测值:原后台主进程 RSS 约 468 MB,关闭后该进程退出。这是单个环境中的观测值,不是所有机器都能节省同等内存的承诺,实际占用取决于版本、加载的插件、任务和会话状态。

开关是全局的,不属于某个会话

如果 A 会话设为开启、B 会话设为关闭,却操作同一个后台进程,就会出现相互覆盖或状态误导。因此开关属于 DSH_HOME + Super-agent profile,而不是某个聊天会话。切换会话不会自动启动或关闭后台;多个会话同时操作时,状态版本检查会拒绝过期请求,避免悄悄覆盖新选择。

输入栏工具区:  [权限]  [REA]  [并发]  [● Sup]
                                     │
                         Super-agent · 全局
                         所有会话共用同一个开关
                         已关闭              [开启]

关闭前给任务收尾的机会

有活动任务时,面板需要再次点击「中断任务并关闭」。关闭流程调用 Runtime.stop(),随后使用 DSH 的 appExit() 退出,给任务取消、后台工作清理和状态持久化提供正常路径。如果控制接口失联或进程未退出,面板会显示异常,不会直接把状态标成已关闭。

状态点与面板

插件在状态点上区分四种状态,避免重复操作和误报:

状态 按钮提示 行为
已关闭 灰点 没有托管的 Super-agent 后台进程
已开启 绿点 后台可接收、处理任务,面板显示主进程 RSS 和活动任务数
启动 / 关闭中 黄点 等待状态确认,防止重复操作
异常 红点 显示原因,由用户决定重试

其他行为要点:全局状态持久化,下次启动桌面时沿用上次选择;正常关闭桌面时会请求后台退出;单个控制者和串行操作防止重复启动,端口已被占用时拒绝启动第二份实例;同一渲染窗口的会话共享状态,其他可见窗口约 5 秒刷新一次,重新聚焦时立即刷新。关闭状态下只保留桌面内部的按钮与控制服务,不额外增加常驻控制器进程。

需要说明一个取舍:关闭期间不会监听或处理外部任务。插件不做「闲置自动关闭」,因为等待新事件正是主动代理的用途之一,暂无任务不代表用户不需要它值守;需要持续值守时保持开启即可。关闭会保留配置和历史记录,但中断后的恢复行为由上游 Super-agent 决定,不保证外部命令能从中断位置继续。

兼容性

v0.1.1 明确支持 DSH 0.2.1-rc.4、0.2.1-rc.5 和 0.2.2-rc.1。Windows 本机已检查 DSH NEXT 2.0.21-next 和 2.0.22-next;新版对应 Cordis 4.1.0。CI 对上述三个 DSH 版本分别运行同一组隔离测试。

2026-11-05 的升级检查确认:新版桌面仍能加载 Sup、打开面板并读取全局状态;新版 Gateway 和进程控制回归通过。独立 Super-agent 仍使用 CLI 0.2.1-rc.5,其隔离 profile 启停及进程退出再次通过。桌面更新不等于独立 CLI 已更新,本次没有将 Super-agent 的运行时升级到 0.2.2-rc.1。

DSH 宿主接口与 Super-agent 内部生命周期接口仍可能变化,其他版本需要重新验证。macOS / Linux 尚未完成验收。

插件依赖 Runtime.stop() 等现有接口,通过原生 slot 和 Remote 接入桌面,无需修改 DSH 的 app.asar,也不对 Super-agent 核心打补丁。

安装与启用

安装分两侧:桌面的按钮/控制器,以及 Super-agent 进程里的伴随模块。只导入桌面插件包不能完成整个安装。先确认 DSH NEXT、Node.js 24+、独立 DSH CLI 和独立 Super-agent profile 都已就绪,再按下面步骤操作。

第 1 步:安装桌面包

从 Releases 下载 .tgz,或在源码目录执行 npm ci、npm run check、npm pack 自行构建。然后安装到桌面 profile:

dsh plugin --profile desktop add C:/Downloads/local-superagent-power-0.1.1.tgz

包名是 @local/superagent-power,这只是本地插件的命名空间,本项目没有发布到 npm registry。确认 DSH_HOME/profiles/desktop/package.json 已包含此包,且 dsh.profile.bundles 中有且只有一个 @local/superagent-power。若安装工具未自动添加 bundle,在保留原条目的前提下追加:

{
  "dsh": {
    "profile": {
      "bundles": ["@local/superagent-power"]
    }
  }
}

然后在桌面的 cordis.patch.yml 追加 ID 为 local-superagent-power 的配置覆盖,最关键的是 homePath、nodePath、cliPath 和 profileName。常用配置项如下:

配置项 用途 / 默认值
homePath 两侧共用的 DSH_HOME;默认取环境变量 DSH_HOME
profileName Super-agent 独立 profile 名;默认 superagent
nodePath Node 可执行文件;默认 C:/Program Files/nodejs/node.exe
cliPath 独立 CLI 的 lib/bin.js;默认当前用户 APPDATA 下全局 npm 的 DSH 路径
port 实际后台 HTTP 端口;默认 3082,只做占用检查和管理页链接
cwd 启动工作目录;默认 homePath
proxy 可选;透传给子进程的 HTTP_PROXY / HTTPS_PROXY

重载桌面后会生成 DSH_HOME/plugins/superagent-power/control.key。没有已保存选择和可接管的后台时,默认关闭。

第 2 步:配置 Super-agent 伴随模块

在 Super-agent profile 的 cordis.patch.yml 里追加条目,name 指向已安装桌面包里的 bridge.js:

DSH_HOME/profiles/desktop/node_modules/@local/superagent-power/bridge.js

伴随模块与 Super-agent 运行在同一进程,不是另一个守护进程。双方都要使用相同的 homePath 和 profileName,keyFile 指向第 1 步生成的控制密钥。不要把密钥文件加入 Git 或复制进公开问题报告。

第 3 步:验证

  1. 在任意会话输入栏点击 Sup,确认面板标明「全局」。
  2. 点击「开启」,等待绿点与「已开启」。后台业务未配置完成时会单独提示。
  3. 切换会话,确认显示同一全局状态。
  4. 无任务时点击「关闭」,等待「已关闭」,并检查对应后台进程确已退出。
  5. 若面板提示有活动任务,评估是否中断后再点第二次关闭。

典型用法

日常使用基本只有两步:需要 Super-agent 值守时在输入栏点 Sup →「开启」;用完用「关闭」退出后台。首次开启真实业务 profile 会恢复其监听和任务行为,README 建议选择合适的空闲时间,或使用独立测试 profile 验证。

关闭状态下只保留桌面浏览器内的按钮与控制服务,不新增常驻进程;全局状态持久化,桌面重开后沿用上次选择。若希望下次保持关闭,先在面板点「关闭」。

启动失败时可以查看 DSH_HOME/plugins/superagent-power/worker.log,每次启动覆盖该日志;其中可能包含本地登录链接,公开报告前必须脱敏。插件不会无限重试启动,异常会显示在面板,由用户决定是否重试。异常退出后若保存的选择仍为开启,下次桌面初始化会再尝试启动一次。

适用场景与注意

适合这几类人:

  • 只在需要时才用 Super-agent,不想它在后台长期占内存。
  • 多个 DSH 会话共用同一个 Super-agent profile,希望有单一全局开关而不是会话级状态。
  • 想在输入栏里随权限、并发等按钮一起操作后台进程。

使用前注意以下几点:

  • 插件以当前 DSH 进程权限运行,能在桌面上启动、停止独立 CLI。安装前应阅读源码与许可证(MIT),确认配置路径、端口和进程参数符合你的部署。
  • 本插件是社区项目,不是 DeepSeek 官方插件;命名空间 @local/superagent-power 只表示本地插件,不代表已发布到 npm。
  • Sup 按钮不会注册到未加载 bundle 的桌面上,只装文件不加载 bundle 是没效果的。
  • 本插件管理的是独立运行的 Super-agent profile,不适用于把 Super-agent 直接加载进桌面主 profile 后再关闭整个桌面进程的场景。
  • 本插件没有修改系统开机启动项,卸载不会删除业务配置和会话历史。

结尾

这个插件解决的是一件具体的事:给常驻后台的 Super-agent 提供一个全局的、放在输入栏里的开关,关闭时走正常收尾流程退出进程,避免不使用时仍长期占用内存。它不追求更复杂的调度能力,取舍也很明确——关闭期间不监听外部任务。如果你已经在用 DSH NEXT 和独立 Super-agent profile,可以从下面的目录页和仓库开始了解。

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

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

小夜