很多人用 AI 编程,还停留在“问一句、补一段”的阶段。效率有提升,但有限。专业团队的做法不是让 AI 多写代码,而是把它嵌入研发生命周期:编码、审查、测试、文档、CI。目标只有一个——缩短反馈周期,降低重复劳动,同时不牺牲质量。
用 GitPython 或 subprocess 获取 diff,调用大模型做结构化审查,输出 JSON,方便接入评论机器人。
import os, json, subprocess
from openai import OpenAI
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
def get_diff(base="main"):
return subprocess.check_output(
["git", "diff", f"{base}...HEAD"], text=True
)
def review_code(diff):
prompt = f"""你是资深工程师,请审查以下 git diff。
要求:
1. 只指出 bug、安全、性能、可维护性问题;
2. 按严重程度排序;
3. 输出 JSON 对象,字段:issues,数组元素含 file、line、severity、issue、suggestion。
diff:
{diff}
"""
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0.2,
response_format={"type": "json_object"}
)
return json.loads(resp.choices[0].message.content)
if __name__ == "__main__":
diff = get_diff()
if diff.strip():
result = review_code(diff[:12000]) # 截断,避免超 token
print(json.dumps(result, ensure_ascii=False, indent=2))注意:diff 可能包含密钥,建议先做正则过滤;AI 审查结果必须人工复核,不能直接合并。
让 AI 根据函数签名生成 pytest 用例,再本地运行,用覆盖率工具验证。
def build_test_prompt(func_code):
return f"""为以下 Python 函数生成 pytest 单元测试。
要求:
- 覆盖正常、边界、异常;
- 使用 pytest.raises 处理异常;
- 不要过度 mock。
函数:
{func_code}
"""
# 调用大模型后,把结果保存为 test_generated.py
# 然后执行:
# pytest -q test_generated.py
# coverage run -m pytest && coverage report关键点:AI 生成的测试必须实际跑通,否则只是“看起来像测试”。建议把这一步放进 CI,不通过就阻断合并。
在 GitHub Actions 中,把测试和 AI 审查串起来。只有测试通过,才执行 AI 审查。
name: ai-review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: pip install openai pytest
- run: pytest -q
- run: python review.py
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}生产环境还要加:超时、重试、成本上限、缓存相同 diff、结果只读评论不自动改代码。
AI 编程提效的本质,不是让 AI 替代工程师,而是把工程师从重复劳动中解放出来,专注架构、边界和业务。先从一个自动审查脚本开始,再接入测试和 CI,形成可度量的闭环。工具会变,但“可验证、可回滚、可合规”的工程原则不会变。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。