前言¶
用 DeepSeek Harness(DSH)做智能體開發時,Web 側欄裏的工作區通常要在界面裏手動登記,或改 workspace.json。如果你已經在 Windows 資源管理器裏定位到項目目錄,再切回瀏覽器登記,步驟會重複且容易打斷節奏。社區插件 dsh-folder-launcher(維護者 snnnnke)面向「外部來源傳入文件夾路徑、在運行中的 DSH Web 裏打開爲工作區」這一需求:右鍵文件夾即可登記,且不必手改配置文件。下面介紹它的組成、安裝方式與使用注意。
這是什麼¶
dsh-folder-launcher 是 DSH 的客戶端類插件:接收來自外部的文件夾路徑,通過 DSH 自帶的 workspaceRegistry 註冊,使路徑出現在 正在運行 的 DSH Web 側欄中。倉庫說明爲:A dsh plugin that receives folder paths from external sources and opens them as workspaces。
實現上分爲兩部分:
- 主機插件:隨
dsh web加載,在本地提供受保護的 HTTP 路由。 - 按用戶的 Explorer 集成(Windows)或 Node CLI(Linux/macOS 及腳本):把路徑 POST 給主機插件。
無需管理員權限、無需重啓已運行的 DSH 進程、無需編輯 workspace.json。DSH 主機本身要求 Node 22;Explorer 腳本兼容 Windows 7/8/10/11(PowerShell 2.0 語法),但 DSH 未必能在 Windows 7 上運行。
核心功能¶
工作區註冊方式¶
插件調用 ctx.workspaceRegistry.create(path),與 DSH Web 側欄的正常工作區展示一致,而不是繞過註冊表直接改文件。
本地 loopback 接口¶
外部啓動器不依賴瀏覽器 Cookie:通過僅監聽 loopback 的路由,並用本地 bearer token 鑑權。發現文件默認位於 $DSH_HOME(Windows 上一般爲 %USERPROFILE%\.dsh):
$DSH_HOME/folder-launcher/state.ini # pid / port / origin / startedAt
$DSH_HOME/folder-launcher/token # 32-byte random hex token
Windows 資源管理器右鍵¶
流程概覽:
Explorer 右鍵
│ wscript.exe(無控制台閃窗)
▼
explorer/dsh-folder-launcher.ps1
│ 讀取 state.ini + token
│ POST /dsh-folder-launcher/add { "path": "..." }
▼
dsh-folder-launcher 主機插件
│ bearer token + 僅 loopback + 拒絕 Origin
│ workspaceRegistry.create(path)
▼
側欄出現新工作區
菜單項文案爲 Add to DSH Web,可對文件夾、文件夾空白處或驅動器使用。若 DSH Web 未運行,啓動器會直接啓動 dsh web(無確認),並在後臺等待插件就緒後再執行添加;重 profile 下 DSH 可能需要一兩分鐘,Explorer 操作不會阻塞。可通過 %LOCALAPPDATA%\dsh-folder-launcher\config.ps1 中的 StartWebIfMissing 開關該行爲。
Windows 11 上經典註冊表動詞在 Show more options 下;按 Shift+F10 可直接打開經典菜單。
跨平臺 CLI¶
倉庫提供 Node CLI,便於在 Linux/macOS 文件管理器自定義動作或腳本中調用:
node .\bin\dsh-folder-launcher.mjs add "D:\Code\my project"
node .\bin\dsh-folder-launcher.mjs health
node .\bin\dsh-folder-launcher.mjs state
Linux/macOS 示例:
node /path/to/dsh-folder-launcher/bin/dsh-folder-launcher.mjs add %f
安全邊界(本地路由)¶
本地路由在 DSH 瀏覽器 /api 防護之外,自行校驗:
- 僅 loopback 來源(
127.0.0.0/8、::1或 IPv4-mapped loopback)。 - Bearer token(持久化於
$DSH_HOME/folder-launcher/token)。 - 帶
Origin頭的請求返回 403。 - 請求體上限 16 KiB,僅
application/json。 - 路徑須爲存在且絕對的目錄;註冊經
workspaceRegistry(realpath 規範化)。
威脅模型側重瀏覽器/CSRF,不防同用戶權限下的本地惡意程序。若 DSH 用 --host 綁定非 loopback 地址,勿經 LAN IP 調用該路由(會被拒絕);默認 dsh web 綁定 127.0.0.1 爲支持配置。
說明:DSH 核心沒有官方交互式終端 TUI;本倉庫已移除僅打開終端、不啓動 DSH 的舊菜單項,避免誤導。
安裝與啓用¶
插件版本在 package.json 中爲 0.1.0,DSH 引擎要求 >=0.2.1-rc.3 <0.3.0-0。安裝分三步:DSH 插件、重啓 Web、Explorer 菜單(僅 Windows 需要菜單腳本)。
1. 安裝 DSH 插件¶
在 PowerShell 中執行(帶版本標籤):
dsh plugin --profile web add github:snnnnke/dsh-folder-launcher#v0.1.0
尚無 tag 時使用默認分支:
dsh plugin --profile web add github:snnnnke/dsh-folder-launcher
本地開發時可指向目錄:
dsh plugin --profile web add file:D:\path\to\dsh-folder-launcher
dsh plugin add github:... 只安裝插件,不會安裝資源管理器菜單。
2. 重啓 dsh web¶
停止當前進程(Ctrl+C)後重新啓動:
dsh web
確認插件已發佈狀態:
Get-Content "$env:USERPROFILE\.dsh\folder-launcher\state.ini"
3. 安裝 Explorer 右鍵菜單(Windows)¶
菜單安裝腳本在倉庫根目錄的 install-context-menu.ps1(調用 explorer\install.ps1)。需要先取得完整倉庫(克隆或 GitHub Code → Download ZIP 解壓),在普通 PowerShell(不要提升爲管理員)中執行,例如:
git clone https://github.com/snnnnke/dsh-folder-launcher.git
cd dsh-folder-launcher
powershell -ExecutionPolicy Bypass -File .\install-context-menu.ps1
或使用解壓後的完整路徑:
powershell -ExecutionPolicy Bypass -File "C:\your-clone\dsh-folder-launcher\install-context-menu.ps1"
安裝器僅寫入當前用戶 HKCU 下的 shell 項,並將腳本複製到 %LOCALAPPDATA%\dsh-folder-launcher\;克隆目錄之後可刪除。ZIP 用戶解壓後於根目錄運行同一腳本即可。
典型用法¶
- 完成插件安裝並重啓
dsh web;Windows 用戶再完成菜單安裝。 - 在資源管理器中右鍵目標文件夾、空白處或驅動器,選擇 Add to DSH Web。
- 在 DSH Web 側欄查看新出現的工作區;若此前未運行 Web,等待後臺啓動與註冊完成即可。
卸載菜單(在持有倉庫腳本的路徑下):
powershell -ExecutionPolicy Bypass -File .\explorer\uninstall.ps1
powershell -ExecutionPolicy Bypass -File .\explorer\uninstall.ps1 -RemoveData
移除插件:
dsh plugin --profile web remove dsh-folder-launcher
之後需再次重啓 dsh web。
適用場景與注意¶
適合:經常在 Windows 資源管理器中切換項目目錄、希望一鍵把目錄掛到已運行的 DSH Web 工作區列表的開發者;或在 Linux/macOS 上通過文件管理器自定義動作調用 CLI 的用戶。
注意:
- 插件在當前
dsh web進程的權限與環境中執行;安裝前請閱讀源碼與 MIT 許可證,自行評估是否滿足環境要求。 - 社區插件目錄 skillhub.cn 與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本文僅介紹社區維護的客戶端集成方式。
- 保管好
$DSH_HOME與folder-launcher/token,避免 token 泄露導致本機 loopback 接口被濫用。
結尾¶
dsh-folder-launcher 把「選文件夾 → 登記 DSH Web 工作區」收成資源管理器右鍵或一條 CLI,並在 Web 未運行時可選自動拉起 dsh web,減少手改配置與重複切窗。