前言¶
在 DeepSeek Harness (DSH) 的开发场景中,智能体需要频繁访问代码库进行操作。管理多个代码托管平台(GitHub、Gitea 等)的账号、确保项目级别的访问隔离以及控制推送行为,是常见的安全与协作痛点。手动配置往往繁琐且容易泄露敏感信息,而直接将凭据暴露给模型上下文又存在安全隐患。
dsh-git-forge 是一款社区插件,旨在为 DSH 提供集中式的代码库账号管理、基于项目路径的授权机制以及细粒度的推送策略控制。
这是什么¶
这是一款 DeepSeek Harness 社区插件,由 thirsty5034 维护。它集成在 dsh-better-sidebar (≥ 0.12) 中,解决了智能体在多账号、多项目环境下的 Git 访问与权限管理问题。
核心功能包括:
* 账号库:统一管理 GitHub / Gitea / GitLab / Gitee / Bitbucket 的账号。
* 项目授权:将账号授权与 DSH 会话工作区路径绑定。
* 推送守卫:在主机 tools.guard 中拦截非授权的 git push 和 git remote 操作。
核心功能¶
账号与授权¶
插件在 $DSH_HOME/git-forge/ 目录下存储数据:
* accounts.json:账号元数据(不含令牌)。
* secrets.json:令牌(权限 0600)。
* grants.json:项目路径与账号 ID 的映射关系。
授权键(projectPathKey)默认为工作区当前目录(workspace cwd)。在 Agent Shell 环境中,授权键通过环境变量 DSH_GIT_FORGE_PROJECT 传递。
模型工具¶
模型可以通过调用 GitForge 工具执行只读操作:
* action=list_accounts:列出所有已配置账号。
* action=get_policy:获取当前授权策略。
* action=list_project_accounts:列出当前项目的授权账号。
* action=check_remote:检查远程仓库地址是否在授权列表中(例如:url=git@github.com:org/repo.git)。
Agent HTTPS 与凭证¶
在 DSH Agent Shell 中,HTTPS Git 操作由插件的凭证助手处理:
* 安全隔离:令牌永远不会进入模型上下文或工具/API 返回结果中。
* R1 限制:对于同一 Git 主机,最多仅填充一个授权的令牌账号。
* 助手解析:凭证解析顺序为环境变量 -> 精确当前目录 -> 向上遍历 /workspace 父目录。
推送策略¶
- 守卫机制:推送策略在 Host
tools.guard中强制执行,拦截bash git push和git remote add|set-url指向未授权主机的操作。 - 渐进式启用:如果没有为特定项目配置授权,默认不会阻止推送(渐进式启用);此时凭证助手也不会提供凭据。
安装与启用¶
安装前请确保已安装 Node.js 18+,并且 DSH Web 配置文件中集成了 dsh-better-sidebar (版本 ≥ 0.12)。
在 macOS 或 Linux 系统上执行以下命令安装:
curl -fsSL https://raw.githubusercontent.com/thirsty5034/dsh-git-forge/main/scripts/install.sh | bash
安装完成后,重启 DSH Web 服务,并在浏览器中执行硬刷新(Cmd/Ctrl + Shift + R)以加载插件。
适用场景与注意¶
- 适用场景:需要为智能体分配受限的 Git 访问权限、多团队协作环境下的账号隔离、以及对代码推送行为有安全审计要求的场景。
- SSH 与系统工具:SSH 远程连接和系统级的
gh auth依然使用本地的 SSH 配置或 GitHub CLI,不受此插件影响。仅在 DSH Agent Shell 中,HTTPS 请求才会由插件的凭证助手填充授权凭据。 - 安全提示:插件通过 Host
tools.guard强制执行策略,令牌文件权限严格设置为0600,确保只有运行 DSH 的用户可读。
总结¶
dsh-git-forge 提供了一套从账号管理到项目授权、再到推送策略控制的完整解决方案。它将敏感信息隔离在模型上下文之外,并通过细粒度的策略限制智能体的 Git 操作范围,适合需要严谨权限管理的 DSH 生态构建。