yvluwang 发表于 2026-7-9 13:57:54

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

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

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

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

项目效果图:

https://private-user-images.githubusercontent.com/12993450/619172547-762cd8fd-795a-4152-a9b4-87e5596cab44.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODM1NzY4MzcsIm5iZiI6MTc4MzU3NjUzNywicGF0aCI6Ii8xMjk5MzQ1MC82MTkxNzI1NDctNzYyY2Q4ZmQtNzk1YS00MTUyLWE5YjQtODdlNTU5NmNhYjQ0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzA5VDA1NTUzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUwMzIxZTQwOGM5YjE1YjVhNmI4NTg3OWJkNWU4MGUyOGJlZTFmOGRkY2U2MWRhZDg2MTFjZjBhZTRlZmU1ZTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.Ta0d379vjTF6bsBo7XXxsigvrMFMSb_fK8hiU-05nVs

项目优点:

✅ 仅 ~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 测试覆盖

hxsf 发表于 2026-7-9 14:13:53

copilot+deepseek 了,为什么不直接让它写。甚至能帮你细粒度分批提交。

yvluwang 发表于 2026-7-9 14:18:37

@hxsf 因为懒的每次都打字告诉他,只想无脑执行个命令

anghunk 发表于 2026-7-9 14:19:48

我是直接把 git commit 的生成格式和规范抽离成 skills
一个命令就能生成

yvluwang 发表于 2026-7-9 14:20:53

@anghunk 也很赞!
页: [1]
查看完整版本: 一个基于 Git 与大语言模型(LLM)的 CLI 工具,自动分析 git diff --staged 内容,生成高质量的 Commit Message 的工具