提交消息生成
Dish AI Commit Gen 的核心功能是利用人工智能 (AI) 技术,根据您的代码变更自动生成符合行业规范的提交消息。这不仅能显著提高开发效率,还能确保团队内部提交消息的一致性和专业性。
功能介绍
提交消息生成功能通过分析您暂存的代码更改 (diff),智能识别变更的类型(如新功能、bug 修复、代码重构等)、影响范围(作用域)以及具体的修改内容。随后,结合您的配置(如语言偏好、表情符号设置等),AI 会构建出一条结构清晰、信息明确的提交消息。
此功能与 Dish AI Commit Gen 支持的多种 AI 提供商无缝集成,包括 OpenAI、Ollama (本地模型)、VSCode 内置 AI (GitHub Copilot)、智谱 AI、Gemini AI 等。您可以根据项目的具体需求、预算及数据隐私考量,灵活选择最合适的 AI 服务。
基本使用
生成提交消息非常简单,主要有两种方式:
通过源代码管理器 (SCM):
- 在 VS Code 的源代码管理器中,完成文件暂存 (git add)。
- 您可以通过以下任一方式触发提交消息生成:
- 点击 SCM 视图顶部操作栏中的 "[Dish] Generate Commit with AI" 图标 (通常显示为
/images/icon.svg
)。 - 在暂存的文件或文件组上右键单击,从上下文菜单中选择 "[Dish] Generate Commit with AI"。
- 点击 SCM 视图顶部操作栏中的 "[Dish] Generate Commit with AI" 图标 (通常显示为
- AI 将分析暂存的更改,并在几秒钟内将生成的提交消息自动填充到提交信息框中。
通过命令面板:
- 按下
Ctrl+Shift+P
(Windows/Linux) 或Cmd+Shift+P
(macOS) 打开命令面板。 - 输入 "[Dish] Generate Commit with AI" 并选择该命令。
- AI 将执行相同的分析和生成过程。
- 按下
AI 如何工作
当您触发提交消息生成时,扩展会执行以下步骤:
- 获取变更: 收集所有已暂存文件的代码差异信息。
- 代码分析: AI 模型会深入分析这些差异,试图理解:
- 修改的性质:是添加新功能、修复错误、改进性能,还是文档更新等。
- 变更的范围:影响了哪些模块或组件。
- 关键的修改点:具体修改了哪些函数、类或逻辑。
- 更详细的分析机制可以参考 代码分析 文档。
- 应用配置: 结合用户在 VS Code 设置中定义的偏好,这些配置直接影响 AI 的行为和生成结果,例如:
- 选择的 AI 提供商和模型 (通过
dish-ai-commit.base.provider
和dish-ai-commit.base.model
配置)。 - 提交消息语言 (通过
dish-ai-commit.base.language
配置,详情参考:多语言支持)。 - 是否启用表情符号 (通过
dish-ai-commit.features.commitFormat.enableEmoji
配置,详情参考:表情符号)。 - 自定义的系统提示词 (通过
dish-ai-commit.features.commitMessage.systemPrompt
配置)。 - 代码分析相关的设置,如是否简化差异内容 (通过
dish-ai-commit.features.codeAnalysis.simplifyDiff
配置)。 - 提交消息结构相关的设置,如是否启用合并提交 (通过
dish-ai-commit.features.commitFormat.enableMergeCommit
配置)、是否包含消息体 (通过dish-ai-commit.features.commitFormat.enableBody
配置)、以及是否启用分层提交 (通过dish-ai-commit.features.commitFormat.enableLayeredCommit
配置)。
- 选择的 AI 提供商和模型 (通过
- 构建消息: 根据分析结果和配置,生成一条符合 Conventional Commits 规范的提交消息。
提交消息格式
生成的提交消息严格遵循 Conventional Commits 规范,其基本结构如下:
<类型>[可选作用域]: <描述>
[可选正文]
[可选脚注]
支持的提交类型包括:
feat
: 新功能fix
: 修复 bugdocs
: 文档更改style
: 代码样式调整 (不影响代码含义的更改,如空格、格式化、缺少分号等)refactor
: 代码重构 (既不是修复 bug 也不是添加新功能的代码更改)perf
: 性能改进test
: 添加缺失的测试或更正现有测试build
: 影响构建系统或外部依赖项的更改 (例如:gulp, broccoli, npm)ci
: 对 CI 配置文件和脚本的更改 (例如:Travis, Circle, BrowserStack, SauceLabs)chore
: 其他不修改src
或测试文件的更改revert
: 恢复先前的提交
默认情况下,会在提交类型前添加相应的表情符号,以增强可读性。
支持的 AI 提供商
您可以灵活选择多种 AI 服务来驱动提交消息的生成。详细的提供商列表和配置方法,请参阅 AI 提供商配置指南。
多语言支持
Dish AI Commit Gen 支持生成多种语言的提交消息,满足全球化团队的需求。具体支持的语言列表和设置方法,请查阅 多语言支持 文档。
高级功能与配置
合并提交与分层提交
对于涉及多个文件的单次提交,您可以配置扩展以更智能地处理:
- 合并提交 (
enableMergeCommit
): 当启用时,AI 会尝试理解多个文件变更之间的关联,并生成一个统一的、概括性的提交消息。 - 分层提交 (
enableLayeredCommit
): 在合并提交的基础上,此选项会额外为每个被修改的文件生成单独的、更详细的变更描述,作为主提交消息的补充。
更多信息请参考 合并提交 指南。
自定义系统提示
通过修改 dish-ai-commit.features.commitMessage.systemPrompt
配置项,您可以为 AI 提供更具体的指令,以调整生成提交消息的风格、侧重点或包含特定信息。
例如,您可以要求 AI:
- 始终包含某个特定的项目标识符。
- 对特定类型的文件变更采用不同的描述方式。
- 强调变更对用户体验的影响。
提交消息体
您可以控制是否允许 AI 生成提交消息的正文部分:
{
"dish-ai-commit.features.commitFormat.enableBody": true // 设置为 false 则只生成摘要行
}
自动作用域检测
扩展会尝试从修改的文件路径和内容中自动推断提交的作用域。例如,对 src/components/auth/LoginForm.js
文件的修改可能会被自动识别为 auth
或 LoginForm
作用域。
最佳实践
- 原子提交: 尽量确保每次提交都集中于一个独立的任务或功能点。这有助于 AI 更准确地理解变更意图。
- 清晰的暂存区: 在生成提交消息前,确保暂存区只包含相关的更改。
- 选择合适的 AI 模型: 不同的 AI 模型在理解复杂代码变更和遵循指令方面能力各异。如果默认模型的生成质量不理想,可以尝试切换到更高级的模型(如 GPT-4)或针对特定语言优化的模型。
- 利用自定义提示: 如果团队有特定的提交消息要求,善用系统提示词进行引导。
- 检查与微调: AI 生成的消息是一个很好的起点,但在提交前快速阅读并进行必要的微调,可以确保最终消息的准确性和专业性。
- 迭代优化配置: 根据团队反馈和使用体验,持续调整扩展的配置项,以达到最佳的生成效果。
通过遵循这些实践,您可以最大限度地发挥 Dish AI Commit Gen 的潜力,使提交消息生成过程更加高效和智能。