技术教程 · 阅读约 6 分钟

用 Python 30 行代码,让 AI 帮你审完整个 Git Repo(附封号避坑指南)

用 Python 30 行代码,让 AI 帮你审完整个 Git Repo(附封号避坑指南)

最近 V2EX 上封号帖子刷屏了——代充号、美区订阅号、过了 Cyber 认证的号,一个接一个。800 块充的号说没就没,连申诉都费劲。

但更讽刺的是:很多人买 ChatGPT Pro 的核心需求,其实就是代码审查。

今天教你用 API 直接实现这个需求,不依赖任何账号,不怕封号,成本还低 60%。


为什么账号方案越来越不可靠

从最近的帖子来看,封号原因五花八门:

  • 切换 Apple ID 多次订阅 → 触发风控
  • 代充号 → 支付异常直接封
  • 安卓端限制只能订 Plus → 官方在收紧渠道
  • 美区订阅 + Cyber 认证 → 照样封

根本原因:OpenAI 在持续收紧对非美国用户的风控。账号方案的本质是在和平台博弈,而 API 方案是正经的 B 端调用,逻辑完全不同。


目标:30 行代码实现 Repo 级代码审查

我们要做的事情很简单:

1. 遍历本地 Git repo 里所有 .py / .ts / .js 文件

2. 把每个文件内容喂给模型

3. 让模型输出:潜在 bug、安全隐患、可优化点

4. 汇总成一份 Markdown 报告

环境准备


pip install openai

完整代码


import os

import sys

from pathlib import Path

from openai import OpenAI



# 改一行 baseURL,国内直连,无需代理

client = OpenAI(

    api_key=os.environ.get("WULIANG_API_KEY", "your-api-key-here"),

    base_url="https://api2everything.xyz/v1"

)



EXTENSIONS = {".py", ".ts", ".js", ".go", ".java"}

MAX_FILE_CHARS = 8000  # 避免单文件超 token 限制



def review_file(filepath: Path) -> str:

    code = filepath.read_text(encoding="utf-8", errors="ignore")

    if len(code) > MAX_FILE_CHARS:

        code = code[:MAX_FILE_CHARS] + "\n\n# ... (truncated)"



    resp = client.chat.completions.create(

        model="claude-sonnet-4-5",  # 或换成 gpt-4o / deepseek-chat

        messages=[

            {

                "role": "system",

                "content": (

                    "你是一名资深代码审查工程师。"

                    "请用中文输出:1) 潜在 Bug 2) 安全隐患 3) 性能/可读性优化建议。"

                    "每项最多 3 条,没有问题就写「无」。格式用 Markdown。"

                )

            },

            {

                "role": "user",

                "content": f"文件:{filepath.name}\n\n```\n{code}\n```"

            }

        ],

        temperature=0.2,

    )

    return resp.choices[0].message.content



def review_repo(repo_path: str):

    root = Path(repo_path)

    files = [f for f in root.rglob("*") if f.suffix in EXTENSIONS

             and ".git" not in f.parts

             and "node_modules" not in f.parts]



    print(f"找到 {len(files)} 个文件,开始审查...\n")

    report_lines = ["# Code Review Report\n"]



    for f in files:

        print(f"  审查中: {f.relative_to(root)}")

        result = review_file(f)

        report_lines.append(f"## {f.relative_to(root)}\n")

        report_lines.append(result + "\n\n---\n")



    report = "\n".join(report_lines)

    out = root / "code_review_report.md"

    out.write_text(report, encoding="utf-8")

    print(f"\n✅ 报告已生成:{out}")



if __name__ == "__main__":

    path = sys.argv[1] if len(sys.argv) > 1 else "."

    review_repo(path)

运行方式


export WULIANG_API_KEY="sk-xxxx"

python review.py /path/to/your/project

几分钟后,项目根目录会出现一份 code_review_report.md,按文件逐一列出问题。


几个实用技巧

换模型只改一行


model="gpt-4o"          # OpenAI 旗舰

model="deepseek-chat"   # 性价比最高,适合大 repo

model="gemini-2.5-pro"  # 长上下文强,适合大文件

接口格式完全一致,不用改其他任何代码。

大 repo 加并发

文件多的时候可以用 concurrent.futures.ThreadPoolExecutor 并发请求,速度提升 3-5 倍,注意控制并发数在 5 以内避免触发限速。

只审 diff

如果只想审本次改动:


git diff HEAD~1 --name-only | xargs python review.py


关于费用

用 deepseek-chat 审一个中型项目(50 个文件,每文件约 200 行),大概消耗 50 万 token,官方价格约 ¥0.5,通过中转 API 还能再便宜一些。

对比 ChatGPT Pro 每月 ¥1400+,差距不是一个量级。


用的哪个 API

我用的是无量Api(api2everything.xyz),国内直连不需要代理,支持 OpenAI / Claude / Gemini / DeepSeek 等 300+ 模型,价格比官方便宜约 65%。注册就送 ¥1 余额,余额永久不过期,拿来跑这个脚本测试完全够用。

改 base_url 一行的事,其他代码零改动。


如果你跑起来遇到问题,或者想聊聊怎么把这个脚本接进 CI/CD 流程,评论区见。

觉得有用的话点个赞,后续还会出更多 API 实战教程。