大多数开发者看到「Anthropic 推出面向 Claude Code 的 Agent 代码审查功能」,第一反应是:又多了一个能帮我 review PR 的 AI 工具。
其实,
AI 代码审查的真正价值,不是让 AI 替你读代码,而是让 review 这件事可以被 Python 脚本化、自动触发、全程无人值守。
InfoQ 昨天报道了 Anthropic 的这个新功能——Claude Code 现在可以以 Agent 模式在 CI 管道里自动分析 PR、生成审查意见。我读完发布文档,想聊聊这背后真正值得关注的是什么,以及今天就可以用 Python 自己搭起来的方案。
现象:大多数团队把 AI 代码审查当「升级版聊天」
现有团队使用 AI 代码审查的主流方式,大概分三种:
- 把代码粘贴到 Claude/ChatGPT 对话框,问「这段代码有没有问题」
- 用 GitHub Copilot 的内联 review 建议,边写边看
- 开 review 会,边看 diff 边把代码丢给 AI 问
这三种方式的共同点:人在中间。AI 是辅助,人来判断和触发。
工作量可能降了 20%,但流程本质没变——还是人去找问题,不是问题自动找人。Review 仍然是一件依赖排期和注意力的事。
本质:Anthropic 这次打开的是什么
从发布文档来看,Claude Code 的 Agent 审查真正改变的是触发模式:不是等人来问,而是 PR 一开,自动跑。
这意味着代码审查第一次具备了可以完全 Python 化的条件:
- GitHub Actions / GitLab CI 触发 Python 脚本
- 脚本调用 Anthropic SDK,传入 diff 和上下文
- 拿回审查意见,自动评论到 PR、打标签、@相关负责人
- 不需要任何人工干预,不占用任何人的注意力
这不是「AI 帮你 review」,这是「review 这件事变成了定时/触发任务」——和跑测试、跑 lint 一个性质。
影响:Python 脚本化代码审查,能做到什么程度
以下是今天就可以用 Python 搭起来的自动化审查 pipeline,从简到深。
层级一:基础 diff 审查(半小时上线)
import anthropic
import subprocess
client = anthropic.Anthropic()
def get_pr_diff(base_branch: str = "main") -> str:
result = subprocess.run(
["git", "diff", f"{base_branch}...HEAD"],
capture_output=True, text=True
)
return result.stdout
def review_diff(diff: str) -> str:
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=2048,
messages=[{
"role": "user",
"content": f"""你是一名 Python 高级工程师,请审查以下 diff:
{diff}
输出格式:
1. 潜在 Bug(每条具体到文件:行号)
2. 安全隐患(若有)
3. 代码风格问题(可选)
4. 总体评分 1-10 + 一句判断
"""
}]
)
return response.content[0].text
if __name__ == "__main__":
diff = get_pr_diff()
if diff.strip():
print(review_diff(diff))
else:
print("No diff found.")
实际收益: 首次配置约 30 分钟,之后每次 PR 零人工成本。按 Sonnet 4.6 定价,单次 2000 tokens 的 diff 约 0.06——可以忽略不计。
层级二:规则化 + 上下文注入(更精准)
纯 diff 审查有个盲区——丢失了函数的上下文:这个类有什么约束?这个参数从哪里来?AI 只看 diff,会漏掉跨文件的逻辑问题。
改进方案:额外传入受影响文件的完整版本:
def build_review_context(diff: str, changed_files: list[str]) -> str:
context_blocks = []
for filepath in changed_files[:5]: # 避免 context 超限,最多 5 个文件
try:
with open(filepath, encoding="utf-8") as f:
content = f.read()[:3000] # 截断防止 token 超支
context_blocks.append(f"### {filepath}\n```\n{content}\n```")
except FileNotFoundError:
pass
full_context = diff
if context_blocks:
full_context += "\n\n---\n## 受影响文件完整内容\n" + "\n\n".join(context_blocks)
return full_context
这一步让 AI 能发现「函数签名变了但调用方没更新」「新增参数与现有验证逻辑冲突」这类跨文件问题,误报率也会下降。
层级三:CI 集成 + 自动回写 PR(全自动无人值守)
# .github/workflows/ai-review.yml
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install anthropic PyGithub
- run: python scripts/ai_review.py
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
BASE_REF: ${{ github.base_ref }}
Python 脚本里加上 PyGithub 的 PR 评论 API,整条链路跑通:PR 开,审查跑,意见自动贴在 PR 评论区,不需要任何人手动触发。
重要的 token 预算控制:
MAX_DIFF_TOKENS = 8000 # 超过就截断或分段
def estimate_tokens(text: str) -> int:
return len(text) // 4 # 粗估,1 token ≈ 4 字符
def safe_truncate(diff: str, max_tokens: int = MAX_DIFF_TOKENS) -> str:
if estimate_tokens(diff) > max_tokens:
return diff[:max_tokens * 4] + "\n\n[... diff truncated for token budget ...]"
return diff
不加截断的话,大 PR 单次可能消耗几万 tokens,一个月成本会失控。
预判:这条路的终点在哪里
短期(6–12 个月): 基础 diff 审查会成为很多团队 CI 的默认步骤,像 lint 和单测一样"理所当然"。人工 review 专注在架构意图和业务逻辑正确性,格式、安全合规、命名规范给 Agent 处理。
中期: 会出现专门做代码审查自动化的 Python 库封装——类似 pre-commit 生态,配置一行,规则插件化,不需要每个团队从头搭。
长期(推测): Anthropic 昨天同时测试了 agent-on-agent marketplace,代码审查可能变成一个按需购买的「服务」,而不是一个需要维护的脚本。主 Agent 完成某个任务时,自己决定调用一个专业代码审查 Agent,按次计费。
这个方向能不能落地,现在下结论太早。但往这个方向理解,比「又多了一个聊天辅助工具」要准确得多。
FAQ
Q:AI 代码审查误报率高怎么处理?
初期确实明显,尤其是在不理解业务约定的情况下。两个有效解法:
一是在 system prompt 里注入项目约定(「这个函数允许返回 None,下游会处理空值」「这个类故意不继承基类,历史原因」),让 AI 有上下文;
二是加置信度字段——让 AI 在每条意见后标注 [HIGH/MEDIUM/LOW],只有 HIGH 置信度的意见才自动评论到 PR,其余写入日志供人工抽查。两周后统计误报率,调整阈值。
Q:用 Claude API 自建还是直接用 Claude Code 内置 Agent?
不互斥,场景不同。Claude Code 的 Agent 模式适合本地开发时的即时 review,对话式,上下文连续;用 Anthropic SDK 自建的 Python 脚本更适合 CI 集成——可以定制规则、控制 token 预算、跨仓库统一配置、把结果写入数据库做长期追踪。两条线并行,不冲突。
Q:哪类代码用 AI 审查收益最高?
最高: 安全相关代码(SQL 拼接、输入验证、权限边界检查)、有明确规范的 API 接口层、高重复模式的业务逻辑。
一般: 高度定制化的算法实现、强依赖业务上下文的核心决策逻辑——这类还是需要有领域知识的人来判断。