13 คะแนน โดย GN⁺ 2024-04-11 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เครื่องมือบรรทัดคำสั่งที่ช่วยให้ทำ 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 ความคิดเห็น

 
GN⁺ 2024-04-11
ความคิดเห็นจาก Hacker News

ต่อไปนี้คือสรุปความคิดเห็นจาก Hacker News:

  • เมื่อใช้เครื่องมือ AI อาจต้องใช้เวลามากกับการเขียนพรอมป์และตรวจทานผลลัพธ์ จนไม่มีประสิทธิภาพเท่ากับการลงมือทำเอง และเมื่อสำรวจวิธีแก้ปัญหาใหม่ ๆ ก็ดูเหมือนจะมีข้อจำกัดด้านความแม่นยำด้วย
  • มีโปรเจ็กต์บนเทอร์มินัลชื่อ Plandex ที่มีความสามารถคล้าย Aider ใช้ CLI สไตล์ Git และเน้นงานซับซ้อนที่ครอบคลุมหลายไฟล์
  • มีการแชร์ประสบการณ์การใช้ Claude ทำงานออกแบบเว็บไซต์แบบ responsive โดยระบุว่าสามารถรักษาบริบทยาว ๆ ได้ดี และจัดการโค้ดเบส HTML/CSS/JS แบบผสมได้ดี
  • มีการแชร์กรณีที่เกิดข้อผิดพลาดจากการใช้เครื่องมือ AI กับแอปพลิเคชัน Go เนื่องจากไม่เข้าใจกฎเรื่องขอบเขตตัวแปรอย่างถูกต้อง จึงเกิดคำถามเรื่องความน่าเชื่อถือ
  • มีความเสียดายที่ยังขาดการผสานรวมกับ IDE เดิมอย่าง JetBrains และมีการแชร์ประสบการณ์การใช้งานร่วมกับเครื่องมือเดิมอย่าง GitHub Copilot
  • มีความสนใจต่อผลการเบนช์มาร์กประสิทธิภาพ LLM ของ Aider โดยพบว่าโมเดล GPT-4 Turbo with Vision มีประสิทธิภาพแย่กว่ารุ่นก่อนหน้า
  • คุณภาพของผลลัพธ์จากเครื่องมือ AI ยังไม่สมบูรณ์แบบ จึงยังมีข้อจำกัดในการใช้งานจริง และยังคงมีข้อผิดพลาดเล็ก ๆ น้อย ๆ อยู่