从 aicommits 切换
aicommits 替代方案:aic
aicommits 是公认的默认之选——为每个暂存的 diff 写一条信息,是久经验证的选择。如果你真正的问题是未暂存工作堆积、历史变得混乱,aic 正是为此而生的替代方案:它把你的改动拆成逻辑原子提交,并用逐文件审批的方式解决合并冲突。
为什么人们从 aicommits 切换
aicommits 为你暂存的内容写一条信息——但它无法把杂乱的暂存区拆成逻辑提交,也无法帮你解开合并。两者都会留下混杂关注点的提交和手工解决的冲突。
逐特性对比
| 能力 | aic | aicommits |
|---|---|---|
| 把未暂存改动自动批处理成多个提交 | 是 —— 把未暂存改动拆成合乎逻辑的原子提交 | 否 —— 每个已暂存 diff 一条信息 |
| 把单个文件跨多个提交拆分(按 hunk) | 是 —— 按意图把每个 hunk 路由到各自的提交 | 否 —— 最多到文件粒度 |
| 解决合并冲突 | 是 —— `aic resolve` 提出 diff,逐文件征询 | 否 —— 只有提交信息 |
| 一等支持 Anthropic · Gemini · DeepSeek | 是 —— 原生供应商 | 仅通过 OpenRouter / 自定义端点 |
| 运行时与依赖 | Rust 可执行文件 —— 无需 Node.js | Node.js v22+ — npm |
| 供应商覆盖 | 11 个一等 + OpenAI 兼容 | 8 + OpenRouter/自定义(任意模型) |
| 提交信息格式 | Conventional Commits | 普通 · 约定式 · gitmoji |
| Git 钩子集成 | 否 | 是 —— prepare-commit-msg 钩子 |
| 多个提交信息候选 | 否 | 是 —— `--generate N` |
| 提示词与语言控制 | 通过环境变量设系统提示词 | `--prompt`、locale、max-length |
| 人气与生态 | 新、小 | 根深蒂固的先发者 |
以下情况切换到 aic:
…你的未暂存工作堆积,希望被提交成干净、原子、约定式的提交——甚至在一个文件内——或者你希望不装 Node.js 就获得 AI 解决的合并冲突。
以下情况留在 aicommits:
…你依赖它的 `prepare-commit-msg` 钩子、想要 gitmoji 或纯文本格式、需要多条候选消息,或者只是想要最大社区带来的安心感。
如何切换
- 安装 aic:
brew install CaicoLeung/aic/aic - 一次性配置:运行 `aic setup`——供应商、密钥、模型,一个向导搞定
- 提交:暂存你的工作并运行 `aic`;aic 会自动分批未暂存的工作