opencommit
1秒生成专业Git提交信息,ChatGPT加持,终结敷衍式commit
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
1秒生成专业Git提交信息,ChatGPT加持,终结敷衍式commit
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你刚完成了一个复杂的功能模块,代码写得漂亮,逻辑清晰,但当你准备提交时,面对 git commit -m "" 光标闪烁的那一刻,突然不知道该写什么——"修复bug"太敷衍,"更新代码"没营养,"改了点东西"简直是敷衍了事。这类尴尬每个开发者都经历过,而 opencommit 正是来解决这个问题的。
opencommit 诞生于 2023 年 GitHub 全球黑客松,由独立开发者 Dmitry Sukharev(@di-sukharev)构建,最终从全球数千个参赛项目中脱颖而出,荣获冠军。它是一个纯命令行的 AI 工具,安装后只需要在终端敲入 oco,就能在 1 秒钟内 根据你当前的代码变更(git diff)自动生成一条专业、规范的提交信息。
该项目目前在 GitHub 上拥有超过 7300 颗星,420 多个 Fork,192 个 open issues 表明社区活跃度极高。作者 Dmitry 是一个专注于开发者工具(DevTools)的独立工程师,活跃在 Twitter/X 平台分享产品迭代动态。

图1:opencommit 工作界面示意
opencommit 本质上是一个 GPT 包装器(GPT Wrapper),它深度嵌入了 Git 工作流。下面是其核心工作流程:
oco 命令时,工具自动读取当前暂存区(staged)的所有变更内容。整个过程无需离开终端,用户只需按回车确认,提交信息就自动生成了。
说它是 Git Commit 场景下功能最丰富的 GPT 包装器,并非夸大。它支持的特性包括:
| 特性 | 支持情况 |
|---|---|
| 多 AI 提供商 | OpenAI GPT-4o/4o-mini/3.5、Anthropic Claude、Google Gemini、Azure OpenAI、DeepSeek、Flowise、自定义 Ollama |
| 本地模型 | 支持 Ollama(Mac/Linux本地部署),支持 MLX(Apple Silicon) |
| 多语言 | 支持 50+ 种语言的提交信息生成,包括中文、德语、法语、西班牙语等 |
| GitMoji | 内置 GitMoji 规范,支持 --fgm 全套 emoji |
| Conventional Commits | 自动遵循 Conventional Commits 规范,便于 CHANGELOG 自动生成 |
| 本地配置 | 支持每个仓库单独配置(.env 文件),也支持全局配置(~/.opencommit) |
| 自定义 Prompt | 支持 commitlint 和自定义模板模块 |
如果说传统的 Git 提交是"手写情书",那 opencommit 就是"AI 秘书帮你润色"——你写好了草稿,秘书帮你翻译成专业、地道、符合行业规范的商业信函。它不会替代你对代码的理解,但会替你完成那件琐碎却耗时的事务性工作。
对于使用 Ollama 本地运行 LLM 的用户来说,这个工具更是一大福利:代码完全在本地处理,不经过任何第三方 API,完全免费且不泄露任何代码。这对注重隐私的企业开发者来说尤为重要。
项目使用 JavaScript/TypeScript 开发,Node.js 作为运行时,打包后输出为单文件 CLI(out/cli.cjs),全局安装后 oco 命令全局可用。
核心技术栈:
代码结构采用模块化设计:
src/commands/:CLI 子命令实现src/engine/:AI 调用引擎(多 provider 抽象)src/prompts.ts:Prompt 构建逻辑src/i18n/:多语言翻译资源src/modules/:插件式扩展模块src/generateCommitMessageFromGitDiff.ts:核心 diff → commit message 生成逻辑代码质量方面,项目有完整的 Jest 测试套件(unit + e2e),包含 smoke test、core behavior、prompt module 等多个维度,使用 biome 做 lint + format,用 TypeScript 严格类型检查,CI/CD 流程规范。
opencommit 是一个纯命令行工具,没有图形界面。安装方式是传统的 npm 全局安装:
npm install -g opencommit
oco config set OCO_API_KEY=sk-xxx
oco # 在 git 仓库中直接运行
配置项丰富(OCO_MODEL、OCO_LANGUAGE、OCO_EMOJI 等),可以通过 oco config set 交互式设置,也可以通过环境变量或 .env 文件批量配置。作者在 README 中提供了 Ollama 本地部署的详细教程,包括 IPv6 连接修复等常见问题解决方案。
任何工具都有其局限性,opencommit 也不例外:
action.yml 支持 GitHub Actions 使用,但配置相对复杂opencommit 的出现代表了开发者工具(DevTools)领域的一个趋势:将 AI 能力无缝嵌入已有工作流,而不是另起炉灶。它没有创造新的工作方式,而是优化了每个开发者每天都会遇到的高频痛点。
从 Conventional Commits 到语义化提交(Semantic Versioning),现代前端工程化对提交信息的规范性要求越来越高,人工维护成本也随之增加。opencommit 在这个背景下出现,正好填补了"规范化"与"效率"之间的空白。
作者 Dmitry 活跃在 Twitter 上分享产品迭代和创业思考,是一个资深的开源社区贡献者。

图2:作者 Dmitry Sukharev