人人都会AI编程

3.6.3 代码提交说明自动生成

更新时间:2026-06-30

手写提交信息是团队中最容易敷衍的环节,常见的 "fix bug"、"update"、"111" 等描述对后期排障和生成 CHANGELOG 毫无价值。自动生成提交说明的核心目的不是偷懒,而是统一格式、保证语义化、减少拼写错误。

1. 推荐方案对比

| 方案 | 适用场景 | 特点 |
|---|---|---|
| Commitizen + 规范模板 | 团队项目、需要生成 CHANGELOG | 交互式问答,格式最标准 |
| AI 工具(aicommits/opencommit) | 个人开发、快速迭代 | 读取 diff 自动生成,需人工确认 |
| IDE 插件 | 混合场景 | 在 VS Code/JetBrains 内弹出模板框 |

2. Commitizen 方案(团队首选)

以 Node.js 项目为例,配置一次即可:

# 安装
npm install -D commitizen cz-conventional-changelog

# package.json 添加
{
  "scripts": {
    "commit": "cz"
  },
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-conventional-changelog"
    }
  }
}

使用时不再用 git commit,而是:

git add .
npm run commit
# 按提示选择 type(feat/fix/docs等)、填写 scope 和描述

生成的提交信息示例:

feat(order): 新增订单超时自动取消逻辑

- 使用 Redis 延迟队列实现
- 超时时间默认 30 分钟,支持配置化
- 补充单元测试

Closes #45

配套约束:在 CI 中加入 commitlint 校验,不符合规范的提交直接阻断。

3. AI 辅助方案(个人/老项目)

如果项目历史包袱重,不想改工作流,可以用 AI 工具:

# 安装 aicommits(需配置 OpenAI 密钥)
npm install -g aicommits
aicommits config set OPENAI_KEY=sk-xxxx

# 使用
git add .
aic

工具会读取暂存区的 diff,生成类似 refactor(utils): 提取日期格式化函数减少重复代码 的说明,回车确认即提交。

4. 落地建议

  • 新项目:强制走 Commitizen,配合 husky 在本地拦截不规范提交。
  • 老项目:先用 AI 工具或 IDE 插件(如 VS Code 的 Conventional Commits 插件)做半自动过渡,不要一刀切改流程。
  • 敏感提交:涉及密码、密钥、配置回滚的修改,必须手写说明,禁用自动生成,防止 diff 中的敏感信息被 AI 二次暴露。
  • 单次提交量:AI 生成适合 diff 在 200 行以内的场景,改动太大时生成结果会含糊,应拆分成多次提交。

5. 注意事项

自动生成后务必看一眼提交信息。AI 偶尔会过度推测意图,把 临时调试日志删除 写成 优化系统性能。提交说明最终是给人读的,机器只负责把格式写对。