SCT

กำลังเตรียมประสบการณ์ดิจิทัล

GitHub ย้ายรันไทม์ของ Copilot จาก TypeScript 430,000 บรรทัดเป็น Rust 830,000 บรรทัดใน 14 สัปดาห์ด้วยเอเจนต์ AI: วิธีทำ ตัวเลขจริง และข้อผิดพลาด 5 แบบที่หลุดออกไป

GitHub เล่าเมื่อวันที่ 16 กันยายน 2026 ว่าย้ายรันไทม์ของเอเจนต์ Copilot ซึ่งเดิมเป็น TypeScript ราว 430,000 บรรทัด ไปเป็น Rust ที่จบด้วยโค้ดใช้งานจริง 832,378 บรรทัด ภายใน 14 สัปดาห์ครึ่ง โดยมีวิศวกรกำกับหลักเพียงคนเดียวและให้เอเจนต์ AI เขียนโค้ดเกือบทั้งหมดผ่าน pull request 128 รายการ ประเด็นสำหรับทีมพัฒนาไทยไม่ใช่ว่าควรเปลี่ยนไปใช้ Rust แต่คือวิธีจัดการงานเขียนใหม่ขนาดใหญ่ด้วยเอเจนต์ให้ระบบไม่หยุดให้บริการ บทความนี้สรุปเหตุผล กลยุทธ์แทนที่ทีละชิ้น ตัวเลขจากบันทึกเซสชัน และข้อผิดพลาด 5 แบบที่หลุดออกไปพร้อมวิธีกัน

GitHub เล่าเมื่อวันที่ 16 กันยายน 2026 ว่าย้ายรันไทม์ของเอเจนต์ Copilot ซึ่งเดิมเป็น TypeScript ราว 430,000 บรรทัด ไปเป็น Rust ที่จบด้วยโค้ดใช้งานจริง 832,378 บรรทัด ภายใน 14 สัปดาห์ครึ่ง โดยมีวิศวกรกำกับหลักเพียงคนเดียวและให้เอเจนต์ AI เขียนโค้ดเกือบทั้งหมดผ่าน pull request 128 รายการ ประเด็นสำหรับทีมพัฒนาไทยไม่ใช่ว่าควรเปลี่ยนไปใช้ Rust แต่คือวิธีจัดการงานเขียนใหม่ขนาดใหญ่ด้วยเอเจนต์ให้ระบบไม่หยุดให้บริการ บทความนี้สรุปเหตุผล กลยุทธ์แทนที่ทีละชิ้น ตัวเลขจากบันทึกเซสชัน และข้อผิดพลาด 5 แบบที่หลุดออกไปพร้อมวิธีกัน

ทำไมต้องย้าย ทั้งที่ของเดิมใช้งานได้

รันไทม์ตัวนี้คือแกนที่ผลิตภัณฑ์หลายตัวเรียกใช้ร่วมกัน ทั้ง VS Code, Visual Studio, Excel และ Outlook ผ่านชุดพัฒนาซอฟต์แวร์ 6 ภาษา ได้แก่ C#, TypeScript, Python, Rust, Go และ Java เมื่อแกนเป็น TypeScript ที่รันบน Node.js ทุกโปรแกรมที่เรียกใช้ต้องแนบ Node.js หรือไบนารีที่มีเครื่องยนต์ V8 ไปด้วย กินหน่วยความจำขั้นต่ำราว 100 MB ต่อไคลเอนต์ และต้องคุยข้ามโปรเซสผ่าน JSON-RPC ทุกครั้ง เป้าหมายจึงคือรันไทม์ที่ฝังในโปรเซสของผู้เรียกได้โดยตรง มี dependency น้อย และเรียกจากทุกภาษาผ่านอินเทอร์เฟซแบบ C ได้ ซึ่ง Rust ตอบโจทย์นี้

กลยุทธ์: แทนที่ทีละชิ้นบนสาขาหลัก ไม่หยุดงานใคร

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

ตัวเชื่อมชั่วคราวใช้ไลบรารี napi-rs เพื่อให้ Rust และ JavaScript เรียกกันได้สองทาง จุดสูงสุดในต้นเดือนสิงหาคมมีจุดเชื่อมภายในถึง 2,019 ฟังก์ชันและจุดเรียกจาก TypeScript 3,356 จุด ก่อนจะลดลงเหลือศูนย์เมื่อพอร์ตครบ ส่วนอินเทอร์เฟซถาวรสำหรับชุดพัฒนา 6 ภาษาเหลือฟังก์ชันแบบ C เพียง 19 ตัว โดยยังใช้ JSON-RPC ในการเรียกภายในโปรเซสเพื่อไม่ต้องเขียนโครงสร้างพื้นฐานของชุดพัฒนาใหม่

