用 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 实战教程。