AI Git Helper:一键生成智能Commit

发布时间:2026/7/1 9:33:25
AI Git Helper:一键生成智能Commit AI Git Helper用 AI 自动生成 Commit Message 的桌面工具一个用 Python CustomTkinter 开发的桌面应用集成 OpenAI 兼容 API支持 GitHub/Gitee/SVNAI 分析代码变更自动生成 commit message。写在前面写代码的时候git commit -m fix stuff这种事大家都干过。但好的 commit message 其实很难写——要简洁、准确、带前缀feat/fix/refactor还要符合团队规范。于是我做了一个工具AI Git Helper。它的核心思路很简单把代码变更丢给 AI让它帮你写 commit message。再加上一些顺手的功能比如一键创建远程仓库、SVN 支持、命令行双模式。开源地址zb_com/ai-git-helper功能一览 AI 生成 Commit Message可视化选择文件 → 一键让 AI 分析 diff → 自动生成 commit message。支持自定义 AI 配置API Key、Base URL、模型、语言兼容 OpenAI 格式的任意大模型服务。️ AI 创建远程仓库AI 分析项目文件建议仓库名称 自动生成仓库描述一键创建 GitHub/Gitee 仓库并推送。 多平台支持Git完整的 git 操作提交、推送、历史查看SVNsubversion 支持GitHub仓库创建/管理/API 集成Gitee码云集成️ 图形界面基于 CustomTkinter 的暗色主题桌面应用无需记任何 git 命令。技术栈层面技术选型GUI 框架CustomTkinter暗色主题、现代控件Git 操作GitPythonSVN 操作subprocess 调用 svn 命令AI 集成OpenAI Python SDK兼容任意 OpenAI-format API配置管理PyYAML 环境变量打包PyInstaller → 独立 exe命令行Click Rich架构设计项目结构ai-git-helper/ ├── src/ │ ├── app.py # 入口 │ ├── ai_engine.py # AI 引擎commit message 生成 │ ├── cli.py # CLI 入口Click │ ├── config.py # 配置管理 │ ├── gui/ # GUI 模块 │ │ ├── main_window.py # 主窗口 侧边栏导航 │ │ ├── commit_page.py # 智能提交页 │ │ ├── history_page.py # 提交历史页 │ │ ├── repo_page.py # 仓库管理页 │ │ ├── settings_page.py# 设置页 │ │ └── theme.py # 主题配色 │ ├── platforms/ # 平台集成 │ │ ├── github.py # GitHub API 客户端 │ │ └── gitee.py # Gitee API 客户端 │ └── vcs/ # 版本控制系统 │ ├── git_handler.py # Git 操作封装 │ └── svn_handler.py # SVN 操作封装 ├── dist/ # PyInstaller 打包产物 ├── build.py # 打包脚本 └── pyproject.toml # 项目配置AI 引擎核心逻辑defgenerate_commit_message(diff_text:str,file_list:list[str],language:strzh)-str:根据 git diff 内容用 AI 生成 commit message。promptf你是一个专业的代码审查助手。根据以下代码变更生成一条简洁明了的 Git commit message。 要求 1. 第一行为简短摘要不超过 72 字符 2. 如有必要空一行后补充详细说明 3. 使用常见的 commit 前缀feat/fix/docs/refactor/chore/test 4. 请用中文回复 变更的文件列表{chr(10).join(file_list)}代码差异 (diff){diff_text[:8000]}responseclient.chat.completions.create(modelmodel,messages[{role:system,content:你是一个专业的 Git commit message 生成助手。},{role:user,content:prompt},],temperature0.3,max_tokens500,)关键点temperature0.3降低创造性保证输出稳定diff 截断到 8000 字符控制 token 成本同时覆盖大部分变更场景支持 think 标签清理处理某些模型输出think.../think包裹的内容多 AI Profile 支持# ~/.ai-git-helper/config.yamlai:active:defaultprofiles:default:api_key:sk-xxxbase_url:https://api.openai.com/v1model:gpt-4olanguage:zhdeepseek:api_key:sk-xxxbase_url:https://api.deepseek.com/v1model:deepseek-chatlanguage:zhminimax:api_key:sk-xxxbase_url:https://api.minimaxi.com/v1model:MiniMax-M2.7language:zh任意兼容 OpenAI API 格式的服务都能用——OpenAI、DeepSeek、MiniMax、本地部署的 vLLM/Ollama 都行。使用方式方式一直接运行 exe推荐双击dist/AI-Git-Helper.exe即可启动无需安装 Python。方式二从源码运行pipinstall-e.python run.py方式三命令行# 初始化仓库agh init /path/to/project# AI 智能提交agh commit /path/to/project# 创建远程仓库agh create--platformgitee /path/to/project# 查看仓库状态agh status /path/to/project打包为 exepipinstallpyinstaller python build.py生成的AI-Git-Helper.exe在dist/目录下可以复制到任意 Windows 机器运行无需安装 Python。踩坑记录1. PyInstaller --windowed 模式下 stdout 为 None打包成 exe 后sys.stdout可能是None导致编码错误。修复方式ifsys.stdoutisNone:sys.stdoutio.TextIOWrapper(open(os.devnull,wb),encodingutf-8)ifsys.stderrisNone:sys.stderrio.TextIOWrapper(open(os.devnull,wb),encodingutf-8)2. Windows 控制台中文乱码os.environ.setdefault(PYTHONIOENCODING,utf-8)3. AI 返回 None 的处理某些模型在 diff 为空时会返回content: None需要加防御性检查ifraw_contentisNone:logger.error([AI] API 返回 content 为 None!)return4. CustomTkinter 暗色主题CustomTkinter 的暗色主题比 tkinter 原生好看太多但要注意fg_color和text_color的对比度避免文字看不清。后续计划支持更多 VCSMercurialCommit message 模板自定义多语言 commit message 切换macOS/Linux 原生打包插件系统自定义 AI prompt 模板结语这个工具的初衷很简单让写 commit message 这件事不再痛苦。如果你也经常对着git commit -m fix感到愧疚试试 AI Git Helper。配置好 API Key选几个文件点一下按钮——好的 commit message 就出来了。项目完全开源欢迎 Star、Fork、提 Issue。开源地址https://gitee.com/zb_com/ai-git-helper许可证MIT