在 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)。
安裝步驟¶
- 從 Releases 頁面下載對應平臺的壓縮包(如
dsh-desktop-0.4.0-win32-x64.zip)。 - 解壓文件。
- 將解壓後的目錄鏈接到 DSH 的
dsh-desktopprofile 中。
注意: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 服務,使得啓動更加輕量,同時保留了完整的會話和工具能力。對於習慣在終端工作,但又需要圖形化界面的開發者,這是一個實用的工具。