dsh-workspace-native-open:DSH 工作區菜單增強

前言

2026 年,DeepSeek Harness (DSH) 依然是智能體開發中常用的本地化工具。當使用 dsh --profile web 啓動 Web GUI 進行管理時,開發者通常只能通過瀏覽器查看工作區狀態,缺乏直接在本地環境交互的能力。dsh-workspace-native-open 作爲一個客戶端插件,通過注入菜單項解決了這一痛點,讓 Web 界面能夠直接觸發宿主機的文件操作。

核心功能

該插件僅在通過 loopback 地址訪問 Web GUI 時生效。在 DSH 的工作區行點擊 ⋯ 菜單,會新增三個本機動作:

  1. 在文件資源管理器打開:調用系統文件管理器(explorer.exe / open / xdg-open)。支持 WSL 路徑的自動翻譯。
  2. 在終端打開:在工作區目錄啓動新終端窗口。Windows 優先探測 pwsh,其次爲 powershell;WSL 路徑會經過 wslpath 翻譯後交由 Windows 控制台打開;其他平臺使用 $TERMINAL。
  3. 在 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 .cmd shim(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 界面與本地文件系統的安全交互。它適合需要在瀏覽器中管理本地開發環境的用戶。

GitHub 倉庫:JoeyLearnsToCode/dsh-workspace-native-open

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

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

小夜