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 仓库。

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

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

小夜