MIT License · Rust

AI 代码的
合并前质量闸口

优先拦截高风险问题,减少低价值 review 噪音。它不替代测试和人工 review——在合并前先做一轮过滤:高危推到前面,低置信反馈默认折叠。

$ curl -fsSL https://raw.githubusercontent.com/dengmengmian/ReviewGate/main/install.sh | sh
默认只读 45 语言样例评测 revert 金标准留痕
为什么用它

三件事,做到位

不是又一个 AI reviewer,而是一道把高危推前、把噪音压下、不假装通过的闸口。

拦高危

按安全、逻辑、性能、业务规则等维度并行审查,把 must-fix 放到最前面,reviewer 一眼看到最该处理的地方。

降噪音

跨维度去重、独立证伪、按置信度过滤,低价值反馈默认折叠——少一点"啰嗦但没用"的 review 评论。

不假通过

超时、上下文过大、单元未审完都会降级 WARN 并让 CI 非 0 退出,绝不把不完整的审查伪装成 PASS。

工作原理

从 diff 到闸口,四步

并行分维度审查

多个 Agent 各自聚焦一个维度,并行扫你的改动,可按需跨文件追调用方与契约。

行号锚定校验

模型直接标注行号,引擎用代码片段锚点校验并兜底重定位,降低行号漂移。

去重 + 证伪 Judge

同处多维标记合并并加分;每条发现再被独立带证据裁决,证不掉才保留。

置信度闸口

高置信问题阻断合并(BLOCK),低置信默认折叠(仍可展开),未审完降级 WARN。

六个审查维度

security

注入、越权、密钥泄露、不安全反序列化

perf

N+1、无谓拷贝、热路径复杂度、阻塞调用

logic

边界条件、空值、错误处理、并发竞态

style

命名、可读性、重复代码

ai_smell

幻觉 API、看似合理实则错误、假设漂移

business

业务规则、权限边界、状态机、金额/订单/库存

为什么可以信

保守、可验证、不越权

公开评测留痕

真实 PR、revert 金标准、45 语言样例、大 PR、意图评审结果都记录在 docs/evals/,可复查。

默认只读

除显式 --fix 且逐条确认外,审查链路不写工作区、不执行任意 shell 命令。

保守闸口

低置信默认折叠;超时、上下文超限、未审完一律降级 WARN,宁可保守也不漏审放行。

适合

  • AI 一次改很多文件,reviewer 想先知道哪里最危险
  • 团队有权限、金额、状态机等业务规则需反复检查
  • 想给 PR / CI 加一道高置信风险闸口
  • 想用 --intent 检查实现是否符合需求 / 设计

不适合

  • 替代单元测试、集成测试或人工 review
  • 让模型自动改代码并无人确认地合并
  • 对误报零容忍、无法接受保守 WARN
  • 没有 LLM API key,或不允许代码片段发给模型
快速开始

三样东西就能跑

一个 git 仓库、一个 LLM API key、reviewgate 命令。不绑定模型,OpenAI 兼容或 Anthropic 端点都行。

安装 — Linux / macOS
$ curl -fsSL https://raw.githubusercontent.com/\
    dengmengmian/ReviewGate/main/install.sh | sh
Windows (PowerShell)
PS> irm https://raw.githubusercontent.com/\
     dengmengmian/ReviewGate/main/install.ps1 | iex

不想直接跑远程脚本?可先下载 install.sh 审阅,或从 GitHub Releases 手动下载二进制。升级随时 reviewgate upgrade。

全局配置 + 审查
# 写一份全局配置,所有仓库通用
$ cat > ~/.reviewgate/config.toml <<EOF
provider = "deepseek"
[providers.deepseek]
protocol = "openai"
base_url = "https://api.deepseek.com/v1"
model    = "deepseek-v4-pro"
EOF

# key 用环境变量注入,不写进文件
$ export REVIEWGATE_API_KEY="your key"

$ reviewgate llm test     # 确认能连
$ reviewgate review       # 审查当前改动

CI 里:reviewgate review --fail-on block。退出码 0 放行 · 1 被闸口拦截 · 2 工具自身出错(配置/网络),三态分明便于重试或告警。

接入方式

一个引擎,多种形态

都只是调同一个 reviewgate CLI。CLI 为主、Action 用于 PR/CI;Claude Skill、Codex 与 AtomCode 是更薄的 agent 壳(experimental)。

主形态

CLI

本地或 CI 直接跑。支持工作区 / commit / 分支范围、JSON 输出、--intent 技术评审。

$ reviewgate review --from main --to HEAD
CI

GitHub Action

在 PR 上自动审查并回贴摘要 + 行内 suggestion,作者一键应用、人来把关。

uses: dengmengmian/ReviewGate/
      integrations/github-action@v0
experimental

Agent 壳:Claude / Codex / AtomCode

装进 Claude Code(用 /reviewgate 触发)、Codex(AGENTS.md)或 AtomCode(.atomcode/skills),在对话里调同一套引擎。比 CLI/Action 更薄、较新。

$ integrations/claude-skill/install-into-project.sh
$ integrations/codex/install-into-project.sh
$ integrations/atomcode/install-into-project.sh
常见问题

你可能想问的

和普通 AI code review 有什么不同?

它是一道闸口,不是又一个 reviewer。发现会去重、被独立证伪、按置信度过滤;低价值反馈默认折叠;超时或未审完会降级 WARN 并让 CI 非 0 退出,绝不把不完整的审查伪装成 PASS。

支持哪些模型或 provider?

不绑定模型。任何 OpenAI 兼容或 Anthropic 端点都行——DeepSeek、Kimi、GLM、通义、Claude 等,按团队成本、速度、上下文窗口自选。

会把我的代码发给第三方吗?

只发给你自己在配置里指定的 LLM 端点,没有别的服务器。审查链路默认只读:除非显式 --fix 且逐条确认,不写工作区、不执行任意 shell。

怎么接入 CI?

reviewgate review --fail-on block,退出码 0 放行 / 1 被闸口拦截 / 2 工具自身出错;或直接用 GitHub Action 在 PR 上自动审查并回贴行内 suggestion。

免费吗?

工具本身 MIT 开源、免费。你只需要为自己 LLM API 的用量付费。

误报会不会很多?

每条发现都过一遍带证据的证伪 Judge,再按置信度闸口过滤,低置信默认折叠。可调 block / warn 阈值,也可用 --samples 提高召回或 --no-judge 加速。

和 CodeRabbit / PR-Agent 有什么不同?

ReviewGate 不跑在第三方 SaaS 上,只调用你自己配置的 LLM 端点;审查链路默认只读,代码不离开你的基础设施。设计上更保守:宁可 WARN 也不把没审完的 PR 标成 PASS,并把去重、证伪、置信度闸口放在核心流程。

支持 GitLab / Azure DevOps 吗?

CLI 可在任何能跑 shell 的 CI 里使用(GitLab CI、Azure Pipelines、Jenkins、Buildkite 等),只要给 reviewgate 一个 git 工作区和 API key。GitHub Action 目前只支持 GitHub。

会修改我的代码吗?

默认只读。只有在显式使用 --fix 并且逐条确认后,才会把建议 patch 应用到工作区;不会自动提交或合并。

给你的 PR 加一道闸口

开源、MIT、不绑定模型。建议先用 WARN / 评论模式跑一阵,稳了再开 BLOCK 强制。