GitGuard:为你的代码仓库提供的 AI 安全网

发布: (2026年2月16日 GMT+8 02:51)
4 分钟阅读
原文: Dev.to

Source: Dev.to

这是针对 GitHub Copilot CLI 挑战 的提交

我构建的内容

GitGuard 是一个命令行工具,旨在为 Git 操作提供“心理安全”。它充当自然语言意图与实际 Git 命令执行之间的智能防火墙。

我们都有过这样的经历:盯着终端,手心出汗,在按下 Enter 之前犹豫不决,尤其是面对 git reset --hard,或者第 100 次在 Google 上搜索 “如何撤销上一次提交而不丢失文件”。

GitGuard 通过使用 GitHub Copilot CLI 作为翻译引擎来解决这个问题,但它加入了一个安全层。

工作原理

  • 翻译 – 你用普通英文输入想要完成的操作(例如 “undo last commit but keep changes”)。
  • 分析GitGuard 调用 Copilot 生成正确的 Git 命令。
  • 风险分类 – 在向你展示命令之前,GitGuard 的内部风险分类器会使用正则表达式检测破坏性操作(删除、强制推送、历史改写)。
  • 验证 – 它会以清晰的解释和风险等级(🟢 低,🔴 高)呈现命令。
  • 细化 – 如果命令不完全正确,你可以对话式地进行细化(例如 “add the force flag”),无需重新开始。

它完全使用 Kotlin 编写,利用强大的 JVM 生态系统,同时提供现代化的终端用户体验。

演示

完整源码和安装说明请见:

👉 GitHub 仓库: yorky47/git-guard

处理危险操作

下面展示 GitGuard 如何保护用户免受高风险操作的影响。它能够正确识别 git reset --hard 为危险操作,并要求明确确认。

高风险示例

我使用 GitHub Copilot CLI 的体验

构建 GitGuard 是一次独特的经历,因为我不仅使用 Copilot 来编写代码——我把 Copilot CLI 作为应用的核心引擎。

挑战:驯服 LLM

最大的挑战是让大型语言模型(LLM)的输出足够确定,以适配 CLI 工具。标准的 gh copilot suggest 输出是为人类阅读设计的,而不是供软件解析的。

解决方案:严格的提示工程

为了解决这个问题,我在 CopilotService 中实现了严格的提示注入技术。强制 CLI 以 JSON API 的形式工作:

// From CopilotService.kt
private val TOOM_PROMPT = "Act:GitGuard Task:Intent2Git Output:JSON_Format:{command,explanation} Rules:StrictJSON,NoThinking,NoLogs"

这使得 GitGuard 能够可靠地解析响应,提取用于执行的命令和用于 UI 的解释,同时过滤掉通常伴随 CLI 输出的“噪声”。

对开发的影响

使用 Copilot CLI 扩展显著加快了核心逻辑的实现。与其构建复杂的 NLP 模型来理解 Git 意图,我可以依赖 Copilot 对 Git 语法的广博知识。这样我就可以专注于应用逻辑:风险分类系统、终端 UI 以及安全防护。

GitGuard 证明 GitHub Copilot CLI 不仅是开发者的辅助工具——它是一个强大的后端 API,能够驱动新一代智能开发者工具。

0 浏览
Back to Blog

相关文章

阅读更多 »