AI Code Review
AI Code Review与CI/CD工作流
在您的项目中添加.gitea/workflows/code-review.yml , 这里使用kekxv/AiReviewPR@v0.0.6来进行AI Code Review
name: ai-reviews
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Review code
uses: kekxv/AiReviewPR@v0.0.6
with:
model: ${{ vars.MODEL }}
host: ${{ vars.OLLAMA_HOST }}
REVIEW_PULL_REQUEST: falseDevStar代码托管平台中项目设置、用户设置和后台管理中都可以设置变量vars.MODEL、vars.OLLAMA_HOST等。
AI Code Review详解
一、核心工作流程说明
AI Code Review 的执行过程如下:
- 触发条件
- 当有人新建 PR(pull_request/opened)
- 或更新了 PR(pull_request/synchronize) → 工作流自动开始执行。
- 代码检出(Checkout) 使用 actions/checkout 拉取 PR 的代码差异,为审查准备上下文。
- 调用 AiReviewPR Action
- Action 会读取 PR 的 diff、文件内容与上下文。
- 将这些内容组装为审查提示(prompt)。
- 调用你配置的大模型(Ollama、OpenAI 兼容接口等)。
- 获得模型输出后,自动写入 PR 评论区或输出到日志。
- 输出结果
- 如果
REVIEW_PULL_REQUEST=true→ 自动在 PR 下评论。 - 如果为 false → 只在日志输出,便于本地验证。
- 如果
二、AiReviewPR 的内部实现机制
以下是 Action 的实际工作方式(代码见 GitHub):
1. 自动收集 PR 信息
Action 会自动读取:
- PR 编号、作者、提交信息
- diff 内容(新增、删除、修改)
- 受影响的文件内容
读取 PR Diff
const diff = await octokit.pulls.get({
...github.context.issue,
mediaType: { format: "diff" },
}).then(r => r.data);2. 构建审查 Prompt
Prompt 会自动包含:
代码变更摘要
修改前/修改后的代码片段
模型需要回答的格式,例如:
1. 潜在Bug 2. 代码风格问题 3. 性能优化 4. 安全风险 5. 重构建议
3. 调用大模型 API
AiReviewPR 支持任意 OpenAI API 兼容模型,例如:
- 本地 Ollama
- OpenAI、DeepSeek、Qwen 公开服务
- 私有化模型服务
只需提供:
vars.MODEL
vars.OLLAMA_HOSTAction 会自动发送:
{
"model": "qwen2.5:14b",
"messages": [
{"role": "system", "content": "..."},
{"role": "user", "content": "这是PR的代码修改内容..."}
]
}4. 返回数据解析
Action 提取模型的回答内容,将其转换为 Markdown,并根据配置输出为:
- GitHub/Gitea PR 评论 或
- 工作流日志(便于调试)
发布评论
await octokit.issues.createComment({
...github.context.issue,
body: review,
});