dsh-service-hub:在 DSH 側欄啓停本機服務

前言

用 DSH 做開發時,常見的麻煩是本機服務散落在各處:有的藏在安裝目錄裏,有的是端口監聽進程,有的是 npm 或用戶 bin 目錄下的命令包裝腳本,還有隨手寫的 bat 批處理。想停掉一個服務,得先想起來它裝在哪、啓動腳本叫什麼名字、日誌寫到哪個目錄。

下面介紹 liuhuan007/dsh-service-hub。它把本機服務、一次性腳本和終端工具登記成一個列表,然後在 DSH 側欄裏提供啓動、停止、重啓、看日誌、刷新這些操作,不用去記啓動器在哪。

它是一個客戶端分類的插件,由 liuhuan007 維護,許可證爲 MIT,包版本見 README 中的 package.json。

這是什麼

一句話定位:一個 DSH 服務面板插件,用來啓停和監控你本機上自己登記的服務、腳本和終端工具。

它解決的核心問題是入口分散。README 的說法是,這樣你就不用記住每個啓動器放在哪。插件自帶一個零依賴的控制台守護進程(console/,只用 Node 標準庫),裝上插件即可用,不用再單獨裝別的工具,也沒有機器相關的硬編碼路徑需要下載或配置。

核心功能

插件激活後,Host 端會在 127.0.0.1:3999 啓動自帶的控制台守護進程;插件卸載時隨之停止。註冊數據和日誌放在 ~/.dsh-service-hub/,因此升級或重裝插件後服務列表仍保留。

DSH 側欄獲得一個 Service 選項卡,列出每條已登記條目,並顯示實時狀態、健康信息、端口和快捷訪問 URL,同時提供 start / stop / restart / logs / refresh 按鈕,以及一個可在手機上打開的 LAN 地址。

因爲進程控制歸守護進程所有,所以即使你關掉面板,已啓動的服務也會繼續運行。

從 0.3.0 起插件自帶控制台,無需額外安裝第三方插件。

發現與登記

面板支持掃描未登記的可執行文件和監聽端口。Scan 會給每個候選先給出一個建議類型:安裝目錄下的程序和快捷方式爲 app,監聽端口的程序爲 service,npm 或用戶 bin 目錄下的命令包裝爲 terminal,其他批處理文件爲 script。發現對話框裏帶類型選擇器,這個猜測始終可以覆蓋。系統目錄(C:\Windows\...)會被跳過。

安全邊界

README 中寫明的邊界如下,都是可對照的設計約束:

  • 客戶端 bundle 只對 http://127.0.0.1:3999 發起 fetch,只訪問 localhost。
  • 自帶守護進程只綁定 127.0.0.1,不綁定任何對外接口。
  • 插件自身不做遙測,也沒有對外網絡請求。
  • 守護進程只啓停你登記過的命令,不會自行運行任何東西;每條命令在面板中可見,並存放於 ~/.dsh-service-hub/data/registry.json。

防護細節

自帶控制台只監聽 127.0.0.1,並對隨手觸發的使用做了防護:

  • 不返回 CORS 頭,其他來源的瀏覽器請求會在預檢階段失敗,隨機網站讀不到 /api/state,也調不動修改類接口。
  • Origin / Sec-Fetch / Host 校驗會攔截腳本發起的跨站請求並返回 403;頂級導航和 iframe 導航仍然放行,面板可以嵌入頁面。
  • 條目 id 限制爲 [A-Za-z0-9._-]{1,64},日誌路徑全部解析在日誌目錄內,因此 /api/items/<id>/logs 讀不到其他文件。
  • /healthz 只暴露 { ok, version, pid } 和 X-LC-Daemon 頭,Host 用它確認自己連的是這個插件的守護進程,而不是恰好佔用 3999 端口的無關進程。

這些保證有對應的迴歸測試,npm test 即可運行。

安裝與啓用

官方安裝命令,按官方 README 原文:

dsh plugin --profile desktop add dsh-service-hub

然後重啓 DeepSeek Harness(或重載窗口),打開 Service 選項卡。

在 npm 正式發佈之前,從源碼安裝的命令是:

dsh plugin --profile desktop add github:liuhuan007/dsh-service-hub

前置條件

要求 原因
DeepSeek Harness 0.2.1+,帶 Web/Desktop UI 客戶端 bundle 面向 platform: web
dsh-better-sidebar 面板通過該服務的機制註冊側欄選項卡
Node 18+ 運行自帶的控制台守護進程(桌面應用自帶一個)
Windows 進程管理使用 PowerShell 和 tasklist/netstat

端口 3999 必須空閒。如果已有另一個控制台在監聽該端口,插件會複用它,而不是再啓動一個。

典型用法

下面按 README 的可復現路徑走一遍。

1、安裝插件並重載窗口。

dsh plugin --profile desktop add dsh-service-hub

2、在面板裏掃描本機候選。發現對話框會列出未註冊的可執行文件和監聽端口,每條帶建議類型,可當場修改。

3、把需要的服務加入列表。每條條目的命令在面板中可見,同時寫入 ~/.dsh-service-hub/data/registry.json。

4、通過面板的啓動 / 停止 / 重啓按鈕管理進程,用 logs 查看日誌,用 refresh 刷新狀態。

5、如需查看回歸測試和發佈文件清單:

npm test
npm pack --dry-run

注意:以當前 dsh 進程權限運行

插件運行在當前 dsh 進程的權限下,它能啓動和停止你登記的命令。安裝前應先檢查源碼與許可證,確認 registry.json 裏登記的命令符合預期,再按需啓停。

其他來自官方 README 的已知限制:

  • 面板從會話頭部打開(⚙ 服務)。安裝 dsh-better-sidebar 會額外在左側欄加一個同樣的面板選項卡,這一步是可選的。
  • 面板文本目前只有中文;locale/ 下的 meta.title / meta.description 有英文和中文兩版,供插件清單使用。
  • 控制台 URL 固定爲 127.0.0.1:3999。

兼容性方面,README 給出的範圍是 DSH >=0.2.1,UI 爲 Web / Desktop(側欄選項卡),對 TUI 和 headless profile 無效果,OS 爲 Windows。

小結

這個插件的價值在於把本機服務的入口收進 DSH 側欄,並提供狀態、健康、端口與日誌的統一視圖,同時用一個只綁定 localhost 的自帶守護進程承擔進程控制。如果你的服務清單已經點狀分佈在安裝目錄、bin 目錄和批處理文件裏,可以先按上面的安裝命令試一遍,再用 Scan 逐步登記。

插件目錄頁:https://www.skillhub.cn/plugins/liuhuan007/dsh-service-hub

源碼:https://github.com/liuhuan007/dsh-service-hub

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

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

小夜