เผยแพร่เมื่อ: 10 พฤศจิกายน 2569
MetaMask เป็นแพลตฟอร์มทางการเงินแบบไม่มีผู้ดูแล (Self-Custodial) ที่มียอดดาวน์โหลดมากกว่า 100 ล้านครั้งในประมาณ 190 ประเทศ ส่วนขยายเบราว์เซอร์ของบริษัทได้รับการพัฒนาในแบบเปิด ดังนั้นจึงมี Pull Request ที่สม่ำเสมอจากผู้ร่วมให้ข้อมูลทั้งภายในและภายนอกบริษัท
Francis Nepomuceno วิศวกร UX ของ MetaMask ได้ตรวจสอบ Pull Request เหล่านั้นจำนวนมาก และต้องการวิธีที่สอดคล้องกันเพื่อช่วยให้ผู้ร่วมให้ข้อมูลใช้แนวทางปฏิบัติแนะนำด้านการช่วยเหลือพิเศษและใช้ฟีเจอร์เว็บที่ทันสมัย ในเครื่องมือแก้ไข เขาได้ใช้คำแนะนำในการพัฒนาเว็บที่ทันสมัยของ Chrome ซึ่งเป็นชุดทักษะที่นำแนวทางปฏิบัติแนะนำสำหรับแพลตฟอร์มเว็บและข้อมูลความเข้ากันได้ของเบราว์เซอร์มาใช้กับ Agent การเขียนโค้ด เพื่อให้คำแนะนำเดียวกันนี้แก่ผู้ร่วมเขียนรายอื่นๆ เขาจึงตั้งค่าบ็อตให้ตรวจสอบ Pull Request ทุกรายการในที่เก็บโอเพนซอร์สของ MetaMask ไม่ว่าผู้เขียนจะใช้เครื่องมือใดก็ตาม
ความท้าทาย: การตามให้ทันฟีเจอร์เว็บสมัยใหม่
HTML และ CSS สมัยใหม่ยังคงเพิ่มฟีเจอร์ที่ปรับปรุงการช่วยเหลือพิเศษและประสบการณ์ของผู้ใช้ และการติดตามว่าฟีเจอร์ใดทำงานในเบราว์เซอร์ต่างๆ ได้นั้นเป็นเรื่องยาก เมื่อมีผู้ร่วมเขียนโค้ดจำนวนมาก ความรู้ดังกล่าวจะต้องเข้าถึงทุกคนที่เปิด Pull Request
ความปลอดภัยเป็นอีกเหตุผลหนึ่งที่ควรให้ความสำคัญ โดย MetaMask จะแซนด์บ็อกซ์ทรัพยากร Dependency ของบุคคลที่สามทั้งหมดโดยค่าเริ่มต้น ซึ่งทำให้ฟีเจอร์เบราว์เซอร์แบบเนทีฟมีค่าใช้จ่ายในการนำไปใช้น้อยกว่าทางเลือกไลบรารี ดังที่ Nepomuceno กล่าวไว้ว่า "การเข้าถึง API ที่ทันสมัยเหล่านี้ เช่น การใช้กล่องโต้ตอบและเมนูแบบเลื่อนลงโดยไม่ต้องใช้ JavaScript ถือเป็นชัยชนะครั้งใหญ่"
วิธีแก้ปัญหา: คำแนะนำในการพัฒนาเว็บที่ทันสมัยจะตรวจสอบ Pull Request ทุกรายการ
เมื่อวันที่ 16 กันยายน 2026 มี Pull Request ไปยัง MetaMask/metamask-extension ซึ่งเพิ่มหน้า "วิธีการทำงาน" พร้อมคำถามที่พบบ่อยซึ่งสร้างขึ้นในลักษณะเดียวกับคำถามที่พบบ่อยส่วนใหญ่ของ React ดังนี้
// Before: Custom React state (removes content from DOM)
const [expanded, setExpanded] = useState(false);
<button type="button" aria-expanded={expanded} onClick={() => setExpanded(c => !c)}>
<Text>{question}</Text>
</button>
{expanded ? <Text>{answer}</Text> : null}
หลังจากนั้นประมาณ 5 นาที บ็อตก็แสดงความคิดเห็น โดยอ้างอิงจากคู่มือของ search-hidden-content ซึ่งมีประเด็นสำคัญ 3 ข้อดังนี้
- การแสดงผลคำตอบแต่ละข้อแบบมีเงื่อนไขจะนำคำตอบออกจาก DOM ดังนั้นจึงไม่สามารถค้นหาข้อความที่ยุบได้ด้วยฟีเจอร์ค้นหาในหน้าเว็บของเบราว์เซอร์ และเทคโนโลยีความช่วยเหลือพิเศษจะค้นพบได้ยากขึ้น
<details>/<summary>แบบเนทีฟ (Baseline ตั้งแต่ปี 2020) จะเก็บเนื้อหาไว้ใน DOM ด้วยความหมายที่ถูกต้อง สำหรับแผงที่เปิดพร้อมกันไม่ได้ แอตทริบิวต์nameที่ใช้ร่วมกัน (Baseline พร้อมใช้งานตั้งแต่ปี 2024) จะปิดแผงอื่นๆ โดยอัตโนมัติ ส่วนคำถามที่พบบ่อยแบบเปิดได้หลายรายการจะไม่ต้องใช้แอตทริบิวต์นี้- หากทีมต้องการใช้คอมโพเนนต์ Disclosure ที่มีอยู่ ก็ควรเก็บคำตอบไว้ใน DOM ด้วย
hidden="until-found"และ Listenerbeforematchที่ซิงค์aria-expandedและสถานะไอคอน
// After: Native <details> / <summary> disclosure (findable with find-in-page)
<details>
<summary>
<Text>{question}</Text>
</summary>
<Text>{answer}</Text>
</details>
13 นาทีต่อมา ผู้เขียนได้พุชการแก้ไข คอมโพเนนต์กลายเป็นการเปิดเผย <details>/<summary> แบบเนทีฟ คำตอบที่ยุบยังคงอยู่ใน DOM สำหรับการค้นหาในหน้าเว็บ และปุ่มการนำทาง 2 ปุ่มกลายเป็นลิงก์
บ็อตดังกล่าวคือ Cursor Automation ที่ใช้คำแนะนำในการพัฒนาเว็บที่ทันสมัย และ Nepomuceno ได้ตั้งค่าบ็อตด้วยพรอมต์ 3 บรรทัด ภายในวันที่ 21 ตุลาคม 2026 ซึ่งเป็นสัปดาห์ที่ 5
- บ็อตทำงานใน Pull Request ประมาณ 480 รายการและแสดงความคิดเห็นใน 64 รายการ (Pull Request สำหรับฟีเจอร์และการแก้ไข 57 รายการ รวมถึง Pull Request สำหรับการเผยแพร่และการซิงค์อัตโนมัติ 7 รายการ) จากผู้เขียน 26 คน
- ในฟีเจอร์และแก้ไข Pull Request วิศวกรได้แก้ไขสิ่งที่พบ 43 รายการ และแก้ไขบางส่วนอีก 3 รายการใน Pull Request 22 รายการ
- วิศวกรดำเนินการอย่างรวดเร็ว โดยจากการแก้ไข 38 รายการที่มีคอมมิตที่ระบุได้ มี 19 รายการที่ดำเนินการภายใน 15 นาที และ 26 รายการภายใน 1 ชั่วโมง โดยมีค่ามัธยฐานอยู่ที่ 15.2 นาทีตั้งแต่การแสดงความคิดเห็นไปจนถึงการแก้ไข
มาดูวิธีที่ MetaMask กำหนดค่าบ็อต สิ่งที่บ็อตตรวจจับได้ และจุดที่บ็อตส่งสัญญาณรบกวนกัน
การตั้งค่าเป็นพรอมต์ 3 บรรทัด
เมื่อถามถึงวิธีการกำหนดค่าการทำงานอัตโนมัติ Nepomuceno ตอบว่า "แน่นอนว่าการตั้งค่าของเราไม่มีอะไรพิเศษเลย เราแค่ทำให้กระชับและอยู่ในขอบเขต" คำสั่งทั้งหมดมีดังนี้
- Run /modern-web-guidance for any client-facing changes
- Run /chrome-extensions for any relevant extension changes
- Comment on the PR only when there are issues to address. Keep the comment focused on actionable items
ลักษณะการทำงานในทางปฏิบัติมีดังนี้
- เป็นคำแนะนำ: ในช่วง 2 วันแรก บ็อตได้โพสต์รีวิว "ขอให้ทำการเปลี่ยนแปลง" (และการอนุมัติ 1 รายการ) ซึ่งผู้เขียนได้ปิดไปเมื่อแก้ไขแล้ว ตั้งแต่วันที่ 18 กันยายนเป็นต้นมา รีวิวทุกรายการเป็นความคิดเห็น แต่จะไม่บล็อกการผสานรวม ดังนั้นผู้เขียนจึงยังคงเป็นผู้ตัดสินใจขั้นสุดท้ายเกี่ยวกับคำแนะนำแต่ละรายการ
- โดยอ้างอิงคู่มือและไฟล์ที่เฉพาะเจาะจงในที่เก็บโค้ด: บ็อตได้แสดงผลการค้นพบ 122 รายการใน Pull Request 64 รายการที่แสดงความคิดเห็น จาก Pull Request สำหรับฟีเจอร์และการแก้ไข 102 รายการ มี 63 รายการที่ระบุชื่อคำแนะนำในการพัฒนาเว็บที่ทันสมัยที่เฉพาะเจาะจงซึ่งกำลังนำไปใช้ เช่น
search-hidden-content,state-aware-sticky-headersหรือsms-otp-formและชี้ไปยังไฟล์ที่มีอยู่ในที่เก็บเมื่อใช้รูปแบบที่แนะนำอยู่แล้ว - บ็อตจะทำงานอย่างเงียบๆ เว้นแต่ Pull Request จะส่งผลต่อ UI: จาก Pull Request ประมาณ 480 รายการในช่วง 5 สัปดาห์ดังกล่าว มีอย่างน้อย 100 รายการที่ส่งผลต่อ UI หรือโค้ดฝั่งไคลเอ็นต์ และบ็อตพบข้อบกพร่องโดยเฉลี่ยประมาณ 2 รายการต่อ Pull Request ที่แสดงความคิดเห็น ทีมที่มีที่เก็บส่วนหน้าเป็นส่วนใหญ่จะเห็นว่ามีการแสดงความคิดเห็นในสัดส่วนที่มากขึ้น
พรอมต์นี้ทำงานร่วมกับ Agent Runner ได้ทุกประเภท โดยคำแนะนำในการพัฒนาเว็บที่ทันสมัยจะติดตั้งเป็นทักษะหรือปลั๊กอินสำหรับ Cursor, Claude Code, Codex, GitHub Copilot, Antigravity และ Agent การเขียนโค้ดอื่นๆ เมื่อ Agent เรียกใช้ทักษะ ระบบจะค้นหาคู่มือที่ตรงกันในดัชนีในเครื่องโดยไม่ต้องใช้คีย์ API และตรวจสอบความแตกต่างกับคู่มือเหล่านั้น โดยใช้โมเดลที่ Agent Runner ของทีมมีให้อยู่แล้ว
สิ่งที่คำแนะนำในการพัฒนาเว็บที่ทันสมัยตรวจพบแต่ Linter ตรวจไม่พบ
Linter แบบคงที่สามารถแจ้งแอตทริบิวต์ที่ขาดหายไปในองค์ประกอบเดียวได้ แต่ผลการค้นหาที่ตามมาจะขึ้นอยู่กับลักษณะการโต้ตอบ ความหมายของ HTML และวิธีที่คอมโพเนนต์ต่างๆ เข้ากันได้ในไฟล์ต่างๆ
ช่องค่าธรรมเนียมธุรกรรมที่ดูเหมือนแก้ไขได้ แต่ระบบจะละเว้นข้อมูลที่ป้อนโดยไม่แจ้งให้ทราบ
ในส่วนการตั้งค่าค่าธรรมเนียมธุรกรรมขั้นสูงของ MetaMask ช่องขีดจำกัดก๊าซ (ซึ่งจำกัดค่าธรรมเนียมเครือข่ายที่ธุรกรรมสามารถใช้ได้) ดูเหมือนจะแก้ไขได้ แต่ระบบกลับละเว้นข้อมูลที่ผู้ใช้ป้อนโดยไม่แจ้งให้ทราบ ปัญหานี้เกิดขึ้นเมื่อค่าธรรมเนียมโดยประมาณยังคงโหลดอยู่หรือโหลดไม่สำเร็จ ในขณะเดียวกัน ปุ่มบันทึกก็ปิดใช้อยู่โดยไม่มีคำอธิบายที่เทคโนโลยีความช่วยเหลือพิเศษสามารถอ่านได้
บ็อตได้แจ้งว่ามีจุดที่ต้องแก้ไข 3 จุดโดยอ้างอิงจากคู่มือแบบฟอร์ม ดังนี้
- ปิดใช้ช่องขีดจำกัดก๊าซเมื่อไม่มีค่าประมาณ และเชื่อมต่อข้อความสถานะที่มองเห็นได้กับช่องดังกล่าวเพื่อให้เทคโนโลยีความช่วยเหลือพิเศษอ่านคำอธิบาย
- เชื่อมต่อปุ่มบันทึกที่ปิดใช้อยู่กับข้อความสถานะเดียวกันนั้นเพื่อให้โปรแกรมอ่านหน้าจอทราบสาเหตุที่ปิดใช้
- เปลี่ยนช่องเป็นโหมดป้อนข้อมูลตัวเลขเพื่อให้ผู้ใช้มือถือเห็นปุ่มกดตัวเลข
ผู้เขียนใช้การแก้ไขทั้ง 3 รายการในโมดัลการตั้งค่าทั้ง 2 รายการและรวมไว้ในคอมโพเนนต์เดียว
ปุ่มแบนเนอร์ที่ซ่อน URL
ในแบนเนอร์สถานะสำหรับฟีเจอร์การซื้อขายอย่างใดอย่างหนึ่งของ MetaMask การดำเนินการ "คำถามที่พบบ่อย" และ "ติดต่อทีมสนับสนุนของ MetaMask" ในบรรทัดสร้างขึ้นเป็นปุ่มที่เปิดแท็บใหม่ด้วย JavaScript แทนที่จะเป็นลิงก์ ภายใน 3 นาที บ็อตซึ่งอ้างอิงคู่มือ HTML และการช่วยเหลือพิเศษได้แจ้งว่าโปรแกรมอ่านหน้าจอจะอ่านลิงก์เหล่านั้นเป็นปุ่ม และผู้ใช้จะสูญเสียความสามารถในการใช้ลิงก์ เช่น การคัดลอก URL หรือการเปิดในแท็บใหม่จากเมนูตามบริบท นอกจากนี้ยังชี้ให้เห็นถึงคอมโพเนนต์แบนเนอร์ที่มีอยู่ในฐานของโค้ดของ MetaMask ซึ่งแสดงผลการดำเนินการเหล่านี้เป็นลิงก์จริงอยู่แล้ว
12 นาทีต่อมา ผู้เขียนเปลี่ยนการดำเนินการทั้ง 2 รายการเป็นลิงก์ "ฉันพบว่าเมื่อมีการนำคำแนะนำไปใช้แล้ว รีวิวในอนาคตจะกล่าวถึงคำแนะนำนั้นเป็นตัวอย่างอ้างอิง ซึ่งมีประโยชน์มาก" Nepomuceno กล่าว
อินพุตการยืนยันที่มีป้ายกำกับอยู่ในตำแหน่งอื่น
ความสามารถของบ็อตในการอ่านไฟล์ต่างๆ ยังช่วยให้กรอกแบบฟอร์มหลายขั้นตอนได้สำเร็จด้วย Linter แบบคงที่จะเห็นเฉพาะช่องข้อความที่มีข้อความตัวยึดตำแหน่งภายในแต่ละขั้นตอน และไม่สามารถบอกได้ว่าส่วนหัวและวิธีการที่มองเห็นได้นั้นอยู่ในคอมโพเนนต์เลย์เอาต์หลัก เมื่ออ้างอิงคู่มือแบบฟอร์มและการช่วยเหลือพิเศษ บ็อตพบว่าตัวยึดตำแหน่งเป็นป้ายกำกับเดียวของช่อง ชื่อขั้นตอนและวิธีการในเลย์เอาต์หลักไม่ได้เชื่อมโยงกับอินพุต และข้อความแสดงข้อผิดพลาดและข้อความ "ส่งรหัสอีกครั้ง" ไม่ได้ประกาศให้โปรแกรมอ่านหน้าจอทราบ 15 นาทีต่อมา ทั้ง 3 ปัญหาก็ได้รับการแก้ไข และการเชื่อมต่อการช่วยเหลือพิเศษนั้นยังคงอยู่เมื่อ Pull Request ที่ตามมาได้ปรับรูปแบบอินพุตโค้ดเป็นช่องตัวเลข 6 ช่องที่มองเห็นได้
สิ่งที่บ็อตตรวจพบเพิ่มเติม
สิ่งที่ค้นพบเพิ่มเติม 5 รายการจากการทดสอบ 5 สัปดาห์เดียวกันมีดังนี้
- รายละเอียด CSS ที่วิศวกรที่อยู่เบื้องหลังบ็อตพลาดไป: Pull Request ของ Nepomuceno เองสำหรับแท็บหน้าแรกแบบติดหนึบได้ฝังการค้นหาสถานะการเลื่อน CSS โดยไม่ตั้งชื่อคอนเทนเนอร์และสลับเส้นขอบในลักษณะที่เปลี่ยนเลย์เอาต์ระหว่างการเลื่อน บ็อตอ้างอิงคู่มือส่วนหัวที่ไม่เคลื่อนที่ซึ่งรับรู้สถานะ และเขาก็แก้ไขทั้ง 2 อย่าง เขาพบว่าการตรวจสอบมีประโยชน์สำหรับการค้นหาตำแหน่ง Anchor และสถานะการเลื่อน
- การจำกัดความคลาดเคลื่อนระหว่างการกดแป้นพิมพ์: ข้อมูลความคลาดเคลื่อนที่กำหนดเอง (การเคลื่อนไหวของราคาที่ผู้ใช้ยอมรับได้ในการซื้อขาย) จำกัดค่าไว้ที่ 100% ในทุกการกดแป้นพิมพ์ โดยเปลี่ยน 101 เป็น 100 ขณะที่ผู้ใช้ยังพิมพ์อยู่ การแก้ไขตามคู่มือแบบฟอร์มได้ย้ายการตรวจสอบไปยังตอนที่ช่องสูญเสียโฟกัสและเพิ่มแบนเนอร์คำเตือนที่มองเห็นได้
- ตัวบ่งชี้การโหลดที่โปรแกรมอ่านหน้าจอใช้ไม่ได้: โครงร่างการโหลดรายการโทเค็นใส่ป้ายกำกับ "กำลังโหลด" ไว้ในองค์ประกอบทั่วไปที่ไม่มีบทบาท ซึ่ง ARIA ไม่อนุญาต บ็อตชี้ไปที่คอมโพเนนต์ 2 รายการในฐานของโค้ดที่ใช้รูปแบบเฉพาะโปรแกรมอ่านหน้าจอของ MetaMask อยู่แล้ว (ทั้ง 2 รายการได้รับการอัปเดตหลังจากที่คำแนะนำในการพัฒนาเว็บที่ทันสมัยตรวจสอบเมื่อ 6 วันก่อน) และผู้เขียนได้ปรับโครงสร้างให้สอดคล้องกับรูปแบบดังกล่าวในอีก 8 นาทีต่อมา
- การดำเนินการแบบอะซิงโครนัสที่ไม่มีการป้องกัน: ปุ่ม "ดูในผู้ให้บริการ" แบบอะซิงโครนัสไม่มีการป้องกันระหว่างดำเนินการ ดังนั้นการดับเบิลคลิกจึงอาจเปิดแท็บที่ซ้ำกันและผู้เฝ้าดูในเบื้องหลังได้ ผู้เขียนเพิ่มการป้องกันภายในเวลาไม่ถึง 4 นาทีหลังจากแสดงความคิดเห็น
- การตรวจสอบการกดแป้นพิมพ์โดยไม่มีแบบฟอร์ม: หน้า "นำเข้า NFT" ได้รับการตรวจสอบทุกครั้งที่มีการกดแป้นพิมพ์ และไม่มีองค์ประกอบ
<form>สำหรับความหมายของการส่ง ทั้ง 2 รายการได้รับการแก้ไขแล้วใน 19 นาทีหลังจากการตรวจสอบ
รีวิวทุกรายการจะเป็นแบบสาธารณะ ความคิดเห็นแบบเต็มของบ็อตจะอยู่ใน Pull Request ที่ลิงก์แต่ละรายการ และคุณสามารถเรียกดูความคิดเห็นทั้งหมดใน GitHub ได้
สิ่งที่ไม่ได้แก้ไขและเสียงรบกวนมากน้อยเพียงใด
แต่ไม่ใช่ว่าการค้นพบทุกอย่างจะประสบความสำเร็จ ตารางต่อไปนี้แสดงวิธีที่ MetaMask นับผลลัพธ์ 102 รายการใน Pull Request ของฟีเจอร์และการแก้ไข (อีก 20 รายการอยู่ใน Pull Request ของการเผยแพร่และการซิงค์ 7 รายการ ซึ่งไม่คาดว่าการตรวจสอบจะเปลี่ยนโค้ด)
โดยแบ่งตามธีมจากผลการตรวจสอบทั้งหมด 122 รายการ (รวมถึง 20 รายการเกี่ยวกับ Pull Request สำหรับการเผยแพร่และการซิงค์) ดังนี้
รูปแบบบางอย่างในตัวเลขเหล่านั้นมีดังนี้
- การแก้ไขที่อยู่ภายในคอมโพเนนต์เดียวจะเกิดขึ้นบ่อยกว่าการเปลี่ยนแปลงการช่วยเหลือพิเศษแบบข้ามคอมโพเนนต์ การแก้ไขแบบฟอร์มและ HTML จะยังคงอยู่ในคอมโพเนนต์ที่อยู่ระหว่างการตรวจสอบ ดังนั้นผู้เขียนจึงมักจะนำการแก้ไขไปใช้ทันที (แก้ไขแล้ว 19 จาก 31 รายการ) การช่วยเหลือพิเศษมีผลการค้นพบมากที่สุด (38 รายการ) แต่ได้รับการแก้ไขเพียง 12 รายการเท่านั้น ซึ่งมักเป็นเพราะการแก้ไขอยู่นอกขอบเขตของ Pull Request หรือต้องใช้คอมโพเนนต์ระบบการออกแบบที่ใช้ร่วมกันซึ่งยังไม่มีอยู่
- "อื่นๆ" คือส่วนที่อยู่นอกเหนือคำแนะนำของแพลตฟอร์มเว็บ ผลการตรวจสอบ 16 รายการครอบคลุมความสอดคล้องของระบบการออกแบบ, ข้อบกพร่องด้านตรรกะ, ข้อความ, คุณภาพการทดสอบ, โหมดมืด และความสะอาดของโค้ด โดยมีการดำเนินการ 3 รายการ ซึ่งหนึ่งในนั้นเป็นการถดถอยจริง (การเปลี่ยนแปลงรายการเครือข่ายที่ทำให้การกรอกแบบฟอร์มล่วงหน้าใช้งานไม่ได้) การทดสอบส่วนใหญ่จาก 16 รายการนั้นผ่านได้ง่ายๆ แต่การตรวจพบการถดถอยทำให้การทดสอบเหล่านั้นคุ้มค่าที่จะตรวจสอบอย่างรวดเร็ว
- ผลบวกลวงเกิดจากวิธีที่ Agent ใช้คำแนะนำ และสัญญาณรบกวนส่วนใหญ่สามารถแก้ไขได้ในการตั้งค่า เนื่องจากบ็อตตรวจสอบเป็น Agent ที่อ่านความแตกต่างแทนที่จะเป็น Linter แบบคงที่ ผลบวกลวงจึงมาจากการอ่านโค้ดโดยรอบผิดหรือใช้กฎที่เข้มงวดกว่าคู่มือที่ลิงก์ไว้ การข้ามการเผยแพร่และซิงค์ Branch และการปรับแต่งพรอมต์ให้รัดกุมยิ่งขึ้นเพื่อให้ Agent ปฏิบัติตามกฎที่ระบุไว้อย่างชัดเจนในคู่มือคือการปรับเปลี่ยนที่ชัดเจนในขั้นตอนถัดไป
Nepomuceno อธิบายถึงผลกระทบในวงกว้างที่มีต่อทีมและระยะเวลาในการตรวจสอบ ดังนี้
"รีวิวมีประโยชน์มาก ซึ่งช่วยให้วิศวกรของเราได้รู้จักและคุ้นเคยกับ API สมัยใหม่ เช่น Interest Invoker และ Popover API"
"เครื่องมือนี้ไม่ได้เพิ่มเวลาในการตรวจสอบ PR แต่ช่วยลดเวลาลงด้วยซ้ำ วิศวกรหลายคนใช้ Agent เพื่อจัดการกับความคิดเห็น ปัญหาที่คำแนะนำในการพัฒนาเว็บที่ทันสมัยตรวจพบนั้น หากเป็นเมื่อก่อนจะต้องใช้เจ้าหน้าที่ตรวจสอบที่คุ้นเคยกับเทคนิคเว็บสมัยใหม่เหล่านี้"
David Murdoch วิศวกรของ MetaMask ยังได้ร่วมให้คำแนะนำด้วย โดยเมื่อคู่มือเลย์เอาต์ CSS มีข้อผิดพลาดในตัวอย่างหนึ่ง เขาได้รายงานปัญหา และทีมคำแนะนำในการพัฒนาเว็บที่ทันสมัยได้รวมการแก้ไขไว้ในอีก 2 วันต่อมา
สิ่งที่ MetaMask จะบอกทีมที่กำลังพิจารณาใช้โซลูชันนี้
- อ่านคำแนะนำก่อนเขียนอะไรก็ตาม เรียกใช้
npx modern-web-guidance@latest search "accordion find in page"เพื่อดูว่า Agent จะดึงข้อมูลคู่มือใดสำหรับงาน นอกจากนี้ คุณยังเรียกดูคำแนะนำในการพัฒนาเว็บที่ทันสมัยทั้งหมดได้ด้วย - เริ่มต้นด้วยพรอมต์ 3 บรรทัดและ Agent ที่คุณเรียกใช้อยู่แล้ว ติดตั้งทักษะ (
npx modern-web-guidance@latest installหรือคำสั่งปลั๊กอินของ Agent) ชี้สิ่งที่สามารถเรียกใช้ใน Pull Request ไปที่ทักษะนั้น และบอกให้แสดงความคิดเห็นเฉพาะเมื่อมีสิ่งที่ดำเนินการได้และปฏิบัติตามกฎที่ระบุไว้อย่างชัดเจนในคู่มือ การทำให้บ็อตเงียบเมื่อไม่มีอะไรผิดปกติคือเหตุผลที่วิศวกรของ MetaMask ยังคงอ่านความคิดเห็นของบ็อต - คาดว่าผลการตรวจสอบบางอย่างจะไม่ได้รับการแก้ไข จากผลการตรวจสอบ 102 รายการในฟีเจอร์และ Pull Request สำหรับการแก้ไข มีการแก้ไข 43 รายการ และถูกปฏิเสธหรือไม่ได้รับการแก้ไข 36 รายการ อัตราส่วนดังกล่าวเหมาะสำหรับบ็อตตรวจสอบที่ให้คำแนะนำ แต่จะสร้างความรำคาญหากใช้เป็นการตรวจสอบการบล็อก
- ให้เจ้าหน้าที่ตรวจสอบต่อไป บ็อตมีความเชี่ยวชาญด้านความหมายของแพลตฟอร์มเว็บ, CSS สมัยใหม่ และรูปแบบการโต้ตอบ แต่ไม่รู้จักผลิตภัณฑ์
นอกจากนี้ยังมีสิ่งที่ MetaMask ยังไม่ได้วัดผลด้วย โดยหลังจากผ่านไป 5 สัปดาห์ ทีมยังไม่ได้ติดตามต้นทุนต่อ Pull Request, รันไทม์, การเปรียบเทียบรูปแบบการระบุแหล่งที่มา หรือพฤติกรรมของบ็อตตรวจสอบนอกฐานของโค้ด React
ด้วยการกำหนดค่าเพียง 3 บรรทัด MetaMask ก็ได้บ็อตตรวจสอบที่อ้างอิงคู่มือเฉพาะสำหรับการค้นพบส่วนใหญ่ (และตัวอย่างในที่เก็บที่มีอยู่เมื่อมี) โดยปกติแล้วคำแนะนำที่ยอมรับจะได้รับการแก้ไขภายใน 1 ชั่วโมง