用途
aicommits 是一个命令行工具(CLI),用于借助 AI 自动生成 Git 提交信息,帮助开发者减少手动编写提交信息的工作。
主要能力
- 为已暂存的更改生成提交信息。
- 支持多种 AI 提供商:TogetherAI(推荐)、OpenAI、Groq、xAI、OpenRouter、Ollama(本地)、LM Studio(本地,无需 API 密钥)以及自定义 OpenAI 兼容端点。
- 提供五种提交信息格式:plain(默认)、conventional、conventional+body、gitmoji、subject+body。
- 可一次生成多条提交信息供选择(使用 --generate 或 -g 参数指定数量)。
- 支持通过 --description 参数附加提交信息描述。
- 可通过 --prompt 或 -p 参数自定义提示词,引导 LLM 行为(如指定语言或风格)。
- 支持将生成的信息复制到剪贴板(--clipboard 或 -c),而非直接提交。
- 支持自动暂存已跟踪文件的更改(--all 或 -a)。
- 支持绕过 pre-commit 钩子(--no-verify 或 -n)。
- 可使用 --yes 或 -y 跳过提交前的确认。
使用方式
- 环境要求:Node.js 最低版本为 v22,可通过
node --version查看。 - 安装:
npm install -g aicommits。 - 运行设置命令选择 AI 提供商:
aicommits setup。该命令会引导你选择提供商、配置 API 密钥、自动获取并选择可用模型(在支持时),以及选择提交信息格式。 - 在 CI/CD 环境中,也可通过配置文件设置:
aicommits config set OPENAI_API_KEY="your_api_key_here"aicommits config set OPENAI_BASE_URL="your_api_endpoint"(可选,用于自定义端点)aicommits config set OPENAI_MODEL="your_model_choice"(可选,默认为提供商默认值) 这会在用户主目录创建.aicommits文件。
- 查看已安装版本:命令见官方文档。
- 更新到最新版本:运行更新命令会自动检测包管理器(npm、pnpm、yarn 或 bun)并使用对应命令更新,也可手动更新。
- 直接调用生成提交信息:
aicommits会为已暂存的更改生成提交信息。未知参数会传递给git commit,因此可传入提交标志。例如在提交时暂存所有已跟踪文件的更改。 - 可用的命令行参数:
--all或-a:自动暂存已跟踪文件的更改(默认 false)。--clipboard或-c:将所选信息复制到剪贴板而非提交(默认 false)。--generate或-g:生成的信息数量(默认 1)。--exclude或-x:从 AI 分析中排除的文件。--description:包含提交信息描述。--type或-t:Git 提交信息格式(默认 plain),支持 plain、conventional、conventional+body、gitmoji、subject+body。--prompt或-p:自定义提示词,引导 LLM 行为(例如特定语言、风格指令)。--no-verify或-n:提交时绕过 pre-commit 钩子(默认 false)。--yes或-y:生成信息后跳过确认(默认 false)。
- 生成多条信息:使用
--generate <i>参数,其中 i 为生成数量。注意这会消耗更多 token,成本更高。 - 使用
--description在提交需要超出主题的上下文时添加描述。 - 使用
--type指定五种格式之一。此功能适用于项目遵循特定提交信息标准或使用依赖这些格式的工具时。 - 可通过 prepare-commit-msg 钩子将 aicommits 与 Git 集成:
- 在目标 Git 仓库中安装钩子。
- 在目标 Git 仓库中卸载钩子。
- 暂存文件并提交:
git add <files...>,然后git commit(仅在未传入信息时生成)。若想自己编写信息,可直接传入:git commit -m "My message"。 - aicommits 会生成提交信息并传回 Git,Git 会用配置的编辑器打开供你审阅/编辑,保存并关闭编辑器即可提交。
配置
- 环境变量:也可使用环境变量配置 aicommits,而非配置文件。配置设置按以下优先级解析:命令行参数 > 环境变量 > 配置文件。
- 查看当前配置:运行命令可显示所有与默认值不同的配置选项,API 密钥会被掩码以保安全。若未设置自定义配置,会显示“(using all default values)”。
- 更改模型:运行交互式命令可选择或更改 AI 模型,该命令会显示当前提供商和模型、从提供商 API 获取可用模型、让你从可用模型中选择或输入自定义模型名称,并自动更新配置。
- 更新 aicommits:检查 npm 上的最新版本,检测包管理器,使用相应命令更新,显示进度并确认完成。
- 读取配置值:使用读取命令,例如读取 API 密钥。也可一次读取多个配置选项,用空格分隔。
- 设置配置值:使用设置命令,例如设置 API 密钥。也可一次设置多个配置选项。
- 配置项包括:OpenAI API 密钥或自定义提供商 API 密钥;自定义 OpenAI 兼容 API 端点 URL;OpenAI 兼容提供商使用的模型;所选 AI 提供商(在 setup 时自动设置,有效值:openai、togetherai、groq、xai、openrouter、ollama、lmstudio、custom);生成提交信息的区域设置(参见 ISO 639-1 代码列表);生成供选择的提交信息数量(注意会消耗更多 token);网络请求超时(毫秒,托管提供商默认 10000 即 10 秒,Together AI 和本地提供商默认 60000 即 60 秒);生成的提交主题首选字符长度(引导模型生成简洁信息,但完整主题可能更长);提交信息类型(plain 为简单无结构提交信息)。
生成流程
模型接收暂存文件列表,请求所需的暂存差异,并提交经过验证的提交主题及可选描述。工具只能读取 Git 的暂存快照,因此未暂存的编辑永远不会发送给模型。
适用场景
适用于希望自动生成 Git 提交信息的开发者,尤其是需要遵循特定提交格式(如 Conventional Commits)或希望减少手动编写提交信息的团队。也适用于 CI/CD 环境中的自动化配置。
限制
- Node.js 最低版本要求 v22。
- 使用 --generate 生成多条信息会消耗更多 token,成本更高。
- 部分提供商(如 Together AI、OpenAI、xAI、LM Studio)使用 agentic 生成流程,其他提供商使用 one-shot 流程。
- 使用环境变量时,需确保所有相关变量(如 OPENAI_API_KEY 和 OPENAI_BASE_URL)一致设置,避免与配置文件不匹配。
- 未提供其他具体限制。