前言¶
在 DSH 智能體中調用 GitLab、GitHub、Gitee、Gitea 或 Bitbucket 的 API 時,一個常見痛點是:工具需要訪問遠端倉庫資源,但 token 值又不宜進入模型上下文。
dsh-git-credentials 是一個 DeepSeek Harness 插件,用來管理 GitLab、GitHub、Gitee、Gitea 和 Bitbucket 的 API token。它讓 token 值不進入模型上下文,只在工具調用時從插件自己的加密存儲中解密,並用於出站 Authorization 頭。
這是什麼¶
- 插件名:
dsh-git-credentials - 維護倉庫:
https://github.com/revive/dsh-git-credentials - 許可證:
MIT - 定位:DeepSeek Harness 插件,管理 Git 平臺 API token,使 token 值不進入模型上下文
它解決的核心問題是:在多個 Git 託管站點之間複用 DSH 工具調用能力,同時避免把真實 token 值交給模型上下文處理。
核心能力¶
token 值不進入模型上下文¶
插件管理 GitLab、GitHub、Gitee、Gitea 和 Bitbucket 的 API token。模型側只處理站點、項目、路徑等業務參數,token 值不進入模型上下文。
調用時,token 值從插件的 AES-256-GCM 加密存儲中解密,並用於出站 Authorization 頭。
加密落盤¶
插件使用兩個文件保存憑據相關數據:
- AES-256-GCM 加密的數據文件
- 獨立 32 字節隨機密鑰文件,路徑爲
~/.dsh/git-credentials.key
兩個文件權限爲 0600,寫入時採用原子寫入。
按 provider 限制工具範圍¶
工具按平臺命名空間劃分:
gitlab_*
github_*
gitee_*
gitea_*
bitbucket_*
gitlab_* 只訪問對應 GitLab 站點,github_* 只訪問對應 GitHub 站點,gitee_*、gitea_*、bitbucket_* 同理。
Web 設置面板¶
插件提供 Web 設置面板,入口爲:
Settings → Git Credentials
面板可以完成以下操作:
- 添加站點
- 編輯站點
- 刪除站點
- 保存 token 值
- 清除 token 值
面板響應不攜帶 token 值,只返回配置狀態。
熱加載與即時生效¶
插件支持在運行中的 GUI 上掛載或卸載,不需要重啓 GUI。
每次工具調用都會讀取新解密的快照,因此編輯站點、輪換 token 後,下一次調用即生效。
安裝與啓用¶
安裝 release tarball¶
先從倉庫 releases 下載對應版本的 tarball,例如:
dsh-git-credentials-0.2.2.tgz
然後執行安裝:
dsh plugin --profile <name> add ./dsh-git-credentials-0.2.2.tgz
安裝後可以驗證配置層:
dsh --profile <name> --dump-config
在輸出中查找:
# == dsh-git-credentials
注意:通過 dsh plugin add 安裝 bundle 時,不會熱掛載到當前運行中的 GUI。安裝完成後需要重啓 GUI 進程。重啓後,插件會出現在:
Settings → Git Credentials
源碼安裝¶
源碼安裝前需要先構建瀏覽器產物:
lib/client.js
release tarball 已包含構建產物,源碼安裝則需要先完成構建。
然後把插件目錄軟鏈到 profile 可解析的 node_modules 路徑:
mkdir -p ~/.dsh/profiles/node_modules
ln -s /path/to/dsh-git-credentials ~/.dsh/profiles/node_modules/dsh-git-credentials
再在 ~/.dsh/cordis.patch.yml 中添加一個 id: git-credentials 的 insert 行。最小示例爲:
- insert:
- id: git-credentials
典型用法¶
添加站點¶
打開:
Settings → Git Credentials
添加站點時需要填寫:
- provider:GitLab、GitHub、Gitee、Gitea 或 Bitbucket
- site id
- API base URL
- token reference name
- 可選 token value
- 可選 default project
token 值可以用專門的 Save Token 按鈕寫入,也可以在 Add Site 時一起保存。
編輯已有站點¶
已有站點默認只讀。可以看到:
- provider
- base URL
- token reference name
- default project
- 配置狀態
點擊 Edit 後進入編輯模式,可以:
- 修改站點配置
- 保存新 token
- 清除 token
- 刪除站點
調用寫操作前確認¶
插件提供的工具會訪問遠端 Git 平臺資源。寫操作會真實修改遠端資源,因此模型在調用前應先與用戶確認。
適用場景與注意¶
適合以下場景:
- 需要同時管理多個 Git 託管站點的 API token
- 希望 token 值不進入模型上下文
- 希望在 Web 設置頁中添加、編輯、刪除站點
- 希望輪換 token 後立即對後續工具調用生效
使用前需要注意:
- 插件以當前
dsh進程權限運行。安裝前應檢查源碼、許可證和依賴。 - 許可證爲
MIT。 - peerDependencies 要求:
@deepseek-ai/cordis ^4.0.1-rc.1@deepseek-ai/dsh-tools ^0.0.1-rc.1@deepseek-ai/schemastery ^3.18.1-rc.1- 丟失
~/.dsh/git-credentials.key後,加密數據不可恢復。 - 只複製加密數據文件是安全的,沒有密鑰文件無法解密。
- 同 UID 進程如果同時讀取數據和密鑰文件,不受該加密方案保護。
- 密鑰與數據同權限存放,屬於“discretion, not a boundary”。
- 用戶故意要求模型讀取這些文件時,不屬於該威脅模型可阻止的範圍。
- 寫操作會真實修改遠端資源,調用前應與用戶確認。
結尾¶
dsh-git-credentials 的價值在於:它把 Git 平臺 API token 的管理從模型上下文中移出去,讓 token 值只保留在插件的加密存儲和出站請求頭中。對於需要在 DSH 中訪問多個 Git 託管站點的場景,它是一個偏憑據管理的配套插件。
目錄頁地址未在本次已覈實資料中確認,本文不給出具體 URL。倉庫地址爲:
https://github.com/revive/dsh-git-credentials