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 操作的場景。

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

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

小夜