dsh-multi-git-repo-manager:DSH 多 Git 仓与普通目录统一管理

前言

在 DeepSeek Harness(DSH)里做智能体或插件开发时,一个工程会话往往对应多个 Git 仓库,还可能夹杂非 Git 的组件目录。若每个插件各自维护「目标列表、路径归属、发现逻辑」,重复代码多,行为也容易不一致。维护者 wuqingzhong2020 将原先文件审查场景中的公共管理能力拆出,独立为客户端插件 dsh-multi-git-repo-manager(当前版本 v0.1.4),在宿主右侧提供原生「多代码仓管理」Tab,并向其他插件暴露统一的工作区与文件归属服务。

这是什么

dsh-multi-git-repo-manager 是 DSH 的公共 Git 仓库与非 Git 目录管理插件。Host 服务与 Remote 命名空间为 multiGitRepoManagerByWqz;配套文件审查消费者为 multiGitFileReviewByWqz(仓库 dsh-file-review-tab-Multi-git-repository,v0.3.5 精确依赖本插件 0.1.4)。管理插件可单独运行;使用文件审查时需同时安装并启用两个插件。工程配置统一采用 v2,Profile 仅记录工程根目录索引。

分类:客户端。社区目录页:skillhub.cn 插件页。源码与文档:GitHub 仓库。许可证:MIT。

核心功能

下面能力均来自仓库 README 与功能列表,未经单独平台验收的接口范围不等于全平台已验收。

  • Git 与普通目录统一管理:添加、命名、编辑和移除两类目标;分别显示 Git、非 Git 目录和不可用数量。移除条目只改配置,不删除磁盘目录。
  • 右侧原生 Tab:使用宿主 sidebarRightTabs 及正文/标题插槽,无需第三方侧栏;隐藏和切换 Tab 保留当前表单。
  • 工程级配置:启停多目标范围、选择是否包含工程根目录,写入 dsh-multi-git-repo.json;可从工程子目录自动找到最近的配置文件。
  • 统一 v2 配置:显式列表;格式不匹配时拒绝;不提供清单导入或格式升级。
  • 直接子目录发现:可配置容器(如 project、project/plugins);预览只产生候选,逐项添加并保存后才纳管。
  • 类型与状态检查:识别 Git 根与 worktree 的 .git 文件;路径缺失或元数据损坏时保留诊断信息。
  • 会话临时目标:工程外路径用绝对路径,仅当前会话有效,不写入项目 JSON;Agent 释放、插件卸载或进程重启会清理。
  • 公共文件归属:最深目标优先;通过 resolveTargetPaths 等 API 供消费者在读写的路径上复核归属。
  • 保存与联动:校验工程身份与项目文件哈希,原子写入并拒绝陈旧保存;配置变更可通知独立 bundle 的消费者重新获取工作区。

目标接口为 DSH 正式版 >= 0.2.0,并保留 0.2.0-rc.2 测试通道;README 记载的实际验证环境为 Windows Desktop(宿主 0.2.0-rc.2)。

安装与启用

安装与启用是两件事:DSH 0.2 只加载 dsh.profile.bundles 中选中的插件;安装 npm 依赖本身不会自动加载管理服务。

DeepSeek Harness Desktop

完全退出 Desktop(含托盘),在 PowerShell 中将示例路径替换为实际 tgz 位置:

pnpm --dir "$env:USERPROFILE\.dsh\profiles\desktop" add "D:\Downloads\dsh-multi-git-repo-manager-0.1.4.tgz"

若同时使用配套文件审查,可一次安装两个本地包:

pnpm --dir "$env:USERPROFILE\.dsh\profiles\desktop" add "D:\Downloads\dsh-multi-git-repo-manager-0.1.4.tgz" "D:\Downloads\dsh-file-review-tab-multi-git-repository-0.3.5.tgz"

重启后在「插件」页确认已启用,并从右侧「开始」页打开管理 Tab。公开安装可在 GitHub Release 下载约定资产(如 v0.1.4 对应 tgz)。

独立 Web Profile

在管理仓库根目录,用本地 latest 索引安装:

