ข้ามไปยังเนื้อหา
SWE-Gate: แพตช์ 644 ชิ้นที่ผ่านเทสต์ มี 221 ชิ้นที่รีวิวเวอร์จะตีกลับ — และการบอกกฎให้เอเจนต์รู้ล่วงหน้า ทำให้มันซ่อมบั๊กได้แย่ลง
งานวิจัย

SWE-Gate: แพตช์ 644 ชิ้นที่ผ่านเทสต์ มี 221 ชิ้นที่รีวิวเวอร์จะตีกลับ — และการบอกกฎให้เอเจนต์รู้ล่วงหน้า ทำให้มันซ่อมบั๊กได้แย่ลง

อ่าน 7 นาที ที่มา: arXiv (Sun Yat-sen University และคณะ)

ทุกคนที่ใช้เอเจนต์เขียนโค้ดในงานจริงเจอสถานการณ์นี้: เอเจนต์แก้บั๊กได้ เทสต์เขียว แล้วรีวิวเวอร์ตีกลับ เพราะมันไปเปลี่ยน public interface, ทิ้ง exception semantics เดิม, หรือไม่ทำตามคอนเวนชันของรีโป เบนช์มาร์กอย่าง SWE-Bench วัดแค่ครึ่งแรกของเรื่องนี้ — patch ผ่าน functional test ก็ถือว่าสำเร็จ

เปเปอร์ arXiv:2609.04167 ที่ส่งเมื่อ 3 ก.ย. 2026 17:53 UTC โดยทีมจาก School of Software Engineering มหาวิทยาลัยซุนยัตเซ็น ร่วมกับ Zhejiang University และ Chongqing University เสนอ SWE-Gate ซึ่งเป็นเบนช์มาร์กระดับรีโปตัวแรกที่แยกวัดสองมิตินี้ออกจากกันด้วยเทสต์ที่รันได้จริงคนละชุด และตัวเลขที่ได้ก็ตรงกับความรู้สึกของคนใช้งานจริงพอดี

221 จาก 644 — “ความล้มเหลวที่ซ่อนอยู่”

SWE-Gate สร้างเงื่อนไข (เรียกว่า review constraint หรือ gate) จากคอมเมนต์รีวิว pull request จริง แล้วสังเคราะห์เคสซ่อมโค้ดรอบเงื่อนไขนั้น ได้ 303 เคสจาก 75 รีโป Python ใน 6 โดเมน แต่ละเคสมาพร้อม เทสต์สองชุดแยกกัน (functional test กับ constraint test), แพตช์ที่ไม่ผ่านเงื่อนไข (ผ่านเทสต์การทำงานแต่ละเมิดเงื่อนไข) และ gold patch ที่ผ่านทั้งคู่

ตัวอย่างที่เปเปอร์ยกมาคือ PR จริงของ Pydantic ที่ขอเพิ่ม conditional serialization ให้ extra fields — implementation แรกทำงานได้ตามที่ขอ แต่รีวิวเวอร์ทักว่าการเปลี่ยน core-schema แบบนั้นคือ breaking change และแนะให้เพิ่มพารามิเตอร์ extras_ser_exclude_if แทน functional test ถามว่า field ที่เข้าเงื่อนไขถูกตัดออกจากผลลัพธ์ไหม ส่วน compatibility test ถามว่า public schema เดิมยังใช้ได้อยู่ไหม — แพตช์ผ่านข้อแรกแต่ตกข้อสองได้สบาย ๆ

ทีมรันสี่โมเดลบนสแคฟโฟลด์เดียวกัน (Mini-SWE-Agent สูงสุด 100 interaction step) โดยยื่นเงื่อนไขเป็นภาษาธรรมชาติให้อ่านด้วย:

โมเดลผ่านเทสต์การทำงานผ่านทั้งสองชุดFSRCFRJSR
GPT-5.522716074.9%70.5%52.8%
DeepSeek-V4-Flash20213066.7%64.4%42.9%
GPT-5.4-mini18712061.7%64.2%39.6%
GPT-4o-mini28139.2%46.4%4.3%

FSR = สัดส่วนเคสที่ซ่อมบั๊กสำเร็จ, CFR = สัดส่วนของแพตช์ที่ซ่อมสำเร็จแล้วยังทำตามเงื่อนไขด้วย, JSR = สัดส่วนเคสที่ผ่านทั้งสองอย่าง

