VPS

Chạy Claude Code trong CI, không cần ngồi canh

Thanh Nguyễn Đăng 9 phút đọc 2 khối lệnh

Chạy Claude Code trong CI, không cần ngồi canh
Mục lục bài viết
  1. Bốn việc đáng giao
  2. Cấp quyền cho môi trường không người trực
  3. Ba rào bắt buộc
  4. Chỗ chạy và chi phí
  5. Bắt đầu từ đâu
  6. Việc nào giao được cho luồng tự động, việc nào không
  7. Ba rào bắt buộc trước khi bật luồng tự động
  8. Khóa quyền truy cập cho môi trường không có người trực
  9. Bắt đầu nhỏ để biết mình đang tiêu bao nhiêu
  10. Câu hỏi thường gặp
  11. Bài viết liên quan

Trả lời nhanh: Chạy agent trong hệ thống tự động (CI) khác hẳn chạy tương tác: không có ai bấm đồng ý, không có ai phát hiện khi nó đi lệch. Bốn việc đáng giao và an toàn: rà soát thay đổi trong pull request, viết mô tả thay đổi, phân loại và tóm tắt lỗi từ nhật ký, và cập nhật tài liệu theo code. Nguyên tắc bất di bất dịch: agent chỉ đề xuất, con người mới gộp, và mọi thứ nó làm phải nằm trên nhánh riêng.

Sau khi quen dùng agent hằng ngày, ai cũng nghĩ tới việc để nó tự chạy trong hệ thống tự động. Ý tưởng đúng, nhưng nó đổi hoàn toàn bài toán an toàn: không còn bạn ngồi giữa để duyệt từng bước. Bài này nói việc nào nên giao và cách rào cho chắc.

Bốn việc đáng giao

Rà soát thay đổi trong pull request. Agent đọc phần khác biệt và nêu những điểm đáng chú ý: chuỗi bí mật lộ ra, thiếu kiểm tra đầu vào, truy vấn trong vòng lặp. Nó không thay người xem lại, nhưng nó bắt được những lỗi máy móc mà người hay lướt qua.

Viết mô tả thay đổi. Đọc phần khác biệt rồi soạn mô tả theo mẫu công ty, gồm mục đích, phạm vi ảnh hưởng và cách kiểm thử.

Phân loại và tóm tắt lỗi. Khi có sự cố, agent đọc nhật ký, gom các lỗi cùng loại và tóm tắt nguyên nhân khả dĩ kèm đường dẫn tới đoạn code liên quan.

Cập nhật tài liệu theo code. Khi một điểm cuối API đổi, nó đề xuất bản cập nhật cho tài liệu tương ứng.

Điểm chung của bốn việc: 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.

Cấp quyền cho môi trường không người trực

Danh sách cho phép phải đủ rộng để agent đi hết luồng việc, vì không ai bấm đồng ý. Bù lại danh sách cấm phải chặt hơn hẳn:

TerminalCấp quyền cho môi trường không người trựcbash
"permissions": {  "allow": [    "Bash(git diff:*)",    "Bash(git log:*)",    "Bash(npm test)",    "Bash(npm run lint)"  ],  "deny": [    "Bash(git push:*)",    "Bash(git reset:*)",    "Bash(rm -rf:*)",    "Bash(curl:*)",    "Bash(sudo:*)"  ]}

Lệnh gọi mạng nằm trong danh sách cấm vì một lý do cụ thể: nó là đường để dữ liệu trong repo đi ra ngoài. Nếu agent cần gọi một API nội bộ, hãy cấp qua một công cụ có kiểm soát chứ đừng mở lệnh gọi mạng chung.

Chi tiết về cách chọn mức quyền nằm ở bài về quyền, và phần cách ly ở bài về sandbox.

Ba rào bắt buộc

Một, không cho gộp tự động. Agent đề xuất, con người duyệt. Kể cả với thay đổi nhỏ như sửa lỗi chính tả trong tài liệu, vì thói quen tin tưởng tự động sẽ lan sang những thay đổi lớn hơn.

Hai, giới hạn số vòng và chi phí. Một lượt chạy tự động gặp việc không giải được sẽ thử mãi. Đặt trần cho số vòng lặp và hạn mức chi phí theo ngày, cùng cảnh báo khi chạm ngưỡng.

Ba, ghi nhật ký đầy đủ. Mọi lệnh nó chạy, mọi file nó đọc, kết quả từng bước. Đây là thứ bạn cần khi sáng hôm sau thấy một pull request lạ và muốn biết nó tới từ đâu.

Thêm một rào nữa với repo công khai: đừng chạy agent trên thay đổi do người ngoài gửi tới nếu nó có quyền chạy lệnh. Người lạ gửi một thay đổi và code của họ chạy trên máy của bạn là kịch bản không nên có.

Chỗ chạy và chi phí

Với máy CI dùng chung tính theo phút, agent chạy dài là khoản tốn. Với máy tự dựng, bạn trả cố định và không phải canh đồng hồ, đây là lý do nhiều đội chuyển sang máy riêng khi bắt đầu dùng agent trong luồng tự động, theo bài CI/CD tự host.

Ba lưu ý khi dựng:

  • Khóa API để trong hệ thống quản lý bí mật của CI, không ghi trong repo.
  • Chạy dưới tài khoản riêng ít quyền, không dùng tài khoản quản trị.
  • Làm việc trên bản sao repo, không phải trên thư mục chính mà các luồng khác đang dùng.

