前言¶
在 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