Coding Agents เขียน Swift ได้ดี แต่พวกมันทำงานให้เสร็จไม่ได้
ผมใช้เวลาหลายเดือนในการทดสอบ AI coding agents กับงาน Swift และ Xcode จริงๆ ผมไม่ได้ใช้แค่ตัวอย่างเดโมแบบง่ายๆ แต่ผมให้โจทย์งานจริงๆ ที่มีทั้ง build targets และการทดสอบ (tests)
ร่างแรกมักจะออกมาดูดี โมเดลที่มีความสามารถจะเขียนโค้ดที่ดูเหมือนจะถูกต้อง ประเภทข้อมูล (types) ตรงกัน View ต่างๆ ก็ดูสมเหตุสมผล ถ้าการเขียน Swift เป็นปัญหาเพียงอย่างเดียว เครื่องมือเหล่านี้ก็คงจะสมบูรณ์แบบไปแล้ว
ปัญหาที่แท้จริงเกิดขึ้นหลังจากร่างแรก มันคือช่องว่างระหว่างโค้ดที่ "ดูเหมือนจะเสร็จ" กับโค้ดที่ "ถูกต้องจริงๆ"
เครื่องมือสมัยใหม่อย่าง Claude Code หรือ Codex จัดการกับ compile errors ได้ดี พวกมันไม่ส่งโค้ดที่ build ไม่ผ่านมาให้คุณ แต่ความล้มเหลวที่แท้จริงคือสิ่งที่ compiler มองไม่เห็น
ความล้มเหลวเหล่านี้ทำให้ผมเสียเวลา:
• Intent mismatch: โค้ดคอมไพล์ผ่านและผ่านการทดสอบ แต่พฤติกรรมของโปรแกรมกลับผิดพลาด ตัว agent มุ่งทำตาม "ไฟเขียว" จากผลการทดสอบที่ผ่าน แทนที่จะทำตามเป้าหมายจริงๆ ของคุณ มันไม่มีวิธีตรวจสอบว่าสิ่งที่ทำนั้นตรงตามเจตนาหรือไม่
• Concurrency races: โค้ด build ผ่านแบบสะอาดสะอ้าน แต่กลับมี data races ซึ่งจะปรากฏขึ้นเฉพาะตอน runtime เท่านั้น ตัว agent เห็นว่า build ผ่านก็เลยข้ามไป การแก้ไขปัญหาเหล่านี้มักต้องอาศัยการออกแบบใหม่ (redesign) ซึ่งเป็นสิ่งที่ agent ยังทำไม่ได้
• Regression loops: Agent แก้บั๊กหนึ่งแต่กลับไปทำให้อีกบั๊กหนึ่งพัง ในขณะที่กำลังแก้บั๊กที่สอง มันกลับไปยกเลิกการแก้ไขครั้งแรก ทำให้มันติดอยู่ในลูปที่สลับไปมาระหว่างสถานะที่พังสองแบบ เพราะมันขาดความจำว่าอะไรเคยล้มเหลวมาก่อน
• Poor architecture: Agent เขียนโค้ดที่ขัดกับ framework มันเพิกเฉยต่อโครงสร้างแอปของคุณ โค้ดอาจจะใช้งานได้ดีสำหรับสคริปต์ที่เขียนทิ้งเขียนขว้าง แต่จะล้มเหลวเมื่ออยู่ใน codebase จริง
สิ่งเหล่านี้ไม่ใช่ปัญหาเรื่องภาษา โมเดลรู้จัก Swift ดี แต่มันพลาดในสิ่งที่ compiler มองไม่เห็น มันไม่รู้ว่าผลลัพธ์ที่ได้ตรงตามเจตนาของคุณหรือไม่ หรือโครงสร้างนั้นมีความเป็นมืออาชีพเพียงใด
สิ่งนี้เปลี่ยนต้นทุนจาก tokens ไปเป็นความใส่ใจ (attention) แทน Agent ที่คุณต้องคอยเฝ้าดูทุกๆ ไม่กี่ขั้นตอนไม่ได้ช่วยประหยัดงานให้คุณเลย แต่มันเปลี่ยนจากการ "เขียน" เป็นการ "ควบคุมดูแล" (supervising) แทน
ผมกำลังปรับปรุงผลลัพธ์โดยการเปลี่ยน loop รอบๆ โมเดล ผมมุ่งเน้นไปที่สิ่งที่ agent ตรวจสอบและจดจำ
เรื่องนี้ตรงกับประสบการณ์ของคุณไหม? เมื่อคุณรัน agent บน Apple platforms มันพังตรงไหน? เป็นเรื่อง intent mismatch, runtime races หรืออย่างอื่น?
Source: https://dev.to/jbrackin/coding-agents-are-good-at-writing-swift-theyre-bad-at-finishing-it-md3
Optional learning community: https://t.me/GyaanSetuAi
