前言¶
DeepSeek Harness (DSH) 的核心設計理念是「一切皆插件」。在默認的工作流中,模型通常僅能訪問單一目錄。當開發者需要在多個項目、庫或依賴目錄間切換時,傳統的切換方式效率較低且容易出錯。sttrevens/dsh-linked-folders 插件旨在解決這一限制,它模仿 Codex 的鏈接文件夾機制,通過注入多目錄上下文,使模型能夠訪問多個文件夾。
是什麼¶
這是一個 DSH 插件,提供多文件夾工作區訪問能力。它支持全局持久化鏈接列表(跨會話有效)以及會話臨時動態鏈接(隨對話結束失效)。插件由維護者 Sttrevens 開發,遵循 MIT 許可證。
安裝與啓用¶
安裝時需指定 Web 配置文件,因爲該插件依賴 Web 端的側邊欄與管理界面。
- 執行以下命令安裝插件:
dsh plugin --profile web add @steven-wu/dsh-linked-folders
- 安裝完成後,重啓 Web 配置文件並刷新頁面。
核心功能¶
- 多文件夾工作區:允許模型訪問多個目錄,而非單一目錄。
- 全局持久化鏈接:維護一個跨會話的全局鏈接列表。
- 會話臨時鏈接:在當前對話中動態添加或移除鏈接。
- Web 管理界面:提供可視化的側邊欄管理面板。
- 工具支持:提供
link_folder和unlink_folder工具供模型調用。 - 工作區選擇器增強(可選):提供補丁腳本以增強工作區選擇器功能。
使用方法¶
通過界面管理¶
在 Composer 輸入欄左側點擊 📁 按鈕(或左側的文件夾圖標)。在打開的面板中,可以查看全局鏈接列表、添加新鏈接(支持絕對路徑或瀏覽按鈕)、移除鏈接,以及查看當前會話的臨時鏈接。
通過對話指令¶
在對話中,模型可以通過自然語言指令調用工具:
* 添加鏈接:說 “link folder /path/to/foo”,模型會調用 link_folder 工具。
* 移除鏈接:說 “unlink /path/to/foo”,模型會調用 unlink_folder 工具。
會話內添加的臨時鏈接會在系統提示中以 (this session) 標識。
增強工作區選擇器(可選)¶
官方的工作區選擇器菜單不支持插件直接注入。插件提供了補丁腳本,將新入口添加到菜單中。執行以下命令:
python3 scripts/patch-workspace-picker.py
執行後需重啓 dsh web。注意:該腳本在 dsh 更新後需要重新運行。
配置與文件存儲¶
插件的狀態保存在本地配置文件中。默認路徑爲:
~/.dsh/linked-folders.json
配置文件結構示例:
{
"global": ["/Users/you/projects/app", "/Users/you/projects/lib"],
"sessions": { "session-abc…": ["/tmp/scratch"] }
}
可以通過環境變量 DSH_LINKED_FOLDERS 或 bundle 行的 config.path 覆蓋默認路徑。所有鏈接路徑會被標準化爲真實路徑,且必須爲已存在的目錄。
沙盒與權限說明¶
插件僅向模型宣傳文件夾並提供管理 UI,不改變底層的文件沙盒機制:
* 在 danger-full-access 模式下,模型擁有讀寫任意位置的權限。
* 在 workspace-write 模式下,模型僅可讀取鏈接文件夾,寫入操作仍受限於會話工作區根目錄。
注意事項¶
- 路徑有效性:配置的路徑必須爲已存在的目錄。
- 補丁維護:如果安裝了增強工作區選擇器的補丁,在 DSH 更新後需重新運行補丁腳本。
- 包名一致性:注意包名
@steven-wu/dsh-linked-folders與 GitHub 維護者名Sttrevens不一致,這是已知的不一致點。
總結¶
dsh-linked-folders 爲 DSH 提供了類似 Codex 的多目錄訪問能力。通過全局持久化列表和會話臨時鏈接的結合,開發者可以在不提升模型系統權限的前提下,爲模型構建一個靈活的工作區環境。更多細節與源碼可參考:GitHub 倉庫。