前言¶
在 DSH 裏做智能體或項目開發時,工作區往往綁定本地目錄。若每次都要在 Desktop 或 Web 界面裏手動選路徑、新建或切換工作區,終端裏已經 cd 到目標目錄的場景會多一步重複操作。社區插件 dsh-open-dir(維護者 azazo1)提供 dsh-open 命令:在指定目錄上創建或複用工作區,並在界面完成導航後返回成功。它屬於 DSH 生態裏的客戶端類插件,依賴 DSH >=0.2.0-rc.2 <0.3.0。
這是什麼¶
dsh-open-dir 通過 dsh-open <目錄> 在 DSH Desktop 中創建或複用工作區並打開對應會話;CLI 在界面完成導航後才報告成功。Web 端需在已運行、且已加載頁面的本機 Web 界面中安裝並啓用同一插件。npm 包版本爲 0.1.0,許可證 MIT。
核心功能¶
下面介紹 README 中已說明的能力,不超出資料範圍。
- Desktop 打開目錄:安裝並啓用插件後,用
dsh-open指向本地目錄;macOS 與 Windows 可通過已註冊的dsh://open協議喚起或前置 Desktop(首次使用前需啓動 Desktop 一次以註冊協議)。 - Web 模式:
--target web等參數面向本機 Web 界面;要求 Web 端 profile 下同樣安裝並啓用插件,且頁面已加載。 - 路徑處理:支持相對路徑與
~;會解析符號鏈接並驗證目錄;目錄名以-開頭時使用--分隔。 - 實例與超時:默認等待 30 秒,
--timeout可設爲 1..300 秒;同一 Host 多實例時 CLI 會輸出實例 ID,可用--instance指定;同一 Host 多個頁面只會有一個領取請求。 - 通信模型:Host 在迴環地址申請隨機端口,向
$DSH_HOME/runtime/dsh-open-dir寫入發現信息(含隨機認證令牌,權限0600);Client 通過 DSH 認證 API 領取請求,調用ctx.workspaces.create({ path })與ctx.uiWorkspace.openWorkspace(workspaceId)。CLI 與宿主須使用相同的DSH_HOME。
安裝與啓用¶
資料中的安裝路徑是 Desktop / Web 各自的插件管理器,而非統一的 dsh plugin add 命令字符串。
- 在 DSH Desktop 的插件管理器中安裝並啓用
dsh-open-dir。 - 若使用 Web,在本機 Web 界面對應 profile 中再次安裝並啓用(Desktop 與 Web 使用獨立 profile,需分別安裝)。
- 從源碼打包時,在倉庫根目錄執行:
just install
just verify
just pack
再通過插件管理器安裝生成的壓縮包。
若要在普通終端全局使用 dsh-open(可選),README 給出:
pnpm add -g dsh-open-dir
或先 just pack,再:
pnpm add -g (realpath dsh-open-dir*.tgz)
運行環境要求 Node ^22.19.0 || >=24.0.0(見 package.json engines)。
典型用法¶
倉庫內可直接運行,無需先裝全局命令:
just open .
just open ~/projects/my-project
just open --no-launch .
安裝插件包或全局 CLI 後:
dsh-open .
協議不可用或只需提交請求、不喚起 Desktop 時:
just open --no-launch .
Web 且頁面已就緒、不通過協議啓動時:
just open --target web --no-launch .
just open --timeout 60 --verbose .
診斷:--verbose 或 NODE_DEBUG=dsh-open 可輸出 CLI 階段信息。
適用場景與注意¶
適合:習慣在終端裏定位項目目錄,希望一鍵在 DSH Desktop 或本機 Web 中打開(或創建)對應工作區的開發者。
注意:
- 插件在當前 DSH 進程權限下運行;安裝前應閱讀 GitHub 源碼 與 MIT 許可證,自行評估是否滿足環境要求。
- 導航被其他操作取消、目錄不可用、插件卸載或界面未就緒會以非零退出碼結束;超時表示未收到成功確認,不能保證界面沒有發生變化。
- 請求只交付一次,斷線後不會自動重放導航。
- 社區目錄 skillhub.cn 與 DeepSeek / 幻方無官方從屬關係,屬社區生態,非官方應用商店。
鏈接¶
經過上面的步驟,你可以在終端用 dsh-open(或倉庫內 just open)把本地目錄接到 DSH 工作區,減少在界面裏重複選路徑的操作。