appleboy/CodeGPT
A CLI written in Go language that writes git commit messages or do a code review brief for you using ChatGPT AI (gpt-4.1, gpt-4o model) and automatically installs a git prepare-commit-msg hook.
CodeGPT 是什么?
CodeGPT 是一个用 Go 编写的命令行工具,通过与大语言模型 API(OpenAI、Azure OpenAI、Gemini、Anthropic、Ollama、Groq、OpenRouter)通信,帮助开发者完成两个日常的 Git 任务:
- 生成提交消息 – 它读取你暂存变更的
git diff,将差异发送给选定的 LLM,并返回符合 Conventional Commits 格式的提交消息。该工具还可以安装prepare-commit-msgGit 钩子,使得当你运行git commit时,AI 生成的消息会自动插入。 - 总结代码审查 – 它可以生成一个类似拉取请求风格的简短变更摘要。
两个功能均支持流式输出(令牌逐个生成并显示)、语言翻译(英文、繁体中文、简体中文、日文),以及自定义提示模板。
如何获取?
- macOS –
brew tap appleboy/tap && brew install codegpt - Windows –
choco install codegpt - 任意系统 – 运行提供的安装脚本,或从 GitHub 发布页面下载预编译的二进制文件。
- 从源码构建 –
go install github.com/appleboy/CodeGPT/cmd/codegpt@latest - VS Code devcontainer – 在
devcontainer.json中添加ghcr.io/kvokka/features/codegpt功能。
它是如何工作的?
- 配置 – 通过环境变量、
.codegpt.yaml文件或内置的 API 密钥助手 功能提供 API 密钥(或动态获取密钥的命令)。配置文件位于$HOME/.config/codegpt/,可设置:- 提供商(
openai、azure、gemini、anthropic、ollama、groq、openrouter) - 基础 URL、模型名称、温度、最大令牌数、代理设置等。
- Git 特定选项,如在差异中包含多少上下文行,以及要排除的文件。
- 提供商(
- 运行 CLI –
codegpt commit(或codegpt review)读取差异,根据选定的模板构建提示,调用 LLM 端点,并打印结果。使用--stream标志可逐个查看响应令牌。 - Git 钩子 –
codegpt hook install会写入一个prepare-commit-msg脚本,自动调用 CLI,因此每次运行git commit时都会自动填充 AI 生成的消息。
哪些人会用到它?
- 希望无需手动编写即可获得一致、符合规范的提交消息的开发者。
- 需要快速、易读的代码变更摘要用于拉取请求描述或内部审查的团队。
- 需要使用多个 LLM 提供商的人(例如,为合规性偏好 Azure OpenAI,或希望使用 Ollama 本地运行)——CodeGPT 将提供方抽象为单一 CLI。
它的局限性是什么?
- 它只是一个 客户端;生成文本的质量完全取决于你所指向的底层模型。
- 该工具需要互联网连接(或本地 Ollama 服务器)以及所选提供方的有效 API 密钥。
- 它不执行任何静态分析或 linting;它只是将差异转发给模型。
- Git 钩子会原样插入 AI 文本;你仍应在提交前审查消息。
快速入门示例
# 安装(macOS 示例)
brew tap appleboy/tap && brew install codegpt
# 导出你的 OpenAI 密钥(或通过 `codegpt config set` 配置)
export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
# 为暂存变更生成提交消息
codegpt commit
# 或安装钩子,使 `git commit` 自动执行
codegpt hook install
如何了解更多?
- 仓库的 README 包含详细的安装步骤、完整的配置选项列表,以及每个支持提供方的示例。
- 视频教程(中文) – https://www.youtube.com/watch?v=4Yei_t6eMZU
- 解释该想法的博客文章 – https://blog.wu-boy.com/2023/03/writes-git-commit-messages-using-chatgpt/
以上所有信息均直接来自项目的 README;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目