dsh-git-auth: DeepSeek Harness 的 Git 认证与 SSH 密钥管理工具

前言

在 DeepSeek Harness (DSH) 的开发环境中,智能体通常需要与 Git 服务(如 GitHub 或 GitLab)进行交互,或者使用 SSH 密钥进行部署。手动维护这些凭证容易出错且不够安全。dsh-git-auth 插件提供了一套统一的命令和配置,让智能体能够以非交互方式完成认证和密钥管理。

功能概览

该插件包含以下核心功能:

  1. 统一状态:在单次调用中报告 gh(GitHub CLI)、glab(GitLab CLI)、SSH-agent 以及公钥的状态。
  2. 非交互式登录:使用插件设置中配置的 Token 或 DSH 主机环境变量中的 Token,对 gh 或 glab 进行认证登录。
  3. 工作区部署密钥:为每个工作区在 .ssh 目录下生成、配置、列出和显示 Ed25519 类型的部署密钥。
  4. 审批感知写入:将密钥更改限制在工作区访问范围内,并对共享 CLI/代理的更改请求主机批准。
  5. 设置 UI:在 Settings → Plugins 中暴露主机、超时时间、密钥路径、注释以及 ssh-add 的默认配置。

安装与启用

从源码克隆插件并添加到 DSH profile。

git clone https://github.com/Wisdoverse/dsh-git-auth-plugin.git

dsh plugin --profile web add ./dsh-git-auth-plugin

安装完成后,需要重启 Web profile。

配置

插件配置位于 Settings → Plugins → Plugin configuration,或直接编辑 DSH 的设置文档(通常为 $DSH_HOME/settings.yaml)。

主要配置项如下:

配置项 默认值 说明
ghHost github.com GitHub 主机名,可包含端口
glabHost gitlab.com GitLab 主机名,可包含端口
commandTimeoutMs 60000 命令执行超时时间(毫秒)
sshPath 空 工作区 .ssh 目录下的直接子路径,空值默认为 <workspace>/.ssh/id_ed25519
sshComment 空 传递给 ssh-keygen 的默认注释
sshAddAgent false 是否默认使用 ssh-add 加载生成的密钥

配置示例:

git-auth:
  glabHost: gitlab.example.com
  commandTimeoutMs: 60000
  sshPath: id_ed25519
  sshComment: developer@example.com
  sshAddAgent: true

典型用法

插件提供了以下工具命令:

  • auth_status:检查 GitHub、GitLab 和 SSH 认证状态。
  • client_auth:使用配置的 Token 登录或登出 gh 或 glab。
  • ssh_key:生成、配置、列出或显示当前工作区的 Ed25519 部署密钥。

适用场景与注意事项

  • Token 安全:访问令牌不得作为工具参数传入,必须保存在插件设置或 DSH 主机环境中,以避免进入模型上下文或工具调用日志。
  • 单用户/互信环境:此发布版适用于单用户或相互信任的用户。主机、令牌、gh/glab 配置文件以及 SSH agent 由 DSH 实例共享。
  • 密钥路径边界:工作区本地密钥路径仅用于路由,并非多用户安全边界。
  • 全局令牌:在当前的 DSH 凭证模型中,令牌是实例全局的,因此所有工作区共享这些令牌。

总结

dsh-git-auth 解决了 DSH 环境下智能体与 Git 服务交互时的凭证管理问题。通过统一的命令接口和安全的 Token 存储机制,它支持非交互式登录和标准化的 SSH 密钥管理,适合需要在 DSH 实例中稳定进行 Git 操作的场景。

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

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

小夜