Git 提交AI神器:用大模型帮你写出规范的 Commit Message

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 测试)

🧠 核心原理

  1. 用户在前端粘贴 git diff 输出内容。
  2. 前端通过 Axios 将 diff 文本发送到后端 /chat 接口。
  3. 后端调用本地 Ollama 服务(http://localhost:11434),使用 LangChain 构建提示词链。
  4. 大模型根据预设的系统角色(如"你是一个专业的 Git 提交信息生成助手")生成规范的 commit message。
  5. 结果返回前端,用户一键复制即可使用。

🚀 快速启动指南

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 仓库即将开源,关注我们获取最新进展!

本地部署 · 隐私安全 · 极简体验

相关推荐
爱上好庆祝4 分钟前
学习js的第五天
前端·css·学习·html·css3·js
C澒16 分钟前
IntelliPro 产研协作平台:基于 AI Agent 的低代码智能化配置方案设计与实现
前端·低代码·ai编程
一袋米扛几楼9826 分钟前
【Git】规范化协作:详解 GitHub 工作流中的 Issue、Branch 与 Pull Request 最佳实践
前端·git·github·issue
网络点点滴39 分钟前
前端与后端的区别与联系
前端
yqcoder41 分钟前
JavaScript 柯里化:把“大餐”拆成“小炒”的艺术
开发语言·javascript·ecmascript
每天吃饭的羊1 小时前
JSZip的使用
开发语言·javascript
EnCi Zheng1 小时前
M5-markconv自定义CSS样式指南 [特殊字符]
前端·css·python
kyriewen1 小时前
你的网页慢,用户不说直接走——前端性能监控教你“读心术”
前端·性能优化·监控
广州华水科技1 小时前
北斗GNSS变形监测在大坝安全监测中的应用与优势分析
前端
前端老石人1 小时前
前端开发中的 URL 完全指南
开发语言·前端·javascript·css·html