$build = Get-Content ../../dist/latest/dsh-multi-git-repo-manager.json -Raw | ConvertFrom-Json
dsh plugin --profile web add ("../../dist/" + $build.history)

Release 就绪后也可使用固定 URL:

dsh plugin --profile web add https://github.com/wuqingzhong2020/dsh-multi-git-repo-manager/releases/download/v0.1.4/dsh-multi-git-repo-manager-0.1.4.tgz

使用审查功能仍需安装并启用对应消费者;无热重载时需重启 dsh web。

Desktop 目录选择起始路径(可选)

Desktop 0.2.0-rc.2 的原生目录选择接口缺少起始路径能力。若希望「打开」从已填路径定位,可在完全退出 Desktop 后运行包内兼容脚本(安装目录不同时修改第二个参数):

node "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-multi-git-repo-manager\scripts\patch-desktop-directory-picker.mjs" "D:\app\DeepSeekHarnessDesktop\resources\app.asar"

宿主更新后需重新检查适配;安装 tgz 不会自动修改 Desktop。

典型用法:配置工程

  1. 在目标工程会话中,从右侧「开始」页打开「多代码仓管理」。工程目录和项目名称由会话确定,只读显示。
  2. 点击 添加仓库或目录,选择 Git 或 非 Git 目录,填写名称与路径,或用 打开 选择目录。
  3. 选择是否启用多目标管理、是否包含工程根目录。无项目文件时点击 生成新配置文件;已有文件时点击 保存配置。
  4. 查看下方两类目标的数量、来源和状态。直接编辑磁盘 JSON 后,点击 重新加载已保存配置。

工程配置文件示例(v2):

{
  "version": 2,
  "enabled": true,
  "includeProjectRoot": false,
  "repositories": [{ "name": "Core", "path": "core" }],
  "directories": [
    { "name": "LocalComponent", "path": "project/LocalComponent" },
    { "name": "LocalPlugin", "path": "project/plugins/LocalPlugin" }
  ],
  "discovery": { "containers": ["project", "project/plugins"] }
}

Git 条目放在 repositories,普通目录放在 directories。在发现容器中填写工程内路径,点击 预览发现结果,逐项 添加到列表 后还须 保存;容器本身不会自动纳管。工程外目标须作为当前会话临时目标(绝对路径),须先有工程配置才能添加。配置限制为 1 MiB、512 个目标、32 个发现容器。详细步骤与截图见仓库 中文使用手册。

供其他插件复用

消费者可在 package.json 中声明 peer 依赖并固定版本:

{ "peerDependencies": { "dsh-multi-git-repo-manager": "0.1.4" } }

宿主通过 Cordis 注入 multiGitRepoManagerByWqz,典型用法包括 workspace(agent) 与 resolveTargetPaths(agent, [path]);具体文件操作前应重新调用归属解析,Git 能力仅对可用且 capabilities.git 为真的目标使用。浏览器侧从 sessions.scope(sessionId)?.get('remote.multiGitRepoManagerByWqz') 获取 Remote。稳定服务名可从 dsh-multi-git-repo-manager/service-names 导入。架构边界见 ARCHITECTURE.md。

适用场景与注意

适合谁:需要在 DSH 工程会话中统一管理多个 Git 仓与非 Git 目录的开发者;编写依赖多目标工作区的 DSH 插件时,可复用本插件的配置、发现与文件归属,而不必自建一套管理 Tab。

注意:

  • 插件以当前 DSH 进程权限访问文件系统;安装前应阅读源码与 MIT 许可证,自行评估路径与敏感目录暴露范围。
  • 本插件不会 clone、pull、初始化 Git 或删除源码;移除配置条目不删磁盘。
  • README 声明的接口与验证记录以维护者文档为准;正式版、完整 Web 宿主及其他平台若未在文档中写明已验收,使用前需自行验证。
  • 社区目录(如 skillhub.cn)为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」思路,本介绍不视为官方应用商店说明。

结尾

dsh-multi-git-repo-manager 把多仓与非 Git 目录的管理、发现、保存和路径归属收敛到一套 v2 工程配置与宿主服务上,并给出右侧原生管理入口,便于与文件审查等消费者协同。进一步信息见 目录页 与 GitHub 仓库。

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

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

小夜