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

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

相关推荐
ywf12151 小时前
前端的dist包放到后端springboot项目下一起打包
前端·spring boot·后端
恋猫de小郭1 小时前
2026,Android Compose 终于支持 Hot Reload 了,但是收费
android·前端·flutter
hpoenixf7 小时前
2026 年前端面试问什么
前端·面试
还是大剑师兰特7 小时前
Vue3 中的 defineExpose 完全指南
前端·javascript·vue.js
泯泷7 小时前
阶段一:从 0 看懂 JSVMP 架构,先在脑子里搭出一台最小 JSVM
前端·javascript·架构
mengchanmian8 小时前
前端node常用配置
前端
华洛8 小时前
利好打工人,openclaw不是企业提效工具,而是个人助理
前端·javascript·产品经理
xkxnq9 小时前
第六阶段:Vue生态高级整合与优化(第93天)Element Plus进阶:自定义主题(变量覆盖)+ 全局配置与组件按需加载优化
前端·javascript·vue.js
A黄俊辉A9 小时前
vue css中 :global的使用
前端·javascript·vue.js
小码哥_常10 小时前
被EdgeToEdge适配折磨疯了,谁懂!
前端