npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@x648525845/ai-codereview

v1.6.2

Published

AI驱动的代码审查工具,支持Git hooks集成,提供智能代码质量分析和反馈

Downloads

52

Readme

AI-CodeReview

🤖 AI驱动的代码审查工具,支持Git hooks集成,提供智能代码质量分析和反馈,支持web结果友好展示结果

功能特性

  • 🔍 智能代码分析: 使用AI模型分析代码变更,识别潜在问题(注意!!分析的是代码变更->git add选择的所有文件)
  • 🚀 多版本控制系统支持: 支持Git和SVN版本控制系统,Git可集成hooks自动化
  • 🌟 支持多种AI服务: 默认推荐DeepSeek(性价比高),同时支持Moonshot、OpenAI等兼容服务
  • 📋 详细反馈报告: 提供代码质量、安全性、性能等多维度分析
  • 📄 多种输出方式: 支持生成Markdown报告文件或控制台输出
  • 🛠️ 高度可配置: 支持自定义分析规则和反馈格式
  • 💬 中文友好: 完整的中文界面和反馈

安装

全局安装(推荐)

npm install -g @x648525845/ai-codereview

项目本地安装

npm install --save-dev @x648525845/ai-codereview

Node.js 版本要求

需要 Node.js >= 18

快速开始

1. 配置环境变量

方式一:全局配置(推荐)

为了在所有项目中复用配置,建议使用全局配置:

# 创建全局配置文件
ai-codereview init-config

这会在你的用户主目录创建 .ai-codereview.env 文件,编辑该文件填入你的API密钥:

# 编辑全局配置文件
nano ~/.ai-codereview.env

方式二:项目配置

如果需要在特定项目中覆盖全局配置,可以在项目根目录创建 .env 文件:

# 复制配置模板到项目根目录
cp env.template .env

配置优先级

配置文件按以下优先级加载(高优先级覆盖低优先级):

  1. 项目根目录的 .env 文件(最高优先级)
  2. 用户主目录的 .ai-codereview.env 文件(全局配置)
  3. 包目录的 .env 文件(默认配置)

配置帮助

# 查看配置说明
ai-codereview config-help

# 调试模式查看配置加载过程
ai-codereview --debug

推荐使用 DeepSeek 配置(性价比高,效果好):

# 必须配置 - API密钥
API_KEY=你的API密钥

# DeepSeek API 配置(推荐)
AI_BASE_URL=https://api.deepseek.com/v1         # DeepSeek API地址
AI_MODEL=deepseek-chat                          # DeepSeek 模型
AI_MAX_TOKENS=2000                              # 最大token数量
AI_TEMPERATURE=0.3                              # 温度参数 (0-1)

# 可选:自定义AI审查提示词
AI_REVIEW_SYSTEM_PROMPT=你的自定义提示词内容

# 可选:版本控制系统配置
VCS_TYPE=git                                    # 版本控制系统:git(默认) 或 svn

# 可选:输出模式配置
AI_OUTPUT_MODE=file                             # 输出方式:file(生成文件,默认) 或 console(控制台输出)

其他支持的AI服务:

# Moonshot 配置
# AI_BASE_URL=https://api.moonshot.cn/v1
# AI_MODEL=moonshot-v1-8k
# MOONSHOT_API_KEY=你的Moonshot_API密钥

# OpenAI 配置
# AI_BASE_URL=https://api.openai.com/v1
# AI_MODEL=gpt-4
# OPENAI_API_KEY=你的OpenAI_API密钥

