dsh-git-credentials:把 Git 平臺 API token 值擋在模型上下文之外

前言

在 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
羽毛球分组比赛记分
小程序二维码

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

小夜