dsh-launch-pad:統一的本地服務管理方案

在 DeepSeek Harness (DSH) 的使用場景中,Agent 往往需要猜測本地服務的啓動命令,這容易導致命令錯誤。同時,多個項目同時運行時,端口衝突是常見問題,手動管理進程和日誌也增加了操作成本。dsh-launch-pad 旨在解決這些問題,提供一個統一的本地服務控制台。

這是一個本地服務控制台。它通過全局 registry 管理服務,防止端口衝突,並提供 UI 面板和 Agent 工具來管理服務的生命週期。

核心功能

啓動命令歸一化探測
插件會按照優先級探測啓動命令:.dsh-services.yml(權威)> package.json(dev/start/serve)> docker-compose.yml > Makefile > justfile > Python 項目文件等。這降低了手動編寫啓動命令的頻率。

全局 registry 與端口仲裁
所有服務在 ~/.dsh/service-registry.json 中全局註冊。啓動前會通過 lsof 檢查端口占用,在 portMode=auto 模式下,衝突時自動分配最近空閒端口並注入參數(如 --port N 或 PORT=N)。

DSH 界面操作
DSH Web 界面側邊欄會出現“服務”按鈕。點擊後彈出懸浮面板,可以查看服務狀態、實際端口,並支持一鍵啓動、停止和重啓。日誌會持久化存儲在 ~/.dsh/services/logs/ 目錄下並支持展開查看。

Agent 工具雙通道
插件暴露了 7 個 agent 工具,包括 service_list、detect、register、start、stop、restart 和 status。這意味着 Agent 不再需要猜測啓動命令,而是可以調用這些工具來精確管理服務。

自動跟隨與登記
面板會自動跟隨 DSH 當前選中的會話。當切換到未登記的新項目時,Host 會自動探測並註冊候選服務(60s 節流防抖),並在面板提示“已自動登記”。

安裝與啓用

使用官方插件安裝命令添加該倉庫:

dsh plugin --profile web add github:realpkuasule/dsh-launch-pad

安裝後需要重啓 DSH 並刷新頁面以加載插件。

配置與用法

在項目根目錄下創建 .dsh-services.yml 文件進行服務定義:

services:
  web:
    command: npm run dev
    cwd: .
    port: 5173
    portMode: auto
    template: npm

在 Agent 對話中,可以使用工具查看服務狀態:

# 使用 agent 工具 service_list 查看服務狀態

依賴與限制

依賴環境
插件依賴以下系統工具:python3(用於 setsid 包裝進程)、lsof、pgrep。目前 Windows 系統尚未適配。

已知行爲
* 禁止雙開:同一個服務實例無法重複啓動。
* 冷門框架:對於不識別的端口參數,端口注入會退化爲 PORT 環境變量。
* Docker 端口:Docker 端口不自動重寫,若衝突會報錯。
* Monorepo:沒有標準 dev/start/serve 腳本的項目(如 pnpm --filter apps/web dev)可能需要手動編寫 .dsh-services.yml。

總結

dsh-launch-pad 通過命令歸一化探測和全局端口仲裁,解決了本地開發環境中的服務管理混亂問題。它結合了 DSH 的 UI 交互和 Agent 工具,提供了從配置到啓動、監控的一站式方案。更多細節可查閱 GitHub 倉庫。

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

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

小夜