An open API service indexing awesome lists of open source software.

https://github.com/huchenghepang/ai-git

AI-powered Git context analyzer — 自动分析 Git 暂存区变更,生成详细的 Markdown 报告,并支持 AI 生成 Commit Message 和代码审查。
https://github.com/huchenghepang/ai-git

ai git

Last synced: 7 days ago
JSON representation

AI-powered Git context analyzer — 自动分析 Git 暂存区变更,生成详细的 Markdown 报告,并支持 AI 生成 Commit Message 和代码审查。

Awesome Lists containing this project

README

          

# ai-git 🚀

AI-powered Git context analyzer — 自动分析 Git 暂存区变更,生成详细的 Markdown 报告,并支持 AI 生成 Commit Message 和代码审查。

[![GitHub](https://img.shields.io/badge/GitHub-huchenghepang/ai--git-blue?logo=github)](https://github.com/huchenghepang/ai-git)
[![npm version](https://img.shields.io/npm/v/@huchenghe/ai-git)](https://www.npmjs.com/package/@huchenghe/ai-git)
[![License](https://img.shields.io/npm/l/@huchenghe/ai-git)](LICENSE)

## 功能特性

- ✅ **Git 变更分析** — 自动分析 `git diff --cached` 暂存区变更
- ✅ **Markdown 报告** — 生成结构化的变更分析报告
- ✅ **敏感信息脱敏** — 自动检测并脱敏密码、Token、API Key 等敏感信息
- ✅ **交互模式** — 可选择性地包含特定文件
- ✅ **AI 集成** — 自动调用 AI 生成 Commit Message 和代码审查
- ✅ **剪贴板复制** — 自动复制报告或 Commit Message 到剪贴板
- ✅ **独立 AI 工具** — 提供独立的 `ai-run` 命令直接调用 AI 接口

## 安装

### 全局安装(推荐)

```bash
npm install -g @huchenghe/ai-git
# 或
pnpm add -g @huchenghe/ai-git
```

安装后即可在任何 Git 仓库中使用 `ai-git` 命令。

### 项目内安装

```bash
npm install --save-dev @huchenghe/ai-git
# 或
pnpm add -D @huchenghe/ai-git
```

### 从源码安装

```bash
git clone https://github.com/huchenghepang/ai-git.git
cd ai-git
bun install
bun run build
npm link
```

## 快速开始

### 1. Git 变更分析

在任意 Git 仓库中,先暂存文件:

```bash
git add
# 或
git add .
```

然后运行:

```bash
ai-git
```

这将分析暂存区变更并生成 Markdown 报告,同时自动复制到系统剪贴板。

### 2. 使用 AI 生成 Commit Message

单次会话设置环境变量:

```bash
export AI_API_KEY="your-api-key"
export AI_URL="https://api.deepseek.cn"
export AI_MODEL="deepseek-v4-flash"
```

全局设置 在 `~/.bashrc` 或 `~/.zshrc` 中添加:

```bash
export AI_API_KEY="your-api-key"
export AI_URL="https://api.deepseek.cn"
export AI_MODEL="deepseek-v4-flash"
```

然后运行:

```bash
ai-git -u
```

AI 会自动分析代码变更并生成符合 Conventional Commits 规范的 Commit Message。

### 3. 使用 JSON 格式进行 AI 代码审查

```bash
ai-git -e -u -j
```

这将输出详细的 JSON 格式代码审查报告,包含:
- 各维度评分(代码规范、复杂度、安全性、可维护性、测试覆盖、性能)
- 代码亮点和问题列表
- 综合评分和建议

## 命令参考

| 命令 | 说明 |
|------|------|
| `ai-git` | Git 变更上下文分析器(默认) |
| `ai-git-review` | 快捷命令:`ai-git -e -u -j` 一键完整 AI 审查 |
| `ai-run` | 独立的 AI 请求工具 |

### `ai-git` — Git 变更分析器

```bash
ai-git [选项]
```

| 选项 | 说明 |
|------|------|
| `-a` | 包含完整文件内容(不截断) |
| `-f ` | 设置文件最大行数(默认: 50000) |
| `-l ` | 设置 diff 上下文行数(默认: 3) |
| `-i` | 交互模式(选择要包含的文件) |
| `-o ` | 指定输出文件路径 |
| `-m ` | 输出格式(默认: md) |
| `-r` | 禁用敏感信息脱敏 |
| `-s` | 跳过敏感信息检测 |
| `-u` | 上传到 AI 进行分析 |
| `-j` | 强制 AI 输出 JSON 格式(需同时使用 `-u`) |
| `-h` | 显示帮助信息 |

**使用示例:**

```bash
# 基本分析
ai-git

# 交互模式选择文件
ai-git -i

# 指定输出文件
ai-git -o ./my-report.md

# AI 生成 commit message
ai-git -u

# AI 代码审查(JSON 格式)
ai-git -u -j

# 交互模式 + AI 审查
ai-git -i -u -j

# 包含完整文件内容
ai-git -a
```

### `ai-git-review` — 快捷命令:一键 AI 代码审查 🚀

等价于 `ai-git -e -u -j`,一步完成完整 AI 代码审查。

```bash
ai-git-review
```

直接输出 JSON 格式的代码审查报告,包含评分、问题列表、亮点和建议。

### `ai-run` — 独立 AI 请求工具

```bash
ai-run [选项]
ai-run [选项] --file
```

| 选项 | 说明 |
|------|------|
| `--json`, `--forceJson` | 强制输出 JSON 格式 |
| `--file `, `-f ` | 从文件读取 prompt 内容 |
| `--help`, `-h` | 显示帮助信息 |

**使用示例:**

```bash
# 直接传入 prompt
ai-run "请写一首诗"

# 从文件读取
ai-run --file ./prompt.txt

# 强制 JSON 输出
ai-run --json "分析这段代码"
```

## 环境变量

| 变量 | 说明 | 默认值 |
|------|------|--------|
| `AI_API_KEY` | AI 服务 API 密钥 | —(必填) |
| `AI_URL` | AI 服务地址(如 `https://api.openai.com`) | —(必填) |
| `AI_MODEL` | AI 模型名称 | `deepseek-v4-flash` |
| `AI_TIMEOUT` | 请求超时时间(毫秒) | `30000` |
| `MAX_CHARS` | AI 请求最大字符数 | `120000` |

### 环境变量配置示例

```bash
# 方式 1: 直接 export
export AI_API_KEY="sk-xxxxx"
export AI_URL="https://api.openai.com/v1"
export AI_MODEL="gpt-4"

# 方式 2: 单行执行
AI_API_KEY="sk-xxxxx" AI_URL="https://api.openai.com/v1" ai-git -u
```

## 输出示例

运行 `ai-git` 后,会在 `logs/commit/` 目录下生成类似如下的 Markdown 报告:

```markdown
# Git 变更分析报告
- 生成时间: 2026-06-11 12:00:00
- 仓库: my-project
- 分支: feature/new-feature

## 一、变更概览
### 统计信息
3 files changed, 150 insertions(+), 20 deletions(-)

### 变更文件列表
M src/utils/ai.ts
A src/utils/parse-url.ts
M src/index.ts

## 二、代码变更详情 (git diff --cached)
...
```

## 开发指南

### 本地开发

```bash
# 克隆项目
git clone https://github.com/huchenghepang/ai-git.git
cd ai-git

# 安装依赖
bun install

# 启动开发模式
bun src/index.ts
```

### 发布到 npm

```bash
# 一键发布(交互式选择版本)
bun run release

# 或直接指定版本类型
bun run release -- patch # 补丁版本 1.0.0 → 1.0.1
bun run release -- minor # 小版本 1.0.0 → 1.1.0
bun run release -- major # 大版本 1.0.0 → 2.0.0
bun run release -- 2.0.0 # 自定义版本号

# 该命令会自动完成:
# 1. 检查 Git 工作区是否干净
# 2. 更新版本号
# 3. 执行构建
# 4. 发布到 npm
# 5. Git 打标签并推送
```

### 本地测试

发布前可在本地全局测试:

```bash
# 方式 1: 直接链接
npm link
# 然后在任意目录测试
ai-git --help

# 方式 2: 使用 .tgz 包
npm pack
npm install -g ./ai-git-1.0.0.tgz
```

## 技术栈

- [Bun](https://bun.com) — 运行时与构建工具
- [TypeScript](https://www.typescriptlang.org/) — 类型安全
- [simple-git](https://github.com/steveukx/git-js) — Git 操作
- [chalk](https://github.com/chalk/chalk) — 终端输出样式
- [clipboardy](https://github.com/sindresorhus/clipboardy) — 剪贴板操作
- [minimatch](https://github.com/isaacs/minimatch) — 文件匹配

## 许可证

[MIT](LICENSE)