dsh-linked-folders:多文件夾工作區插件

前言

DeepSeek Harness (DSH) 的核心設計理念是「一切皆插件」。在默認的工作流中,模型通常僅能訪問單一目錄。當開發者需要在多個項目、庫或依賴目錄間切換時,傳統的切換方式效率較低且容易出錯。sttrevens/dsh-linked-folders 插件旨在解決這一限制,它模仿 Codex 的鏈接文件夾機制,通過注入多目錄上下文,使模型能夠訪問多個文件夾。

是什麼

這是一個 DSH 插件,提供多文件夾工作區訪問能力。它支持全局持久化鏈接列表(跨會話有效)以及會話臨時動態鏈接(隨對話結束失效)。插件由維護者 Sttrevens 開發,遵循 MIT 許可證。

安裝與啓用

安裝時需指定 Web 配置文件,因爲該插件依賴 Web 端的側邊欄與管理界面。

  1. 執行以下命令安裝插件:
dsh plugin --profile web add @steven-wu/dsh-linked-folders
  1. 安裝完成後,重啓 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 倉庫。

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

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

小夜