เมื่อนำเอเจนต์เขียนโค้ดใส่ใน while loop ก็ได้รีโพเสร็จ 6 แห่งภายในข้ามคืน
(github.com/repomirrorhq)- เมื่อนำ Claude Code แบบ headless ไปใส่ในลูปไม่สิ้นสุด ก็สร้างผลลัพธ์เป็น คอมมิตมากกว่า 1,000 รายการ และการพอร์ตโค้ดเบสหลายชุด
- ด้วยวิธีนี้ จึงพอร์ตได้สำเร็จหลากหลายแบบ เช่น โปรเจกต์ React ของ assistant-ui ไปเป็น Vue และโปรเจกต์ Python ไปเป็น TypeScript แบบอัตโนมัติ
- พบว่ายิ่ง ทำพรอมป์ต์ให้เรียบง่าย ประสิทธิภาพยิ่งดี และเมื่อทำให้ซับซ้อนเกินไปจะยิ่งไม่มีประสิทธิภาพ
- แม้จะยังไม่สมบูรณ์แบบ แต่ก็พัฒนาเครื่องมือ RepoMirror เพิ่มขึ้นมาด้วย ซึ่งมีประโยชน์ต่อการซิงก์รีโพต้นทาง/ปลายทาง
- ยังพบพฤติกรรมและบทเรียนที่ไม่คาดคิด เช่น AI agent หยุดตัวเอง หรือเพิ่มงานเอง ทำให้เห็นทั้งศักยภาพและข้อจำกัดของระบบอัตโนมัติในอนาคต
ภาพรวมและเป้าหมายของโปรเจกต์
- โปรเจกต์นี้เป็นการทดลองนำ AI coding agent ใส่ใน while loop แบบไม่สิ้นสุด เพื่อดูว่ามันทำงานพอร์ตโค้ดจริงอย่างไร
- ใช้ Claude Code แบบ headless โดยป้อนพรอมป์ต์เดิมซ้ำอย่างต่อเนื่อง เพื่อให้ทำกระบวนการแปลงอัตโนมัติกับรีโพต่าง ๆ
- ได้ผลลัพธ์เป็น การทำงานพอร์ตหลายรูปแบบแบบอัตโนมัติ เช่น React ไป Vue, Python ไป TypeScript พร้อมคอมมิตมากกว่า 1,000 ครั้ง
- ระหว่างทางยังพัฒนา RepoMirror ซึ่งเป็นเครื่องมือช่วยงานพอร์ตอัตโนมัติขึ้นมาด้วย
การเดินระบบเอเจนต์แบบลูปไม่สิ้นสุด
- ใช้วิธีที่ Geoff Huntley แนะนำ คือรันพรอมป์ต์ของ coding agent ต่อเนื่องจากเชลล์
- ตัวอย่าง:
while :; do cat prompt.md | claude -p --dangerously-skip-permissions; done
- ตัวอย่าง:
- นำวิธีลูปนี้ไปใช้กับงานอย่างการเปลี่ยน assistant-ui จาก React เป็น Vue
- ทุกครั้งที่แก้แต่ละไฟล์ จะมีการคอมมิตและพุช
- บันทึกประวัติและแผนงานไว้ในไดเรกทอรี .agent/
การทดลองเคสพอร์ตที่หลากหลาย
-
Browser Use (พอร์ตจาก Python ไป TypeScript)
- ใช้พรอมป์ต์แบบเรียบง่ายแล้วรัน infinite loop
- ให้ลูปรันต่อเนื่องผ่าน tmux บน GCP VM
- พอตอนเช้าก็พบผลลัพธ์เป็น TypeScript port ที่เกือบสมบูรณ์
-
ใช้กับการพอร์ต Vercel AI SDK จาก TypeScript → Python ด้วย
- สร้าง auto adapter สำหรับ FastAPI/Flask
- รองรับการแปลงไปยัง schema validator หลากหลายแบบของ Python
-
ระบบอัตโนมัติสำหรับโค้ดตามสเปก: ลองสร้างโค้ดจากเอกสารโดยตรงกับโปรเจกต์อย่าง Convex และ Dedalus
สิ่งที่เกิดขึ้นระหว่างทดลองและบทเรียนที่ได้
การเขียนเทสต์และการหยุดตัวเองของเอเจนต์
- เอเจนต์เขียนโค้ดทดสอบตามคำสั่งได้ด้วย
- มีกรณีที่มันติดลูปไม่สิ้นสุด หรือเมื่อคิดว่าภารกิจเสร็จแล้วก็จบโปรเซสเองด้วย
pkill - มันค่อนข้างเคร่งกับขอบเขตงาน และบันทึกระดับความคืบหน้าซ้ำ ๆ ไว้ใน TODO.md
พฤติกรรมเกิดใหม่เพิ่มเติม
- หลังงานพอร์ตเสร็จ เอเจนต์ยัง เพิ่มฟีเจอร์เสริม เอง เช่น FastAPI/Flask integration และการรองรับ schema validator ทั้งที่เวอร์ชัน JS เดิมไม่มี
ความสำคัญของการทำพรอมป์ต์ให้เรียบง่าย
- พรอมป์ต์ที่สั้นและง่ายให้ประสิทธิภาพดีกว่าอย่างชัดเจน
- หากเพิ่มจากพรอมป์ต์ 103 ตัวอักษรเป็น 1,500 ตัวอักษร จะช้าลงและความแม่นยำลดลง
- ดูข้อมูลพรอมป์ต์ที่ใช้จริงได้ในโฟลเดอร์ prompts
ข้อจำกัดของระบบอัตโนมัติเต็มรูปแบบ
- ปัญหาชัดเจนคือ บางครั้งยังปล่อยโค้ดพอร์ตที่ใช้งานไม่ได้สมบูรณ์ออกมา (เช่นเดโมเบราว์เซอร์บางส่วนยังไม่เสร็จ)
- ยังต้องมีการปรับพรอมป์ต์และแก้แบบโต้ตอบเพิ่มเติม
โครงสร้างพื้นฐาน/ต้นทุน และการปฏิบัติการ
- ใช้ค่าใช้จ่ายราว $800 มีคอมมิตรวม 1,100 ครั้ง และเอเจนต์แต่ละตัวมีต้นทุนประมาณ $10.50/ชั่วโมง
- สร้างเครื่องมืออัตโนมัติสำหรับงานพอร์ตระหว่างรีโพต้นทาง/ปลายทางหลายชุดขึ้นมาทันที (RepoMirror)
- ใช้หลักการ open-box แบบสไตล์ shadcn และหลังขั้นตอน init จะสร้างโฟลเดอร์ที่ปรับแต่งสคริปต์และพรอมป์ต์ได้
- รองรับการรันซ้ำด้วย
npx repomirror syncและsync-forever
การใช้เครื่องมือและวิธีนำไปใช้งาน
- ใช้
npx repomirror initเพื่อกำหนดไดเรกทอรีต้นทาง/ปลายทางและคำสั่งสำหรับเริ่มต้น- เช่น นำไปใช้กับคำสั่งใหม่ได้ง่ายอย่าง React → Vue หรือ gRPC → REST
- โครงสร้างโฟลเดอร์:
- มีการสร้างไฟล์เริ่มต้นอัตโนมัติ เช่น .repomirror/prompt.md, sync.sh, ralph.sh
- เดินลูปพอร์ตด้วย AI ผ่านการรัน sync/sync-forever ในแต่ละรอบ
- ดูตัวอย่างหลัก ผลลัพธ์เดโม และรีโพซอร์สโค้ดได้ใน README
ความรู้สึกหลังการทดลองและฟีดแบ็กจากทีม
รู้สึกได้ถึง AGI (ปัญญาประดิษฐ์ทั่วไป) อย่างเป็นรูปธรรม และมาพร้อมทั้ง ความตื่นเต้นกับความหวาดหวั่นเล็กน้อย
ได้สัมผัสด้วยตัวเองว่าความเรียบง่ายนั้นได้ผลจริง
รู้สึกว่านี่คือ ช่วงเริ่มต้นมาก ๆ ของเส้นโค้งการเติบโตแบบเอ็กซ์โปเนนเชียล
- กล่าวขอบคุณสมาชิกทีมและผู้ที่ช่วยเสนอไอเดีย
บทสรุป
- ได้สัมผัสประสบการณ์จริงของการทำงานพอร์ตและซิงก์ซอร์สโค้ดด้วย AI coding agent บนพื้นฐานของลูปไม่สิ้นสุด
- ตอกย้ำความสำคัญของโครงสร้างที่เรียบง่ายและการออกแบบพรอมป์ต์อย่างมีประสิทธิภาพ
- เผยให้เห็นทั้งศักยภาพในอนาคตและข้อจำกัดของระบบอัตโนมัติ
- เครื่องมือที่เกี่ยวข้องอย่าง RepoMirror สามารถนำไปใช้และศึกษาต่อได้ในรูปแบบโอเพนซอร์ส
2 ความคิดเห็น
ความคิดเห็นใน Hacker News
agent/TODO.mdอย่างต่อเนื่องเพื่อบันทึกความคืบหน้า และยังมีเอเจนต์ตัวหนึ่งที่รู้ตัวว่าติด infinite loop แล้วสั่งpkillเพื่อจบการทำงานของตัวเองด้วย เป็นเหตุการณ์ที่น่าสนใจมากในหลายแง่มุม ฉันมีความคิดบางอย่างเกี่ยวกับโปรเจ็กต์นี้ เมื่อ 1.5 ปีก่อนก็มีความพยายามคล้ายกัน แต่ตอนนั้นที่อิง GPT-3.5/4 แทบใช้งานไม่ได้เลย รอบนี้ผลลัพธ์ดีกว่ามาก น่าทึ่งที่แค่พรอมป์ตง่าย ๆ ก็ทำงานได้ดีขนาดนี้ อาจเป็นไปได้ว่าเราทุกคนคิดให้งานมันซับซ้อนเกินไปเอง ขณะเดียวกันปัญหาลิขสิทธิ์/IP น่าจะซับซ้อนมากขึ้นพอสมควร สำหรับผู้ให้บริการ SaaS กระแสนี้เป็นแรงกระแทก และถ้ามีเทคโนโลยีนี้บวกกับวิศวกร 10 คนในบริษัทขนาดกลาง เหตุผลที่จะพัฒนาระบบใช้เอง (= NIH syndrome) ก็ชัดเจนขึ้นมากpkillปิดตัวเองเพราะติด infinite loop นี่อาจเป็นกรณีแรกของ AI ที่ “ฆ่าตัวตาย” หรือเปล่าpkillปิดตัวเองนี่อาจแก้ Halting Problem ได้แล้วก็ได้IMPLEMENTATION_PLAN.mdได้ไหมforloop ครั้งเดียวก็พอ เป็นโปรเจ็กต์ที่บ้าดีID.md,EGO.md,SUPEREGO.mdก็จบแล้ว เป็นมุกขำ ๆผมเห็นด้วยกับความกังวลที่ว่าโค้ดที่ LLM เขียนจะกลายเป็นกล่องดำ แต่ท้ายที่สุดแล้ว เราก็สามารถให้ LLM วิเคราะห์โค้ดนั้นได้ไม่ใช่หรือ?