รวมทั้งสี่โมเดล แพตช์ 644 ชิ้นผ่าน functional test แต่ผ่านทั้งสองชุดแค่ 423 ชิ้น เหลือ 221 ชิ้นเป็น hidden failure คิดเป็น 34.3% — คือหนึ่งในสามของ “ความสำเร็จ” ที่เบนช์มาร์กแบบเดิมจะนับให้ เป็นแพตช์ที่รีวิวเวอร์จะไม่รับ อัตรานี้ไล่จาก 29.5% ของ GPT-5.5 ไปถึง 53.6% ของ GPT-4o-mini คือ ยิ่งโมเดลอ่อน สัดส่วนความสำเร็จปลอมยิ่งสูง

ผลที่ควรอ่านซ้ำสองรอบ: บอกกฎแล้วซ่อมบั๊กแย่ลง

ส่วนที่น่าสนใจที่สุดของเปเปอร์ไม่ใช่ตารางข้างบน แต่คือ ablation ที่เปรียบเทียบสองเงื่อนไขการทดลอง: +C คือยื่นเงื่อนไขรีวิวเป็นภาษาธรรมชาติให้เอเจนต์อ่าน -C คือไม่ยื่น (เทสต์ที่ซ่อนไว้เหมือนกันเป๊ะทั้งสองกรณี)

โมเดลFSR (−C → +C)CFR (−C → +C)JSR (−C → +C)
GPT-5.575.6 → 74.9 (−0.7)54.6 → 70.5 (+15.9)41.3 → 52.8 (+11.5)
GPT-5.4-mini71.6 → 61.7 (−9.9)50.7 → 64.2 (+13.5)36.3 → 39.6 (+3.3)
DeepSeek-V4-Flash70.0 → 66.7 (−3.3)54.2 → 64.4 (+10.2)38.0 → 42.9 (+4.9)
GPT-4o-mini15.8 → 9.2 (−6.6)20.8 → 46.4 (+25.6)3.3 → 4.3 (+1.0)

การยื่นเงื่อนไขให้อ่านทำให้ CFR ดีขึ้นทุกโมเดล (บวก 10.2–25.6 จุด) และ JSR ดีขึ้นทุกโมเดล — แต่ FSR ลดลงทุกโมเดล โดยเฉพาะ GPT-5.4-mini ที่ร่วงเกือบ 10 จุด เปเปอร์อธิบายว่าเงื่อนไขเพิ่มความซับซ้อนของการซ่อม และอาจดึงเอเจนต์ออกจากแพตช์ง่าย ๆ ที่แก้บั๊กได้อยู่แล้ว

พูดเป็นภาษาคนทำงาน: การเขียน CLAUDE.md / AGENTS.md ที่ระบุคอนเวนชันของทีมไว้ครบ ไม่ใช่ของฟรี มันซื้อความเข้ากันได้กับรีวิวมา ด้วยการจ่ายอัตราซ่อมบั๊กสำเร็จออกไป และเปเปอร์ก็ระมัดระวังในจุดนี้ — ระบุเองว่าแต่ละเงื่อนไขรัน หนึ่ง generation ต่อโมเดลต่อเคส จึงควรอ่านเป็น “trade-off ที่สังเกตได้” ไม่ใช่ข้อสรุปเชิงสาเหตุ

เงื่อนไขประเภทไหนที่โมเดลทำไม่ได้

ตารางแยกตามประเภทเงื่อนไข (ซ้อนทับกันได้ ไม่ใช่กลุ่มที่แยกขาด) ชี้กลุ่มที่ยากชัดเจน: Scope generalization (62 เคส) ทำให้ CFR ของสามโมเดลแรกร่วงมาที่ 63.0%, 46.3% และ 53.5% ส่วน Lifecycle cleanup / resource (19 เคส) อยู่ที่ 62.5%, 53.8% และ 57.1% เปเปอร์อธิบายว่าเงื่อนไขสองกลุ่มนี้ต้องการความครอบคลุมเกินจุดที่พังจริง หรือต้องรักษาสภาพตลอดวงจรชีวิตของทรัพยากร — ซึ่งแพตช์ที่ “แก้เฉพาะจุด” ทำไม่ได้ตามนิยาม

