VSCode 自动生成 commit message 的核心前提是安装接入真实AI模型的扩展(如GitHub Copilot),仅靠模板或正则的插件效果差;Copilot需登录并订阅,聚焦提交框按Ctrl/Cmd+Enter生成建议,基于暂存区diff;若用本地LLM,可配git-commit-msg与Ollama;还需适配commitlint等钩子规范,否则易被拦截。

VSCode 里直接生成 commit message 的核心前提
VSCode 本身不带 AI 提交信息生成功能,必须依赖扩展(extension),且该扩展得接入真实 AI 模型(如 GitHub Copilot、Tabnine、CodeWhisperer 或本地 LLM)。没有模型支撑的“AI commit”插件,只是用正则或模板拼接,效果极差,别被名字误导。
GitHub Copilot 是目前最顺手的方案(但要注意权限)
Copilot 在 VSCode 中启用后,打开 Source Control 视图(Ctrl+Shift+G),聚焦到提交输入框时,按 Ctrl+Enter(Windows/Linux)或 Cmd+Enter(macOS),它会自动在输入框顶部生成 1–3 条建议 message。这些内容基于当前暂存区(git diff --cached)推断。
- 必须已登录 GitHub 账号并开启 Copilot 订阅,免费试用期结束后需付费
- 默认只读取暂存文件(staged files),未
git add的改动不会参与分析 - 如果提示 “No suggestions”,先检查是否已暂存变更,再确认 Copilot 状态栏图标是绿色而非灰色
- 生成内容可能包含敏感路径或内部术语(比如你本地分支名
feat/user-auth-jwt-fix被直接写进 message),建议扫一眼再提交
不用 Copilot?试试 git-commit-msg + 本地 LLM
如果你不想把代码发到云端,可搭配命令行工具 git-commit-msg 和本地运行的 Ollama 模型(如 llama3 或 phi3)。VSCode 需配合设置自定义 task:
{
"version": "2.0.0",
"tasks": [
{
"label": "ai-commit",
"type": "shell",
"command": "git-commit-msg -m",
"group": "build",
"presentation": { "echo": true, "reveal": "always", "focus": false }
}
]
}
- 执行前确保已运行
ollama run llama3(后台服务需常驻) -
git-commit-msg默认调用http://localhost:11434,端口要和 Ollama 一致 - 首次使用需手动
git add . && git-commit-msg -m测试输出,避免空 diff 导致模型胡说 - VSCode 内无法直接绑定快捷键触发该 task,需通过
Ctrl+Shift+P→ “Tasks: Run Task” → 选ai-commit
别忽略 Git Hook 和 message 格式约束
即使 AI 生成了看起来很专业的 message,如果项目启用了 commitlint 或 Husky,大概率被拦截。比如它生成 fix login page crash,但规范要求前缀必须是 fix:(带冒号)且首字母小写。
- 常见校验失败错误:
subject may not be empty [subject-empty]、type must be one of [feat, fix, docs, style, refactor, test, chore] [type-enum] - 临时绕过:加
--no-verify(不推荐),长期解法是让 AI 明确遵循 Conventional Commits,可在 Copilot 的 prompt 中追加:“Use Conventional Commits format, prefix with feat:, fix:, etc., and keep subject under 72 chars.” - VSCode 设置中可开启
"git.enableSmartCommit": true,它会在提交前自动git add -u,避免漏掉修改文件导致 diff 不全、AI 判错
真正卡住人的往往不是“能不能生成”,而是生成的内容撞上了团队的格式铁律、hook 脚本、CI 检查项——这些地方没对齐,AI 再准也没用。


















