前言¶
DSH 的插件理念是「一切皆插件」:把原本分散在腳本、CLI 或人工流程裏的能力,變成 DSH 代理可以直接調用的工具。對智能體開發者來說,一個常見需求是:讓代理不只是回答問題,還能處理本地倉庫、提交變更、操作託管平臺上的 pull request / MR、issues、releases、CI/CD 和安全告警。
下面介紹 sakthiveltofficial/dsh-git-plugins。它是一個 DSH 插件套件,提供本地 Git 操作、GitHub / GitLab / Bitbucket Cloud / Azure DevOps / Gitea 平臺操作,以及一套跨會話的自演進記憶。
這是什麼¶
sakthiveltofficial/dsh-git-plugins 由 sakthiveltofficial 維護,許可證爲 MIT。它面向 DeepSeek Harness(DSH),爲代理提供一組模型工具,用於本地倉庫操作、託管平臺操作和跨會話記憶。
已覈實的運行要求如下:
- DeepSeek Harness
Node.js >= 20gitCLI 在 PATH 中
倉庫 package.json 版本爲 0.1.2,bundle patch 配置爲:
./cordis.patch.yml
核心能力¶
本地倉庫操作¶
插件覆蓋常見本地 Git 操作,包括:
clonebranchcheckoutcommitpushpullstashtagmergerebasediffblamelog- 代碼搜索
- 文件搜索
這些能力依賴 PATH 中的 git CLI,而不是在插件內重新實現一套完整的 Git 行爲。
託管平臺操作¶
插件支持以下託管平臺的常見源碼控制對象:
- GitHub
- GitLab
- Bitbucket Cloud
- Azure DevOps
- Gitea
可按平臺支持情況操作:
- pull requests / MRs
- issues
- releases
- CI/CD
- 安全告警
對於某平臺不支持的操作,插件會以 GIT_UNSUPPORTED 失敗,而不是靜默返回空結果。
模型工具¶
插件暴露以下模型工具:
git_repo
git_inspect
git_pr
git_issues
git_release
git_security
git_ci
git_memory
安裝並啓用後,可以用這句話驗證工具是否進入代理可用列表:
what git tools do you have?
預期應列出上面的 8 個工具。
自演進記憶¶
git_memory 提供跨會話持久化記憶,主要能力包括:
- 跨會話持久化
- 自動捕獲工具失敗簽名
- 對重複事件去重
- 持久化前清除密鑰
- 每一步注入有界摘要
- 刪除過時條目
如果某條記憶已經過時,可以使用:
git_memory forget
刪除對應記憶條目。
策略增強¶
插件在操作安全上增加了若干約束:
- 破壞性操作走
host approval service - 變更遵守
sandbox policy - 支持
sandbox_permissionsescalation - 限流回退
- 讀緩存
這意味着代理可以執行更完整的源碼控制流程,但關鍵操作不會被直接放行。
安裝與啓用¶
1、先確認環境中有 git 和可用的 Node.js:
git --version
node --version
這裏需要 git CLI 在 PATH 中,並且 Node.js 版本滿足 >= 20。
2、安裝插件:
dsh plugin --profile web add github:sakthiveltofficial/dsh-git-plugins
3、安裝後重啓 profile,或重啓 DSH 進程。無需手動編輯 preset;host rows 由 dsh.bundle.patch 自動插入。
4、驗證配置中是否出現 Git 相關項:
dsh --profile web --dump-config | grep -i git
5、再詢問代理:
what git tools do you have?
如果代理能列出 git_repo、git_inspect、git_pr、git_issues、git_release、git_security、git_ci、git_memory,說明工具已經可用。
典型用法¶
自然語言驅動 Git 工作流¶
安裝後,可以用自然語言讓代理執行一串 Git 操作。示例:
Clone the repo, check out a feat/ branch, commit these changes and open a PR against main; squash-merge it and create a v1.2.0 release.
示例中的 feat/、main、v1.2.0 都只是佔位值,實際使用時應替換爲你自己的分支、目標分支和版本號。
配置平臺憑據¶
平臺操作通過 DSH 的憑據機制解析。配置中只保存 env-var references,不保存令牌本身;令牌會按操作解析。
可按平臺使用以下環境變量,或通過 ctx.credentials sources 配置:
GITHUB_TOKEN
GITLAB_TOKEN
BITBUCKET_APP_PASSWORD
AZURE_DEVOPS_PAT
GITEA_TOKEN
幾點行爲需要確認:
- 公共倉庫可以匿名訪問
- 未設置憑據時,寫操作會以
GIT_AUTH_FAILED失敗 - Bitbucket 需要額外
username配置 - GitLab 的
baseUrl可配置 - Gitea 的
baseUrl必填
管理記憶¶
git_memory 會自動記錄工具失敗簽名,並在後續命中相似模式時提供摘要。由於記憶會跨會話保留,長期使用時需要清理過時條目。
刪除過時記憶時,使用:
git_memory forget
適用場景與注意¶
適合以下場景:
- 使用 DSH 代理處理本地倉庫的 clone、branch、commit、push、pull、merge、rebase 等操作
- 需要操作 GitHub、GitLab、Bitbucket Cloud、Azure DevOps 或 Gitea 上的 pull requests / MRs、issues、releases、CI/CD 和安全告警
- 希望代理跨會話記住工具失敗簽名和項目約定
- 希望破壞性操作進入
host approval service,而不是直接執行
注意以下幾點:
- 插件會訪問本地 Git 倉庫和託管平臺接口,因此會運行在當前 DSH 進程權限內。
- 安裝前應檢查源碼和 MIT 許可證,並確認自己允許代理執行哪些 Git 與平臺操作。
- 令牌不會存儲在配置中,僅保存 env-var references,並按操作解析。
- 未設置憑據時,匿名訪問可能適用於公共倉庫讀取,但寫操作會以
GIT_AUTH_FAILED失敗。 - 不支持的平臺操作會以
GIT_UNSUPPORTED失敗,而不是靜默返回空。 - 記憶在持久化前會清除 secrets、tokens、keys、private-key blocks、username paths。
鏈接與查找¶
GitHub 倉庫:
https://github.com/sakthiveltofficial/dsh-git-plugins
插件名稱:
sakthiveltofficial/dsh-git-plugins
如果你使用 DSH 插件目錄,可按該名稱查找並覈對當前可用版本。