前言¶
在使用 DeepSeek Harness(DSH)Web UI 進行開發時,一個常見的工作流是讓 AI 在當前會話的工作區生成代碼,隨後需要立即切換到本地環境打開該文件夾進行後續操作。手動在文件管理器中定位目錄效率較低。
dsh-open-in-app 插件解決了這個問題。它在會話頭部提供了一個 Codex 風格的拆分控件,允許用戶直接通過瀏覽器界面,調用宿主機上已安裝的終端模擬器或編輯器/IDE 打開當前會話的工作區文件夾。
功能介紹¶
該插件在會話頭部工具行(聊天窗口右上角,Session log 按鈕旁)新增了一個控件。該控件包含一個文件夾按鈕和一個下拉箭頭,具體功能如下:
-
一鍵打開工作區
點擊文件夾按鈕,使用上次爲該工作區選擇的應用打開當前目錄。如果之前沒有選擇過,則回退到優先級最高的默認編輯器(如 VS Code、Cursor 等),若未安裝則使用系統默認應用。 -
應用選擇菜單
點擊下拉箭頭,菜單按應用類型分組,包含以下條目:- 最近使用:記錄在
localStorage中的歷史選擇。 - 系統默認應用:調用宿主機的默認文件夾處理器(如 macOS 的 Finder、Windows 的資源管理器)。
- 白名單應用:分爲“終端應用”和“編輯器與 IDE”兩類,顯示已安裝的應用列表。
- 最近使用:記錄在
-
圖標展示
菜單項和按鈕均會顯示對應應用的圖標(32px PNG)。圖標通過解析應用包或 freedesktop 圖標主題獲取。
安裝與啓用¶
插件通過 npm 發佈,需要使用 dsh plugin 命令安裝到 Web profile。
dsh plugin --profile web add dsh-open-in-app
如果使用本地源碼進行開發:
git clone https://github.com/open-dsh-plugins/dsh-open-in-app.git
cd dsh-open-in-app
dsh plugin --profile web add .
安裝完成後,必須重啓 dsh web 服務才能加載新插件。
使用方法¶
- 在 DeepSeek Harness Web UI 的會話頭部,找到新增的“文件夾”圖標按鈕。
- 點擊圖標打開工作區(使用上次選擇的應用)。
- 若需切換應用,點擊圖標右側的下拉箭頭。
- 從菜單中選擇“終端應用”或“編輯器與 IDE”中的具體工具。
- 選擇後,宿主機上的對應應用會打開當前會話的工作區目錄。
白名單與配置¶
插件內置了一個應用白名單,用於自動識別和分類已安裝的工具。
- 終端應用:Terminal, iTerm2, Ghostty, Warp, Alacritty, kitty, WezTerm, Hyper, Tabby, Rio, Contour, Foot, Tilix, Terminator, Konsole, GNOME Terminal, xterm, mintty, Windows Terminal, PowerShell, Cmder, ConEmu。
- 編輯器與 IDE:Visual Studio Code, Cursor, Windsurf, Zed, Xcode, Android Studio, IntelliJ IDEA, PyCharm, WebStorm, GoLand, CLion, PhpStorm, RubyMine, Rider, DataGrip, DataSpell, RustRover, Fleet, Aqua, Visual Studio, Eclipse, NetBeans, Sublime Text, Nova, BBEdit, TextMate, CodeRunner, MacVim, Neovide, Emacs, Lite XL, HBuilderX。
如需增刪條目,可編輯 lib/apps.js 中的 WHITELIST 數組。
安全與架構說明¶
- 運行邊界:Remote 端點不在特權方法列表中,處於瀏覽器信任邊界(loopback 或可信主機)內。
- 進程派生:打開路徑由宿主機派生原生進程。路徑來源於會話自身的
cwd,相對安全。 - 圖標解析:僅讀取標準應用路徑及 freedesktop 圖標主題,緩衝區上限爲 256 KB。
- 錯誤處理:命令失敗時以菜單中的錯誤行呈現,不拋出異常。
總結¶
dsh-open-in-app 是一個輕量級插件,通過在 Web UI 中集成本地應用調用能力,簡化了從“AI 生成”到“本地調試”的切換流程。它適合需要在 DSH Web UI 中頻繁操作本地文件系統的開發者。