前言¶
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'
注意事項¶
- 避免雙重打開:DSH 內置了
open default browser功能。如果使用此插件來打開瀏覽器,通常需要在cordis.patch.yml中覆蓋web-runtime的config,關閉內置的瀏覽器打開行爲,否則會出現瀏覽器被打開兩次的情況。 - 權限問題:插件以 DSH 進程的權限運行,因此配置的命令不應嘗試訪問普通用戶無權限的敏感目錄或文件。
- 依賴版本:該插件需要 DSH 版本 >= 0.1.2-rc.1 以及 Node.js >= 20。
結語¶
dsh-startup-command 提供了一種輕量級的方式,將 DSH Web 的啓動與其後的瀏覽器或工具啓動流程解耦。通過配置文件驅動而非硬編碼,它保持了靈活性,同時通過非阻塞機制保證了 DSH 運行時的穩定性。對於需要自動化啓動特定瀏覽器環境或執行啓動後腳本的場景,這是一個實用的工具。