dsh-plugin-workspace-discovery:批量发现本地 Git 仓库并注册为 DSH 工作区

前言

DeepSeek Harness(DSH)内置的工作区流程只有一条路径:每次手动选一个宿主目录。机器上若在 ~/dev、~/Documents 等路径下堆着几十个 Git 仓库,多数不会出现在侧边栏里,仅仅因为没有被注册。Hermes Agent 一类产品会用类似 repo_scan_roots 的扫描来补这一环;本插件在 DSH 里做同类事情:在可配置的根目录下找出 Git 仓库,经你确认后通过官方 workspaceRegistry API 批量注册,而不是逐个添加文件夹。

这是什么

dsh-plugin-workspace-discovery 由维护者 2001Y 发布,分类为客户端插件。一句话:扫描本地 Git 仓库(识别 .git 目录或 worktree/submodule 的 .git 文件),在侧边栏面板里对照当前注册状态,把选中的目录登记为 DSH 工作区。不自动写工作区文件、不调用 git 子进程,只驱动官方注册表;卸载插件后已注册工作区保持不变。

目录页:skillhub.cn/plugins/2001Y/dsh-plugin-workspace-discovery
源码与文档:github.com/2001Y/dsh-plugin-workspace-discovery

核心功能

下面介绍插件在资料中明确列出的能力。

扫描

  • 在配置的 roots 下遍历目录,默认最大深度 maxDepth: 4(范围 0–10)。
  • 不跟随符号链接;已进入某个仓库后不再向下把嵌套 checkout 单独报出来。
  • 结果路径与注册表的规范路径对齐,用于判断是否已注册。
  • 除内置跳过名(如 node_modules、.cache、.dsh 等)外,可用 exclude 追加要跳过的目录名。

审阅

  • 侧边栏底部 Discover projects 打开面板;徽标显示尚未注册的数量。
  • 列表区分已注册与未注册;已注册项带标记且不可再选。
  • 支持搜索、全选、逐行勾选。

注册

  • Register selected 或 Register all unregistered,经 workspaceRegistry 完成;同一目录重复注册是幂等的,重扫不会产生重复项。
  • 除非显式开启 autoRegister,否则不会在启动时自动注册任何仓库。

对话内工具

工具 作用
workspace_discover 扫描并返回候选路径及 registered 标志;只读。可临时传入 roots / max_depth / only_unregistered。
workspace_register_discovered 注册指定 paths,或 all_unregistered: true 注册全部未注册项。

面板界面随 DSH 语言在英文、简体中文、日文间切换;工具名与 JSON 契约保持英文。

安装与启用

官方安装命令如下(资料原文):

dsh plugin --profile web add dsh-plugin-workspace-discovery

安装后重启 web profile 并刷新页面。

若从本地检出安装(需自行 clone 到机器上),资料给出的方式是:

git clone https://github.com/2001Y/dsh-plugin-workspace-discovery
dsh plugin --profile web add ./dsh-plugin-workspace-discovery

运行环境:Node.js ≥ 20,DSH 0.2.x;插件零运行时依赖,许可证 MIT(package.json 版本 0.1.0)。

典型用法

  1. 点击侧边栏底部 Discover projects,打开发现面板。
  2. 按需调整 scan roots(每行一个绝对路径)和最大深度,点 Save。配置落在宿主共享文件 $DSH_HOME/workspace-discovery.config.json,同一 DSH 主机上的浏览器共用。
  3. 执行 Scan(或 Rescan),核对列表后 Register selected,或 Register all unregistered。

也可在 profile 里用 patch 预置初始配置,例如:

- insert:
    - id: workspace-discovery
      name: "dsh-plugin-workspace-discovery"
      config:
        roots: ["~/dev", "~/Documents"]
        maxDepth: 4
        exclude: ["vendor"]
        autoRegister: false

配置字段含义(资料表格):

字段 默认 含义
roots [~] 遍历起点;~ 会展开,相对路径会被忽略。
maxDepth 4 每个 root 向下搜索层数(0–10)。
exclude [] 额外跳过的目录名。
autoRegister false 为 true 时在启动时对未注册仓库注册一次;默认关闭。

适用场景与注意

适合谁

  • 本机/Git 根目录下仓库多、又不想在 DSH 里一次次「选文件夹」的开发者。
  • 希望在对话里让模型调用 workspace_discover / workspace_register_discovered 完成同一流程的场景。

实现与安全相关说明(来自 README)

  • 扫描在子进程中执行,每个 root 有 25 秒超时;某个 root 阻塞或过大时只记一条错误,不至于拖死整个 Harness。
  • macOS:遍历经过用户主目录时,默认不会进入受 TCC 保护的系统文件夹(Documents、Downloads、Desktop 等);若仓库在这些路径下,需把该文件夹显式写进 roots,并在系统提示时授予 DSH 主机访问权限。
  • 插件以当前 DSH 进程权限读盘;安装前建议阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的环境策略。社区目录 SkillHub 独立于 DeepSeek / 幻方,并非官方应用商店。

结尾

DSH 生态强调「一切皆插件」;dsh-plugin-workspace-discovery 补的是「工作区只能一个个加」的空档:可配置扫描、面板批量注册、以及模型侧同名能力,且默认不自动登记、不直接改工作区文件。需要时可从目录页或 GitHub 安装,按 scan roots 扫一遍、勾选注册即可让侧边栏跟上本机仓库布局。

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

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

Xiaoye