前言¶
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 仓库。