AI Commit
一个基于 AI 的 Git 提交信息生成工具,支持 VS Code 和 JetBrains IDEs。根据暂存的 Git 变更,一键生成可编辑的规范提交信息。
功能特性
- 智能生成:基于 Git diff 和变更文件,AI 自动生成符合规范的 commit message
- 流式输出:实时显示生成过程,支持中断
- 可编辑结果:生成后可直接编辑,或追加指令重新生成
- 自定义规则:支持配置自定义提交规则和格式风格
- 风格推断:自动从历史提交中学习提交风格
- 安全存储:API Key 安全存储在 IDE 的安全存储中
- 双平台支持:同时提供 VS Code 扩展和 JetBrains 插件
快速开始
VS Code 扩展
- 安装扩展:在 VS Code 中搜索 "AI Commit" 并安装
- 设置 API Key:
Cmd/Ctrl+Shift+P 运行 AI Commit: 设置 API Key
- 输入你的 API Key(安全存储在 VS Code SecretStorage 中)
- 配置模型(可选):
- 打开设置,搜索
aiCommit
- 配置
aiCommit.provider.baseUrl:OpenAI 兼容接口的 Base URL
- 配置
aiCommit.provider.model:模型名称
- 生成 Commit Message:
- 先在源代码管理中暂存(Stage)变更
- 点击源代码管理标题栏的 AI Commit 按钮
- 或运行命令
AI Commit: 生成 Commit Message
JetBrains 插件
- 安装插件:在 JetBrains IDE 的插件市场搜索 "AI Commit" 并安装
- 设置 API Key:
Cmd/Ctrl+Shift+A 打开查找操作
- 运行
AI Commit: Set API Key
- 配置模型:打开设置,搜索
AI Commit
- 生成 Commit Message:
- 先暂存变更
- 在 Git 工具窗口点击 AI Commit 按钮
- 或右键变更文件选择
Generate Commit Message
使用流程
- 暂存变更:在源代码管理中暂存你的修改
- 触发生成:点击 AI Commit 按钮或运行生成命令
- 编辑结果:
- 在结果面板中直接编辑内容
- 可追加临时指令(如"更简洁一些")
- 应用提交:
- 点击 ✓ 应用到提交框
- 或按
Ctrl/Cmd+Enter
- 完成提交:在 Git 提交框中确认提交
如果没有暂存变更,会提示可选择使用工作区(未暂存)的变更来生成。
配置说明
通用配置
| 配置项 |
说明 |
默认值 |
aiCommit.prompt.customRules |
自定义提交规则 |
按中文 Conventional Commits 生成 |
aiCommit.commit.format |
提交格式 |
conventional(规范格式)或 freeform(自由格式) |
aiCommit.provider.temperature |
采样温度 |
控制生成随机性 |
aiCommit.provider.maxTokens |
最大输出 token 数 |
- |
aiCommit.provider.stream |
是否流式输出 |
true |
aiCommit.history.inferFormat |
从历史推断提交风格 |
true |
aiCommit.maxDiffBytes |
最大 diff 字节数 |
超出会被裁剪 |
Provider 配置
aiCommit.provider.baseUrl:OpenAI 兼容接口的 Base URL(默认 https://api.openai.com/v1)
aiCommit.provider.model:模型名称(如 gpt-4、claude-3-sonnet)
自定义规则示例
按以下规则生成 commit message:
1. 使用中文
2. 格式遵循 Conventional Commits:<type>(<scope>): <subject>
3. type 只支持:feat、fix、docs、style、refactor、test、chore
4. subject 简明扼要,不超过 50 字
命令列表
VS Code
| 命令 |
说明 |
AI Commit: 生成 Commit Message |
根据 Git 变更生成 commit message |
AI Commit: 设置 API Key |
设置 API Key(安全存储) |
AI Commit: 打开设置 |
打开插件设置 |
JetBrains
| 操作 |
说明 |
Generate Commit Message |
生成 commit message |
Set API Key |
设置 API Key |
Open Settings |
打开插件设置 |
项目结构
ai-commit/
├── .codex/ # OpenSpec 规范文档
├── docs/ # 手动验证文档
├── jetbrains/ # JetBrains 插件
│ └── src/main/kotlin/me/wdev/aicommit/
│ ├── actions/ # IDE 动作
│ ├── config/ # 配置管理
│ ├── core/ # 核心逻辑
│ │ ├── GenerationPipeline.kt # 生成管道
│ │ ├── GitReader.kt # Git 读取
│ │ ├── PromptBuilder.kt # Prompt 构建
│ │ ├── ProviderClient.kt # Provider 调用
│ │ ├── StyleInference.kt # 风格推断
│ │ └── TinyJson.kt # JSON 解析
│ └── flow/ # 流程控制
├── resources/ # 资源文件
├── src/ # VS Code 扩展
│ ├── core.ts # 核心逻辑
│ ├── coreGit.ts # Git 操作
│ ├── corePrompt.ts # Prompt 构建
│ ├── coreProvider.ts # Provider 调用
│ ├── coreStyle.ts # 风格推断
│ ├── extension.ts # 扩展入口
│ ├── resultPanel.ts # 结果面板
│ └── test/ # 测试文件
└── openspec/ # OpenSpec 变更规范
核心模块
Git 读取 (GitReader)
- 读取暂存或工作区的变更
- 解析 Git 状态,获取变更文件列表
- 生成 diff 摘要
- 支持按选定路径筛选变更
Provider 调用 (ProviderClient)
- 支持 OpenAI 兼容的 Chat Completions API
- 流式响应处理(SSE 解析)
- 支持推理型模型(reasoning_content)
- 错误处理和重试
风格推断 (StyleInference)
- 分析历史提交,推断:
- 提交语言(中文/英文)
- 提交格式(Conventional/Freeform)
- type 类型列表
- scope 风格
- body 使用方式
- 生成结构化的风格描述
Prompt 构建 (PromptBuilder)
- 根据配置构建 prompt
- 包含自定义规则、风格信息、Git 上下文
- 支持临时指令追加
构建与开发
VS Code 扩展
# 安装依赖
pnpm install
# 开发模式运行
F5 启动调试
# 打包
pnpm vsce package
JetBrains 插件
cd jetbrains
# 构建插件
./gradlew buildPlugin
# 运行 IDE 实例
./gradlew runIde
兼容性
- VS Code:1.80.0+
- JetBrains:2023.1+ (IntelliJ IDEA, WebStorm, PyCharm, etc.)
- Node.js:18+ (用于构建 VS Code 扩展)
- Kotlin:1.9+ (用于 JetBrains 插件)
依赖说明
VS Code 扩展依赖
JetBrains 插件依赖
- Kotlin 标准库
- IntelliJ Platform SDK
- HttpClient(用于 API 调用)
测试
项目包含完整的单元测试,涵盖:
- Git 读取与 diff 处理
- Prompt 构建逻辑
- Provider 响应解析
- 风格推断算法
运行测试:
# VS Code 扩展
pnpm test
# JetBrains 插件
cd jetbrains
./gradlew test
许可证
本项目采用 MIT 许可证,详见 LICENSE 文件。
贡献
欢迎提交 Issue 和 Pull Request!
致谢
| |