技术教程 · 阅读约 8 分钟

用 30 行 Python 让 Claude Opus 4 帮你审完整个代码仓库

用 30 行 Python 让 Claude Opus 4 帮你审完整个代码仓库

很多人用 AI 审代码的方式是:打开对话框,粘贴一个文件,等回复,再粘贴下一个。

这不叫 AI 辅助开发,这叫手动搬运。

真正省时间的做法是:写一个脚本,把整个 repo 喂给模型,让它一次性给你输出所有问题。本文就教你怎么做,代码可以直接跑。


为什么选 Claude Opus 4?

Claude Opus 4 在代码理解上有几个明显优势:

  • 长上下文:支持 200K token,一个中型项目的核心代码基本能塞进去
  • 结构化输出稳定:让它按格式输出问题列表,很少跑偏
  • 对潜在 bug 的嗅觉:比 GPT-4o 更倾向于指出逻辑隐患,而不只是风格问题

当然,Opus 4 官方价格不便宜。后面会说怎么省钱。


思路

1. 遍历 repo,收集所有 .py / .ts / .js 等源文件

2. 把文件内容拼成一个大 prompt,附上文件路径作为上下文

3. 调用 Claude API,要求它按固定格式输出审查结果

4. 把结果写成 Markdown 报告

整个流程不超过 50 行代码。


完整代码


#!/usr/bin/env python3

"""

repo_review.py — 用 Claude Opus 4 审查整个代码仓库

依赖: pip install openai

"""



import os

import sys

from pathlib import Path

from openai import OpenAI



# ── 配置 ──────────────────────────────────────────────

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

OUTPUT_FILE = "review_report.md"

MAX_CHARS   = 180_000          # 留一些余量给 system prompt 和回复

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



client = OpenAI(

    api_key  = os.environ["OPENAI_API_KEY"],   # 填你的 key

    base_url = "https://api2everything.xyz/v1" # 国内直连,无需代理

)



# ── 收集源文件 ─────────────────────────────────────────

def collect_files(root: str) -> list[tuple[str, str]]:

    files = []

    skip  = {"node_modules", ".git", "__pycache__", ".venv", "dist", "build"}

    for path in sorted(Path(root).rglob("*")):

        if any(p in path.parts for p in skip):

            continue

        if path.suffix in EXTENSIONS and path.is_file():

            try:

                content = path.read_text(encoding="utf-8", errors="ignore")

                files.append((str(path.relative_to(root)), content))

            except Exception:

                pass

    return files



# ── 构建 prompt ────────────────────────────────────────

def build_prompt(files: list[tuple[str, str]]) -> str:

    parts  = []

    total  = 0

    for rel_path, content in files:

        block  = f"\n\n### 文件: {rel_path}\n```\n{content}\n```"

        if total + len(block) > MAX_CHARS:

            parts.append("\n\n[后续文件因长度限制已截断]")

            break

        parts.append(block)

        total += len(block)

    return "".join(parts)



# ── 调用模型 ───────────────────────────────────────────

SYSTEM = """你是一位资深代码审查工程师。

请审查用户提供的代码,按以下格式输出 Markdown 报告:



## 总体评价

(2-3 句话概括)



## 问题列表

| 严重程度 | 文件 | 行(估计) | 问题描述 | 建议修复 |

|----------|------|-----------|----------|----------|



严重程度分三级:🔴 高危 / 🟡 中危 / 🟢 建议优化



## 亮点

(值得保留的好写法)



只输出 Markdown,不要额外解释。"""



def review(prompt: str) -> str:

    resp = client.chat.completions.create(

        model    = "claude-opus-4-5",

        messages = [

            {"role": "system",  "content": SYSTEM},

            {"role": "user",    "content": f"请审查以下代码:{prompt}"}

        ],

        max_tokens = 4096,

    )

    return resp.choices[0].message.content



# ── 主流程 ─────────────────────────────────────────────

if __name__ == "__main__":

    print(f"📂 扫描仓库: {REPO_PATH}")

    files = collect_files(REPO_PATH)

    print(f"📄 找到 {len(files)} 个源文件")



    prompt = build_prompt(files)

    print(f"📝 Prompt 长度: {len(prompt):,} 字符,开始审查...")



    report = review(prompt)



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

    print(f"✅ 报告已保存到 {OUTPUT_FILE}")


使用方法


# 安装依赖

pip install openai



# 设置 API Key(用无量Api 的 key)

export OPENAI_API_KEY="sk-xxxx"



# 审查当前目录

python repo_review.py .



# 审查指定项目

python repo_review.py ~/projects/my-app

跑完会在当前目录生成 review_report.md,直接用 Typora 或 VS Code 打开就能看。


几个实用改进方向

只审查 git diff(适合 PR 场景):


import subprocess

diff = subprocess.check_output(

    ["git", "diff", "main...HEAD"], text=True

)

# 把 diff 内容替换 prompt 里的文件内容

并发审查多个模块(大型 monorepo):


from concurrent.futures import ThreadPoolExecutor



modules = ["src/auth", "src/api", "src/db"]

with ThreadPoolExecutor(max_workers=3) as ex:

    results = list(ex.map(lambda m: review(build_prompt(collect_files(m))), modules))

接入 CI/CD:把脚本加到 GitHub Actions,每次 PR 自动生成审查报告,评论到 PR 里。


关于费用

Claude Opus 4 官方价格是 $15 / 1M input tokens。一个中型项目跑一次大概消耗 50K-100K tokens,算下来每次审查 $0.75-$1.5。

如果用 无量Api,同样的模型便宜约 65%,SVIP 还有 7.7 折。base_url 换一行,key 换一下,其他代码完全不用动——因为接口格式和 OpenAI 完全兼容。国内用户还有个额外好处:直连不需要代理,延迟更稳定。注册就送 ¥1 余额,先试试再说。


小结

核心逻辑就三步:收集文件 → 拼 prompt → 调 API。真正花时间的是调 system prompt,让模型输出你想要的格式。上面给的 prompt 经过几轮迭代,输出的表格基本不需要再整理。

有问题或者跑出来结果不对的,评论区说一下,我看到都会回。觉得有用的话点个赞,后续还会写「让 AI 自动写单测」和「用 Claude 做架构图生成」。