一个基于 Git 与大语言模型(LLM)的 CLI 工具,自动分析 git diff --staged 内容,生成高质量的 Commit Message 的工具

yvluwang 2026-07-09 13:57 1

项目地址: https://github.com/851235550/gita


为什么有这个项目:
我一般开发都在 vscode 中,然后使用 Copilot + Deepseek , 但是每次提交代码都得想 commit msg 如何写。之前安装过 千问 的 vscode 插件,一个插件 200 多兆 大小,而我只用来生成 commit msg 感觉不划算。 所以自己写了一个编译完才不到 7 兆的小工具。效果也感觉还不错。


PS:
所有代码都是 AI 写的,我只是提供了下 /docs 目录下的需求和 AI Agent 执行规则。(其实连 /docs 下的文档都是我先描述一个初步想法,然后和 AI 探讨后,让他整理的结果


项目效果图:
效果图


项目优点




  • ✅ 仅 ~6.5 兆大小




  • ✅ 不在代码中硬编码密钥 - API Key 完全通过环境变量读取( GITA_DEEPSEEK_API_KEY 等




  • ✅ 不持久化到磁盘 - 密钥仅存于运行时内存,配置文件明确禁止写入 API Key




  • ✅ 三级优先级机制(按优先顺序):



    • 命令行参数 --api-key (临时,不落盘)

    • 环境变量(由 api_key_env 指定)

    • 配置文件中的 api_key_env 指向具体的环境变量名




  • ✅ 仅依赖 gopkg.in/yaml.v3 v3.0.1 (成熟稳定的 YAML 解析库)




  • ✅ 没有多层依赖链,降低了供应链风险




  • ✅ go.mod 和 go.sum 完整且一致




  • ✅ Git diff 数据基于本地 Git 命令执行,不接受不可信输入




  • ✅ JSON 响应完整校验,异常处理覆盖全面




  • ✅ 超大 diff (≥15000 行)时强制用户确认,防止无意中发送大量数据




  • ✅ 完整的单元测试和 E2E 测试覆盖



最新回复 (11)
  • hxsf 07-09 14:13
    1
    copilot+deepseek 了,为什么不直接让它写。甚至能帮你细粒度分批提交。
  • yvluwang 楼主 07-09 14:18
    2
    @hxsf 因为懒的每次都打字告诉他,只想无脑执行个命令
  • anghunk 07-09 14:19
    3
    我是直接把 git commit 的生成格式和规范抽离成 skills
    一个命令就能生成
  • yvluwang 楼主 07-09 14:20
    4
    @anghunk 也很赞!
  • yvluwang 楼主 07-09 15:51
    5
    @anghunk 你这个方法很不错啊,学到了,我也搞一下。😌
  • terryso 07-09 16:11
    6
    我用 claude code, 我只要输入: 提交代码, 它自己就默认做了类似你的这个工具的这些事情
  • lululau 07-09 16:17
    7
    @yvluwang #4 并不是「也」,而是:这是目前的最佳实践。我也基于 magit 和 neogit 写过同样功能的插件,但是现在已经都没用了;现在代码都是在 coding agent 里写的,所以 skill 是唯一解
  • yvluwang 楼主 07-09 16:22
    8
    @lululau skill 我试了下,好像还是有点弊端的,比如如果要想调整 ai 给出的 commit msg ,需要不断的在对话框中进行交互?

    如果工具的话可以直接进 vi 来调整。
  • yvluwang 楼主 07-09 16:23
    9
    @terryso 用不起😂
  • gz222 07-10 09:11
    10
    楼主我也写了一个,不过我把各种 tools 加上了,这样模型可以自己去探索仓库,理解更多信息

    https://github.com/qaqland/vibe-commit-msg
  • yvluwang 楼主 07-10 10:39
    11
    @gz222 👍
* 帖子来源V2EX
返回