前言¶
DeepSeek Harness 的設計理念是“一切皆插件”。當 agent 需要操作 Git 時,如何安全地管理憑據並控制推送權限是常見需求。dsh-git-forge 插件解決了這個問題,它提供了賬號庫、按項目授權和推送策略管理功能。
該插件專注於 DSH agent shell 下的 HTTPS Git 操作。它不涉及 SSH 遠程或系統 gh auth,而是通過自動注入憑據和硬攔截機制,確保只有被授權的賬號和 host 可以進行推送。
核心能力¶
插件包含以下主要功能:
- 賬號庫:按
gitHost歸集,支持探測 API token。 - 按項目授權:以 DSH 會話工作區爲 key(
projectPathKey),決定 agent 使用哪個賬號。 - push 攔截:在 Host
tools.guard中硬攔截,拒絕未授權的推送。 - agent HTTPS git:helper 自動注入憑據,確保 agent 可以執行 fetch 和 push。
- token 落盤:僅存於宿主側
secrets.json,不進入模型上下文。 - 模型工具:提供只讀動作(
list_accounts,list_project_accounts,get_policy,check_remote)。 - UI 對齊:與
dsh-ssh-tunnel共用側欄交互。
安裝與啓用¶
使用官方安裝命令添加插件:
dsh plugin --profile <profile> add "dsh-git-forge"
安裝完成後,需要刷新瀏覽器頁面才能在右側欄看到「Git 憑據」入口。
使用流程¶
- 打開右側欄「Git 憑據」→ 賬號庫 加一個賬號(輸入 token 並探測)。
- 切到 項目授權 → 勾上該賬號並保存,當前工作區即獲得授權。
- 讓 agent 在項目裏運行 HTTPS 的
git fetch/git push,憑據由 helper 自動注入。 - 嘗試推送到未授權的 host,攔截器應直接拒絕該操作。
模型工具¶
插件提供了四個只讀工具動作:
| 動作 | 作用 | 參數 |
|---|---|---|
GitForge action=list_accounts |
列出賬號庫(不含 token) | 無 |
GitForge action=list_project_accounts |
列出某項目已授權的賬號 | project_path |
GitForge action=get_policy |
查看該項目策略(賬號、enforcePush、默認策略) |
project_path |
GitForge action=check_remote |
校驗某個 remote URL 是否被允許推送 | url(必填) |
數據與安全¶
- 數據存儲:所有數據位於
$DSH_HOME/git-forge/目錄下,包括賬號元數據、token 和授權策略。 - 安全機制:
- token 不會出現在 API 結果、工具結果或模型上下文中。
- push 策略在 Host
tools.guard中硬攔截,不依賴模型自覺。 - 未給項目配置授權時,push 攔截器默認不攔截。
- 側欄 API 做同源校驗(
Sec-Fetch-Site或 Origin 與 Host 一致性檢查)。 - 已知 push 檢測基於命令文本啓發式,存在繞過面(如 env 變量改名 git、git alias、包裝器等)。
環境要求¶
- DSH 版本:
>=0.2.0-rc.2 <0.3.0-0 - Node.js 版本:
>= 20
結語¶
dsh-git-forge 是一個專注於 Git 憑據與權限控制的實用工具,適合需要精細化管理 agent Git 操作的場景。其 MIT 許可證允許自由使用與修改。更多細節請查看 GitHub 倉庫。