从 OpenCommit 切换
OpenCommit 替代方案:aic
OpenCommit 久经考验、功能丰富——GitMoji、可配置描述、庞大的社区。但它只为你的暂存 diff 写一条信息。对于问题在于提交历史质量的人来说,aic 是替代方案:hunk 级分批和 AI 冲突解决,且无需依赖 Node.js。
为什么人们从 OpenCommit 切换
OpenCommit 对 LLM 的封装很出色——但粒度只到文件。一个文件因三个原因被改动,仍然只会成为一个提交;合并冲突也仍然要你手动解决。
逐特性对比
| 能力 | aic | OpenCommit |
|---|---|---|
| 把未暂存改动自动分批成多个提交 | 是——把未暂存改动拆成逻辑原子提交 | 否——每个暂存的 diff 只生成一条信息 |
| 在单个文件内跨提交拆分(per-hunk) | 是——按意图把每个 hunk 归入自己的提交 | 否——最多文件粒度 |
| 解决合并冲突 | 是——`aic resolve` 提出 diff,逐文件确认 | 否——只写提交信息 |
| 运行时与依赖 | Rust 二进制——无需 Node.js | Node.js——npm |
| 安装配置 | 交互式 `aic setup` 向导 | `oco config set` 命令 |
| 供应商覆盖 | 11 个一流供应商 + OpenAI 兼容 | Claude、GPT 和其他所有供应商 |
| GitMoji 支持 | 否 | 是——可配置,`--fgm` 启用完整规范 |
| 社区与采用 | 早期(约 8★) | 7,500★ · 约 12k npm 下载/月 · 黑客松冠军 |
| 项目活跃度 | 每周发布 | 活跃(2026-07 仍有提交) |
| 多条候选信息 | 否 | 否 |
以下情况切换到 aic:
…你希望未暂存工作被拆成逻辑原子提交——甚至在一个文件内——或者合并冲突能逐文件审批地解决,且无需 Node.js。
以下情况留在 OpenCommit:
…你想要那个久经考验、黑客松冠军、带 GitMoji 和最大社区的封装,而且文件粒度的提交对你没问题。
如何切换
- 安装 aic:
brew install CaicoLeung/aic/aic - 一次性配置:运行 `aic setup`——供应商、密钥、模型,一个向导搞定
- 提交:对已暂存或未暂存的工作运行 `aic`;没有任何东西会盲目落地