前言¶
在 DeepSeek Harness (DSH) 的開發環境中,智能體通常需要與 Git 服務(如 GitHub 或 GitLab)進行交互,或者使用 SSH 密鑰進行部署。手動維護這些憑證容易出錯且不夠安全。dsh-git-auth 插件提供了一套統一的命令和配置,讓智能體能夠以非交互方式完成認證和密鑰管理。
功能概覽¶
該插件包含以下核心功能:
- 統一狀態:在單次調用中報告
gh(GitHub CLI)、glab(GitLab CLI)、SSH-agent 以及公鑰的狀態。 - 非交互式登錄:使用插件設置中配置的 Token 或 DSH 主機環境變量中的 Token,對
gh或glab進行認證登錄。 - 工作區部署密鑰:爲每個工作區在
.ssh目錄下生成、配置、列出和顯示 Ed25519 類型的部署密鑰。 - 審批感知寫入:將密鑰更改限制在工作區訪問範圍內,並對共享 CLI/代理的更改請求主機批准。
- 設置 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 操作的場景。