ตัวเลขหลักของโครงการตามที่ GitHub เปิดเผย
รายการค่า
ช่วงเวลา12 พ.ค. – 21 ส.ค. 2026 (ราว 14.5 สัปดาห์)
โค้ดต้นทางTypeScript ~430,000 บรรทัด (ประเมินแรกเพียง ~130,000)
ผลลัพธ์Rust 832,378 บรรทัด + unit test 468,689 บรรทัด + end-to-end test เดิม 174,675 บรรทัด
pull request พอร์ต128 รายการ · ปล่อย CLI 135 รุ่น (เฉลี่ย 1.3 รุ่นต่อวัน)
ข้อความจากคนถึงเอเจนต์2,639 ข้อความ · 31% เป็นเรื่องรีวิว/ทดสอบ/CI · 17% ท้าทายการตัดสินใจทางเทคนิค · 15% บังคับให้ทำให้ครบ
อัตราใช้แคชของพรอมต์96.22% อ่านจากแคช · บีบอัดบริบทอัตโนมัติ 5,116 ครั้ง (PR เดียวสูงสุด 647 ครั้ง)
แพ็กเกจ npm ที่ถอดออก~60 แพ็กเกจ

บันทึกเซสชันบอกอะไรเกี่ยวกับวิธีทำงานของเอเจนต์

เอเจนต์ใช้เวลาอ่านมากกว่าเขียนราว 10 เท่า เครื่องมือที่ถูกเรียกมากที่สุดคือ PowerShell 630,423 ครั้ง ดูไฟล์ 590,988 ครั้ง และค้นหาด้วย ripgrep 281,783 ครั้ง ขณะที่คำสั่งแก้ไขไฟล์ถูกเรียกเพียง 40,591 ครั้ง คอมไพเลอร์ Rust ทำหน้าที่เป็นด่านตรวจอัตโนมัติ จากข้อผิดพลาด 8,678 รายการ 37% เป็นเรื่องหาชื่อหรือ import ไม่เจอ 22% เมธอดหรือฟิลด์หาย 14% ชนิดข้อมูลไม่ตรง และมีเพียง 1.7% ที่เป็นเรื่อง ownership กับ borrow checker ซึ่งเป็นสิ่งที่คนมักกลัวที่สุดเวลาพูดถึง Rust

งานชิ้นใหญ่ที่สุดคือไฟล์ session.ts ขนาด 30,000 บรรทัด ใช้เซสชันแม่ยาว 25 ชั่วโมง แตกเป็นเซสชันลูก 15 เซสชันใน 7 ระลอกที่ทำงานขนานกัน โดยเซสชันแม่จัดการสถานะและความขัดแย้งของทุกสาขา การเลือกโมเดลกลายเป็นการตัดสินใจรายชิ้นงาน เซสชันหลักใช้ Claude Opus 4.8, GPT-5.6 Sol และ Claude Haiku 4.5 สลับกันตามความยากและต้นทุน

หน้าจอเครื่องมือรวมโค้ดอัตโนมัติที่ทีมใช้ให้เอเจนต์จัดการ CI ความเห็น และ conflict เองระหว่างการพอร์ต (ภาพจาก GitHub Blog)
หน้าจอเครื่องมือรวมโค้ดอัตโนมัติที่ทีมใช้ให้เอเจนต์จัดการ CI ความเห็น และ conflict เองระหว่างการพอร์ต (ภาพจาก GitHub Blog)

รีวิวโค้ดในระดับนี้ทำอย่างไร

