Aider - ทำ Pair Programming กับ AI ในเทอร์มินัล
(github.com/paul-gauthier)- เครื่องมือบรรทัดคำสั่งที่ช่วยให้ทำ pair programming กับ GPT-3.5/GPT-4 และแก้ไขโค้ดที่เก็บอยู่ใน local git repository ได้
- aider สามารถแก้ไขโค้ดในไฟล์ซอร์สบนเครื่องได้โดยตรง และทำ git commit การเปลี่ยนแปลงพร้อมข้อความ commit ที่เหมาะสม
- สามารถเริ่มโปรเจ็กต์ใหม่หรือทำงานใน git repository ที่มีอยู่แล้วได้
- จุดเด่นเฉพาะของ aider คือสามารถขอให้แก้ไขโค้ดใน codebase ขนาดใหญ่ที่มีอยู่เดิมได้
ฟีเจอร์หลัก
- เริ่มต้น aider จากบรรทัดคำสั่งพร้อมชุดไฟล์ซอร์สที่ต้องการแก้ไข แล้วแชตกับ GPT เกี่ยวกับโค้ดได้ ผ่าน aider นั้น GPT จะสามารถดูและแก้ไขเนื้อหาในไฟล์เหล่านั้นได้
- GPT สามารถเขียนและแก้ไขโค้ดได้ในภาษายอดนิยมส่วนใหญ่ เช่น python, javascript, typescript, php, html, css เป็นต้น
- สามารถขอฟีเจอร์ใหม่ การเปลี่ยนแปลง การปรับปรุง หรือการแก้บั๊กของโค้ดได้ รวมถึงขอ test case ใหม่ อัปเดตเอกสาร หรือ refactor โค้ดก็ได้
- aider จะนำการแก้ไขที่ GPT เสนอไปใช้กับไฟล์ซอร์สโดยตรง
- aider จะทำ commit แต่ละชุดการเปลี่ยนแปลงลงใน local git repository โดยอัตโนมัติพร้อมข้อความ commit แบบมีคำอธิบาย การทำ auto-commit บ่อย ๆ แบบนี้ทำหน้าที่เป็นตาข่ายนิรภัย ทำให้ย้อนกลับการเปลี่ยนแปลงได้ง่าย หรือจัดการลำดับการเปลี่ยนแปลงที่ยาวขึ้นด้วย standard git workflow ได้
- สามารถใช้หลายไฟล์ซอร์สร่วมกับ aider พร้อมกันได้ ดังนั้น GPT จึงสามารถประสานการแก้ไขโค้ดข้ามทุกไฟล์ภายในชุดการเปลี่ยนแปลง/commit เดียวได้
- aider สามารถให้ GPT-4 เห็นแผนที่ของ git repository ทั้งหมดได้ ช่วยให้เข้าใจและแก้ไข codebase ขนาดใหญ่ได้ดีขึ้น
- ระหว่างแชตกับ aider ก็ยังสามารถใช้ editor แก้ไขไฟล์ด้วยตนเองได้ aider จะตรวจจับการแก้ไขนอกช่องทางเหล่านี้และอัปเดตให้ GPT ทราบไฟล์เวอร์ชันล่าสุดเสมอ ทำให้สลับไปมาระหว่างการแชตกับ aider และ editor เพื่อร่วมเขียนโค้ดกับ GPT ได้
- หากใช้ gpt-4 โดยตรงผ่าน openai สามารถเพิ่มไฟล์ภาพเข้าไปใน context ได้ และระบบจะสลับไปใช้โมเดล gpt-4-vision-preview โดยอัตโนมัติ
คำสั่งในแชต
- aider รองรับคำสั่งในแชตที่ขึ้นต้นด้วย
/คำสั่งที่มีประโยชน์บางส่วน ได้แก่:/add: เพิ่มไฟล์ที่ตรงเงื่อนไขเข้าไปในเซสชันแชต/drop: ลบไฟล์ที่ตรงเงื่อนไขออกจากเซสชันแชต/undo: ย้อนกลับ git commit ล่าสุด หากเป็น commit ที่ทำโดย aider/diff: แสดง diff ของ aider commit ล่าสุด/run: รันคำสั่งเชลล์ และเลือกได้ว่าจะเพิ่มผลลัพธ์เข้าไปในแชตหรือไม่/voice: พูดกับ aider เพื่อขอให้เปลี่ยนแปลงโค้ดด้วยเสียง/help: แสดงความช่วยเหลือสำหรับทุกคำสั่ง
เคล็ดลับ
- ลองคิดดูก่อนว่าหากต้องการเปลี่ยนอะไร ควรแก้ไขไฟล์ใดบ้าง แล้วเพิ่มไฟล์เหล่านั้นเข้าไปในแชต แม้ aider จะพอมีความสามารถให้ GPT ช่วยเดาได้ว่าควรแก้ไฟล์ไหน แต่แนวทางที่มีประสิทธิภาพที่สุดคือเพิ่มไฟล์ที่จำเป็นเข้าแชตด้วยตนเองอย่างชัดเจน
- การเปลี่ยนแปลงขนาดใหญ่ควรทำเป็นลำดับขั้นที่รอบคอบ โดยวางแผนแนวทางและการออกแบบโดยรวมก่อน ควรชี้นำการเปลี่ยนแปลงให้ GPT เหมือนทำงานร่วมกับนักพัฒนาระดับ junior ขอ refactor เพื่อเตรียมความพร้อมก่อน แล้วจึงขอการเปลี่ยนแปลงจริง ควรใช้เวลาในการขอปรับปรุงคุณภาพ/โครงสร้างของโค้ดด้วย
- หาก GPT ไม่ได้ให้คำตอบที่เป็นประโยชน์ สามารถใช้ Control-C เพื่อหยุดได้อย่างปลอดภัย คำตอบบางส่วนจะยังคงอยู่ในบทสนทนา จึงสามารถอ้างอิงได้เมื่อจะตอบกลับ GPT พร้อมข้อมูลหรือทิศทางเพิ่มเติม
- ใช้คำสั่ง
/runเพื่อรันทดสอบ linter เป็นต้น แล้วแสดงผลลัพธ์ให้ GPT ดูเพื่อช่วยแก้ปัญหาได้ - สามารถใช้ Meta-ENTER (ในบางสภาพแวดล้อมคือ Esc+ENTER) เพื่อพิมพ์ข้อความแชตหลายบรรทัด หรือเริ่มข้อความหลายบรรทัดด้วยการพิมพ์เพียง
{ในบรรทัดแรก และปิดข้อความด้วย}เพียงอย่างเดียวในบรรทัดสุดท้าย - หากเกิดข้อผิดพลาดในโค้ด ให้ใช้
/runหรือวางผลลัพธ์ของข้อผิดพลาดลงในแชตเพื่อแชร์กับ GPT แล้วให้ GPT ช่วยหาบั๊กและแก้ไข - GPT รู้จักเครื่องมือและไลบรารีมาตรฐานจำนวนมาก แต่บางครั้งอาจเข้าใจรายละเอียดของ API และอาร์กิวเมนต์ของฟังก์ชันผิดได้ สามารถแก้ปัญหานี้ได้ด้วยการวาง snippet จากเอกสารลงในแชต
- GPT จะเห็นเฉพาะเนื้อหาของไฟล์ที่ได้ "เพิ่มเข้าแชต" ไว้เป็นพิเศษเท่านั้น และ aider ยังส่งแผนที่ของ git repository ทั้งหมดให้ GPT-4 ด้วย ดังนั้นหาก GPT เห็นว่าจำเป็นต่อคำขอ ก็อาจขอให้เปิดดูไฟล์เพิ่มเติมได้
ความเห็นของ GN⁺
- หากนำ aider ไปใช้กับโปรเจ็กต์ขนาดใหญ่ ก็น่าจะช่วยให้สามารถปรับใช้การเปลี่ยนแปลงที่สอดคล้องกันได้ง่ายทั่วทั้ง codebase โดยเฉพาะเมื่อผสานกับความสามารถของ GPT-4 ก็น่าจะทรงพลังยิ่งขึ้น
- อย่างไรก็ตาม แทนที่จะยอมรับการเปลี่ยนแปลงที่ GPT เสนอทั้งหมดโดยไม่ตรวจสอบ นักพัฒนาก็ควรมีขั้นตอนรีวิวและทดสอบด้วยตนเองอยู่ดี เพราะโมเดล GPT ในตอนนี้ยังไม่สมบูรณ์แบบ และยังมีโอกาสเกิดบั๊กได้
- นอกจากโค้ดแล้ว การนำ aider ไปใช้กับงานเอกสารหรือการเขียน test case ก็น่าจะเป็นประโยชน์ เพราะสามารถใช้ความสามารถในการเข้าใจภาษาธรรมชาติของ GPT เพื่อสร้างเอกสารและโค้ดทดสอบคุณภาพดีได้รวดเร็วยิ่งขึ้น
- การเป็นเครื่องมือแบบ CLI ทำให้เข้าถึงได้ง่าย แต่หากผสานเข้ากับสภาพแวดล้อมการพัฒนาได้แนบแน่นขึ้น เช่น ผ่านปลั๊กอินของ editor ก็อาจช่วยเพิ่ม productivity ของนักพัฒนาได้มาก
- จุดเด่นที่แตกต่างจากเครื่องมือ AI pair programming อื่น ๆ เช่น GitHub Copilot น่าจะอยู่ที่การใช้ GPT-4 และ workflow ที่อิงกับ git การเปรียบเทียบข้อดีข้อเสียกับเครื่องมือที่มีอยู่เดิมน่าจะน่าสนใจ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ต่อไปนี้คือสรุปความคิดเห็นจาก Hacker News: