ผมได้ทำสคริปต์รีแพ็กเกจเพื่อรันแอป Codex บน Windows ARM64
(github.com/airtaxi)ไม่นานมานี้ผมซื้อ ASUS Zenbook A16 มา เครื่องแรงมากและแบตเตอรี่ก็น่าพอใจมากด้วย
แต่พอดีกับที่นโยบายราคาของ GitHub Copilot แบบใหม่สำหรับผมรู้สึกว่าไม่ค่อยสมเหตุสมผลนัก ผมเลยเริ่มย้ายเอเจนต์เขียนโค้ดหลักที่ใช้พัฒนาไปทาง OpenAI Codex แทน Codex CLI รองรับ Windows ARM64 อยู่แล้ว จึงรันได้ค่อนข้างดี ปัญหาอยู่ที่แอป Codex เวอร์ชัน Windows ที่แจกผ่าน Microsoft Store มีให้เฉพาะ x64 เท่านั้น ทำให้บน Windows ARM64 แอป Electron ทั้งตัวต้องรันแบบ emulation
ถ้ามันเป็นแค่ระดับ “แสดงสถาปัตยกรรมเป็น x64” ก็คงพอมองข้ามได้ แต่ในความเป็นจริงอาการหน่วงตอนพิมพ์และ UI ค้างนั้นรบกวนพอสมควร Codex CLI รันบน ARM64 ได้ดี แต่ตัวแอป Codex กลับยังเป็น x64 emulation ก็เลยน่าเสียดายอยู่เหมือนกัน
ไหน ๆ ก็เป็นแอป Electron อยู่แล้ว และฝั่ง Linux เองก็มีตัวอย่างการแก้ทางคล้ายกันด้วยการนำ resource ของแอป upstream มาวางบน Electron runtime ตัวใหม่ ผมเลยคิดว่าน่าจะรีแพ็กเกจสำหรับ Windows ARM64 ได้เหมือนกัน จึงทำสคริปต์ PowerShell ที่ดึงแอป Codex Windows x64 อย่างเป็นทางการมาจากตัวติดตั้ง แล้วสลับเป็น ARM64 runtime และ native module ก่อนแพ็กกลับเป็น MSIX ที่ลงลายเซ็นเอง
รีโพซิทอรี่อยู่ที่นี่
https://github.com/airtaxi/codex-app-windows-arm64
แนวทางปัจจุบันโดยคร่าว ๆ เป็นดังนี้
- ใช้แพ็กเกจ Codex x64 อย่างเป็นทางการที่ติดตั้งจาก Microsoft Store เป็นซอร์ส
- เปลี่ยน Electron runtime เป็น
win32-arm64 - เปลี่ยน Node.js เป็น
win-arm64 - native module แบบ in-process อย่าง
better-sqlite3,node-ptyจะ rebuild เป็น ARM64 - helper ที่มี ARM64 asset เช่น
codex.exe,codex-command-runner.exe, sandbox setup helper,rg.exeจะถูกเปลี่ยนเป็นเวอร์ชัน ARM64 - เครื่องมือแบบ out-of-process ที่ยังหา ARM64 ตัวทดแทนไม่ได้ เช่น
node_repl.exe,tectonic.exeจะปล่อยให้ fallback ไปใช้ x64 emulation windows-updater.nodeจะถูกลบออก เพราะฟีเจอร์อัปเดตไม่เหมาะกับแพ็กเกจที่ลงลายเซ็นเอง- สุดท้ายใช้
makeappx.exeและsigntool.exeสร้าง ARM64 MSIX แล้วให้Install.batจัดการลงทะเบียนความน่าเชื่อถือของใบรับรองและติดตั้ง
ในรีลีสผมอัปโหลด dist.7z ที่ build ไว้ด้วยแล้ว แตกไฟล์แล้วรัน Install.bat ได้เลย
https://github.com/airtaxi/codex-app-windows-arm64/…
ที่เกี่ยวข้องกัน ผมก็ไปคอมเมนต์ไว้ใน issue ของฝั่ง openai/codex ด้วย
https://github.com/openai/codex/issues/17491#issuecomment-4369034462
ถ้ามีการรองรับ Windows ARM64 อย่างเป็นทางการเมื่อไร เหตุผลที่โปรเจกต์นี้มีอยู่ก็คงแทบจะหายไปเลย จนกว่าจะถึงตอนนั้น ผมตั้งใจว่าจะพยายามอัปเดตให้ตามเวอร์ชันของแอป Codex ให้ได้มากที่สุดทุกครั้งที่มีการออกรุ่นใหม่
ถ้าใครใช้เครื่อง Windows on ARM แล้วรู้สึกอึดอัดกับการที่แอป Codex ต้องรันแบบ x64 emulation ก็น่าจะลองใช้ดูได้ครับ
ยังไม่มีความคิดเห็น