前言¶
2026 年,DeepSeek Harness (DSH) 依然是智能體開發中常用的本地化工具。當使用 dsh --profile web 啓動 Web GUI 進行管理時,開發者通常只能通過瀏覽器查看工作區狀態,缺乏直接在本地環境交互的能力。dsh-workspace-native-open 作爲一個客戶端插件,通過注入菜單項解決了這一痛點,讓 Web 界面能夠直接觸發宿主機的文件操作。
核心功能¶
該插件僅在通過 loopback 地址訪問 Web GUI 時生效。在 DSH 的工作區行點擊 ⋯ 菜單,會新增三個本機動作:
- 在文件資源管理器打開:調用系統文件管理器(
explorer.exe/open/xdg-open)。支持 WSL 路徑的自動翻譯。 - 在終端打開:在工作區目錄啓動新終端窗口。Windows 優先探測
pwsh,其次爲powershell;WSL 路徑會經過wslpath翻譯後交由 Windows 控制台打開;其他平臺使用$TERMINAL。 - 在 Code 打開:直接嘗試打開目錄。插件不檢測 VS Code 是否安裝,點擊後靜默忽略失敗情況。WSL 下優先使用 Linux 側的
code腳本。
此外,插件具備以下特性:
- 安全性:僅對
localhost、127.0.0.1、::1以及內建放行的dsh.localhost顯示菜單。遠程訪問或非白名單 Host 頭的請求會被拒絕。 - 靜默運行:失敗時不打擾用戶,但所有請求、探測結果和錯誤日誌都會以
workspace-native-open前綴寫入 harness 日誌。
安裝¶
需要使用 Web profile (dsh --profile web)。通過官方命令安裝:
dsh plugin --profile web add github:JoeyLearnsToCode/dsh-workspace-native-open
工作原理¶
插件分爲宿主側和客戶端側兩部分。
宿主側在 webServer 服務上註冊了 POST /api/plugin/workspace-native-open 端點。該端點會校驗 Host 頭是否在白名單內,檢查請求體長度和超時(413/408),並執行本機打開動作。爲了安全,它強制 JSON content-type 並進行 CSRF 防護。
客戶端側通過訂閱 webserver/index-inject 事件,向 index.html 注入腳本和樣式。腳本在 loopback 域名下激活,通過觀察 DOM 中的工作區菜單按鈕(依賴 aria-label 識別)和其後的 portal 菜單(點擊因果配對)來動態添加菜單項。菜單文案根據 <html lang> 和插件內聯的翻譯文件生成。
平臺細節與注意事項¶
- Windows 終端:使用
where.exe探測pwsh和powershell。注意 Windows 10+ 必帶 PowerShell,因此不再保留cmd兜底。Windows 控制台程序使用Start-Process且不能帶DETACHED_PROCESS,否則命令會靜默退出。 - VS Code 安全:Node ≥ 20.12 拒絕直接 spawn
.cmdshim(CVE-2024-27980)。因此code.cmd通過 PowerShell launcher 調用,插件因此不探測安裝狀態。 - WSL 行爲:在 WSL 上點擊「在終端打開」會在翻譯後的
\\wsl$路徑打開 Windows 控制台,這與文件資源管理器的行爲一致。 - 自定義白名單:
dsh.localhost已內建放行。如需放行其他本地域名,需修改src/index.ts中的LOOPBACK_HOSTNAMES並重新構建。 - 日誌:所有操作均以
workspace-native-open爲前綴記錄日誌,包括失敗原因和退出碼。
總結¶
dsh-workspace-native-open 是一個輕量級的 DSH 插件,通過 DOM 注入和宿主端點橋接,實現了 Web 界面與本地文件系統的安全交互。它適合需要在瀏覽器中管理本地開發環境的用戶。