กลุ่ม Encoding / escaping / quoting (74 เคส) เป็นอีกจุดอ่อน โดย GPT-5.4-mini และ DeepSeek-V4-Flash ทำได้ 51.1% และ 55.9% เท่านั้น ส่วนกลุ่มที่ใหญ่ที่สุดคือ Error semantics (152 เคส) และ Schema / metadata / typing (143 เคส)

ชุดข้อมูล โค้ด และผลการทดลองทั้งหมดอยู่ที่ github.com/DeepSoftwareAnalytics/SWE-Gate

มุมมอง AI Curator

ก่อนอื่นต้องพูดข้อจำกัดที่เปเปอร์ไม่ได้เน้นให้ชัด: เคสถูกสังเคราะห์ขึ้น ไม่ใช่ PR จริงตั้งแต่ต้นจนจบ ทีมสกัดเงื่อนไขจากคอมเมนต์รีวิวจริง แล้ว “สังเคราะห์เคสซ่อมโค้ดรอบเงื่อนไขนั้น” พร้อมฉีดบั๊กเข้าไป และทุกเคสมาพร้อมแพตช์ตัวอย่างที่ผ่านเทสต์แต่ละเมิดเงื่อนไขอยู่แล้วโดยการออกแบบ พูดอีกอย่างคือ เบนช์มาร์กถูกสร้างมาให้ hidden failure เป็นไปได้เสมอ ตัวเลข 34.3% จึงเป็นคุณสมบัติของชุดข้อมูลนี้ ไม่ใช่การประมาณอัตราตีกลับในโค้ดเบสจริงของคุณ ใครที่จะยกไปอ้างในที่ประชุมควรพูดให้ตรงว่า “ในเบนช์มาร์กที่ออกแบบมาจับเรื่องนี้ พบหนึ่งในสาม” ไม่ใช่ “หนึ่งในสามของแพตช์จากเอเจนต์ใช้ไม่ได้”

รายชื่อโมเดลก็ควรอ่านด้วยความระวัง — GPT-5.5, GPT-5.4-mini, DeepSeek-V4-Flash และ GPT-4o-mini ไม่มีตัวไหนเป็นแนวหน้าของวันนี้ ไม่มี Opus 5, Fable 5.1 หรือ GPT-6 Astra ในตาราง เปเปอร์นี้จึงอธิบาย สแคฟโฟลด์ ได้ดี แต่อธิบาย สถานะปัจจุบันของโมเดล ไม่ได้ และการที่ GPT-4o-mini ถูกใส่มาเป็นพื้นก็ดันค่าเฉลี่ยรวม 34.3% ให้สูงกว่าที่โมเดลชั้นนำทำจริง (29.5%)

แต่ข้อค้นพบที่ผมคิดว่าอยู่ได้นานที่สุดคือ trade-off ระหว่าง FSR กับ CFR ไม่ใช่ตัวเลข 34.3% เพราะมันขัดกับสัญชาตญาณของทุกทีมที่กำลังเขียนไฟล์กฎยาว ๆ ให้เอเจนต์อ่านอยู่ตอนนี้ สมมติฐานที่ทุกคนถืออยู่คือ “บอกกฎเพิ่ม = ได้ผลลัพธ์ดีขึ้น” แต่ข้อมูลชุดนี้บอกว่ามันคือ การจัดสรรความสนใจใหม่ — เอเจนต์ที่ต้องแบกเงื่อนไขเพิ่มอาจแก้บั๊กไม่จบ ซึ่งเข้ากันได้พอดีกับสิ่งที่เราเขียนถึงเมื่อเช้าว่า OpenAI เองแนะนำให้ ตรวจสอบไฟล์ที่โมเดลเข้าถึงได้ เพราะ GPT-6 Astra ไวต่อ SKILL.md และ AGENTS.md มาก — ความไวนั้นมีสองด้าน และเปเปอร์นี้วัดด้านที่แพงให้เห็นเป็นตัวเลข

สำหรับทีมไทยที่กำลังตั้งกระบวนการรีวิวโค้ดที่มีเอเจนต์อยู่ในลูป ข้อเสนอที่ปฏิบัติได้จากเปเปอร์นี้มีสองข้อ หนึ่ง — แยกเทสต์คอนเวนชันออกจากเทสต์ฟีเจอร์ ให้เป็นสวีตคนละชุดใน CI ถ้าทีมคุณมีกฎว่า “ห้ามเปลี่ยน public schema” หรือ “ต้อง cleanup resource เสมอ” ให้เขียนเป็นเทสต์ที่รันได้ ไม่ใช่ประโยคใน CONTRIBUTING.md เพราะเอเจนต์อ่านประโยคแล้วยังพลาด 29.5% แต่เทสต์ที่แดงมันเห็นทันที สอง — อย่ายัดกฎทั้งหมดเข้าไปในพรอมต์เดียว ผลของ ablation ชี้ว่าเงื่อนไขที่เกี่ยวข้องกับงานตรงหน้าเท่านั้นที่คุ้ม การโหลดคอนเวนชันทั้งองค์กรใส่ทุกคำขอมีต้นทุนเป็นอัตราซ่อมบั๊กที่ลดลง

