AIM:用 AI 寫 Git 提交信息
前言
每次提交代碼都要想半天寫什麼?趕項目的時候隨手寫個"update"、"fix bug"就提交了?回頭看提交歷史,滿屏都是"修改文件"這種廢話?
AIM(AI-powered Git Intelligence Message) 就是為了解決這個問題而生的。它是個命令行工具,直接分析你的代碼改動,自動生成規範的提交信息。
安裝
dotnet tool install --global huiyuanai709.aim
主要功能
🤖 AI 分析代碼改動
接入了 OpenAI API(也支持其他兼容接口),會:
- 看你的
git diff改了啥 - 理解這次改動是幹什麼的
- 生成符合規範的提交信息
⚡ 跑得快
- 用 .NET 10.0 寫的,支持 AOT 編譯
- 啓動快,佔內存少
- 命令行用起來簡單
🎯 符合規範
生成的提交信息會遵循常見的最佳實踐:
- 用祈使語氣:"Add feature" 不是 "Added feature"
- 標題不超過 72 字符
- 標題和正文之間空一行
⚙️ 可以定製
能改的地方挺多:
- API 地址和模型(GPT-4、GPT-4o 等)
- 提交信息長度
- 要不要自動提交
- diff 顯示方式
快速上手指南
安裝步驟
# 1. 克隆倉庫
git clone https://github.com/huiyuanai709/Aim.git
cd Aim
# 2. 構建項目
dotnet build
# 3. (可選)發佈為原生二進制文件
dotnet publish -c Release
配置 API 密鑰
先準備一個 OpenAI API key:
aim config --set apikey=YOUR_API_KEY
用其他兼容 OpenAI 接口的服務(比如 Azure OpenAI、國內的 AI 服務)也行,改一下地址:
aim config --set apiendpoint=https://your-custom-endpoint.com/v1
怎麼用
# 1. 改完代碼,暫存
git add .
# 2. 生成提交信息
aim commit
# 3. 看一眼沒問題就提交
就這樣。AIM 分析完代碼會給你一條提交信息,看着沒問題就確認。
更多用法
一步到位:
aim commit -a
改上次的提交:
aim commit --amend
自動提交不用確認:
aim config --set autocommit=true
實際效果
比如你這次改動:
- 給登錄加了郵箱驗證
- 修了密碼重置頁面的顯示問題
- 更新了單元測試
自己寫可能是:
fix: 修復登錄相關問題
用 AIM 生成的:
Add email validation to user login module
- Implement email format validation on login form
- Fix password reset page display issue
- Update related unit tests for new validation logic
技術細節
.NET 10.0 + AOT 編譯
用了最新的 .NET 平台,支持 AOT 編譯:
- 啓動快:不用 JIT 編譯
- 佔內存少:不需要完整的運行時
- 跨平台:Windows、Linux、macOS 都能用
依賴庫
- OpenAI SDK (v2.7.0):官方 SDK
- System.CommandLine (v2.0.0):微軟官方的命令行庫
- Microsoft.Extensions.Configuration:配置管理
代碼結構
設計比較簡單:
- 配置文件用標準 INI 格式
- 命令行接口規範
- 模塊化,好改
配置説明
配置文件在:
- Windows:
%APPDATA%\aim\config.ini - Linux/Mac:
~/.config/aim/config.ini
示例:
[General]
ApiKey = sk-your-api-key-here
ApiEndpoint = https://api.openai.com/v1
Model = gpt-4o
[Behavior]
AutoCommit = false
AutoPush = false
[Rules]
MaxSubjectLength = 72
DiffNameOnly = false
常用配置
| 配置項 | 説明 | 建議 |
|---|---|---|
Model |
AI 模型 | gpt-4o 或 qwen-plus |
AutoCommit |
自動提交 | 保持 false,自己確認一下比較好 |
MaxSubjectLength |
標題最大長度 | 72(Git 標準) |
DiffNameOnly |
只顯示文件名 | false(完整 diff 生成的更準) |
適合什麼場景
用起來不錯的場景
- 個人項目:快速生成規範的提交
- 小團隊:統一提交風格
- 開源項目:讓提交歷史看起來更專業
要注意的地方
- 敏感代碼:AI 要讀你的代碼,注意公司規定
- 沒網絡:要聯網調 API
- 大改動:改了特別多文件,可能要自己潤色一下
開源參與
這是個開源項目,歡迎參與:
- 🐛 報 bug
- 💡 提建議
- 📝 寫文檔
- 💻 提代碼
GitHub:https://github.com/huiyuanai709/Aim
最後
寫代碼已經夠累了,提交信息這種事交給工具就行。AIM 不是要替你思考,而是幫你把時間花在更值得做的事上。
項目作者:huiyuanai709
覺得有用的話,給個 Star ⭐