Về chi phí gọi mô hình, các kỹ thuật giữ ngữ cảnh gọn áp dụng y hệt và còn quan trọng hơn vì không có ai điều chỉnh giữa chừng, xem bài giảm token.

Bắt đầu từ đâu

Lộ trình bốn bước, mỗi bước chạy vài tuần trước khi sang bước sau:

  1. Rà soát pull request, chỉ bình luận. Rủi ro gần như không, và bạn đánh giá được chất lượng nhận xét của nó.
  2. Viết mô tả thay đổi. Vẫn chỉ là văn bản, nhưng bắt đầu tiết kiệm thời gian thật.
  3. Tóm tắt lỗi từ nhật ký khi có cảnh báo. Bước này cần cho nó quyền đọc log, nên hãy giới hạn đúng thư mục cần thiết.
  4. Đề xuất bản sửa cho các lỗi máy móc, dưới dạng pull request để người duyệt.

Đừng bắt đầu từ bước bốn. Ba bước đầu cho bạn hiểu agent xử lý repo của mình tốt tới đâu, và đó là thông tin bạn cần trước khi cho nó đề xuất thay đổi code.

Việc nào giao được cho luồng tự động, việc nào không

ViệcGiao được khôngGhi chú
Tóm tắt thay đổi trong một yêu cầu gộp mãĐượcChỉ đọc, không sửa gì, rủi ro gần bằng không
Sửa lỗi định dạng và lỗi kiểm tra mã tự độngĐượcKết quả kiểm chứng ngay bằng chính công cụ kiểm tra đó
Viết bổ sung bài kiểm thử cho mã vừa thêmĐược, có điều kiệnPhải có người xem lại trước khi gộp, xem bài về kiểm thử giả
Sửa lỗi trong mã nghiệp vụ rồi tự gộp nhánhKhôngKhông có người xem thì không ai chịu trách nhiệm cho thay đổi đó
Chạm vào tệp cấu hình hạ tầng hoặc bí mậtKhôngRủi ro không tương xứng với phần công sức tiết kiệm

Ba rào bắt buộc trước khi bật luồng tự động

  • Không bao giờ gộp thẳng vào nhánh chính. Luồng tự động chỉ được tạo nhánh mới và mở yêu cầu gộp. Người quyết định gộp luôn là người thật.
  • Giới hạn phạm vi tệp. Khai báo rõ thư mục được phép sửa. Mọi thứ nằm ngoài đó phải bị chặn ở tầng cấu hình chứ không dựa vào lời dặn.
  • Đặt hạn mức chi tiêu và hạn mức thời gian. Một vòng lặp hỏng chạy suốt đêm là chuyện đã xảy ra với nhiều đội.

Khóa quyền truy cập cho môi trường không có người trực

TerminalKhóa quyền truy cập cho môi trường không có người trựcbash
# Bi mat KHONG BAO GIO nam trong ma nguon hay trong tep cau hinh luong chay# Dat trong kho bi mat cua he thong tich hop lien tuc # Cap quyen theo nguyen tac it nhat:#  - chi doc voi kho ma, tru khi luong do can tao nhanh#  - khong cap quyen xoa nhanh#  - khong cap quyen doi cau hinh kho ma # Dat han muc thoi gian cho MOI buoc, khong chi cho ca luong# Mot buoc treo se bi cat thay vi chay het han muc cua ca luong # Ghi lai toan bo nhat ky moi lan chay va giu it nhat 30 ngay# Khi co su co, day la thu duy nhat cho biet chuyen gi da xay ra

Bắt đầu nhỏ để biết mình đang tiêu bao nhiêu

Bật luồng tự động cho đúng một việc trong một tuần, ghi lại chi phí và số lần kết quả dùng được. Con số này khác nhau rất nhiều giữa các dự án và không có cách nào đoán trước ngoài việc thử. Chỉ mở rộng sang việc thứ hai khi việc thứ nhất đã ổn định.

Câu hỏi thường gặp

Có nên cho agent tự gộp thay đổi không?

Không, kể cả với thay đổi nhỏ. Agent đề xuất, con người duyệt và gộp. Thói quen tin tưởng tự động ở việc nhỏ sẽ lan sang việc lớn, và đó là lúc rủi ro trở thành sự cố thật.

Chạy agent trong CI có tốn nhiều không?

Tùy việc và tùy cách bạn giới hạn. Việc rà soát pull request thường rẻ vì phần khác biệt ngắn. Hãy đặt trần số vòng lặp và hạn mức theo ngày, kèm cảnh báo khi chạm ngưỡng.

Nên chạy trên máy dùng chung hay máy riêng?

Máy riêng nếu bạn chạy thường xuyên, vì chi phí cố định và bạn không phải canh đồng hồ tính phút. Nhớ chạy dưới tài khoản ít quyền và không cho repo công khai chạy trên máy của bạn.

Việc nào không nên giao cho agent trong CI?

Mọi thứ tự động thay đổi nhánh chính, thao tác chạm tới hệ thống thật, và việc chạy trên thay đổi do người ngoài gửi tới. Ba loại này rủi ro vượt xa lợi ích.

Chia sẻ:Facebook

Thanh Nguyễn

TND

Tư vấn bản quyền, VPS và máy chủ kèm hóa đơn VAT, hợp đồng đầy đủ cho doanh nghiệp.