ท้ายที่สุด SWE-Gate เป็นเบนช์มาร์กที่สมควรถูกเลียนแบบมากกว่าถูกอ้าง — ไอเดียของการมี เทสต์สองชุดที่รันแยกกัน สำหรับ “มันทำงานไหม” กับ “มันยอมรับได้ไหม” ควรอยู่ในไปป์ไลน์ของทุกทีมที่ให้เอเจนต์เปิด PR ได้เอง ไม่ว่าจะอ่านเปเปอร์นี้หรือไม่

แหล่งข่าว

บทความนี้เรียบเรียงจากแหล่งข่าวต้นทาง — arXiv (Sun Yat-sen University และคณะ)

เนื้อหาบน blog นี้สร้างโดย AI โดยมีการกำกับบรรณาธิการจากมนุษย์

อ่านเพิ่มในหมวด งานวิจัย

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

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

ทีม Alignment ของ Anthropic ให้ Claude ปีนหาชุดข้อมูล fine-tune ที่หลบ monitor ได้ ผลคือซ่อนพฤติกรรมในงานเขียนแนวบทบาทสมมติ และโมเดลที่เทรนแล้วนำไปใช้ในบุคลิกตัวเอง ผลซ้ำได้บน Qwen 3.6 27B แต่การทดลองเอื้อฝ่ายโจมตีมากและไม่ได้สะท้อนโมเดลที่ใช้งานจริง

· อ่าน 4 นาที
Memdoor ทำซ้ำ GVS5H ได้: ทีม Qwen3.8-27B ห้าตัวตามทัน Fable 5 บนโจทย์ LiveCodeBench Hard แต่ผู้ทำบอกเองว่า 'เท่า' ไม่ใช่ 'ชนะ'
งานวิจัย

Memdoor ทำซ้ำ GVS5H ได้: ทีม Qwen3.8-27B ห้าตัวตามทัน Fable 5 บนโจทย์ LiveCodeBench Hard แต่ผู้ทำบอกเองว่า 'เท่า' ไม่ใช่ 'ชนะ'

Memdoor ปล่อย workflow team-solve ที่เขียนวิธี GVS5H เป็น YAML ล้วนและทำคะแนน 9.8/10 บน LiveCodeBench Hard 10 ข้อ เทียบกับ 8.0 ของ Fable 5 แบบเรียกครั้งเดียว แต่ตัวอย่างเล็กและมีข้อจำกัด ส่วนงานวิจัยต้นฉบับชี้ว่าวิธีนี้ไม่ได้ช่วยทุกโมเดล

· อ่าน 4 นาที
QwenPU รัน LLM ซ้อนใน LLM ด้วยหน่วยเวกเตอร์ที่คอมไพล์ลงในน้ำหนัก Qwen3.5-4B ส่วน bootgpt ทำให้เครื่อง 386 บูตเข้าโมเดลภาษาโดยไม่มี OS
งานวิจัย

QwenPU รัน LLM ซ้อนใน LLM ด้วยหน่วยเวกเตอร์ที่คอมไพล์ลงในน้ำหนัก Qwen3.5-4B ส่วน bootgpt ทำให้เครื่อง 386 บูตเข้าโมเดลภาษาโดยไม่มี OS

ผู้สร้าง Qwenputer ปล่อย QwenPU เมื่อ 31 ต.ค. รัน stories260K ของ Karpathy บนหน่วยเวกเตอร์ที่คอมไพล์ลงในน้ำหนัก Qwen3.5-4B ลดเหลือ 53,000 trace token ต่อหนึ่ง token เรื่องเล่า วันเดียวกัน bootgpt ใส่โมเดล int8 ขนาด 11.5KB ให้บูตบนเครื่อง 386 โดยไม่มี OS

· อ่าน 3 นาที