dsh-workspace-plus:DeepSeek Harness 工作区目录标签与路径映射插件

DeepSeek Harness (DSH) 的核心逻辑是“一个会话一个工作区”,即对应文件系统中的一个根目录。在实际开发中,一个完整的项目往往拆分在多个目录中(例如前后端分离、文档独立存放)。当 Agent 需要操作这些目录时,手动输入绝对路径既繁琐又容易出错(特别是在目录名高度相似时)。

dsh-workspace-plus 插件通过为工作区内的目录建立“标签 → 绝对路径”的映射,解决了这一问题。它为每个工作区提供了一套目录管理入口,并将映射表注入 Agent 的上下文中,使 Agent 能精准定位文件,无需在对话中重复粘贴路径。

核心功能

该插件提供三个主要交互入口:

  1. 工作区行上的目录按钮:在 DSH 侧边栏的工作区列表行中,会插入一个“目录”按钮。点击该按钮会弹出一个配置窗口,用于为当前工作区登记多个目录及其标签。
  2. 对话输入框里的 @ 触发器:在对话输入框中输入 @,会弹出候选列表,列出当前已启用工作区的所有标签。选中标签后,会插入一个引用芯片,提交给模型的是该标签对应的绝对路径。
  3. 设置页面的开关:在 DSH 设置的 workspace+ 区域,可以为每个工作区单独开启或关闭该插件功能。默认情况下,除默认工作区外,其他工作区默认开启;默认工作区默认关闭。

使用方法

1. 启用功能

进入 DSH 设置页面,找到 workspace+ 区域。为需要使用该功能的工作区打开对应的开关。开启后,工作区行上会出现目录按钮,该工作区的对话请求会自动注入目录映射表。

2. 管理目录

点击工作区行上的“目录”按钮,在弹窗中添加目录。
* 添加方式:点击“选择目录”按钮打开系统原生对话框,选择路径后自动生成标签。
* 标签命名:如果选中的目录没有输入标签,系统会尝试根据目录名自动生成(如 D:\proj\my api -> my-api),纯中文目录名不自动生成。
* 状态文件:配置结果会持久化存储在 $DSH_HOME/workspaceplus/directories.json。

3. 引用目录

在对话输入框中输入 @,即可看到当前会话所在工作区(以及其他已启用工作区)的标签列表。
* 场景:输入 @backend,模型接收到的将是 D:\proj\backend,而非仅仅是 backend。
* 兜底:如果上下文注入因某种原因被压缩或丢失,模型仍能通过 @ 选中的绝对路径继续工作。

4. 工具调用

除了上下文注入,插件还提供了 workspace_dirs 工具,支持通过参数 action 进行列表、添加、移除等操作,用于在对话中动态调整目录映射。

技术实现与配置

数据存储

插件维护一份独立的 JSON 状态文件,位于 $DSH_HOME/workspaceplus/directories.json(若未设置 DSH_HOME,则位于 ~/.dsh/workspaceplus/)。文件结构如下:

{
  "version": 1,
  "settings": {
    "defaultWorkspaceEnabled": false,
    "workspaceEnabled": {
      "d:\\projects\\api": true
    }
  },
  "workspaces": {
    "d:\\proj": {
      "path": "D:\\proj",
      "dirs": [
        {
          "label": "backend",
          "path": "D:\\proj\\backend",
          "note": "后端 API"
        }
      ]
    }
  }
}
  • workspaceEnabled:控制每个工作区是否启用插件功能。
  • workspaces:存储具体的目录映射关系。

上下文注入

插件在宿主端注册了一个 runtime-context 贡献,优先级(order)为 130。每次请求该工作区会话时,系统会将目录映射表注入到 Agent 的上下文中,明确告知 Agent 路径规则(如“标签不区分大小写”、“只在标签目录内工作”)。

HTTP 路由

插件提供了 POST/GET /workspaceplus/api 路由,用于与页面交互,遵循壳层的鉴权机制。

沙箱限制与注意

根据 DSH 的沙箱策略,每个会话只有一个可写根目录。这意味着插件虽然可以管理多个目录,但 Agent 的实际文件写入操作仍需落在当前会话的工作区根目录下,或者通过工具调用进行特定的文件系统操作。

此外,插件以 MIT 许可证开源,源码位于 GitHub。在安装前,建议查阅源码以确认其运行机制符合你的安全要求。

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

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

小夜