AImmit 是一个用 Go 开发的命令行 AI 工具,用于根据代码变更自动生成 commit message,以及总结 Git 仓库的 commit 历史。它可以帮助开发者提高工作效率,生成规范的提交信息。
AI + Commit,发音类似"Aim it",意为"瞄准它",比喻精准总结
- 生成Commit Message:根据当前工作区的代码变更,自动生成符合约定式提交规范的 commit message
- 多种输出格式:支持文本、JSON 和约定式提交格式
- 自动提交:可选择自动执行 git commit 操作
- 简单易用:友好的命令行界面
- 本地大模型:使用llama.cpp本地调用大语言模型,无需联网,保护代码安全
确保您已安装 Go 1.20 或更高版本,然后运行:
go install github.com/rust17/AImmit/cmd/aimmit@latest
或者从源码构建:
git clone https://github.com/rust17/AImmit.git
cd AImmit
go build -o aimmit ./cmd/aimmit
由于这个项目依赖 llama.cpp 调用大模型,所以需要下载 llama.cpp 的二进制文件,并放入 ./llama-c-path/bin
目录下。
wget -q https://github.com/ggml-org/llama.cpp/releases/download/{llama-bin.zip} -O temp.zip && unzip temp.zip -d ./temp && mv ./temp/build/bin/* ./llama-c-path/ && rm -rf temp && rm temp.zip
wget https://huggingface.co/lmstudio-community/Qwen3-1.7B-GGUF/resolve/main/Qwen3-1.7B-Q6_K.gguf -O ./model/Qwen3-1.7B-Q6_K.gguf
AImmit 也支持通过 Docker 进行构建和运行:
# 克隆仓库
git clone https://github.com/rust17/AImmit.git
cd AImmit
# 将你的GGUF模型文件放入models目录
wget https://huggingface.co/lmstudio-community/Qwen3-1.7B-GGUF/resolve/main/Qwen3-1.7B-Q6_K.gguf -O ./model/Qwen3-1.7B-Q6_K.gguf
# 构建Docker镜像
docker build -t aimmit:latest .
直接运行
aimmit
或者用 Docker 运行,需要将模型文件放入 ./model
目录下,并挂载当前目录为 git-repo:
docker run -v $(pwd)/model:/app/model -v $(pwd):/git-repo -it aimmit
--format
: 输出格式,支持 text、json、conventional(仅commit模式),默认为 text--repo
: Git 仓库路径(默认为当前目录)--staged
: 是否只分析已暂存的更改(默认为true,只分析已暂存的更改)--auto-commit
: 是否自动执行 git commit 操作(默认为false)--model-path
: llama.cpp模型文件路径,例如:/home/user/models/llama3.gguf
--llama-c-path
: llama.cpp可执行文件路径(默认为 your-AImmit-path/llama-c-path)--only-prompt
: 是否只显示prompt(默认为false)
生成 commit message 并自动提交:
aimmit --auto-commit
分析未暂存的更改:
aimmit --staged=false
分析指定仓库路径:
aimmit --repo=/path/to/repo
AImmit 生成的 commit message 遵循约定式提交规范,格式如下:
<类型>[可选的作用域]: <描述>
[可选的正文]
[可选的脚注]
常见的提交类型包括:
feat
: 新功能fix
: 修复bugdocs
: 文档更新style
: 代码风格调整(不影响代码功能)refactor
: 代码重构perf
: 性能优化test
: 测试相关build
: 构建系统或外部依赖变更ci
: CI配置变更chore
: 其他变更
MIT