วิศวกรผู้กำกับสร้างชุดคำสั่งชื่อ rust-rebase-review ให้เอเจนต์เทียบโค้ด TypeScript กับ Rust ทีละบรรทัดเพื่อยืนยันว่าพฤติกรรมเท่ากัน ตรวจว่าลบโค้ดเก่าครบ ตรวจว่าชุดทดสอบ end-to-end ไม่ถูกแก้ และแตกเอเจนต์ย่อยให้แต่ละโมเดลรีวิวขนานกัน บทบาทของคนจึงเปลี่ยนจากเขียนโค้ดเป็นคุมวงจร คือดูผล ท้าทายการตัดสินใจ และบังคับเกณฑ์คุณภาพ ส่วนวงจรรวมโค้ดถูกทำให้อัตโนมัติ ให้เอเจนต์จัดการ CI ที่ล้ม ตอบความเห็น และแก้ conflict เอง โดยคนสุ่มตรวจเฉพาะการตัดสินใจที่เสี่ยง

ข้อผิดพลาด 5 แบบที่หลุดออกไป

  1. ย้ายไม่ครบ ฟีเจอร์หรือ callback บางตัวหายระหว่าง rebase หรือถูกกลบด้วยงานที่ทำพร้อมกัน เช่น การยกเลิกเซสชันที่เหลือแค่ครึ่งฝั่ง native
  2. สถานะและอายุของออบเจกต์ การจัดการวงจรชีวิตต่างกันระหว่างสองภาษา เช่น hook ถูกปล่อยกลางคำขอจนบล็อกการเรียกเครื่องมือค้าง
  3. สัญญาพฤติกรรมไม่ตรง TypeScript คลุมเครือแต่ Rust บังคับให้ระบุชัด เช่น ฟังก์ชันจัดรูปแบบวันที่ที่ฝั่งเดิมรับโซนเวลาโดยปริยาย
  4. ขอบเขตกับระบบโฮสต์ พฤติกรรมแฝงของ Node.js เช่น ตัวแปรสภาพแวดล้อม โซนเวลา หรือกรณีที่ฟังก์ชันรายงานระบบไปดาวน์โหลดไฟล์สัญลักษณ์ดีบักบน Windows เอง
  5. ชุดทดสอบตัดสินผิด การทดสอบที่ยืนยันพฤติกรรมผิด หรือถูกลบโดยไม่ได้รับอนุญาต

ที่น่าสนใจคือโค้ด unsafe ทั้ง 158 บล็อกอยู่ที่ขอบเขตกับระบบภายนอกทั้งหมด เช่น อินเทอร์เฟซ C, Windows API และ libc และไม่มีข้อผิดพลาดที่พบแม้แต่รายการเดียวที่เกิดจากบล็อก unsafe อีกบทเรียนคือเหตุการณ์ที่เซสชันแม่พบว่างานของตัวเองทับซ้อนกับอีกเซสชัน แล้วตัดสินใจรวมสาขาเองโดยไม่ได้รับคำสั่ง GitHub สรุปว่าการบอกว่า "มีคนอื่นทำอยู่" ไม่พอ ต้องห้ามการกระทำที่ไม่ต้องการอย่างชัดเจน และเอเจนต์ที่ทำงานขนานกันต้องมีผู้ชี้ขาดเสมอ

บทเรียนสำหรับทีมพัฒนาไทย

น้อยทีมที่จะย้ายโค้ด 400,000 บรรทัด แต่หลายทีมมีระบบเก่าที่อยากยกเครื่องและไม่กล้าเพราะหยุดบริการไม่ได้ วิธีของ GitHub ใช้ได้กับงานเล็กกว่านี้มาก คือ แทนที่ทีละชิ้นจากส่วนที่ไม่มีสถานะก่อน คงชุดทดสอบ end-to-end เดิมไว้เป็นกรรมการ ปล่อยรุ่นเล็กบ่อย ๆ เพื่อให้หาต้นเหตุเร็ว ให้เอเจนต์ทำงานเทียบและรีวิวที่คนไม่มีวันอ่านครบ และเขียนข้อห้ามให้ชัดเมื่อมีเอเจนต์หลายตัวทำงานพร้อมกัน ที่สำคัญคือคนยังต้องเป็นผู้ตัดสินเรื่องสถาปัตยกรรมและความเสี่ยง ไม่ใช่ปล่อยให้ระบบเดินเองทั้งหมด

ทีมงาน Smart Cyber Tech รับพัฒนาและยกเครื่องซอฟต์แวร์ระบบเดิมด้วยแนวทางแทนที่ทีละส่วนโดยไม่หยุดให้บริการ พร้อมวางระบบทดสอบและ CI ให้ตรวจได้ทุกการเปลี่ยนแปลง ปรึกษาได้ที่ แบบฟอร์มติดต่อ

