前言¶
在 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。
典型用法:配置工程¶
- 在目标工程会话中,从右侧「开始」页打开「多代码仓管理」。工程目录和项目名称由会话确定,只读显示。
- 点击 添加仓库或目录,选择 Git 或 非 Git 目录,填写名称与路径,或用 打开 选择目录。
- 选择是否启用多目标管理、是否包含工程根目录。无项目文件时点击 生成新配置文件;已有文件时点击 保存配置。
- 查看下方两类目标的数量、来源和状态。直接编辑磁盘 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 仓库。