@ckpack/ai-commit
v1.3.1
Published
根据 git diff 信息 生成符合 Conventional Commits 的提交信息.
Downloads
57
Readme
ai-commit
使用 Codex、Gemini CLI 或 OpenAI 兼容 API 根据 git diff 生成符合 Conventional Commits 的提交信息。
功能
- 读取暂存区或工作区 diff(优先暂存区)
- 自动忽略常见锁文件与日志文件
- 生成单行 commit message,长度不超过 50 个字符
- 支持
openai(默认)、codex与gemini子命令 - OpenAI 兼容模式支持任意 OpenAI API 兼容服务(如 DeepSeek、Moonshot、本地模型等)
- AI 执行失败时自动回退为本地摘要
- 支持 debug 模式输出关键诊断信息(输出到 stderr)
安装
pnpm add -D @ckpack/ai-commit或全局安装:
pnpm add -g @ckpack/ai-commit使用
在包含变更的 git 仓库中运行:
ai-commitai-commit 默认等同于 ai-commit openai,你也可以显式指定:
ai-commit openai
ai-commit codex
ai-commit gemini调试模式:
ai-commit --debug
ai-commit openai --debug
ai-commit codex --debug
ai-commit gemini --debug输出示例:
feat: add commit message generator你也可以直接调用源码(开发时):
pnpm dev -- openai
pnpm dev -- codex
pnpm dev -- gemini配置
支持环境变量和配置文件,优先级:环境变量 > 配置文件 > 默认值。
配置文件
在用户主目录或 Git 仓库根目录创建 ~/.ai-commitrc:
{
"debug": false,
"maxDiffSize": 50000,
"ignores": ["**/*.log", "**/dist/**"],
"openai": {
"apiKey": "sk-xxx",
"baseUrl": "https://api.openai.com",
"model": "gpt-4o-mini"
},
"codex": {
"bin": "codex",
"args": ["exec"]
},
"gemini": {
"bin": "gemini",
"args": ["-p"]
}
}环境变量
通用
AI_COMMIT_DEBUG:开启调试日志AI_COMMIT_MAX_DIFF_SIZE:diff 最大字符数,默认50000AI_COMMIT_IGNORES:忽略文件,逗号分隔
OpenAI
OPENAI_API_KEY:API 密钥(必需)OPENAI_BASE_URL:API 地址,默认https://api.openai.comOPENAI_MODEL:模型名称,默认gpt-4o-mini
Codex
CODEX_BIN:可执行文件名,默认codexCODEX_ARGS:参数,默认exec
Gemini
GEMINI_BIN:可执行文件名,默认geminiGEMINI_ARGS:参数,默认-p
示例
# 使用 DeepSeek
OPENAI_API_KEY=sk-xxx OPENAI_BASE_URL=https://api.deepseek.com OPENAI_MODEL=deepseek-chat ai-commit openai
# 使用 Moonshot
OPENAI_API_KEY=sk-xxx OPENAI_BASE_URL=https://api.moonshot.cn OPENAI_MODEL=moonshot-v1-8k ai-commit openai
# 使用 Ollama
OPENAI_API_KEY=ollama OPENAI_BASE_URL=http://localhost:11434 OPENAI_MODEL=llama3 ai-commit openai
# 开启调试
AI_COMMIT_DEBUG=1 ai-commit生成逻辑
- 优先读取
git diff --staged,为空则读取git diff - 默认忽略:
**/*.log、**/pnpm-lock.yaml、**/package-lock.json、**/yarn.lock、**/Cargo.lock、**/go.sum、**/*.min.js、**/*.min.css - diff 超过最大限制时自动截断(默认 50000 字符)
- 生成的消息需匹配 Conventional Commits:
type(scope?): description,描述不超过 50 个字符 - OpenAI / Codex / Gemini 返回异常或不符合规范时,回退为
chore: update <files>
开发
pnpm dev # 运行源码
pnpm build # 构建 dist
pnpm typecheck # TS 类型检查
pnpm lint # 修复 lint许可
MIT