สรุปสาระสำคัญ

  • ทำไมต้องย้าย ทั้งที่ของเดิมใช้งานได้
  • กลยุทธ์: แทนที่ทีละชิ้นบนสาขาหลัก ไม่หยุดงานใคร
  • บันทึกเซสชันบอกอะไรเกี่ยวกับวิธีทำงานของเอเจนต์
แหล่งอ้างอิงเรียบเรียงจาก GitHub Blog — Migrating the GitHub Copilot runtime to Rust, using Copilot — อ่านบทความต้นฉบับ
ภาพปกและแผนภาพ: GitHub Blog · ลิขสิทธิ์ภาพเป็นของเจ้าของต้นฉบับ ใช้ประกอบการรายงานพร้อมอ้างอิงแหล่งที่มา
มีคำถามเพิ่มเติมเกี่ยวกับบทความนี้? เขียนหาเราได้ที่ info@smart-cyber-tech.com
บริการที่เกี่ยวข้องจากทีมงาน Smart Cyber Tech

บทความอื่นที่เกี่ยวข้อง

บทความที่เกี่ยวข้อง

รันเอเจนต์หลายตัวพร้อมกันอย่างปลอดภัย: แยกงานด้วย Git worktree ให้แต่ละเซสชันไม่รบกวนกัน DevOps

รันเอเจนต์หลายตัวพร้อมกันอย่างปลอดภัย: แยกงานด้วย Git worktree ให้แต่ละเซสชันไม่รบกวนกัน

เมื่อเอเจนต์ช่วยเขียนโค้ดทำงานได้นานขึ้นโดยไม่ต้องคอยดู คำถามถัดไปคือจะให้มันทำหลายงานพร้อมกันได้อย่างไรโดยไม่ทับกัน บทความสำหรับผู้เริ่มต้นจาก GitHub อธิบายหลักการที่ทำให้เซสชันของเอเจนต์แยกจากกันด้วย Git worktree และแนะนำวิธีเริ่มจากงานเล็กสองงานก่อน

อ่านบทความ
ใช้แอป GitHub Copilot ตรวจโค้ดที่ AI เขียนให้ครบวงจรในหน้าต่างเดียว: ดูความเปลี่ยนแปลง รันเทอร์มินัล และเปิดเบราว์เซอร์ทดสอบก่อนกดรับ DevOps

ใช้แอป GitHub Copilot ตรวจโค้ดที่ AI เขียนให้ครบวงจรในหน้าต่างเดียว: ดูความเปลี่ยนแปลง รันเทอร์มินัล และเปิดเบราว์เซอร์ทดสอบก่อนกดรับ

ปัญหาของการให้เอเจนต์ AI เขียนโค้ดไม่ได้อยู่ที่มันเขียนไม่ได้ แต่อยู่ที่คนต้องเปิดหลายหน้าต่างสลับไปมาเพื่อดูว่ามันเปลี่ยนอะไร รันผ่านไหม และหน้าจอออกมาเป็นอย่างที่ต้องการหรือเปล่า บทความชุด GitHub Copilot app for Beginners จาก GitHub เมื่อวันที่ 10 กันยายน 2026 แนะนำสามแผงในแอป Copilot ที่ตอบสามคำถามนี้ในที่เดียว คือแผงเปรียบเทียบโค้ด แผงเทอร์มินัล และแผงเบราว์เซอร์ บทความนี้สรุปวิธีใช้แต่ละแผง ลำดับการตรวจที่ควรทำทุกครั้งก่อนกดรับโค้ด และข้อควรระวังสำหรับทีมที่เพิ่งเริ่มให้ AI ช่วยเขียนโค้ด

อ่านบทความ
ลดค่าใช้จ่ายของเอเจนต์ AI ช่วยเขียนโค้ดโดยไม่ลดคุณภาพงาน: สี่การทดลองที่วัดผลได้จริง DevOps

ลดค่าใช้จ่ายของเอเจนต์ AI ช่วยเขียนโค้ดโดยไม่ลดคุณภาพงาน: สี่การทดลองที่วัดผลได้จริง

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

อ่านบทความ

ติดต่อเพื่อขอรับคำปรึกษาจากทีมงาน

ตั้งแต่ประเมินระบบปัจจุบัน วางแผน จนถึงลงมือพัฒนา — คุยกับเราได้โดยไม่มีค่าใช้จ่าย

ปรึกษาทีมของเรา