Git 提交AI神器:用大模型帮你写出规范的 Commit Message
在软件开发中,规范的 Git 提交信息不仅是团队协作的基础,更是项目可维护性、可追溯性的关键。无论是用于生成清晰的 CHANGELOG,还是帮助 Leader 审核你的工作成果,甚至让新手也能像资深工程师一样提交高质量代码------一个好用的 Commit Message 工具都不可或缺。
今天,我们来介绍一款基于 本地开源大模型 + 全栈技术栈 打造的 Git 提交辅助神器:Git Commit AI Assistant 。它能自动分析你的 git diff,并生成符合 Conventional Commits 规范的专业级提交信息。
🌟 项目亮点
- 本地部署,数据安全 :使用 Ollama 在本地运行
deepseek-r1:8b开源大模型,无需联网,隐私无忧。 - 前后端分离架构:前端 React + TailwindCSS,后端 Node.js + Express,结构清晰,易于扩展。
- 开箱即用 :只需复制粘贴
git diff内容,AI 自动为你生成语义清晰、格式规范的 commit message。 - 开发者友好:支持热重载(nodemon)、API 调试(Apifox)、跨域处理(CORS),开发体验丝滑。
🛠 技术栈一览
| 层级 | 技术 |
|---|---|
| 前端 | React 18 + Vite + Tailwind CSS + Axios |
| 后端 | Node.js + Express |
| AI 引擎 | Ollama + deepseek-r1:8b(8B 参数推理模型) |
| 开发工具 | nodemon(热更新)、Apifox(API 测试) |
🧠 核心原理
- 用户在前端粘贴
git diff输出内容。 - 前端通过 Axios 将 diff 文本发送到后端
/chat接口。 - 后端调用本地 Ollama 服务(
http://localhost:11434),使用 LangChain 构建提示词链。 - 大模型根据预设的系统角色(如"你是一个专业的 Git 提交信息生成助手")生成规范的 commit message。
- 结果返回前端,用户一键复制即可使用。
🚀 快速启动指南
1. 启动 AI 模型(Ollama)
确保已安装 Ollama,然后拉取并运行模型:
arduino
ollama pull deepseek-r1:8b
ollama run deepseek-r1:8b # 可选,验证是否正常
Ollama 默认提供兼容 OpenAI 的 API 接口,监听 http://localhost:11434。
2. 启动后端服务(Express)
bash
cd server
npm install
npm install express cors @langchain/ollama @langchain/core
npx nodemon index.js
服务将在 http://localhost:3000 启动,并提供以下接口:
GET /hello→ 测试连通性POST /chat→ 接收用户输入,返回 AI 生成的 commit message
✅ 已内置 JSON 解析中间件和 CORS 跨域支持,前端可直接调用。
3. 启动前端(React + Vite)
arduino
cd frontend
npm install
npm run dev
前端运行于 http://localhost:5173,界面简洁,支持实时加载与错误提示。
💡 示例:AI 如何生成 Commit Message?
输入(git diff 片段) :
javascript
+ export const formatDate = (date) => {
+ return new Date(date).toLocaleDateString();
+ };
AI 输出:
scss
feat(utils): add formatDate utility function
完全符合 Conventional Commits 规范!
📦 后端核心代码(Express + LangChain)
javascript
import express from 'express';
import cors from 'cors';
import { ChatOllama } from "@langchain/ollama";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { StringOutputParser } from '@langchain/core/output_parsers';
const model = new ChatOllama({
baseUrl: 'http://localhost:11434',
model: 'deepseek-r1:8b',
temperature: 0.1 // 降低随机性,提高一致性
});
const app = express();
app.use(express.json());
app.use(cors());
app.post('/chat', async (req, res) => {
const { message } = req.body;
if (!message || typeof message !== 'string') {
return res.status(400).json({
error: "message 必填,必须是字符串"
});
}
try {
const prompt = ChatPromptTemplate.fromMessages([
['system', '你是一个专业的 Git 提交信息生成助手。请根据用户提供的 git diff 内容,生成一条符合 Conventional Commits 规范的 commit message。只输出 commit message,不要解释。'],
['human', '{input}']
]);
const chain = prompt.pipe(model).pipe(new StringOutputParser());
const result = await chain.invoke({ input: message });
res.json({ reply: result.trim() });
} catch (e) {
console.error(e);
res.status(500).json({ error: "调用大模型失败" });
}
});
app.listen(3000, () => {
console.log('🚀 Git Commit AI Server running on http://localhost:3000');
});
🧪 前端 Hook 封装(React)
scss
// hooks/useGitDiff.js
import { useState, useEffect } from 'react';
import { chat } from '../api';
export const useGitDiff = (diffText) => {
const [content, setContent] = useState('');
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
useEffect(() => {
if (!diffText) return;
const generateCommit = async () => {
setLoading(true);
setError(null);
try {
const { data } = await chat(diffText);
setContent(data.reply);
} catch (err) {
setError('生成失败,请检查后端服务');
} finally {
setLoading(false);
}
};
generateCommit();
}, [diffText]);
return { loading, content, error };
};
🔒 为什么选择本地大模型?
- 无网络依赖:公司内网、离线环境也能用。
- 零成本:无需支付 OpenAI 或其他云 API 费用。
- 高性能 :
deepseek-r1:8b在消费级 GPU 上推理流畅。 - 可定制 :可微调提示词或更换模型(如
codegemma,phi3等)。
📌 结语
规范的 Git 提交不是负担,而是专业性的体现。借助 AI,我们可以把重复性工作交给机器,专注于更有价值的编码与设计。
这个 Git 提交AI神器 不仅是一个工具,更是一种工程文化的倡导者。现在就把它集成到你的开发流程中,让你的每一次 git commit 都闪闪发光 ✨!
GitHub 仓库即将开源,关注我们获取最新进展!
本地部署 · 隐私安全 · 极简体验