Vòng lặp

Một vòng lặp là trình kích hoạt và một chỉ dẫn. Mọi thứ TaskGoblin làm đều là một vòng lặp — review mã, nhận issue, dọn dẹp ban đêm — và đó là lý do công việc diễn ra mà không ai phải nhớ để yêu cầu.

Phần lớn công cụ AI cho lập trình xoay quanh một prompt. Bạn mô tả điều mình muốn, tác nhân trả lời, và cuộc trao đổi kết thúc. Cách đó ổn cho tới đúng lúc thứ có giá trị không còn là một câu trả lời hay mà là cùng một công việc diễn ra đáng tin cậy, mỗi lần, mà không ai phải nhớ để yêu cầu.

TaskGoblin thay vào đó được xây quanh một vòng lặp.

Vòng lặp là trình kích hoạt và chỉ dẫn

Đó là toàn bộ đơn vị cơ bản.

  • Trình kích hoạt quyết định khi nào các goblin thức dậy. Nó là sự kiện — pull request được mở, issue được giao cho goblin — hoặc một lịch: mỗi ngày làm việc lúc 07:00.
  • Chỉ dẫn là ngôn ngữ thường, mô tả phải làm gì khi đó. "Review merge request này về tính đúng đắn và bảo mật — nêu vấn đề thật, đừng bắt lỗi phong cách mà linter đã bắt." Hoặc: "Kiểm tra acme/web xem có bản nâng cấp phụ thuộc an toàn không, chạy test, rồi mở merge request."

Ghép hai thứ lại, bạn không còn một yêu cầu mà có một năng lực thường trực. Không ai cần ngồi trước bàn phím, và không ai cần phải nhớ.

Mọi thứ đều là vòng lặp

Đây không phải một tính năng đặt cạnh sản phẩm — nó chính là sản phẩm. Những hành vi bạn tưởng là phép màu tích hợp sẵn đều là vòng lặp bình thường:

Nhìn từ bên ngoài Vòng lặp bên dưới
Mọi pull request đều được review Vòng lặp sự kiện trên pull request được mở
Giao một issue, nhận lại merge request Vòng lặp sự kiện trên issue được giao
Phụ thuộc luôn mới mà không cần ticket Vòng lặp theo lịch mỗi thứ Hai lúc 08:00
Tài liệu không bao giờ lệch khỏi mã Vòng lặp theo lịch mỗi thứ Tư
Bản tóm tắt tới Slack mỗi sáng Vòng lặp theo lịch lúc 09:00

Khi bạn kết nối GitLab hoặc GitHub, TaskGoblin cài sẵn một bộ khởi đầu — đó là lý do review mã bắt đầu chạy trước cả khi bạn cấu hình bất cứ thứ gì. Chúng không có gì đặc biệt: mở ra, đọc chỉ dẫn, viết lại theo lời của bạn, tạm dừng, hoặc xóa.

Một lượt của vòng lặp

Mọi lượt đều chạy như nhau, dù trình kích hoạt là webhook hay đồng hồ, dù là lượt đầu tiên hay lượt thứ năm trăm:

  1. Kích hoạt. Trình kích hoạt khớp. TaskGoblin mở — hoặc dùng lại — một luồng cho phần việc đó.
  2. Ngữ cảnh. Goblin đọc issue, luồng, diff, quy ước của tổ chức bạn, và ghi chú các goblin trước để lại, trước khi đụng vào bất cứ thứ gì.
  3. Làm việc. Nó chạy trong sandbox đám mây tách biệt có bản checkout kho mã của bạn: đọc tệp, sửa tệp, chạy lệnh và test.
  4. Bàn giao kết quả. Nó mở merge request, để lại bình luận review nội tuyến, hoặc trả lời trong luồng — nơi công việc đó thuộc về.
  5. Chuyển giao. Nó ghi lại những gì học được và những gì còn dở dang, để lượt sau bắt đầu từ đó thay vì từ con số không.

Bước 5 là thứ tách vòng lặp khỏi cron. Mỗi lượt đều được thông tin từ những lượt trước, nên một vòng lặp chạy hằng tuần suốt một năm không phải là cùng một vòng lặp lặp lại trăm lần — mà là một vòng lặp đã luôn để ý.

Vì sao vòng lặp thắng prompt

  • Nó chạy không cần bạn. Công việc đã xong khi bạn nhìn tới, thay vì chờ ai đó nhận ra là cần làm.
  • Nó review được. Mỗi lượt kết thúc bằng một nhánh và một merge request, review y như của đồng nghiệp. Không gì tự merge.
  • Nó tích lũy. Sửa goblin một lần và điều sửa đó được ghi lại cho mọi goblin sau này.
  • Nó có công tắc. Vòng lặp là một dòng thuộc về bạn. Tạm dừng và hành vi dừng ngay lập tức.

Vòng lặp sống ở đâu

Quản lý chúng ở khu Loops của tổ chức (/{organisation}/loops). Mỗi vòng lặp có trang riêng: chỉ dẫn, trình kích hoạt, nút Bật/Tắt, và lịch sử các lượt chạy gần đây — để bạn thấy nó thực sự đã làm gì thay vì tin rằng nó đã chạy.

Goblin cũng có thể tự tạo vòng lặp giữa chừng một lượt chạy. Một goblin nhận ra bạn yêu cầu cùng một thứ mỗi thứ Sáu có thể đề xuất chính vòng lặp xóa bỏ việc phải yêu cầu.

Đi tiếp ở đâu