AI Commit (shuyu - AI Commit)
一款专为 VS Code 设计的轻量级 Git 提交备注生成插件。基于大语言模型自动分析本地代码改动,智能生成规范的中文 Conventional Commits 提交备注,并自动填充至源代码管理输入框(仅填充文本,绝不自动提交)。
开源仓库:https://gitee.com/wangshuyu/ai-commit
💡 工作流程与核心机制(Code Workflow)
根据代码实现(src/extension.ts):
- 依赖检测:读取 VS Code 内置
vscode.git 扩展与当前打开的工作区仓库。
- 两级 Diff 提取机制:
- 优先工作区未暂存修改:执行
repo.diff(false),免去频繁手动点击 + 暂存的操作;
- 暂存区降级兜底:若未暂存内容为空,自动检测暂存区修改
repo.diff(true);
- 截断与保护:截取前 6000 字符的 Diff 内容发送,防止上下文超长。
- Prompt 规范要求:
- 必须使用中文(简体中文);
- 严格遵循 Conventional Commits 规范(如
feat: ..., fix: ..., refactor: ... 等);
- 仅输出提交信息纯文本,严禁包含任何前言、解释、Markdown 代码块或多余废话。
- 模型请求与状态交互:
- 点击时设置上下文
gitAiCommit.isGenerating = true,按钮变为转圈等待状态($(loading~spin)),防止重复点击;
- 发送标准 OpenAI 兼容的
/chat/completions 请求(temperature: 0.1 保证结果稳定规范);
- 针对 OpenRouter(若包含
openrouter.ai)自动附带 HTTP-Referer 与 X-OpenRouter-Title 请求头;
- 完成后写入输入框
repo.inputBox.value = message,并在 finally 块中复位状态。
⚙️ 配置项说明(Configuration)
在 VS Code 设置中搜索 gitAiCommit(或 AI Commit)即可查看或修改以下选项:
| 配置项 |
类型 |
默认值 |
说明 |
gitAiCommit.apiUrl |
string |
https://api.openai.com/v1/chat/completions |
兼容 OpenAI 协议的 API 全路径地址 |
gitAiCommit.apiKey |
string |
"" |
API 密钥(本地 localhost / 127.0.0.1 请求可留空) |
gitAiCommit.model |
string |
"" |
调用的模型名称(例如 gpt-4o-mini、deepseek-chat、Qwen/Qwen2.5-Coder-7B-Instruct 等) |
gitAiCommit.prompt |
string |
预设的中文 Conventional Commits 模板 |
自定义生成提示词模板。支持 {diff} 占位符(若不写则自动追加在末尾) |
注意:如果 apiUrl 不是本地地址(不含 localhost 或 127.0.0.1),插件会校验 apiKey 不能为空。插件同时向前兼容旧版 aiCommit.* 配置。
常见服务商配置示例
1. OpenAI 官方
{
"gitAiCommit.apiUrl": "https://api.openai.com/v1/chat/completions",
"gitAiCommit.apiKey": "sk-xxxxxxxx",
"gitAiCommit.model": "gpt-4o-mini"
}
📦 安装与使用
安装方式
方式 A:使用 VSIX 安装包
- 在项目根目录打包或获取
shuyu-ai-commit-1.0.6.vsix;
- VS Code 中按
Ctrl + Shift + P -> 输入并执行 Extensions: Install from VSIX...;
- 选择该
.vsix 文件完成安装。
方式 B:本地开发调试
npm install # 安装依赖
npm run compile # 编译打包代码
按 F5 键启动“扩展开发主机”,在弹出的新窗口中测试。
使用步骤
- 在项目工作区编写或修改代码;
- 打开左侧“源代码管理 (Source Control)”面板;
- 点击上方操作栏的 ✨(AI 生成提交备注) 按钮;
- 插件将自动生成规范的 Commit Message 并填入提交文本框;
- 人工核对满意后,正常执行 Commit 即可。
️ 项目脚本命令
npm run compile:使用 Webpack 单次构建打包扩展到 dist/extension.js;
npm run watch:开启 Webpack 增量监听构建;
npm run package:执行生产模式打包压缩并生成隐藏 source-map;
npx @vscode/vsce package:打包输出 .vsix 离线安装包。
| |