在多年的编程开发历程中,我深刻体会到编写高质量 Git/SVN 提交信息的重要性,却也一直饱受其困扰。尽管积累了一定的开发经验,但在面对频繁的代码提交时,构思清晰、准确且符合规范的提交信息仍常常耗费我大量的时间和精力。以往的提交信息有时缺乏足够的细节,有时未能遵循统一的规范,这不仅给项目代码的追溯和理解带来困难,在团队协作中也造成了不必要的沟通成本。看着杂乱无章的提交历史,我深知这是影响开发效率和项目可维护性的一个关键痛点,亟待解决。
动机:为何打造这款插件
凭借多年的开发实践,我愈发认识到优化开发流程中每个环节的必要性。提交信息作为代码管理和团队协作的重要组成部分,其质量的提升迫在眉睫。
而在我司的开发环境中,我们使用的是 SVN,但市面上却没有支持 SVN diff 生成 commit 的插件,这使得每次写完需求后进行提交时都极为痛苦,需要花费大量时间去手动整理提交信息,且难以保证其规范性与准确性。
于是,我决心开发一个 VSCode 插件,借助 AI 的强大力量,为广大开发者提供一种便捷、高效的方式来生成标准化的提交信息,从而提升整个开发过程的效率与质量。
在规划这款插件时,我为其设定了一系列明确的目标:
- 智能精准生成:利用先进的 AI 算法,深度分析代码改动,自动生成全面、精确且高度贴合实际的提交信息,最大程度减少开发者的手动输入和思考负担。
- 广泛的 AI 平台兼容:充分考虑到开发者使用不同 AI 服务的需求,确保插件能够无缝对接 OpenAI、Ollama 以及 VSCode 内置的 AI 服务,让用户可以根据个人偏好和项目需求自由选择最适合的 AI 引擎。
- 全面的多语言覆盖:鉴于全球开发者社区的多样性,插件应支持多种主流语言的提交信息生成,打破语言障碍,促进不同语言背景的团队成员之间的顺畅协作。
- 规范与生动兼具:生成的提交信息严格遵循行业认可的常规提交规范(如 Conventional Commits),同时通过自动添加恰当的表情符号,使提交信息更加直观、生动,便于快速理解和区分不同类型的提交。
尽管拥有着前端开发的经验,但面对 VSCode 插件开发领域的特定技术挑战和知识要求,我仍意识到独自完成这一任务的艰巨性。因此,我决定引入智能工具,尤其是 AI 技术,来加速插件的开发进程。
开发过程:AI 助力插件诞生
尽管对软件开发流程较为熟悉,但在涉足 VSCode 插件开发时,仍有诸多细节和技术要点需要深入探索。于是,我积极借助各种 AI 工具,为插件的开发规划和实现提供有力支持。同时,我也借助了开源社区的力量。从他们已有的知识成果和实践案例中汲取灵感。通过参考开源社区中的相关代码示例、技术文档,实现了一些我没有思路的需求。开源社区的资源如同丰富的宝藏,为我的插件开发之路提供了更多的选择和方向,与 AI 技术相辅相成,共同推动着插件的开发进程不断向前迈进。
在涉及到与 Git、SVN 相关功能的实现上,比如精准获取代码在这两种版本控制系统中的改动详情,以及如何将这些改动合理转化为高质量的提交信息,我借助 AI 实现了对应的 provider。通过向 AI 详细描述需求,它帮我生成了优化的算法以及详尽的代码示例,引导我一步步搭建起能和 Git、SVN 进行有效交互的模块,让插件可以准确识别代码的增删改等操作,进而以此为基础生成有价值的提交信息素材。
而在 AI 模型相关的 provider 方面,同样离不开 AI 的功劳。大家知道,如今有各种各样的 AI 模型可供选择,像对接 OpenAI、Ollama 等不同平台的 AI 服务时,需要处理复杂的 API 对接工作,包括理解繁多的接口参数、认证机制以及完成各种数据格式的转换等。AI 协助我打造出适配不同 AI 模型的 provider,保障了插件能够稳定且高效地与不同的 AI 平台进行通信,顺利调用它们的能力来为生成提交信息服务。
说起来可能会让大家比较惊讶,这个插件的代码,几乎大部分都是在 AI 的帮助下 “生成” 出来的,也就是大家常说的 AI GC(生成式 AI 创作)。AI 就像是一位超给力的编程助手,依据我的功能规划、技术需求等,为我产出一段段高质量的代码片段,我再基于这些进行整合、调试以及进一步完善。可以说,正是 AI 强大的代码生成能力,极大地加快了整个插件的开发速度,让我能在较短时间内将这个具备一定可用性的 “Dish AI Commit Gen” 插件呈现在大家面前(当然现在只是个玩具, 只有我一个人在使用)。
当然,我在使用 AI 生成代码的过程中,也并非完全照搬,而是会仔细审查、深入理解代码逻辑,根据插件的实际特点和使用场景进行必要的调整优化,确保最终的插件既高效又稳定,能切实满足广大开发者提升提交信息质量和开发效率的需求。
插件最终的功能
经过一定时间的不懈努力和精心调试,“Dish AI Commit Gen” 插件终于问世,具备了一系列强大的核心功能:
- 智能提交信息生成:通过深度分析代码改动,自动生成详细、准确且遵循规范的提交信息,涵盖改动内容、目的、影响范围等关键要素,为代码审查和项目维护提供有力支持。 (虽然有时候可能抽风)
- 多平台 AI 无缝切换:用户可在插件设置中轻松选择 豆包、智谱、通义千问、OLLAMA、VSCODE 内置 AI 服务 i 以及 OPENAI,根据项目需求和个人偏好灵活切换,享受个性化的提交信息生成体验。
- 丰富多语言支持:支持多达 19 种主流语言的提交信息生成,无论团队成员使用何种语言进行开发,都能获得清晰、易懂的提交信息,促进国际团队间的高效协作。
- 规范生动呈现:生成的提交信息严格遵循常规提交规范,并根据提交类型自动添加形象的表情符号,使提交历史更加直观、易于区分,显著提升代码库的可读性。
小结:开发中的收获与反思
通过这次插件开发经历,我不仅成功打造了一个具有实用价值的工具,更在 AI 与软件开发的融合应用方面取得了重要突破。从功能构思到技术实现,AI 全程为我提供了强大的支持和创新的思路,极大地缩短了开发周期,显著提升了代码质量。
然而,开发过程并非一帆风顺。后续需要不断优化用户体验,使其更加智能、便捷,也是我不断追求的目标。每一次的调试和改进都让我积累了宝贵的经验,加深了对软件开发复杂性和严谨性的理解。
总的来说,这次开发历程让我更加坚信 AI 在软件开发领域的巨大潜力,它不仅是提高效率的利器,更是推动创新的强大动力。
如果你也在寻求提升提交信息质量和开发效率的方法,或者对 VSCode 插件开发与 AI 技术的结合感兴趣,希望我的经验能为你提供有益的参考。勇敢地迈出探索的步伐,借助 AI 技术打造更加高效、智能的开发工具吧!
插件已在 GitHub 上开源,欢迎广大开发者使用和贡献:https://github.com/littleCareless/dish-ai-commit
参考库与致谢
在开发过程中,参考了以下优秀的库,在此深表感谢:
- svn-scm - SVN source control management for VSCode
- vscode - Visual Studio Code editor
- vscode-gitlens - Git supercharged for VSCode
- ai-commit - AI assisted Git commit message generation
最后需要说明的是,本插件代码并不太好,几乎全部都是由 AI 生成的,虽经过了我的整合、调试与优化,但仍可能存在诸多不足,希望大家能多多包涵并提出宝贵意见。(轻喷啊轻喷...