dsh-zgit:无 git 二进制的 DSH Agent 代码获取方案

前言

在 DeepSeek Harness(DSH)的开发工作流中,Agent 常常需要获取源代码或二进制文件。通常的第一反应是使用 git clone,但这要求宿主环境安装 git 二进制文件,且涉及大量的网络传输。下面介绍 dsh-zgit 插件,它通过直接调用 Forge 的 HTTPS 接口来替代 git 操作,旨在提升 DSH Agent 的运行效率。

核心功能

dsh-zgit 专注于“读”操作,提供了一套无需 git 二进制文件的获取方案。

  1. 源代码获取
    插件直接通过 HTTPS 下载 Forge 的归档文件(如 tar.gz 或 zip),解压至工作区的模拟检出目录(.zerogit)。该目录模拟了 git checkout 的结构,支持查看和状态检查。

  2. 二进制发布下载
    支持从 GitHub、GitLab、Gitee 的 Release 页面下载二进制资产。下载过程包含 SHA256 校验,确保文件完整性。

  3. Git 读取命令模拟
    插件重新实现了 git 的部分读取命令,包括:

    • zgit_ls_remote:获取远程分支和标签。
    • zgit_show:获取指定引用下的单个文件内容。
    • zgit_ls_tree:列出指定引用下的文件结构。
    • zgit_log:查看最近的提交记录。
    • zgit_diff:对比两个引用之间的差异。
    • zgit_status:检查模拟检出目录与远程的差异。
  4. 通用下载工具
    zgit_download 可以下载任何直接 URL(如镜像站点或工具链),支持字节上限限制和 SHA256 校验,防止滥用。

安装与启用

安装过程需要在 DSH 的终端中执行。该插件托管在 npm 上,支持通过 profile 安装。

dsh plugin --profile web add dsh-zgit

安装完成后,插件会在 DSH 环境中注册对应的命令和 /zgit 人类平面命令入口。

典型用法

插件支持多种仓库引用格式,包括 owner/repo、owner/repo@ref、完整的 HTTPS URL 以及 SSH URL。

命令行工具示例:
* 克隆源代码并切换到特定分支:

    zgit_clone owner/repo@ref
  • 获取最新的二进制发布:
    zgit_fetch_release
  • 查看当前模拟工作区的状态:
    zgit_status
  • 下载任意 URL 的文件(限制 1GB,校验 SHA256):
    zgit_download https://example.com/file.tar.gz

人类平面命令(Web UI / TUI):
直接输入 /zgit 并选择对应操作(clone, get, show, ls, log, diff, resolve, status, download),无需通过模型传递指令。

适用场景与注意

适用场景:
* DSH 运行环境未安装 git 二进制文件。
* 需要严格限制 Agent 的下载流量和存储空间。
* 需要 Agent 直接获取二进制发布资产进行校验或部署。

注意事项:
* 只读模式:插件不支持写入、提交或推送操作,仅限代码获取。
* 安全性:
* 工作区写入被限制在调用会话的工作区内,防止路径逃逸。
* 所有下载均受字节上限限制。
* 下载的存档文件仅被解压,不会被执行。
* 许可证:该插件采用 MIT 许可证。

总结

dsh-zgit 提供了一种轻量级的替代方案,让 DSH Agent 能够在无 git 环境下高效获取代码和资源。通过模拟 git 的读取操作,它在保持安全性的同时简化了工作流。更多细节可参考插件目录或源码仓库。

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

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

小夜