เครื่องมือ AI สำหรับเขียนโค้ดส่วนใหญ่หมุนรอบพรอมต์ คุณอธิบายสิ่งที่ต้องการ เอเจนต์ตอบ แล้วบทสนทนาก็จบ วิธีนี้ใช้ได้จนถึงจังหวะที่สิ่งมีค่าไม่ใช่ คำตอบดี ๆ หนึ่งครั้ง อีกต่อไป แต่กลายเป็น งานเดิมที่เกิดขึ้นอย่างเชื่อถือได้ ทุกครั้ง โดยไม่ต้องมีใครจำว่าต้องสั่ง
TaskGoblin จึงสร้างขึ้นรอบ ลูป แทน
ลูปคือทริกเกอร์บวกคำสั่ง
หน่วยพื้นฐานมีแค่นี้
- ทริกเกอร์ เป็นตัวกำหนดว่าก็อบลินจะตื่นเมื่อไร มันเป็นได้ทั้ง เหตุการณ์ — พูลรีเควสต์ถูกเปิด อิชชูถูกมอบหมายให้ก็อบลิน — หรือ ตารางเวลา เช่นทุกวันทำการเวลา 07:00
- คำสั่ง เป็นภาษาคนธรรมดาที่บอกว่าตื่นแล้วให้ทำอะไร "รีวิวเมิร์จรีเควสต์นี้ในแง่ความถูกต้องและความปลอดภัย — ชี้ปัญหาจริง ไม่ใช่เรื่องสไตล์ที่ linter จับได้อยู่แล้ว" หรือ "ตรวจ
acme/webว่ามีการอัปเกรดดีเพนเดนซีที่ปลอดภัยไหม รันเทสต์ แล้วเปิดเมิร์จรีเควสต์"
พอเอาสองอย่างมารวมกัน สิ่งที่คุณมีก็ไม่ใช่คำขออีกต่อไป แต่เป็นความสามารถถาวร ไม่ต้องมีใครนั่งอยู่หน้าคีย์บอร์ด และไม่ต้องมีใครจำ
ทุกอย่างคือลูป
นี่ไม่ใช่ฟีเจอร์ที่วางอยู่ข้าง ๆ ตัวผลิตภัณฑ์ — มัน คือ ตัวผลิตภัณฑ์ พฤติกรรมที่คุณคงคิดว่าเป็นเวทมนตร์ในตัวระบบ ล้วนเป็นลูปธรรมดา ๆ
| สิ่งที่เห็นจากภายนอก | ลูปที่อยู่ข้างใต้ |
|---|---|
| ทุกพูลรีเควสต์ถูกรีวิว | ลูปเหตุการณ์ บน พูลรีเควสต์ถูกเปิด |
| มอบหมายอิชชู แล้วได้เมิร์จรีเควสต์กลับมา | ลูปเหตุการณ์ บน อิชชูถูกมอบหมาย |
| ดีเพนเดนซีทันสมัยอยู่เสมอโดยไม่ต้องเปิดงาน | ลูปตามตารางเวลา ทุกวันจันทร์ 08:00 |
| เอกสารไม่เคยหลุดจากโค้ด | ลูปตามตารางเวลา ทุกวันพุธ |
| สรุปความเคลื่อนไหวเข้า Slack ทุกเช้า | ลูปตามตารางเวลา เวลา 09:00 |
เมื่อคุณเชื่อมต่อ GitLab หรือ GitHub, TaskGoblin จะติดตั้งชุดเริ่มต้นให้ — นั่นคือเหตุผลที่การรีวิวโค้ดเริ่มทำงานก่อนที่คุณจะตั้งค่าอะไรเลย มันไม่ได้พิเศษอะไร เปิดดู อ่านคำสั่ง เขียนใหม่ด้วยคำของคุณ หยุดชั่วคราว หรือลบทิ้งก็ได้
หนึ่งรอบของลูป
ทุกรอบทำงานเหมือนกันหมด ไม่ว่าทริกเกอร์จะเป็น webhook หรือนาฬิกา และไม่ว่าจะเป็นรอบแรกหรือรอบที่ห้าร้อย
- ทำงาน ทริกเกอร์ตรงเงื่อนไข TaskGoblin เปิด — หรือใช้ซ้ำ — เธรดสำหรับงานชิ้นนั้น
- บริบท ก็อบลินอ่านอิชชู เธรด diff ธรรมเนียมขององค์กรคุณ และบันทึกที่ก็อบลินก่อนหน้าทิ้งไว้ ก่อนจะแตะอะไรทั้งสิ้น
- ลงมือ มันทำงานอยู่ในแซนด์บ็อกซ์คลาวด์ที่แยกอิสระซึ่งมีสำเนา repository ของคุณ อ่านไฟล์ แก้ไฟล์ รันคำสั่งและเทสต์
- ส่งมอบ มันเปิดเมิร์จรีเควสต์ ทิ้งคอมเมนต์รีวิวอินไลน์ หรือตอบในเธรด — ตรงที่งานนั้นควรอยู่
- ส่งต่อ มันเขียนสิ่งที่เรียนรู้และสิ่งที่ยังค้างเอาไว้ เพื่อให้รอบถัดไปเริ่มจากตรงนั้น ไม่ใช่จากศูนย์
ขั้นที่ 5 นี่เองที่แยกลูปออกจาก cron แต่ละรอบได้รับข้อมูลจากรอบก่อนหน้า ลูปที่รันทุกสัปดาห์ตลอดหนึ่งปีจึงไม่ใช่ลูปเดิมซ้ำร้อยครั้ง แต่เป็นลูปหนึ่งที่คอยสังเกตมาตลอด
ทำไมลูปถึงชนะพรอมต์
- มันทำงานได้โดยไม่ต้องมีคุณ พองานถึงตาคุณดู มันเสร็จไปแล้ว ไม่ต้องรอให้ใครสังเกตว่าต้องทำ
- มันรีวิวได้ ทุกรอบจบลงด้วยแบรนช์และเมิร์จรีเควสต์ รีวิวเหมือนของเพื่อนร่วมงานเป๊ะ ไม่มีอะไรเมิร์จเอง
- มันสะสม แก้ก็อบลินหนึ่งครั้ง แล้วคำแก้นั้นจะถูกจดไว้ให้ก็อบลินทุกตัวถัดจากนั้น
- มันมีสวิตช์ปิด ลูปคือแถวข้อมูลที่เป็นของคุณ หยุดมัน แล้วพฤติกรรมก็หยุดทันที
ลูปอยู่ที่ไหน
จัดการได้จากส่วน Loops ขององค์กรคุณ (/{organisation}/loops) ลูปแต่ละตัวมีหน้าของตัวเอง: คำสั่ง ทริกเกอร์ ปุ่มเปิด/ปิด และประวัติการรันล่าสุด คุณจึงเห็นว่ามันทำอะไรไปจริง ๆ แทนที่จะเชื่อไปเองว่ามันทำงานแล้ว
ก็อบลินสร้างลูปเองระหว่างการรันได้ด้วย ตัวที่สังเกตว่าคุณขอเรื่องเดิมทุกวันศุกร์ อาจเสนอลูปที่ทำให้คุณไม่ต้องขออีกเลย
ไปต่อที่ไหน
- ลูปเหตุการณ์ — ลูปที่ทำงานเมื่อมีพูลรีเควสต์ อิชชูที่ถูกมอบหมาย หรือเลเบล และลูปที่คุณมีอยู่แล้ว
- ลูปตามตารางเวลา — ลูปที่ทำงานตามรอบ และเทมเพลตให้เริ่มต้น
- การรันเฉพาะกิจ — คำขอตรงที่ไม่ใช่ลูป และวิธีดูว่าอันไหนอยากกลายเป็นลูป
- การรันหนึ่งครั้งทำงานอย่างไร — สิ่งที่เกิดขึ้นภายในหนึ่งรอบ