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
羽毛球分组比赛记分
小程序二维码

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

小夜