前言¶
DeepSeek Harness(DSH)的 Web 界面在瀏覽器中運行,而實際的工作目錄和進程管理在宿主機上。當需要在本地文件管理器、終端或編輯器中查看當前會話的工作目錄時,手動切換窗口會打斷工作流。DSH 插件生態旨在解決這類集成問題,dsh-open-in-x 就是其中之一,它提供了從 Web 界面直接調用本機外部應用的能力。
功能介紹¶
該插件是一個 DSH bundle,核心功能是在當前會話的工具欄添加“在外部應用中打開”按鈕。點擊該按鈕後,會話的工作目錄會被傳遞給宿主機上已安裝的本地應用。
支持的本地應用包括:
* 文件管理器:macOS Finder、Windows 文件資源管理器、Linux 默認文件管理器
* 終端:macOS 終端、Windows Terminal、常見 Linux 終端模擬器
* 代碼編輯器:Visual Studio Code、Cursor、Windsurf、Zed
* IDE:IntelliJ IDEA、WebStorm、PyCharm、Android Studio
插件會自動檢測宿主機已安裝的應用並展示,僅展示“本機”(即運行 dsh web 的機器)上安裝的軟件。
安裝與啓用¶
安裝前請確保環境滿足要求:宿主機安裝了 Node.js 22.19+ 或 24+,以及兼容的 DeepSeek Harness 版本(0.1.0-rc.6 或更高)。
- 執行安裝命令:
npx @deepseek-ai/dsh plugin --profile web add dsh-open-in-x
- 安裝完成後,重啓
dsh web服務:
npx @deepseek-ai/dsh web
- 在 DSH Web 界面中,選擇一個已有工作目錄的會話,點擊頂部工具欄出現的“在外部應用中打開”按鈕,選擇目標應用即可。
配置說明¶
安裝後,可以通過修改配置文件來調整插件行爲。默認啓用所有內置 launcher,未安裝的應用不會在界面顯示。
支持以下配置項:
apps:
- finder
- terminal
- vscode
- cursor
- windsurf
- zed
- idea
- webstorm
- pycharm
- android-studio
allowRemote: false
allowLegacyPaths: false
defaultApp: vscode
quickOpen: true
allowRemote:默認爲false。該選項控制是否允許遠程 Web 連接觸發宿主機的 GUI 進程。只有明確理解風險且通過可信反向代理訪問時才建議開啓。allowLegacyPaths:默認爲false。用於控制是否兼容舊版 DSH 的 Workspace 菜單路徑行爲。新式會話由 Host 解析目錄,舊版僅提供路徑,默認禁用以保證安全。quickOpen:開啓後,主按鈕可直接使用defaultApp打開,下拉菜單仍可選擇其他應用。
應用列表僅在 DSH Web 頁面加載時檢測一次,安裝新應用後需刷新頁面以更新列表。
工作原理¶
插件包含 Browser half 和 Host half 兩部分:
* Browser half:優先註冊到公開的 conversation.session.header.actions slot,僅向 Host 發送當前會話的 ID。
* Host half:在 ctx.webServer 註冊唯一的 POST /__dsh/open-in-x 路由,接收請求並在宿主機啓動選定的應用程序。
安全邊界¶
爲防止潛在風險,插件在安全設計上做了限制:
* 請求限制:只接受 JSON POST,請求體上限 8 KiB,嚴格拒絕額外字段。
* 訪問控制:默認只接受 loopback(127.0.0.1)和同源請求。
* 操作限制:Browser 只能提交固定的 App ID 和 Session ID,不能提交可執行文件路徑、參數或命令行文本。工作目錄由 Host 根據 Session header 解析,啓動進程使用 argv 數組且禁用 shell 拼接。
* 限流:相同 App 和工作目錄的操作在短時間內會被限流,防止重複點擊導致大量進程啓動。
總結¶
dsh-open-in-x 解決了 Web 界面與本地文件系統及編輯器之間割裂的問題,適合需要頻繁在瀏覽器中查看或編輯本地項目的開發者。更多細節可查看插件目錄:https://www.skillhub.cn/plugins/nikoart-liu/dsh-open-in-x 或源碼倉庫:https://github.com/nikoart-liu/dsh-open-in-x。