dsh-multi-folder:爲 DeepSeek Harness 增加次要工作目錄

前言

在 DeepSeek Harness 項目裏,核心工作區通常指向一個 primary workspace。實際開發中,源碼倉庫、測試倉庫和文檔倉庫可能需要同時處理。如果不借助插件,常見做法是在多個工作區之間切換,或在不同會話中分別打開這些目錄。

dsh-multi-folder 提供另一種做法:在同一個 DSH 項目中配置 secondary working directories,讓智能體不離開 primary workspace,也能對已配置的次要目錄進行讀寫和執行。

這是什麼

dsh-multi-folder 是一個 DeepSeek Harness 插件,由 AngelosZou 維護,許可證爲 MIT。

它給一個 DSH 項目增加一組次要工作目錄。智能體的核心 cwd 和其他核心屬性仍指向 primary workspace,但已配置的 secondary directories 可以按當前權限模式參與會話。

核心功能

  • 保持 primary workspace 爲核心工作目錄,同時提供 secondary working directories。
  • workspace-write 模式下,已配置的次要目錄可獲得與 primary workspace 相同的 read / write / edit / execute 權限。
  • 權限模式語義保持不變:read-only 仍然拒絕寫入,workspace-write 允許,danger-full-access 允許。
  • 將已配置的目錄列表注入 system prompt,並在每次 session assembly 時重新渲染。
  • 當目錄集合實際變化時,通過 non-interrupting message queue 在下一個 message boundary 通知智能體。
  • 支持在會話開始前配置目錄:session header panel 和 session-creation page 都可以通過 sessionless multiFolder remote API 操作。
  • 不新增工具;它使用 framework-level tool-pipeline interception,並提供 session-scoped UI header entry。
  • 支持通過 native picker 添加目錄,支持立即 remove / refresh,支持按 session 切換,並複用 per-session cache。
  • 支持 /multi-folderlistaddremoveset slash commands。
  • 當目標路徑或 workdir 位於已配置 secondary directory 內時,writeeditpwshbash 調用會被 re-root 到該目錄。

安裝與啓用

先確認環境滿足要求:

  • Node.js >= 20
  • 一個由 @deepseek-ai/dsh-base + @deepseek-ai/dsh-web-app 組成的 DSH profile

安裝命令:

dsh plugin --profile web add dsh-multi-folder

安裝後,需要重啓 DSH backend,再刷新瀏覽器頁面。

版本兼容關係如下:

  • DeepSeek Harness 0.1.1 or earlier:使用 dsh-multi-folder@0.1.7
  • DeepSeek Harness 0.1.2-alpha or later:使用 latest dsh-multi-folder

典型用法

  1. 打開面板。可以在 session header 使用 Multi-folder 按鈕,也可以在 session-creation page 使用對應入口。
  2. 使用 native directory picker 添加目錄;remove / refresh 會立即生效。
  3. 面板會按 session 切換,並使用 per-session cache。
  4. 也可以直接使用 slash commands:
/multi-folder list
/multi-folder add "D:\path\to\repo"
/multi-folder remove "D:\path\to\repo"
/multi-folder set "D:\a" "D:\b"
  1. 對需要創建文件的命令,把 workdir 設爲命令要寫入的目錄。
  2. 對 git,從倉庫內部運行命令,而不是從 primary workspace 使用 git -C
  3. 讀取操作不受這些限制,也不需要 workdir

權限邊界

每條受限制命令一次只能運行在一個 writable root 下。

  • 如果命令的 cwd 留在 primary workspace,它不能創建文件到 secondary directory。
  • 如果命令被 re-root 到某個 secondary directory,它在同一次調用中不能寫入 primary workspace,也不能寫入另一個 secondary directory。
  • 直接對 per-workspace config file 的 write / edit 嘗試會被拒絕。
  • 智能體不能 self-grant directories;目錄配置由用戶管理。

工作原理(簡要)

插件在 framework level 攔截 writeeditpwshbash 調用。當解析後的路徑或 workdir 落在已配置 secondary directory 內時,插件會基於該目錄重新確定命令執行根目錄,並保持原權限模式的語義。

目錄列表會進入 system prompt,讓智能體知道當前會話可用的目錄。配置變化只在實際變化時通過消息隊列通知,避免重複提示。

適用場景與注意

適合需要在同一個 DSH 項目裏同時處理源碼、測試和文檔的開發者,也適合希望在會話開始前就固定一組可用目錄的場景。

注意:該插件隨 DSH 運行,使用當前 dsh 進程具備的權限,並且會改變會話可用的目錄範圍和命令執行根目錄。安裝前建議檢查源碼,並確認 MIT 許可證符合你的使用要求。

小結

dsh-multi-folder 解決的是“一個項目需要多個目錄同時可寫”的問題。它保留 primary workspace 的核心屬性,同時把已配置的 secondary directories 納入同一個會話,並通過權限邊界保持每個命令只在一個 writable root 下運行。

倉庫地址:

https://github.com/AngelosZou/dsh-multi-folder

已覈實資料未提供可確認的目錄頁地址,因此本文不列目錄頁鏈接。社區目錄屬於獨立站點,與 DeepSeek / 幻方無官方從屬關係,不應視爲官方應用商店。

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

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

小夜