ลูป

ลูปคือทริกเกอร์บวกคำสั่ง ทุกอย่างที่ TaskGoblin ทำล้วนเป็นลูป — รีวิวโค้ด รับอิชชู เก็บกวาดกลางคืน — และนั่นคือเหตุผลที่งานเกิดขึ้นเองโดยไม่ต้องมีใครจำว่าต้องสั่ง

เครื่องมือ AI สำหรับเขียนโค้ดส่วนใหญ่หมุนรอบพรอมต์ คุณอธิบายสิ่งที่ต้องการ เอเจนต์ตอบ แล้วบทสนทนาก็จบ วิธีนี้ใช้ได้จนถึงจังหวะที่สิ่งมีค่าไม่ใช่ คำตอบดี ๆ หนึ่งครั้ง อีกต่อไป แต่กลายเป็น งานเดิมที่เกิดขึ้นอย่างเชื่อถือได้ ทุกครั้ง โดยไม่ต้องมีใครจำว่าต้องสั่ง

TaskGoblin จึงสร้างขึ้นรอบ ลูป แทน

ลูปคือทริกเกอร์บวกคำสั่ง

หน่วยพื้นฐานมีแค่นี้

  • ทริกเกอร์ เป็นตัวกำหนดว่าก็อบลินจะตื่นเมื่อไร มันเป็นได้ทั้ง เหตุการณ์ — พูลรีเควสต์ถูกเปิด อิชชูถูกมอบหมายให้ก็อบลิน — หรือ ตารางเวลา เช่นทุกวันทำการเวลา 07:00
  • คำสั่ง เป็นภาษาคนธรรมดาที่บอกว่าตื่นแล้วให้ทำอะไร "รีวิวเมิร์จรีเควสต์นี้ในแง่ความถูกต้องและความปลอดภัย — ชี้ปัญหาจริง ไม่ใช่เรื่องสไตล์ที่ linter จับได้อยู่แล้ว" หรือ "ตรวจ acme/web ว่ามีการอัปเกรดดีเพนเดนซีที่ปลอดภัยไหม รันเทสต์ แล้วเปิดเมิร์จรีเควสต์"

พอเอาสองอย่างมารวมกัน สิ่งที่คุณมีก็ไม่ใช่คำขออีกต่อไป แต่เป็นความสามารถถาวร ไม่ต้องมีใครนั่งอยู่หน้าคีย์บอร์ด และไม่ต้องมีใครจำ

ทุกอย่างคือลูป

นี่ไม่ใช่ฟีเจอร์ที่วางอยู่ข้าง ๆ ตัวผลิตภัณฑ์ — มัน คือ ตัวผลิตภัณฑ์ พฤติกรรมที่คุณคงคิดว่าเป็นเวทมนตร์ในตัวระบบ ล้วนเป็นลูปธรรมดา ๆ

สิ่งที่เห็นจากภายนอก ลูปที่อยู่ข้างใต้
ทุกพูลรีเควสต์ถูกรีวิว ลูปเหตุการณ์ บน พูลรีเควสต์ถูกเปิด
มอบหมายอิชชู แล้วได้เมิร์จรีเควสต์กลับมา ลูปเหตุการณ์ บน อิชชูถูกมอบหมาย
ดีเพนเดนซีทันสมัยอยู่เสมอโดยไม่ต้องเปิดงาน ลูปตามตารางเวลา ทุกวันจันทร์ 08:00
เอกสารไม่เคยหลุดจากโค้ด ลูปตามตารางเวลา ทุกวันพุธ
สรุปความเคลื่อนไหวเข้า Slack ทุกเช้า ลูปตามตารางเวลา เวลา 09:00

เมื่อคุณเชื่อมต่อ GitLab หรือ GitHub, TaskGoblin จะติดตั้งชุดเริ่มต้นให้ — นั่นคือเหตุผลที่การรีวิวโค้ดเริ่มทำงานก่อนที่คุณจะตั้งค่าอะไรเลย มันไม่ได้พิเศษอะไร เปิดดู อ่านคำสั่ง เขียนใหม่ด้วยคำของคุณ หยุดชั่วคราว หรือลบทิ้งก็ได้

หนึ่งรอบของลูป

ทุกรอบทำงานเหมือนกันหมด ไม่ว่าทริกเกอร์จะเป็น webhook หรือนาฬิกา และไม่ว่าจะเป็นรอบแรกหรือรอบที่ห้าร้อย

  1. ทำงาน ทริกเกอร์ตรงเงื่อนไข TaskGoblin เปิด — หรือใช้ซ้ำ — เธรดสำหรับงานชิ้นนั้น
  2. บริบท ก็อบลินอ่านอิชชู เธรด diff ธรรมเนียมขององค์กรคุณ และบันทึกที่ก็อบลินก่อนหน้าทิ้งไว้ ก่อนจะแตะอะไรทั้งสิ้น
  3. ลงมือ มันทำงานอยู่ในแซนด์บ็อกซ์คลาวด์ที่แยกอิสระซึ่งมีสำเนา repository ของคุณ อ่านไฟล์ แก้ไฟล์ รันคำสั่งและเทสต์
  4. ส่งมอบ มันเปิดเมิร์จรีเควสต์ ทิ้งคอมเมนต์รีวิวอินไลน์ หรือตอบในเธรด — ตรงที่งานนั้นควรอยู่
  5. ส่งต่อ มันเขียนสิ่งที่เรียนรู้และสิ่งที่ยังค้างเอาไว้ เพื่อให้รอบถัดไปเริ่มจากตรงนั้น ไม่ใช่จากศูนย์

ขั้นที่ 5 นี่เองที่แยกลูปออกจาก cron แต่ละรอบได้รับข้อมูลจากรอบก่อนหน้า ลูปที่รันทุกสัปดาห์ตลอดหนึ่งปีจึงไม่ใช่ลูปเดิมซ้ำร้อยครั้ง แต่เป็นลูปหนึ่งที่คอยสังเกตมาตลอด

ทำไมลูปถึงชนะพรอมต์

  • มันทำงานได้โดยไม่ต้องมีคุณ พองานถึงตาคุณดู มันเสร็จไปแล้ว ไม่ต้องรอให้ใครสังเกตว่าต้องทำ
  • มันรีวิวได้ ทุกรอบจบลงด้วยแบรนช์และเมิร์จรีเควสต์ รีวิวเหมือนของเพื่อนร่วมงานเป๊ะ ไม่มีอะไรเมิร์จเอง
  • มันสะสม แก้ก็อบลินหนึ่งครั้ง แล้วคำแก้นั้นจะถูกจดไว้ให้ก็อบลินทุกตัวถัดจากนั้น
  • มันมีสวิตช์ปิด ลูปคือแถวข้อมูลที่เป็นของคุณ หยุดมัน แล้วพฤติกรรมก็หยุดทันที

ลูปอยู่ที่ไหน

จัดการได้จากส่วน Loops ขององค์กรคุณ (/{organisation}/loops) ลูปแต่ละตัวมีหน้าของตัวเอง: คำสั่ง ทริกเกอร์ ปุ่มเปิด/ปิด และประวัติการรันล่าสุด คุณจึงเห็นว่ามันทำอะไรไปจริง ๆ แทนที่จะเชื่อไปเองว่ามันทำงานแล้ว

ก็อบลินสร้างลูปเองระหว่างการรันได้ด้วย ตัวที่สังเกตว่าคุณขอเรื่องเดิมทุกวันศุกร์ อาจเสนอลูปที่ทำให้คุณไม่ต้องขออีกเลย

ไปต่อที่ไหน