dsh-startup-command: DeepSeek Harness Web 插件

前言

DeepSeek Harness (DSH) Web 在啓動完成後,默認行爲通常是打開系統的默認瀏覽器。但在實際開發或自動化場景中,開發者往往需要更精細的控制:例如,強制在特定瀏覽器中以應用窗口模式打開,或者需要在 GUI 啓動前執行一些系統級準備動作(如等待服務就緒、啓動輔助程序)。

這就需要一種機制,能夠在 DSH Web 服務器完全就緒後,由系統自動觸發指定的命令。dsh-startup-command 插件正是爲此設計,它允許用戶配置啓動後的執行動作。

插件簡介

這是一個 DeepSeek Harness Web 插件,由維護者 kagurazakayashi 提供。其核心作用是在 Web 服務器監聽端口、Loader 樹穩定之後,執行用戶在配置文件中定義的命令。該插件通過 settings.yaml 中的 dsh-startup-command 命名空間進行配置,支持佔位符替換,且不會阻塞 DSH 主進程的關閉。

核心功能

  • 啓動後觸發:插件嚴格遵循 DSH 的生命週期,在 Web 服務器開始監聽、Loader 樹穩定後才執行命令,確保獲取到真實的端口和 Token。
  • 完全可配置:命令支持單行字符串或命令數組,數組中的命令會按順序依次執行(前一個退出後,下一個纔開始)。
  • 佔位符支持:
    • {url}:自動替換爲 GUI 的實際訪問地址(包含 Token,支持 OS 分配端口)。
    • {home}:替換爲用戶目錄(os.homedir())。
    • {browser}:自動檢測 Chromium 系瀏覽器(優先級:Chromium > Chrome > Edge,或系統默認瀏覽器)。
  • 非阻塞設計:子進程以 detached 和 unrefed 模式啓動,獨立於 DSH 運行,不會阻礙 DSH 的關閉流程。
  • 開關與模式:提供 enabled 開關臨時禁用,以及 shell 模式選項(用於處理包含空格的路徑)。
  • Web 配置界面:在設置菜單中提供可視化卡片,支持直接編輯配置和生成示例命令。

安裝與啓用

安裝該插件需要通過 npm 安裝,並在配置文件中掛載。

1. 獲取插件包

在終端中執行以下命令安裝:

npm install @kagurazakayashi/dsh-startup-command

2. 掛載插件

編輯 C:\Users\<you>\.dsh\profiles\web\cordis.patch.yml,添加掛載配置。該步驟僅註冊插件,具體的命令邏輯仍在 settings.yaml 中定義。

- insert:
    - id: dsh-startup-command
      name: '@kagurazakayashi/dsh-startup-command'
      inject: [webServer]

3. 配置並重啓

在 C:\Users\<you>\.dsh\settings.yaml 中添加 dsh-startup-command 命名空間,並重啓 dsh web。重啓後,在 Settings → Plugins → Plugin configuration 下會出現該插件的設置卡片。

配置與用法

配置項位於 settings.yaml 的 dsh-startup-command 鍵下:

dsh-startup-command:
  enabled: true
  shell: false
  command: '"C:\Program Files\Google\Chrome\Application\chrome.exe" --app={url}'

配置項說明

  • command (string | string[]):要執行的命令。如果是數組,將按順序執行;如果是字符串,需注意路徑中包含空格的情況。
  • enabled (boolean):是否啓用插件,默認爲 true。
  • shell (boolean):是否通過系統 Shell 執行命令。默認爲 false(直接傳參數組),更安全;設爲 true 可處理帶空格的路徑。

佔位符使用

  • {url}:替換爲 http://127.0.0.1:<實際端口>/?token=...。這是新版本 DSH Web 必需的認證地址。
  • {home}:替換爲當前用戶的主目錄路徑。
  • {browser}:替換爲檢測到的 Chromium 系瀏覽器可執行文件路徑。

使用示例

示例 1:自動檢測瀏覽器並啓動應用模式窗口

dsh-startup-command:
  command: '"{browser}" --user-data-dir="{home}/.dsh/dsh-browser-data" --disk-cache-dir="{home}/.dsh/dsh-browser-cache" --app={url} --no-first-run --disable-extensions'

示例 2:多命令順序執行

先執行等待命令,再啓動瀏覽器:

dsh-startup-command:
  command:
    - 'cmd /c ping -n 3 127.0.0.1'
    - '"C:\Program Files\Google\Chrome\Application\chrome.exe" --app={url}'

示例 3:打開任意程序

dsh-startup-command:
  command: 'C:\Windows\System32\notepad.exe'

注意事項

  1. 避免雙重打開:DSH 內置了 open default browser 功能。如果使用此插件來打開瀏覽器,通常需要在 cordis.patch.yml 中覆蓋 web-runtime 的 config,關閉內置的瀏覽器打開行爲,否則會出現瀏覽器被打開兩次的情況。
  2. 權限問題:插件以 DSH 進程的權限運行,因此配置的命令不應嘗試訪問普通用戶無權限的敏感目錄或文件。
  3. 依賴版本:該插件需要 DSH 版本 >= 0.1.2-rc.1 以及 Node.js >= 20。

結語

dsh-startup-command 提供了一種輕量級的方式,將 DSH Web 的啓動與其後的瀏覽器或工具啓動流程解耦。通過配置文件驅動而非硬編碼,它保持了靈活性,同時通過非阻塞機制保證了 DSH 運行時的穩定性。對於需要自動化啓動特定瀏覽器環境或執行啓動後腳本的場景,這是一個實用的工具。

相關鏈接:
* 插件目錄頁
* GitHub 倉庫

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

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

小夜