
Human-in-the-Loop Cho CI/CD Agent: Đặt Cổng Approval Ở Đâu
Giao cho agent tự merge hay tự rollback là bỏ đúng checkpoint từng chặn quyết định sai. Cách đặt lại cổng approval thật, ngoài quyền CI runner.
Bạn giao cho agent quyết định "PR này an toàn để merge" hay "rollback này ổn để chạy" — và nhận ra mình vừa bỏ đúng checkpoint từng chặn những quyết định tệ trước khi nó chạm vào pipeline. Human-in-the-loop cho CI/CD agent thêm lại một cổng chấp thuận thật, trước khi deploy bot tự merge, áp dụng thay đổi infra, hoặc rollback production một mình.
Vì sao agent CI/CD cần một cổng chặn khác
Một agent CI/CD không phải đang viết blog — nó chỉ cách một lệnh terraform apply hoặc kubectl rollout là gây ra một outage thật. Pipeline truyền thống đã có cổng người: nút "Deploy to production" trong GitHub Actions, hoặc bước approval thủ công trong GitLab CI. Vấn đề là khi bạn giao luôn quyết định — "PR này có nên merge không", "rollback này có an toàn không" — cho agent, bạn đã bỏ đúng checkpoint từng chặn phán đoán sai trước khi nó chạm pipeline.
Cách sửa không phải là bỏ agent đi. Đó là đặt một bước chấp thuận thật giữa "agent quyết định điều này an toàn" và "pipeline thực thi nó" — bước này nằm ngoài CI runner, nên một agent bị compromise hoặc bị nhiễu không thể tự bỏ qua nó.
Cổng chấp thuận nằm ở đâu trong pipeline
Agent chạy bước của nó, tạo ra một plan (một diff, mô tả rollout, tóm tắt migration), và thay vì thực thi trực tiếp, nó đẩy plan đó thành một pending action rồi block job lại cho đến khi có người quyết định. Cách này hoạt động như một step bình thường trong bất kỳ hệ CI nào, vì về bản chất chỉ là một HTTP call kèm polling — không cần cấp quyền runner đặc biệt:
# .github/workflows/agent-deploy.yml
jobs:
agent-plan-and-gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Agent generates deploy plan
run: python ci/agent_plan.py > plan.json
- name: Request human approval before applying
env:
IMPRI_API_KEY: ${{ secrets.IMPRI_API_KEY }}
run: python ci/request_approval.py plan.json
- name: Apply only if approved
env:
IMPRI_API_KEY: ${{ secrets.IMPRI_API_KEY }}
run: python ci/apply_if_approved.py
Đây là ví dụ minh hoạ cấu trúc pipeline, không phải config chạy thẳng được — bạn cần thay bằng script approval nội bộ của team. Điểm quan trọng là job dừng ở bước approval và không có đường tắt nào để agent tự nhảy qua bước "Apply only if approved".
Áp dụng vào pipeline hiện có
Nếu team đang để agent tự merge hoặc tự rollback, việc đáng làm trước là tách rõ hai bước "agent đề xuất" và "pipeline thực thi" thành hai job riêng, với một cổng approval đứng giữa — đặt cổng đó ngoài quyền của CI runner, không phải một biến môi trường agent có thể tự set. Nếu pipeline của bạn đã có nút "Deploy to production" thủ công, phần việc còn lại chỉ là nối agent vào trước nút đó, không phải xoá nút đi.
Không spam, hủy đăng ký bất kỳ lúc nào.
Bài viết liên quan

ThinkReview MCP: Review PR Ngay Trong Claude Code
07 thg 8, 2026
