dsh-git-forge:DeepSeek Harness 的 Git 凭据与推送权限管理器

前言

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 凭据」入口。

使用流程

  1. 打开右侧栏「Git 凭据」→ 账号库 加一个账号(输入 token 并探测)。
  2. 切到 项目授权 → 勾上该账号并保存,当前工作区即获得授权。
  3. 让 agent 在项目里运行 HTTPS 的 git fetch / git push,凭据由 helper 自动注入。
  4. 尝试推送到未授权的 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 仓库。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye