dsh-desktop:直接啓動 DSH 原生桌面客戶端的插件

在 DSH(DeepSeek Harness)開發中,使用 dsh web 啓動 Web UI 是常見做法。這種方式需要在本地啓動 HTTP 服務器,並手動打開瀏覽器訪問。如果希望獲得更原生的應用體驗,直接使用桌面窗口是個更優解。

下面介紹 dsh-desktop 插件。這是一個 DSH bundle patch 插件,它通過 Electron 啓動一個原生窗口,直接加載 DSH Web UI,並提供完整的桌面交互能力。

核心功能

  • 一鍵啓動:執行啓動命令後,桌面窗口會自動彈出並加載界面,無需手動打開瀏覽器。
  • 無需本地 HTTP 服務:插件通過 IPC(進程間通信)和自定義協議(dsh-desktop://)橋接前端與後端,不佔用 TCP 端口,不啓動 node:http 服務。
  • 終端立即釋放:如果在交互式終端中運行,插件會將窗口實例移交爲後臺進程,命令行提示符會立即返回。日誌會輸出到 ~/.dsh/desktop.log。
  • 複用 DSH Web 能力:前端 UI、會話持久化、Agent 及工具均複用 DSH 現有的 Cordis 服務,無需二次開發。
  • 定製化標題欄:隱藏原生系統標題欄,通過 preload 腳本注入 DSH 風格的標題欄,並保留原生最小化/最大化/關閉控件。
  • 雙向清理機制:
    • 關閉窗口會觸發 DSH 自身退出(清理 Agent 和相關服務)。
    • DSH 主進程退出時,Electron 會檢測並在 2 秒內自動關閉窗口。

安裝與啓用

前置要求

  • Node.js 24+ 及 npm。
  • DSH CLI 版本 0.1.2-rc.1 或更高。
  • 已配置模型憑證(如 DEEPSEEK_API_KEY)。

安裝步驟

  1. 從 Releases 頁面下載對應平臺的壓縮包(如 dsh-desktop-0.4.0-win32-x64.zip)。
  2. 解壓文件。
  3. 將解壓後的目錄鏈接到 DSH 的 dsh-desktop profile 中。

注意:DSH 0.1.5+ 將 desktop profile 名字保留給官方應用,因此本插件使用非保留的 dsh-desktop profile。如果 profile 不存在,需先初始化:

# 初始化 profile(僅首次使用)
dsh --profile dsh-desktop --from-default-profile web --dump-config

然後執行安裝命令(Windows 示例):

dsh plugin --profile dsh-desktop add link:D:\path\to\dsh-desktop-0.4.0-win32-x64

在 macOS/Linux 上,路徑替換爲對應的絕對路徑即可。由於發佈包已內置 Electron 運行時(位於 dist/electron/runtime/),無需執行 npm install。

典型用法

安裝完成後,使用以下命令啓動桌面客戶端:

dsh --profile dsh-desktop

啓動後,Electron 窗口會自動打開並加載 DSH Web UI,你可以在窗口內直接進行交互。

終端行爲控制

如果需要在調試或 CI 環境中保持前臺運行,可以使用環境變量:

  • DSH_DESKTOP_NO_DETACH=1:強制前臺運行,不脫離終端。
  • DSH_DESKTOP_LOG:指定日誌路徑,默認爲 ~/.dsh/desktop.log。

查看插件幫助信息:

dsh --profile dsh-desktop --help

注意事項

  • 開發模式差異:如果是直接從源碼開發,需要執行 npm install 來解析依賴;如果下載的是已打包的 Release 版本,則不需要安裝依賴。
  • 權限與安全:插件以當前 DSH 進程的權限運行,安裝前建議檢查源碼及許可證。

總結

dsh-desktop 解決了從命令行直接進入桌面級 DSH 交互的需求。它通過 IPC 通信替代了 HTTP 服務,使得啓動更加輕量,同時保留了完整的會話和工具能力。對於習慣在終端工作,但又需要圖形化界面的開發者,這是一個實用的工具。

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

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

小夜