ลูปเหตุการณ์ จะทำงานเมื่อมีบางอย่างเกิดขึ้นในเครื่องมือที่คุณเชื่อมต่อไว้ ไม่มีการตั้งรอบเวลา ไม่มีพิธีมอบหมายงาน ไม่มีใครพิมพ์พรอมต์ — พูลรีเควสต์ถูกเปิด แล้วการรีวิวก็เริ่มไปแล้วก่อนที่ใครจะทันสลับแท็บด้วยซ้ำ
คำสั่งของมันคือแนวทางถาวรที่วางทับลงบนสิ่งที่เหตุการณ์นั้นมีอยู่แล้ว ก็อบลินจะได้รับเมิร์จรีเควสต์หรืออิชชูเป็นบริบทโดยอัตโนมัติ ส่วนคำสั่งของคุณบอกว่า คุณ อยากให้ทำอะไรกับมัน
เหตุการณ์ที่คุณตั้งลูปได้
| เหตุการณ์ | ต้นทาง | ทำงานเมื่อ |
|---|---|---|
| เมิร์จรีเควสต์ถูกเปิด | GitLab | MR ถูกเปิด เปิดใหม่ หรืออัปเดตด้วยคอมมิตใหม่ |
| อิชชูถูกมอบหมาย | GitLab | อิชชูถูกมอบหมายให้บอต @taskgoblin |
| พูลรีเควสต์ถูกเปิด | GitHub | PR ถูกเปิด เปิดใหม่ หรืออัปเดตด้วยคอมมิตใหม่ |
| อิชชูถูกติดเลเบล | GitHub | อิชชูถูกเพิ่มเลเบล taskgoblin |
| อิชชูถูกมอบหมาย | Linear | อิชชูถูกมอบหมายให้เอเจนต์ TaskGoblin |
| อิชชูถูกมอบหมาย | Jira | อิชชูถูกมอบหมายให้บัญชี TaskGoblin |
เพราะเหตุการณ์กลุ่ม "ถูกเปิด" ครอบคลุมการอัปเดตด้วย ลูปรีวิวจึงเป็นการ กระทบยอด ไม่ใช่การทำซ้ำ ในรอบที่สองมันจะอ่านสิ่งที่เคยชี้ไว้ ปิดรายการที่คุณแก้แล้ว และโพสต์เฉพาะสิ่งที่ใหม่จริง ๆ
ลูปที่คุณมีอยู่แล้ว
คุณไม่ได้เริ่มจากหน้าว่าง ทันทีที่ผู้ให้บริการรายหนึ่งมีอยู่ในองค์กรของคุณ TaskGoblin จะติดตั้งลูปเริ่มต้นของผู้ให้บริการนั้น
- GitLab — รีวิวเมิร์จรีเควสต์ และ ทำงานกับอิชชูที่ได้รับมอบหมาย
- GitHub — รีวิวพูลรีเควสต์ และ ทำงานกับอิชชูที่ติดเลเบล
- Linear — ทำงานกับอิชชูที่ได้รับมอบหมาย
- Jira — ทำงานกับอิชชูที่ได้รับมอบหมาย
ลูปเหล่านี้จำลองสิ่งที่คนคาดหวังจากเอเจนต์เขียนโค้ดที่เพิ่งแกะกล่อง ต่างกันตรงที่มันเป็นของคุณ — เป็นลูปจริงบนหน้า Loops ของคุณ พร้อมคำสั่งที่คุณอ่านและแก้ได้
การติดตั้งเกิดขึ้นครั้งเดียวตลอดกาล ถ้าคุณลบลูปเริ่มต้นทิ้ง มันก็ถูกลบไปเลย — การเชื่อมต่อผู้ให้บริการใหม่จะไม่แอบพามันกลับมา
การเขียนคำสั่งใหม่นี่แหละคือประเด็น
คำสั่งรีวิวเริ่มต้นขอให้ดูความถูกต้อง ความปลอดภัย และการดูแลรักษา และบอกให้ก็อบลินเงียบเมื่อการเปลี่ยนแปลงนั้นดีอยู่แล้ว นั่นเป็นจุดตั้งต้นที่สมเหตุสมผล ไม่ใช่นโยบายที่คุณต้องทน ทีมส่วนใหญ่มักปรับให้แคบลงหรือกว้างขึ้น
- "ชี้เฉพาะปัญหาความปลอดภัยและความเสี่ยงข้อมูลสูญหาย นอกนั้นไม่ต้อง"
- "เข้มเรื่องความครอบคลุมของเทสต์ — ทุกการเปลี่ยนพฤติกรรมต้องมีเทสต์ ถ้าไม่มีให้บอก"
- "ตรวจเพิ่มด้วยว่าเอ็นด์พอยต์ใหม่ทุกตัวผ่านมิดเดิลแวร์จำกัดอัตราของเราหรือไม่"
คำสั่งเป็นข้อความอิสระ จึงเก็บสิ่งที่ linter เก็บไม่ได้ นั่นคือธรรมเนียมของทีมคุณ เหตุการณ์ที่เคยเกิด และความผิดพลาดที่ทีมนี้ทำซ้ำอยู่เรื่อย
ตัวเริ่มต้น และเวอร์ชันที่เข้มขึ้น
นี่คือสิ่งที่มาพร้อมระบบ
รีวิวเมิร์จรีเควสต์นี้ เน้นความถูกต้อง ความปลอดภัย และการดูแลรักษา — ชี้ปัญหาจริง ไม่ใช่เรื่องสไตล์ที่ linter จับได้อยู่แล้ว ใส่คอมเมนต์อินไลน์เฉพาะจุดที่มีคุณค่าจริง เขียนให้เจาะจงและนำไปทำต่อได้ และเงียบไว้เมื่อการเปลี่ยนแปลงนั้นดีอยู่แล้ว
มันสงวนท่าทีโดยตั้งใจ เพราะผู้รีวิวที่คอมเมนต์ทุกเรื่องสุดท้ายจะถูกปิดเสียง และนี่คือลูปเดียวกันหลังจากทีมหนึ่งใช้มันมาหนึ่งเดือนและเจอเหตุการณ์ผิดพลาดมาแล้วครั้งหนึ่ง
รีวิวเมิร์จรีเควสต์นี้ในแง่ความถูกต้อง ความปลอดภัย และการดูแลรักษา ชี้ปัญหาจริง ไม่ใช่เรื่องสไตล์
เพิ่มเติม ให้ตรวจเสมอว่า ทุกการเปลี่ยนพฤติกรรมมีเทสต์ เอ็นด์พอยต์ใหม่ไม่หลุดออกไปโดยไม่มีมิดเดิลแวร์จำกัดอัตราของเรา ไม่มีไมเกรชันใดไปแก้ไฟล์ไมเกรชันเดิม และไม่มีจุดใดบันทึกล็อกทั้งเนื้อหาของ request ให้ยกประเด็นเหล่านี้เป็นระดับ วิกฤต แม้ส่วนที่เหลือจะไม่มีปัญหา
ถ้า MR ยาวเกิน 400 บรรทัด ให้ระบุไว้ในบทสรุปและรีวิวไฟล์ที่เสี่ยงที่สุดก่อน แทนที่จะกวาดสายตาผ่านทั้งหมด เงียบไว้เมื่อการเปลี่ยนแปลงนั้นดีอยู่แล้ว
ไม่มีอะไรพิสดารในเวอร์ชันที่สอง มันคือความรู้ขององค์กรที่เคยนอนอยู่ในวิกิที่ไม่มีใครเปิด ตอนนี้ถูกแปะไว้ตรงจังหวะที่มันมีความหมาย นั่นคือความต่างระหว่างลูปที่คุณรับมรดกมา กับลูปที่เป็นของคุณ
สวิตช์ปิด
ส่วนนี้ควรอ่านสองรอบ เพราะมันอธิบายพฤติกรรมที่ไม่อย่างนั้นจะดูเหมือนบั๊ก
เหตุการณ์ที่อยู่ใต้การควบคุมของลูป หากไม่มีลูปที่เปิดใช้งานตรงกันเลย จะไม่เริ่มการรันใด ๆ หยุดลูปรีวิวชั่วคราว แล้วเมิร์จรีเควสต์ก็จะไม่ถูกรีวิวอีก ลบทิ้งก็เช่นกัน TaskGoblin ยังรับ webhook อยู่ — เพียงแต่ไม่มีคำสั่งถาวรใดให้ลงมือทำ ก็อบลินจึงไม่ตื่น และไม่มีการคิดค่าใช้จ่าย
นั่นคือสิ่งที่แลกมากับการที่พฤติกรรมเป็นของคุณ แทนที่จะเป็นสิ่งที่ถูกกระทำกับคุณ ถ้าการรีวิวอัตโนมัติหยุดไป ที่แรกที่ควรดูคือลูปของมันยังเปิดอยู่หรือเปล่า
สิ่งที่ไม่เคยอยู่ใต้การควบคุมของลูป
คำขอที่มนุษย์สั่งตรง ๆ จะทำงานเสมอ ไม่ว่าจะมีลูปหรือไม่
@taskgoblinที่ถูกกล่าวถึงในเมิร์จรีเควสต์ พูลรีเควสต์ หรือคอมเมนต์ของอิชชู- ข้อความหรือการกล่าวถึงใน Slack หรือ Microsoft Teams
- คอมเมนต์ต่อเนื่องบนอิชชู Linear ที่ก็อบลินกำลังทำอยู่
- การกล่าวถึงในคอมเมนต์ของอิชชู Jira
- การตอบ
@taskgoblin fixไปที่คอมเมนต์รีวิวของมันเอง
ถ้าคนถามตรง ๆ ก็อบลินก็ตอบ ลูปกำกับเฉพาะงานที่ ไม่มีใครร้องขอ เท่านั้น
เมื่อมีหลายลูปตรงกัน
ไม่มีอะไรห้ามคุณรันลูปมากกว่าหนึ่งตัวบนเหตุการณ์เดียวกัน เช่นลูปรีวิวทั่วไป บวกกับลูปที่เข้มกว่าสำหรับความปลอดภัย เมื่อเหตุการณ์หนึ่งตรงกับหลายลูป ก็อบลินจะเห็นคำสั่งที่เป็นตัวเลือกทั้งหมดแล้วตัดสินว่าอันไหนใช้ได้ พร้อมบันทึกการเลือกนั้นไว้กับการรัน เพื่อให้ประวัติยังคงตรงไปตรงมา งานยังคงเกิดขึ้นเป็นการรันครั้งเดียว ลูปไม่ได้ทวีคูณกลายเป็นรีวิวซ้ำซ้อนบนเมิร์จรีเควสต์เดียวกัน
ไปต่อที่ไหน
- ลูปตามตารางเวลา — ทริกเกอร์อีกแบบหนึ่ง สำหรับงานที่ไม่มีเหตุการณ์ใดมาประกาศ
- เชื่อมต่ออินทิเกรชัน — คุณตั้งลูปกับผู้ให้บริการใดได้บ้าง และแต่ละรายปลดล็อกอะไร
- การรันเฉพาะกิจ — คำขอตรงที่ข้ามลูปไปทั้งหมด