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

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

相关推荐
陈随易2 小时前
Bun v1.3.6发布,内置tar解压缩,各方面提速又提速
前端·后端
双向332 小时前
【AIGC爆款内容生成全攻略:如何用AI颠覆内容创作效率?】
前端
摘星编程2 小时前
Flutter for OpenHarmony 实战:SliverList 滑动列表详解
android·javascript·flutter
陈_杨2 小时前
前端成功转鸿蒙开发者真实案例,教大家如何开发鸿蒙APP-- 卡片编辑功能
前端·harmonyos
凡大来啦2 小时前
Element plus的Select选择器点击不出现下拉列表
javascript·vue.js·elementui
Swift社区2 小时前
Flutter 的异步问题,为什么和前端 Promise 问题高度相似?
前端·flutter
程序员Agions2 小时前
AI 编程的"效率幻觉":为什么用了 Cursor 之后,你反而更累了?
前端·ai编程
lili-felicity2 小时前
React Native for Harmony 分类筛选页面多级菜单开发
react native·react.js·harmonyos
Android技术之家2 小时前
在手机上跑大模型?Google AI Edge Gallery 开源项目深度解析
前端·人工智能·edge·开源