# Git Commit Genie
English version: [English README](../gitCommitGenie/README.md)
## 概述
Git Commit Genie 基于已暂存的 Git diff,使用主流大模型(OpenAI / DeepSeek / Anthropic / Gemini)自动生成高质量的 Conventional Commits 风格提交信息。内置仓库智能分析功能,自动理解项目结构和技术栈,为提交信息生成提供更好的上下文。支持可选"链式提示"模式(多步推理)与"用户模板"策略,显著提升结构一致性与团队风格统一。
优势:
- 避免在提交语句格式/措辞上反复纠结。
- 严格符合 Conventional Commits(类型、scope、BREAKING CHANGE)。
- 通过一个简单的模板文件定义 Body / Footers / 语气 / 词汇偏好。
- 支持多模型动态切换,快速选择最适合的提供商与模型。
## Usage
## 格式
默认生成的提交信息遵循 Conventional Commits 1.0.0 规范,详情见:https://www.conventionalcommits.org/zh-hans/v1.0.0/
基本格式:
```
[optional scope]:
[optional body]
[optional footer(s)]
```
## Tips
- 少量 / 轻量级提交:优先选择轻巧快速的模型,生成更快、Token 消耗更低。
- 大型 / 多文件提交:再考虑切换更强的模型,以获得更好的理解与结构质量。
- 可随时通过命令面板运行 "Git Commit Genie: Manage Models" 切换模型。
## 核心特性
| 特性 | 说明 |
| ------------------------ | ---------------------------------------------------------------------------------------------------- |
| 多模型提供商 | 支持 OpenAI、DeepSeek、Anthropic、Gemini等。 |
| 仓库智能分析 | 自动分析项目结构、技术栈和架构,为提交信息生成提供上下文;支持手动刷新、实时更新和手动修改分析报告。 |
| 链式提示模式 | 多步:文件级摘要 → 结构化综合 → 校验修复,显著提升准确度与模板贴合度。 |
| 用户模板策略 | 内置模板选择和创建功能,支持工作区和用户数据目录,抽取策略影响段落顺序、必填 footers、词汇偏好等。 |
| Conventional Commit 校验 | 头行格式(type(scope)!: desc),长度 ≤ 72,无句号。 |
| Diff 感知 | 仅读取"已暂存"更改;自动推断类型(feat / fix / docs / refactor 等)。 |
| Token 与速率保护 | 429 自动退避重试;Gemini 软限本地节流;并发可配置。 |
| 状态栏集成 | 显示当前模型和分析状态,点击可访问功能菜单。 |
| 生成取消 | SCM 标题栏按钮可实时取消正在进行的生成。 |
| 安全存储 | API Key 使用 VS Code SecretStorage,不写入明文设置。 |
| 国际化支持 | 内置英文、简体中文、繁体中文等多语言支持。 |
## 工作流程
1. 暂存(Stage)你的变更。
2. 执行命令:`Git Commit Genie: AI Generate`(SCM 顶部按钮或命令面板)。
3. 若开启链式模式:
- 并行生成文件级摘要
- 综合分析类型与 scope
- 应用模板策略(若有效)
- 结构 + 风格自检与最小修复
4. 输出写入仓库提交框,可人工微调后提交。
未开启链式:使用单轮提示 → 更低延迟,但结构与风格细腻度稍弱。
## 安装
1. VS Code 市场搜索 “Git Commit Genie” 安装,或使用打包 `.vsix` 手动安装。
2. 命令面板运行 `Git Commit Genie: Manage Models` 选择 Provider、输入/替换 API Key、选择模型。
3. (可选)使用命令 `Git Commit Genie: Select/Create Template` 选择或创建模板文件。
## 运行要求
| 项 | 说明 |
| -------- | --------------------------- |
| VS Code | 版本需满足引擎 `^1.103.0`。 |
| Git 扩展 | 内置 `vscode.git`,需启用。 |
| 网络访问 | 调用所选 LLM 提供商。 |
| API Key | 使用的每个提供商都需要。 |
## 配置项
所有设置位于:`Git Commit Genie`。
| Setting | 类型 | 默认 | 说明 |
| --------------------------------------------------- | ------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `gitCommitGenie.autoStageAllForDiff` | boolean | false | 仅当暂存区为空时:临时将所有更改加入暂存用于生成 diff,生成后会自动还原暂存状态。谨慎使用,可能会把无关更改包含进提示。 |
| `gitCommitGenie.chain.enabled` | boolean | false | 启用链式多步提示生成提交信息(使得生成的提交信息更加详准确,且可以更加贴合用户模版,但将增加延迟与 Token 消耗) |
| `gitCommitGenie.chain.maxParallel` | number | 2 | 链式提示并行 LLM 调用最大数量。谨慎增大以避免触发速率限制。 |
| `gitCommitGenie.llm.maxRetries` | number | 2 | API请求失败最大重试次数。 |
| `gitCommitGenie.llm.temperature` | number | 0.2 | Temperature(0–2),默认为 0.2。 |
| `gitCommitGenie.repositoryAnalysis.enabled` | boolean | true | 启用仓库分析以提供更好的提交信息生成上下文。 |
| `gitCommitGenie.repositoryAnalysis.excludePatterns` | array | [] | 仓库分析扫描时要排除的文件模式(gitignore风格)。 |
| `gitCommitGenie.repositoryAnalysis.updateThreshold` | number | 10 | 更新仓库分析的提交次数阈值。 |
| `gitCommitGenie.repositoryAnalysis.model` | enum | general | 用于仓库分析的模型。可选择所有供应商支持的模型,系统将自动切换到该模型所属的服务商;或选择“使用与commit message生成相同的模型”以复用主模型。 |
| `gitCommitGenie.commitLanguage` | string | `auto` | 生成的提交信息目标语言。选项:`auto`、`en`、`zh-CN`、`zh-TW`、`ja`、`ko`、`de`、`fr`、`es`、`pt`、`ru`、`it`。 |
| `gitCommitGenie.typingAnimationSpeed` | number | 15 | 提交信息框打字动画速度,单位为每字符毫秒。设置 -1 关闭动画。 | |
| `gitCommitGenie.showUsageCost` | boolean | true | 启用后在生成文本时弹出通知,显示本次生成的估计总费用。 |
## 命令列表
| Command ID | 标题 | 作用 |
| -------------------------------------------- | --------------------------- | -------------------------------------------- |
| `git-commit-genie.generateCommitMessage` | AI Generate | 基于已暂存更改生成提交信息。 |
| `git-commit-genie.cancelGeneration` | Stop | 取消当前生成。 |
| `git-commit-genie.manageModels` | Manage Models | 选择提供商 / 输入或更换 API Key / 选择模型。 |
| `git-commit-genie.toggleChainMode` | Toggle Chain Prompting | 快速开启/关闭链式模式。 |
| `git-commit-genie.selectTemplate` | Select/Create Template | 选择或新建提交信息模板文件。 |
| `git-commit-genie.viewRepositoryAnalysis` | View Repository Analysis | 快速打开仓库分析报告。 |
| `git-commit-genie.refreshRepositoryAnalysis` | Refresh Repository Analysis | 手动刷新仓库分析。 |
| `git-commit-genie.cancelRepositoryAnalysis` | Stop Repository Analysis | 停止正在进行的仓库分析。 |
| `git-commit-genie.genieMenu` | Menu | 打开Git Commit Genie功能菜单。 |
| `git-commit-genie.showRepositoryCost` | Show Repository Cost | 显示当前工作区累计消耗估算。 |
| `git-commit-genie.resetRepositoryCost` | Reset Repository Cost | 重置当前工作区累计消耗估算。 |
SCM 标题栏:根据状态显示“Generate commit message”或“Stop generate”按钮。
## 模板编写
使用命令 `Git Commit Genie: Select/Create Template` 选择或创建模板文件。
模版文件存在且非空时,系统尝试抽取“模板策略”。支持:
1. 自然语言偏好描述。
2. markdown模版编写。
完整指南: [English](./user-template-guide.md) | [中文](./user-template-guide.zh-CN.md)
最小示例:
```
Minimal Template
- Always include a body with Summary and Changes.
- Use imperative, no trailing period.
- Always include a `Refs` footer (use `Refs: N/A` when missing).
- Prefer: add, fix, refactor; Avoid: update.
```
## 链式模式 vs 单轮模式
| 模式 | 优点 | 缺点 | 适用场景 |
| ---- | -------------------------------- | -------------------- | ----------------------- |
| 链式 | 结构最佳,模板贴合度高,分类更准 | 延迟更高,Token 更多 | 多文件 / 需严格风格统一 |
| 单轮 | 快速,成本低 | 结构细腻度较低 | 小变更 / 临时修复 |
通过命令或设置切换。
## 安全与隐私
- API Key 使用 SecretStorage,不以明文写入 settings.json, 不会以任何形式上传到互联网,仅保存在本地。
- 仅发送“已暂存 diff”中的文件名与修改上下文;不包括未暂存或未跟踪文件。
- 无遥测 / 分析数据收集。
## 常见问题(Troubleshooting)
| 现象 | 原因 | 解决 |
| ------------------------- | ------------------- | --------------------------------------- |
| "No staged changes found" | 未暂存任何文件 | 使用 Source Control 或 `git add` 暂存。 |
| 生成内容空泛 | 模板不明确 | 尝试编写结构化的模版 |
| 频繁 429 | 并行过高 / 模板过大 | 降低 `chain.maxParallel`。 |
| 状态栏无“· Thinking” | 未启用链式 | 使用命令或设置开启。 |
| 重复要求输入 API Key | 秘钥被清除 | 重新运行 Manage Models。 |
## 许可证
MIT
## 致谢
- [Conventional Commits](https://conventionalcommits.org/) - https://github.com/conventional-commits/conventionalcommits.org
- OpenAI / DeepSeek / Anthropic / Gemini 模型生态
---
让提交信息不再痛苦。