Auto Commit Chinese
一键使用 AI 根据暂存区改动生成简体中文的 Conventional Commits 提交信息,并自动填入 VS Code 源代码管理的提交输入框。
- 支持 OpenAI 兼容接口(官方 OpenAI / DeepSeek / Kimi / Qwen / Ollama / Grok 等)、Anthropic Claude、Google Gemini
- 可视化配置多个供应商预设,随时切换当前使用
- 配置时可自动获取供应商的可用模型列表并下拉选择,也支持手动输入
- 提交格式:
type(scope): subject + 可选 body;type / scope 用英文,subject / body 用简体中文,不使用 emoji
- 针对大体量改动做裁剪:逐文件 diff、超长截断、二进制占位、跳过锁文件
- 首次提交单独处理,避免把整个项目塞进提示词
- 超时时间可配置(默认 10 分钟),生成过程可随时取消
环境要求
- VS Code
1.85.0 或更高版本
- Git
- VS Code 内置 Git 扩展(默认已启用)
- 可访问所选 AI 服务的网络环境
安装
使用 VSIX 安装
在 VS Code 中打开「扩展」视图,点击右上角 ... → 从 VSIX 安装…,选择 auto-commit-chinese-0.2.0.vsix。
也可以使用命令行:
code --install-extension auto-commit-chinese-0.2.0.vsix
安装后重新加载窗口即可使用。
从源码运行
参见下方开发章节。
快速开始
- 打开命令面板(
Ctrl+Shift+P / Cmd+Shift+P),运行 Auto Commit Chinese: 管理供应商。
- 点击「+ 新增供应商」,填写供应商信息:
- 例如 DeepSeek:类型选择「OpenAI 兼容」,API 地址填
https://api.deepseek.com/v1,填入 API 密钥后点击「自动获取模型」,选择 deepseek-chat,也可以直接手动输入模型名称。
- 第一个预设会自动设为当前使用;之后可在列表中点击「设为当前使用」,或运行 Auto Commit Chinese: 选择供应商 快速切换。
- 在 Git 仓库中修改代码并暂存(
git add)。扩展只读取暂存区改动,不会自动执行 git add。
- 打开源代码管理视图(
Ctrl+Shift+G / Cmd+Shift+G),点击提交输入框旁或标题栏的 ⚡ 按钮,也可以运行 Auto Commit Chinese: 生成提交信息。
- 生成结果会自动填入提交输入框,确认无误后手动提交。扩展不会自动提交。
在输入框中先输入一些文字再点击生成,这些文字会作为额外上下文传给 AI,适合补充改动原因、关联 issue 等信息。上一次生成并填入的内容不会被重复当作上下文。
命令
| 命令 |
命令 ID |
入口 |
| Auto Commit Chinese: 生成提交信息 |
autocommit.generate |
源代码管理标题栏 / 提交输入框 ⚡ 按钮、命令面板 |
| Auto Commit Chinese: 管理供应商 |
autocommit.manageProviders |
命令面板 |
| Auto Commit Chinese: 选择供应商 |
autocommit.selectProvider |
命令面板 |
支持的供应商
| 类型 |
说明 |
Base URL |
模型示例 |
openai |
OpenAI 兼容接口 |
留空表示官方 OpenAI;也可填任意兼容端点 |
gpt-4o、deepseek-chat、moonshot-v1-8k、qwen-max |
anthropic |
Anthropic Claude |
留空表示官方 Anthropic |
claude-sonnet-4-5、claude-opus-4-5 |
gemini |
Google Gemini |
留空表示官方 Gemini |
gemini-2.0-flash、gemini-1.5-pro |
OpenAI 兼容端点的 Base URL 示例:
| 服务 |
Base URL |
| OpenAI |
留空(默认 https://api.openai.com/v1) |
| DeepSeek |
https://api.deepseek.com/v1 |
| Kimi / Moonshot |
https://api.moonshot.cn/v1 |
| 通义千问 |
https://dashscope.aliyuncs.com/compatible-mode/v1 |
| Ollama(本地) |
http://localhost:11434/v1 |
| Grok |
https://api.x.ai/v1 |
自动获取模型会调用各供应商的模型列表接口(OpenAI 兼容 GET /models、Claude GET /v1/models、Gemini GET /v1beta/models),超时约 20 秒。若供应商不支持该接口,直接手动填写模型名称即可。
配置项
扩展配置保存在用户全局 settings.json 中。
| 配置键 |
类型 |
默认值 |
说明 |
autocommit.providers |
array |
[] |
供应商预设列表,建议通过「管理供应商」面板编辑 |
autocommit.activeProviderId |
string |
"" |
当前使用的供应商预设 ID |
autocommit.timeout |
number |
600000 |
AI 请求超时时间(毫秒),最小 10000 |
每个供应商预设包含以下字段:
| 字段 |
类型 |
必填 |
说明 |
id |
string |
是 |
预设唯一标识,由管理面板自动生成 |
name |
string |
是 |
预设名称,如 DeepSeek |
type |
"openai" \| "anthropic" \| "gemini" |
是 |
供应商类型 |
baseUrl |
string |
否 |
API 基础地址,留空表示官方端点 |
apiKey |
string |
是 |
API 密钥 |
model |
string |
是 |
模型名称 |
temperature |
number |
否 |
生成温度,默认 0.3。Claude 通常为 0-1,OpenAI 兼容与 Gemini 一般为 0-2 |
⚠️ 安全提示:API 密钥以明文保存在用户全局 settings.json 中。请勿在共享设备或公开配置中使用长期密钥;建议为扩展单独创建权限受限的密钥。
生成逻辑
常规提交
发送给模型前会对暂存区改动做结构化处理,避免提示词过大:
- 仅读取暂存区(
git diff --cached),未暂存的改动不会发送;暂存区为空时直接提示先 git add。
- 逐文件收集 diff,同时单独列出文件状态与路径(
added / modified / deleted / renamed)。
- 单文件 diff 超过 4000 字符自动截断,并追加
... [truncated] 标记。
- 二进制文件替换为「二进制文件 xxx 已修改」占位文本。
- 跳过 63 种常见锁文件(如
package-lock.json、yarn.lock、pnpm-lock.yaml、Cargo.lock、poetry.lock、go.sum 等);如果暂存区只有锁文件,则仍会将其纳入,避免误报"没有改动"。
- 附带当前分支与最近 5 条提交,帮助模型把握提交风格。
- 输入框中的额外文字会作为「用户补充的上下文」一并发送。
首次提交
当仓库还没有任何提交时:
- 不发送全部文件改动,只读取仓库根目录的 README(优先暂存区版本,其次工作区文件,超过 8000 字符会截断)以及输入框中的额外文字。
- 使用首次提交专用提示词;若两者都没有有效信息,提示词要求模型只输出
chore: 初始化项目,避免编造内容。
输出处理
模型返回后会清理代码围栏、<think>...</think> 思考块和外围引号,再写入源代码管理输入框。生成失败时会针对密钥无效(401)、限流(429)、服务端错误(5xx)和超时给出中文提示。
示例输出
feat(docs): 添加对 Claude 和 OpenAI Responses API 的支持
- 在文档中新增 Claude 以及 OpenAI Responses API 相关配置说明
- 更新版本号,优化配置表格以适配新增的 API 参数
- 同步更新简体中文文档中的特性介绍与配置项说明
常见问题
生成时提示「暂存区没有改动」
扩展只读取已暂存的文件。请先执行 git add,或在源代码管理面板中暂存改动后再试。
提示 API 密钥无效或未授权(401)
检查「管理供应商」中的 API 密钥和 Base URL 是否匹配。例如 DeepSeek 的密钥不能用于 OpenAI 官方端点。
提示请求过于频繁(429)
供应商限流,稍后重试即可。
提示请求超时
网络波动较大时,可在设置中调大 autocommit.timeout(单位毫秒,默认 10 分钟)。OpenAI 兼容与 Claude 请求失败时还会自动重试 2 次。
首次提交生成的信息太笼统
首次提交不会读取文件内容,生成效果取决于根目录 README。建议完善 README,或在提交输入框中补充项目简介后再生成。
「自动获取模型」失败
- 先填写 API 密钥。
- 出现 404 时,检查 Base URL 是否正确,或该供应商是否提供模型列表接口。
- 无法自动获取时,直接手动输入模型名称即可。
如何查看日志?
打开「输出」面板,选择 Auto Commit Chinese 频道,可查看配置变更、请求供应商、diff 截断等信息。
开发
npm install
# 构建到 dist/extension.js
npm run compile
# 监听模式
npm run watch
# 打包 VSIX
npm run package
调试:在 VS Code 中打开本项目,按 F5 启动扩展开发宿主。构建配置见 esbuild.js,三个 AI SDK 会全部打包进 dist/extension.js,发布时无需携带 node_modules。
项目结构:
src/
├── extension.ts # 激活入口,注册命令
├── generate.ts # 生成流程、SCM 输入框写入、错误提示
├── git-utils.ts # 仓库定位、暂存区上下文收集
├── prompts.ts # 常规提交与首次提交提示词
├── providers.ts # OpenAI / Claude / Gemini 调用与模型列表获取
├── config.ts # 配置读写与校验
├── webview.ts # 供应商管理面板
└── logger.ts # 输出面板日志
致谢
灵感与参考:kilocode(生成效果与交互入口)、ai-commit(可复用的实现细节)。
许可证
MIT