前言¶
在使用 DSH(DeepSeek Harness)时,智能体可能因为处理代码而意外执行 git 命令,导致本地仓库被修改或数据被上传到远程。这类操作往往没有明确的用户意图,却可能造成敏感信息泄露或本地代码被意外覆盖。Git Repository Guard(dsh-git-guard)通过在命令执行前拦截 git 相关操作,为开发者提供一层直观的防护开关。
插件定位¶
dsh-git-guard 是一个针对 DSH 的 admin-security 类插件,由 Yokira404 维护。它会在会话标题栏右侧提供两个开关:左侧用于阻止写入本地仓库,右侧用于阻止上传到远程。两个开关默认都是开启状态,确保默认安全。
核心功能¶
两个防护开关¶
插件在会话标题栏右侧提供两个方形开关:
- 左侧开关:阻止写入本地仓库的操作
- 右侧开关:阻止任何与远程仓库相关的操作
阻止的操作¶
左侧开关阻止以下本地仓库写入命令:
git add · git commit · git am · git apply · git checkout-index · git config
git merge · git mv · git notes · git rebase · git reset · git restore
git revert · git rm · git stash · git switch · git tag
git update-index · git update-ref
右侧开关阻止以下远程操作:
git push · git pull · git fetch · git clone · git ls-remote · git remote
git submodule · git send-pack · git archive · git request-pull · git svn
gh repo / pr / release / issue / run / workflow / api / gist / secret / …
任何包含 github.com、gitlab.com、gitee.com 等仓库 URL 的命令行参数
开关交互规则¶
开关的点击行为遵循以下规则:
- 左侧开关:控制本地写入的开启/关闭
- 右侧开关:控制远程上传的开启/关闭
- 切换任一开关不会释放另一个开关
- 关闭上传开关会同时关闭本地写入开关
- 两个开关都关闭时,右侧开关单独开启上传保护
四种状态对应:
| 状态 | 本地写入 | 上传 |
|---|---|---|
| on · on(默认) | 被阻止 | 被阻止 |
| off · on | 允许 | 被阻止 |
| on · off | 被阻止 | 允许 |
| off · off | 允许 | 允许 |
命令拦截时机¶
拦截发生在命令执行之前,被拦截的命令不会运行,智能体会收到明确的拒绝信息。
命令匹配机制¶
匹配是引号感知的:
- git commit -m "do not push this" 会被识别为本地提交
- echo "git push" > notes.txt 不会被拦截(仅文本包含命令名)
- sudo git push、env FOO=1 git commit、C:\Program Files\Git\cmd\git.exe push 都会被识别
拒绝信息¶
当操作被阻止时,智能体会收到类似以下的反馈:
已阻止:DSH 的「Git 仓库保护」插件当前开着左侧的本地仓库开关,
写入本地仓库的操作(git add / git commit 等)被拒绝。
被拦截的命令:`git commit -m x`
这是用户有意设置的开关,不是故障:不要改用其他命令、其他工具或直接调用 API 绕过它,
也不要尝试关闭该开关。请把这一步作为「未执行」如实报告给用户,
并说明用户可以点击会话标题栏的两个方形按钮自行放行。
局限性¶
- 插件不会修改仓库本身(不修改 .git/hooks、git config)
- 会拦截任何包含命令名的文本(包括文档中的命令名),这是有意为之的保守策略
- 无法阻止通过非 shell 路径直接调用的命令
- 没有撤销机制,因为拦截发生在命令执行前
- 状态不持久化,DSH 重启后两个开关恢复为开启
安装与启用¶
使用官方安装命令:
dsh plugin --profile <profile> add @yokira404/dsh-git-guard
安装后刷新页面,两个开关会出现在会话标题栏右侧。
手动安装方式是将 @yokira404/dsh-git-guard 添加到 dsh.profile.bundles,并在 ~/.dsh/profiles/<profile>/package.json 的 dependencies 中声明为 "^1.0.1"。
适用场景¶
适合需要在 DSH 中处理代码但希望严格控制 git 操作的开发者,特别是在处理敏感代码、需要防止意外推送到远程仓库的场景。插件通过直观的开关界面,让用户可以灵活控制智能体的仓库操作权限。
注意事项¶
插件以当前 DSH 进程的权限运行,安装前建议查看源码与许可证。MIT 许可证允许自由使用与修改。
小结¶
Git Repository Guard 通过会话级别的开关,为 DSH 提供了防止本地仓库写入和远程上传的直观手段。两个开关默认开启,交互规则清晰,拦截发生在命令执行前,配合拒绝信息的引导,能有效避免智能体因处理代码而执行意外的 git 操作。
目录页与 GitHub¶
- 目录页:https://www.skillhub.cn/plugins/Yokira404/dsh-git-guard
- GitHub:https://github.com/Yokira404/dsh-git-guard