TopDev AI Robot TopDev
#AI & Trợ lý lập trình#DevOps & Cloud

Xây dựng AI Agent tự động review Pull Request trên GitHub Actions với Claude API

Hoàng Nam (Tech Lead)
📖 2 phút đọc 💬 1 phản hồi
⚡ Tóm tắt 30 giây bởi TopDev AI
AI Overview

Giảm tải gánh nặng Code Review cho Senior Dev Trong các team công nghệ bận rộn, việc các Pull Request PR phải chờ cả ngày để được review là điểm nghẽn lớn trong quy trình phát triển. Tích hợp một AI …

☰ Mục lục bài viết (4 phần) Mở / Đóng mục lục

Giảm tải gánh nặng Code Review cho Senior Dev#

Trong các team công nghệ bận rộn, việc các Pull Request (PR) phải chờ cả ngày để được review là điểm nghẽn lớn trong quy trình phát triển. Tích hợp một AI Code Reviewer chạy tự động ngay khi mở PR giúp:

  • Bắt sớm các lỗi typo, vi phạm naming convention, thiếu test case.
  • Cảnh báo các nguy cơ bảo mật tiềm ẩn (SQL injection, Hardcoded secrets).
  • Đưa ra gợi ý tối ưu hiệu năng ngay trên từng dòng diff.

Thiết lập GitHub Action Workflow#

Tạo file .github/workflows/ai-pr-review.yml:

YAML
name: AI PR Code Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
      contents: read
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Lấy mã nguồn git diff
        id: diff
        run: |
          git diff origin/${{ github.base_ref }}...HEAD > pr_diff.txt

      - name: Chạy script review bằng Claude API
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PR_NUMBER: ${{ github.event.pull_request.number }}
        run: |
          node scripts/ai-review-pr.mjs

Script phân tích diff thông minh bằng TypeScript#

TYPESCRIPT
import Anthropic from '@anthropic-ai/sdk';
import { Octokit } from '@octokit/rest';
import fs from 'node:fs';

const anthropic = new Anthropic();
const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });
const diff = fs.readFileSync('pr_diff.txt', 'utf-8');

// Chỉ gửi diff nếu dung lượng dưới 100k ký tự
if (diff.length > 0 && diff.length < 100000) {
  const message = await anthropic.messages.create({
    model: 'claude-3-5-haiku-20241022', // Dùng Haiku để tiết kiệm chi phí và chạy nhanh
    max_tokens: 1500,
    system: 'Bạn là Senior Tech Lead khó tính nhưng mang tính xây dựng. Hãy review đoạn git diff sau và đưa ra nhận xét ngắn gọn, kèm đề xuất code sửa.',
    messages: [{ role: 'user', content: diff }]
  });

  const reviewComment = (message.content[0] as any).text;
  await octokit.issues.createComment({
    owner: 'your-org',
    repo: 'your-repo',
    issue_number: Number(process.env.PR_NUMBER),
    body: `### 🤖 TopDev AI Code Review Summary\n\n${reviewComment}`
  });
}

Góc thảo luận#

Anh em có tin tưởng vào nhận xét của AI bot trên GitHub không? Team anh em có quy định bắt buộc phải có ít nhất 1 người thật approve trước khi merge không?


Xem thêm nội dung liên quan:

Chia sẻ thảo luận này:

Thảo luận

1 phản hồi

Ý kiến từ cộng đồng kỹ sư TopDev
💬

Tham gia thảo luận

Cộng đồng mở · Đăng nhập 1-chạm qua Google
  1. Lan Anh (Senior Frontend)
    #1

    AI review rất hữu ích ở khâu bắt các lỗi ngớ ngẩn như quên xóa console.log, đặt tên biến không chuẩn hoặc thiếu dependency trong useEffect. Nhưng với logic nghiệp vụ kinh doanh thì vẫn bắt buộc phải có Senior Dev duyệt qua.

Bài liên quan trong #AI & Trợ lý lập trình

1
TopDev AI Companion
AI
✓ Đã sao chép link