前言¶
DeepSeek Harness (DSH) 的插件系統允許開發者擴展客戶端功能。在工作區側邊欄中,默認的上下文菜單僅提供“重命名”和“刪除工作區”兩個選項。當需要直接在系統文件管理器中查看或編輯當前工作區目錄時,操作流程相對繁瑣。
dsh-folder 插件解決了這個問題,它通過注入菜單項,將“打開文件夾”的操作直接整合進工作區的上下文菜單中。
這是什麼¶
dsh-folder 是一個 DeepSeek Harness (DSH) 插件,由開發者 KDronin 維護,遵循 MIT 許可證。
該插件通過向側邊欄工作區的“更多操作”菜單中插入一個新條目,使用戶能夠快速調用系統默認程序打開當前工作區所在的目錄。它複用了原生菜單的樣式與圖標,保證視覺一致性。
核心功能¶
- 菜單注入:在側邊欄工作區的“三個點”菜單中,於“重命名”和“刪除工作區”之間插入“打開文件夾”選項。
- 系統調用:點擊菜單項後,插件調用 DSH Host 能力
session.openWorkspacePath,由宿主端將路徑交給系統默認程序處理,從而在文件管理器中打開該目錄。 - 雙語支持:界面支持中文和 English。
- 錯誤反饋:若打開失敗(如路徑解析錯誤或環境不支持),菜單項會顯示可見的提示文案(使用原生危險色),並將錯誤信息寫入
console.error,避免靜默無響應。
安裝與啓用¶
官方命令安裝¶
通過 DSH 官方命令行工具安裝:
dsh plugin --profile web add github:KDronin/dsh-folder
安裝完成後,重啓 dsh web 進程並刷新頁面即可生效。
手動安裝¶
將 dsh-folder 目錄複製到 DSH profile 的 node_modules 下:
$target = Join-Path $env:USERPROFILE '.dsh\profiles\node_modules\dsh-folder'
Copy-Item -Recurse .\dsh-folder $target
在配置文件 $HOME/.dsh/profiles/web/cordis.patch.yml 中添加以下內容:
- insert:
- id: dsh-folder
name: 'dsh-folder'
重啓 dsh web 並刷新頁面。
典型用法¶
- 在 DSH 側邊欄找到目標工作區。
- 點擊工作區行右側的“三個點”菜單。
- 在彈出的菜單中,點擊位於“重命名”和“刪除工作區”之間的“打開文件夾”。
- 系統文件管理器將自動打開該工作區所在的目錄。
技術實現與注意事項¶
該插件爲純 UI 插件,核心邏輯位於 lib/client.js。
- 菜單注入機制:爲了避免與 React 的提交時機競爭,插件使用
MutationObserver監聽菜單掛載事件。一旦菜單出現即注入菜單項,並在菜單存在期間持續守護該節點。這解決了舊版本中因固定延時導致部分工作區菜單項缺失的問題。 - 能力調用:舊版本曾嘗試調用不存在的
ctx.workspaces.openPath,導致報錯。當前版本已修正爲調用正確的 Host 能力ctx.remote.session.openWorkspacePath。 - 依賴項:插件依賴
@deepseek-ai/dsh-client-locale、@deepseek-ai/dsh-api-workspace-controller和@deepseek-ai/dsh-client-ui-workspace,與原聲明中的@deepseek-ai/dsh-client-runtime不同。 - 版本回退:若需對照舊版本進行調試或測試,可通過環境變量
DSH_FOLDER_CLIENT指定舊的客戶端 bundle 路徑。
結尾¶
dsh-folder 是一個輕量級且功能明確的工具,它填補了 DSH 工作區管理中直接訪問文件系統的空白。對於頻繁需要通過文件管理器進行配置或查看日誌的開發者來說,這是一個實用的補充。