Trả lời nhanh: Ghép agent vào GitHub Actions hợp lý nhất với những việc kích hoạt theo sự kiện và trả về văn bản: bình luận rà soát khi có pull request mới, soạn mô tả thay đổi, tóm tắt lỗi khi luồng tự động thất bại. Ba việc bắt buộc về an toàn: khóa API để trong kho bí mật của kho mã nguồn, giới hạn quyền của luồng chạy, và không chạy trên thay đổi do người ngoài gửi tới nếu agent có quyền chạy lệnh.
Sau khi quen dùng agent hằng ngày, bước tiếp theo tự nhiên là để nó tự chạy khi có sự kiện. Bài này đi vào phần thực hành cụ thể với hệ thống tự động phổ biến nhất, gồm cả cách rào cho an toàn.
Bốn luồng đáng dựng
Rà soát khi có pull request. Agent đọc phần khác biệt và để lại bình luận về những điểm đáng chú ý. Đây là luồng nên dựng đầu tiên vì rủi ro thấp và giá trị thấy ngay.
Soạn mô tả thay đổi. Kích hoạt khi mở pull request mà phần mô tả còn trống.
Tóm tắt khi luồng tự động thất bại. Đọc nhật ký, tìm nguyên nhân khả dĩ, để lại bình luận. Tiết kiệm rất nhiều thời gian đọc nhật ký.
Cập nhật tài liệu. Khi phát hiện thay đổi ở phần giao diện lập trình, đề xuất bản cập nhật cho tài liệu tương ứng.
Điểm chung: kết quả là văn bản để người đọc, không phải thay đổi tự động vào nhánh chính. Đó cũng là ranh giới an toàn đã bàn ở bài chạy agent trong CI.
Khung một luồng cụ thể
name: Ra soat pull requeston: pull_request: types: [opened, synchronize] permissions: contents: read # chi doc ma nguon pull-requests: write # de lai binh luan jobs: ra-soat: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # can lich su de lay phan khac biet - name: Chay agent ra soat env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} run: | git diff origin/${{ github.base_ref }}...HEAD > /tmp/khac-biet.txt # goi agent voi noi dung khac biet, yeu cau tra ve toi da 5 phat hienKhối khai báo quyền ở trên rất quan trọng: mặc định luồng chạy có nhiều quyền hơn mức cần. Hãy khai báo tường minh và chỉ cấp đúng những gì luồng đó dùng.
Ba rào an toàn
Khóa API trong kho bí mật. Không bao giờ ghi trong file cấu hình luồng. Và nhớ rằng nội dung bí mật vẫn có thể lộ qua nhật ký nếu bạn in ra, nên đừng in biến môi trường khi gỡ lỗi.
Không chạy trên thay đổi từ người ngoài. Với kho mã nguồn công khai, một người lạ gửi pull request nghĩa là code của họ chạy trên hạ tầng của bạn. Nếu agent được phép chạy lệnh thì đây là lỗ hổng nghiêm trọng. Hãy dùng loại sự kiện chỉ kích hoạt cho thành viên, hoặc yêu cầu duyệt trước khi chạy.
Giới hạn quyền và giới hạn chi phí. Quyền của luồng theo nguyên tắc tối thiểu, và đặt trần chi phí cùng số vòng lặp cho agent, theo bài về quyền.
Chạy trên máy dùng chung hay máy tự host
Máy dùng chung tính theo phút. Agent rà soát một pull request thường nhanh, nhưng nếu bạn dựng thêm các luồng dài hơn thì con số cộng dồn.
Máy tự host cho ba lợi ích với luồng có agent:
- Chi phí cố định, không phải canh đồng hồ.
- Giữ được bộ nhớ đệm, nên phần cài đặt phụ thuộc không lặp lại ở mỗi lượt.
- Truy cập được hệ thống nội bộ nếu agent cần đọc tài liệu hay database trong mạng riêng.
Đổi lại bạn tự trông máy. Cách dựng nằm ở bài runner tự host, và cách bố trí bộ nhớ đệm ở bài về cache dùng chung.
Nhắc lại một điều quan trọng: không cho kho mã nguồn công khai chạy trên máy tự host của bạn, vì khi đó code của người lạ chạy trên máy trong mạng của bạn.
Lộ trình dựng dần
- Tuần đầu: luồng rà soát pull request, chỉ bình luận. Đọc các nhận xét của nó và đánh giá xem có hữu ích không.
- Tuần thứ hai: nếu nhận xét chất lượng, thêm luồng soạn mô tả thay đổi.
- Tháng sau: thêm luồng tóm tắt khi luồng tự động thất bại.
- Khi đã tin tưởng: cho nó đề xuất bản sửa dưới dạng pull request để người duyệt.
Đừng dựng cả bốn luồng cùng lúc. Mỗi luồng thêm vào là thêm một nguồn thông báo, và nếu chất lượng chưa tốt thì cả đội sẽ bắt đầu bỏ qua tất cả, kể cả những nhận xét đúng.
Bốn luồng theo thứ tự nên dựng
| Thứ tự | Luồng | Vì sao đặt ở đây |
|---|---|---|
| 1 | Tóm tắt thay đổi khi có yêu cầu gộp mã | Chỉ đọc, không sửa gì, dùng để làm quen và đo chi phí |
| 2 | Sửa lỗi định dạng và lỗi kiểm tra mã tự động | Kết quả kiểm chứng ngay bằng chính công cụ đó |
| 3 | Bổ sung bài kiểm thử cho phần mã mới thêm | Cần người xem lại, nhưng giá trị rõ ràng |
| 4 | Xử lý các phiếu lỗi đơn giản có nhãn riêng | Chỉ bật khi ba luồng trên đã chạy ổn định vài tuần |
Dựng cả bốn cùng lúc là sai lầm hay gặp. Khi có trục trặc bạn sẽ không biết luồng nào gây ra, và chi phí tăng nhanh hơn dự tính.
Những điểm bắt buộc trong bất kỳ luồng nào
# Nhung diem bat buoc trong bat ky luong nao: # 1. Kich hoat co dieu kien, khong chay voi moi lan day ma# Vi du chi chay khi yeu cau gop ma duoc gan mot nhan cu the # 2. Han muc thoi gian o muc cong viec# Mot cong viec treo khong duoc phep chay het han muc mac dinh # 3. Quyen toi thieu# Chi cap quyen ghi khi luong that su can tao nhanh hoac ghi binh luan # 4. Bi mat lay tu kho bi mat, khong bao gio ghi thang trong tep luong # 5. Ket qua LUON di qua yeu cau gop ma, khong bao gio gop thang # Kiem tra sau khi dung xong: tat may chu tich hop lien tuc di mot ngay# roi bat lai, xem luong co con chay dung khong. Nhieu luong phu thuoc# vao trang thai con sot lai ma tac gia khong biet.Máy dùng chung hay máy tự dựng
- Máy dùng chung: không phải quản lý gì, nhưng tính tiền theo phút và mỗi lần chạy đều bắt đầu từ máy trắng nên phải cài lại phụ thuộc.
- Máy tự dựng: giữ được bộ nhớ đệm giữa các lần chạy nên nhanh hơn nhiều với dự án lớn, chi phí cố định theo tháng, nhưng bạn phải tự vá lỗi bảo mật và tự dọn ổ đĩa.
- Ngưỡng thực tế: nếu tổng thời gian chạy mỗi tháng vượt vài chục giờ, máy tự dựng thường rẻ hơn và nhanh hơn. Dưới mức đó thì không đáng công quản lý.
Câu hỏi thường gặp
Có tốn nhiều tiền khi chạy agent trong luồng tự động không?
Tùy việc. Rà soát một pull request thường rẻ vì phần khác biệt ngắn. Hãy đặt trần chi phí và số vòng lặp, và theo dõi mức tiêu thụ trong vài tuần đầu để biết loại luồng nào tốn nhất.
Kho mã nguồn công khai có dùng được không?
Được nhưng phải cẩn thận: đừng để luồng chạy tự động trên thay đổi do người ngoài gửi nếu agent có quyền chạy lệnh. Hãy yêu cầu duyệt trước khi chạy, và không dùng máy tự host cho kho công khai.
Nên dùng máy dùng chung hay máy tự host?
Máy dùng chung tiện lúc bắt đầu. Chuyển sang tự host khi bạn chạy thường xuyên, khi cần giữ bộ nhớ đệm, hoặc khi agent cần truy cập hệ thống nội bộ trong mạng riêng.
Nhận xét của agent có đáng tin không?
Nó bắt tốt các lỗi máy móc như chuỗi bí mật lộ ra hay thiếu kiểm tra đầu vào. Phần đánh giá thiết kế thì kém hơn người. Hãy coi đó là một lớp lọc trước, không phải thay thế việc xem lại của đồng nghiệp.