配置优先级说明:

  • API密钥优先级:构造函数参数 > API_KEY 环境变量 > 服务专用环境变量(如 DEEPSEEK_API_KEYMOONSHOT_API_KEY
  • 其他配置参数优先级:构造函数参数 > 对应环境变量 > 默认值

获取API密钥:

2. 使用方式

方式一:直接命令行使用(推荐)

直接在终端使用 npx 命令进行代码审查:

# 在项目目录下直接运行
npx @x648525845/ai-codereview

# 或者全局安装后使用
npm install -g @x648525845/ai-codereview
ai-codereview

这种方式适合:

  • 手动触发代码审查
  • 在CI/CD流水线中使用
  • 临时性的代码质量检查

方式二:Git Hooks 自动化集成

通过 Git hooks 实现自动化代码审查,每次提交时自动触发。

使用 Husky 管理 Git Hooks(推荐)

本工具推荐使用 Husky 来管理 Git hooks。

1. 初始化 Husky

如果项目还没有配置 Husky,请先初始化:

# 安装 husky
npm install --save-dev husky

# 初始化 husky
npx husky install

# 设置 package.json 脚本(可选,用于自动安装)
npm pkg set scripts.prepare="husky install"

2. 添加 pre-commit hook

# 添加 pre-commit hook
npx husky add .husky/pre-commit "npx @x648525845/ai-codereview"

3. 确保正确的退出码处理

如果遇到提交无法被阻止的问题,请在 .husky/pre-commit 文件中添加正确的退出码处理:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx @x648525845/ai-codereview
exit $?

4. 使用效果

配置完成后,每次提交代码时会自动执行AI审查:

git add .
git commit -m "你的提交信息"
# AI代码审查会自动执行,有问题时会阻止提交

更多 Husky 配置和使用方法,请参考:Husky 官方文档

全局配置详解

为什么使用全局配置?

全局配置让你可以在所有项目中使用相同的API密钥和基础配置,避免在每个项目中重复配置:

  • 一次配置,到处使用:在用户主目录配置一次,所有项目都能使用
  • 项目级覆盖:特定项目可以创建 .env 文件覆盖全局配置
  • 配置优先级:项目配置 > 全局配置 > 默认配置
  • 安全性:全局配置文件位于用户主目录,不会被意外提交到代码仓库

创建全局配置

# 创建全局配置文件模板
ai-codereview init-config

这会在你的用户主目录创建 .ai-codereview.env 文件,内容如下:

# AI-CodeReview 全局配置文件
# 此文件位于用户主目录,所有项目都会使用此配置
# 如果项目根目录有 .env 文件,则项目配置优先

# ===========================================
# 必须配置 - API密钥
# ===========================================

# DeepSeek API密钥(推荐使用)
API_KEY=你的DeepSeek_API密钥
# 或者使用 DeepSeek 专用的环境变量
DEEPSEEK_API_KEY=你的DeepSeek_API密钥

# 也可以使用其他AI服务的API密钥
# MOONSHOT_API_KEY=你的Moonshot_API密钥
# OPENAI_API_KEY=你的OpenAI_API密钥

# ===========================================
# AI服务配置(可选)
# ===========================================

# DeepSeek API 配置(默认推荐)
AI_BASE_URL=https://api.deepseek.com/v1
AI_MODEL=deepseek-chat
AI_MAX_TOKENS=2000
AI_TEMPERATURE=0.3

# 输出模式配置(可选)
# file: 生成Markdown报告文件(默认)
# console: 控制台输出
AI_OUTPUT_MODE=file

# 版本控制系统类型(可选)
# git: Git版本控制(默认)
# svn: SVN版本控制
VCS_TYPE=git

# 自定义AI审查提示词(可选)
# AI_REVIEW_SYSTEM_PROMPT=你是一个专业的代码审查专家。请分析提供的代码变更,重点关注代码质量、安全问题、性能优化和最佳实践。请用中文回复。

编辑全局配置

# 使用你喜欢的编辑器编辑全局配置文件
nano ~/.ai-codereview.env
# 或者
code ~/.ai-codereview.env
# 或者
vim ~/.ai-codereview.env

配置优先级示例

假设你有以下配置:

全局配置 (~/.ai-codereview.env):

API_KEY=global_api_key
AI_MODEL=deepseek-chat
AI_MAX_TOKENS=2000

项目配置 (项目根目录/.env):

API_KEY=project_specific_api_key
AI_TEMPERATURE=0.5

最终生效的配置:

API_KEY=project_specific_api_key  # 来自项目配置
AI_MODEL=deepseek-chat            # 来自全局配置
AI_MAX_TOKENS=2000                # 来自全局配置
AI_TEMPERATURE=0.5                # 来自项目配置

配置调试

# 查看配置加载过程
ai-codereview --debug

# 查看配置帮助信息
ai-codereview config-help

使用SVN版本控制

如果您的项目使用SVN版本控制系统,请按以下步骤配置:

1. 配置环境变量

.env 文件中设置:

VCS_TYPE=svn

2. 使用方式

SVN模式下,工具会分析所有修改状态的文件(包括M、A、D状态):

# 修改文件后直接运行分析
svn status  # 查看修改的文件
npx @x648525845/ai-codereview  # 分析修改的文件

# 或者全局安装后使用
ai-codereview

注意事项:

  • SVN模式下不支持hooks自动化(SVN hooks机制与Git不同)
  • 工具会分析所有处于修改状态的文件,无需手动添加到暂存区
  • 建议在提交前手动运行代码审查

输出方式

工具支持两种输出方式:

📄 文件输出(默认)

默认会在项目根目录生成详细的Markdown报告文件:

# 默认行为,生成报告文件
git commit -m "feat: 添加新功能"
# 会生成类似 ai-code-review-2024-01-15-14-30-25.md 的报告文件

生成的报告文件包含:

  • 📊 审查概览和统计信息
  • 📋 每个文件的详细分析结果
  • ⚠️ 问题标识和建议
  • 🕒 时间戳和工具信息

💻 控制台输出

如需在控制台直接查看结果:

# 通过环境变量设置
AI_OUTPUT_MODE=console

# 或者在 .env 文件中设置
# AI_OUTPUT_MODE=console

默认的提示词

你是一个专业的代码审查专家。请分析提供的代码变更,重点关注:

  1. 代码质量和最佳实践
  2. 潜在的bug和安全问题
  3. 性能优化建议
  4. 代码可读性和维护性
  5. 测试覆盖率建议

请用中文回复,格式简洁明了。如果没有问题,请简单确认代码看起来不错。`

环境变量配置总结

  • API_KEY: 通用AI服务API密钥(推荐使用)
  • AI_BASE_URL: AI服务基础URL(可选,默认:https://api.deepseek.com/v1)
  • AI_MODEL: 使用的模型名称(可选,默认:deepseek-chat)
  • AI_MAX_TOKENS: 最大token数量(可选,默认:2000)
  • AI_TEMPERATURE: 温度参数(可选,默认:0.3)
  • AI_REVIEW_SYSTEM_PROMPT: 自定义AI审查提示词(可选,如不设置则使用默认提示词)
  • VCS_TYPE: 版本控制系统类型(可选,默认:git,可选值:git/svn)
  • AI_OUTPUT_MODE: 输出方式(可选,默认:file,可选值:file/console)

编程方式使用

你也可以在代码中直接使用:

import { AICodeReviewer } from 'ai-codereview'

// 使用默认配置(自动检测Git/SVN)
const reviewer = new AICodeReviewer()

// 自定义配置(使用DeepSeek + SVN)
const customReviewer = new AICodeReviewer({
  systemPrompt: '你是一个专注于安全性的代码审查专家,请特别关注安全漏洞和潜在威胁...',
  baseURL: 'https://api.deepseek.com/v1', // 使用DeepSeek服务
  model: 'deepseek-chat', // DeepSeek模型
  maxTokens: 2000, // token限制
  temperature: 0.1, // 降低随机性
  outputMode: 'console', // 设置输出方式:'file' 或 'console'
  vcsType: 'svn' // 指定使用SVN版本控制
})

// 使用其他AI服务的示例
const openaiReviewer = new AICodeReviewer({
  baseURL: 'https://api.openai.com/v1',
  model: 'gpt-4',
  apiKey: 'your-openai-key',
  vcsType: 'git' // 明确指定Git
})

// 显示当前配置
customReviewer.displayConfig()

// 分析代码变更
const result = await reviewer.analyzeChanges()

// 显示反馈(现在是异步方法)
await reviewer.displayFeedback(result.feedback)

API 文档

AICodeReviewer

主要的代码审查器类。

构造函数

new AICodeReviewer(options)

参数:

  • options (Object, 可选): 配置选项
    • systemPrompt (String, 可选): 自定义系统提示词。如果不提供,将使用默认的代码审查提示词。
    • apiKey (String, 可选): AI服务API密钥。如果不提供,将使用环境变量 API_KEY
    • baseURL (String, 可选): AI服务基础URL。默认: https://api.deepseek.com/v1
    • model (String, 可选): 使用的AI模型名称。默认: deepseek-chat
    • maxTokens (Number, 可选): 最大token数量。默认: 2000
    • temperature (Number, 可选): 温度参数 (0-1)。默认: 0.3
    • outputMode (String, 可选): 输出方式。可选值: 'file'(生成文件,默认) 或 'console'(控制台输出)
    • vcsType (String, 可选): 版本控制系统类型。可选值: 'git'(默认) 或 'svn'

方法

  • analyzeChanges(): 分析版本控制系统中的代码变更(Git暂存区或SVN修改文件)
  • analyzeFile(filename): 分析单个文件
  • displayFeedback(feedback): 显示分析反馈(异步方法,根据配置选择文件或控制台输出)
  • generateReportFile(feedback): 生成Markdown格式的审查报告文件
  • askUserConfirmation(hasIssues): 询问用户是否继续提交
  • getConfig(): 获取当前配置信息
  • displayConfig(): 显示当前配置信息(包括VCS信息)

VcsUtils

版本控制系统工具类,支持Git和SVN。

方法

  • getStagedFiles(): 获取需要分析的文件列表(Git暂存区或SVN修改文件)
  • getFileDiff(filename): 获取文件的差异内容
  • getFileContent(filename): 获取文件完整内容
  • filterRelevantFiles(files): 过滤相关的代码文件
  • getVcsType(): 获取当前使用的版本控制系统类型
  • displayVcsInfo(): 显示版本控制系统信息

配置

支持的文件类型

默认分析以下类型的文件:

  • JavaScript (.js, .jsx, .mjs)
  • TypeScript (.ts, .tsx)
  • Vue (.vue)
  • Python (.py)
  • Java (.java)
  • C/C++ (.c, .cpp, .h, .hpp)

故障排除

提交无法被阻止

如果遇到选择"N"后提交仍然继续的问题,请尝试以下解决方案:

  1. 检查 Git Hook 配置: 确保 .husky/pre-commit 文件内容正确:

    #!/usr/bin/env sh
    . "$(dirname -- "$0")/_/husky.sh"
    
    npx @x648525845/ai-codereview
    exit $?
  2. 使用绝对路径: 如果 npx 有问题,可以使用全局安装:

    npm install -g @x648525845/ai-codereview
    
    # 然后在 .husky/pre-commit 中使用
    ai-codereview
    exit $?
  3. 手动测试: 可以手动运行来测试退出码:

    echo "n" | npx @x648525845/ai-codereview
    echo "退出码: $?"
  4. 环境变量问题: 确保项目根目录有 .env 文件,且包含正确的 API 密钥。

AI 服务不可用

如果 AI 服务不可用(如网络问题或 API 密钥错误),工具会询问是否跳过审查。选择 "N" 会阻止提交,选择 "Y" 会跳过审查继续提交。

贡献

欢迎提交Issue和Pull Request!

许可证

MIT License

更新日志

v1.0.0

  • 初始发布
  • 支持基本的AI代码审查功能
  • Git hooks集成
  • Moonshot API支持

v1.1.0

  • 支持自定义配置提示词

v1.2.0

  • 支持自定义配置模型
  • 支持自定义配置maxTokens && temperature

v1.3.0

  • 🆕 新增多种输出方式: 支持生成Markdown报告文件或控制台输出
  • 📄 文件输出功能: 默认在根目录生成详细的代码审查报告文件
  • ⚙️ 新增配置选项: outputModeAI_OUTPUT_MODE 环境变量
  • 🎨 优化报告格式: 包含统计信息、问题标识和时间戳
  • 🔧 改进API: displayFeedback 方法现在是异步的,支持文件生成

v1.4.0

  • 未检测到修改文件时不会输出review结果文件
  • 支持svn

v1.5.0

  • 支持全局配置

v1.6.0

  • 支持web界面展示