Một vòng lặp sự kiện chạy khi có chuyện xảy ra trong công cụ bạn đã kết nối. Không lịch, không nghi thức giao việc, không ai gõ prompt: pull request vừa mở là review đã chạy, trước cả khi có người kịp đổi tab.
Chỉ dẫn của nó là hướng dẫn thường trực đặt chồng lên những gì sự kiện vốn đã mang theo. Goblin tự động nhận merge request hoặc issue làm ngữ cảnh; chỉ dẫn của bạn nói cho nó biết bạn muốn làm gì với thứ đó.
Những sự kiện bạn có thể đặt vòng lặp
| Sự kiện | Nguồn | Chạy khi |
|---|---|---|
| Merge request được mở | GitLab | MR được mở, mở lại, hoặc cập nhật bằng commit mới |
| Issue được giao | GitLab | Issue được giao cho bot @taskgoblin |
| Pull request được mở | GitHub | PR được mở, mở lại, hoặc cập nhật bằng commit mới |
| Issue được gắn nhãn | GitHub | Nhãn taskgoblin được thêm vào issue |
| Issue được giao | Linear | Issue được giao cho tác nhân TaskGoblin |
| Issue được giao | Jira | Issue được giao cho tài khoản TaskGoblin |
Vì các sự kiện "được mở" bao gồm cả cập nhật, vòng lặp review sẽ đối chiếu thay vì lặp lại: ở lượt thứ hai nó đọc những điểm đã nêu lần trước, đóng những điểm bạn đã sửa, và chỉ đăng những gì thật sự mới.
Những vòng lặp bạn đã có sẵn
Bạn không bắt đầu từ trang trắng. Ngay khi một nhà cung cấp tồn tại cho tổ chức của bạn, TaskGoblin cài các vòng lặp mặc định của nhà cung cấp đó:
- GitLab — Review merge request và Xử lý issue được giao.
- GitHub — Review pull request và Xử lý issue gắn nhãn.
- Linear — Xử lý issue được giao.
- Jira — Xử lý issue được giao.
Chúng tái hiện đúng những gì người ta mong đợi ở một tác nhân lập trình vừa mở hộp. Khác biệt là chúng thuộc về bạn: các vòng lặp thật trên trang Loops, với chỉ dẫn bạn đọc được và sửa được.
Việc cài đặt chỉ diễn ra một lần, vĩnh viễn. Xóa một vòng lặp mặc định thì nó ở lại trạng thái đã xóa — kết nối lại nhà cung cấp cũng không lặng lẽ mang nó về.
Viết lại chỉ dẫn mới là điểm mấu chốt
Chỉ dẫn review mặc định yêu cầu tính đúng đắn, bảo mật và khả năng bảo trì, và bảo goblin im lặng khi thay đổi đã ổn. Đó là điểm khởi đầu hợp lý, không phải chính sách bạn bị trói vào. Các đội thường thu hẹp hoặc mở rộng nó:
- "Chỉ nêu vấn đề bảo mật và rủi ro mất dữ liệu. Không gì khác."
- "Nghiêm với độ phủ test — mọi thay đổi hành vi đều cần test; thiếu thì nói ra."
- "Kiểm tra thêm là mọi endpoint mới đều đi qua middleware giới hạn tần suất của chúng tôi."
Chỉ dẫn là văn bản tự do, nên nó mã hóa được những thứ linter không làm được: quy ước của các bạn, sự cố đã xảy ra, lỗi mà đội này cứ lặp lại.
Bản mặc định, và một bản siết chặt hơn
Đây là bản đi kèm sản phẩm:
Review merge request này. Tập trung vào tính đúng đắn, bảo mật và khả năng bảo trì — nêu vấn đề thật, đừng bắt lỗi phong cách mà linter đã bắt được. Chỉ để lại bình luận nội tuyến ở nơi thật sự có giá trị, giữ chúng cụ thể và làm được, và im lặng khi thay đổi đã ổn.
Nó cố tình chừng mực, vì một người review bình luận mọi thứ rốt cuộc sẽ bị tắt tiếng. Và đây là cùng vòng lặp đó sau khi một đội sống với nó một tháng và trải qua một sự cố:
Review merge request này về tính đúng đắn, bảo mật và khả năng bảo trì. Nêu vấn đề thật, không phải lỗi phong cách.
Ngoài ra luôn kiểm tra: mọi thay đổi hành vi đều có test; không endpoint mới nào ra mà thiếu middleware giới hạn tần suất của chúng tôi; không migration nào sửa một file migration đã có; không chỗ nào ghi log toàn bộ thân request. Nêu những điểm này ở mức nghiêm trọng kể cả khi phần còn lại vẫn ổn.
Nếu MR dài hơn 400 dòng, hãy nói rõ trong phần tóm tắt và review các file rủi ro nhất trước thay vì lướt qua tất cả. Im lặng khi thay đổi đã ổn.
Không có gì kỳ lạ ở bản thứ hai — đó là tri thức của tổ chức từng nằm trong một wiki không ai mở, nay được gắn vào đúng thời điểm nó có ý nghĩa. Đó là khác biệt giữa một vòng lặp bạn thừa hưởng và một vòng lặp thuộc về bạn.
Công tắc tắt
Phần này đáng đọc hai lần, vì nó giải thích một hành vi mà nếu không sẽ trông như lỗi.
Một sự kiện thuộc diện vòng lặp mà không có vòng lặp đang bật nào khớp thì sẽ không khởi chạy gì cả. Tạm dừng vòng lặp review và các merge request thôi được review. Xóa nó cũng vậy. TaskGoblin vẫn nhận webhook — chỉ là không có chỉ dẫn thường trực nào để hành động, nên không goblin nào thức dậy và không tính phí gì.
Đó là cái giá của việc hành vi thuộc về bạn thay vì bị áp lên bạn. Nếu review tự động đã ngừng, nơi đầu tiên cần nhìn là vòng lặp của nó còn bật hay không.
Những gì không bao giờ bị vòng lặp chi phối
Yêu cầu rõ ràng từ con người luôn chạy, dù có vòng lặp hay không:
@taskgoblinđược nhắc trong merge request, pull request hoặc bình luận issue- Một tin nhắn hoặc lời nhắc trong Slack hay Microsoft Teams
- Một bình luận tiếp nối trên issue Linear mà goblin đang làm
- Một lời nhắc trong bình luận issue Jira
- Trả lời
@taskgoblin fixvào chính bình luận review của nó
Nếu một người đã hỏi trực tiếp, goblin trả lời. Vòng lặp chỉ chi phối phần việc không được yêu cầu, và chỉ phần đó.
Khi nhiều vòng lặp cùng khớp
Không gì cấm bạn chạy nhiều vòng lặp trên cùng một sự kiện — một vòng lặp review chung cộng với một vòng lặp khắt khe hơn cho bảo mật, chẳng hạn. Khi một sự kiện khớp nhiều vòng lặp, goblin được xem toàn bộ các chỉ dẫn ứng viên và tự phán đoán cái nào áp dụng, rồi ghi lựa chọn đó vào lượt chạy để lịch sử luôn trung thực. Công việc vẫn diễn ra như một lượt chạy duy nhất: vòng lặp không nhân lên thành các bản review trùng nhau trên cùng một merge request.
Đi tiếp ở đâu
- Vòng lặp theo lịch — loại kích hoạt còn lại, cho công việc mà không sự kiện nào báo trước.
- Kết nối các tích hợp của bạn — bạn có thể đặt vòng lặp trên nhà cung cấp nào và mỗi cái mở ra điều gì.
- Lượt chạy tức thời — những yêu cầu trực tiếp đi vòng qua vòng lặp hoàn toàn.