Codebuff: เครื่องมือ CLI ที่เขียนโค้ดให้ในเทอร์มินัล
(news.ycombinator.com)- Codebuff เป็นเครื่องมือ CLI ที่เมื่อป้อนงานด้วยภาษาธรรมชาติในเทอร์มินัล จะอ่าน codebase และทำได้ถึงขั้นแก้ไข·สร้างไฟล์ ใช้งานได้ทันทีหลังติดตั้งด้วย
npm i -g codebuffโดยไม่มีด่านล็อกอิน - ลดโฟลว์การป้อนคำสั่งเหลือ ขั้นตอนเดียว ผู้ใช้แค่ป้อนงานที่ต้องการ จากนั้นเครื่องมือจะนำการรันเทสต์ การรัน type checker และการติดตั้งแพ็กเกจมาใช้ในกระบวนการทำตามคำขอ
- ภายในใช้ tree-sitter พาร์สสัญลักษณ์ เช่น ชื่อฟังก์ชัน·คลาส ของ 11 ภาษา เพื่อสร้างแผนที่ codebase และผสานการแคชพรอมป์ของ Claude Haiku 3.5 กับการเรียก Claude/OpenAI
- เอเจนต์จะใส่ไฟล์ที่เกี่ยวข้องลงในคอนเท็กซ์ แล้วจัดการ
edit_fileการรันคำสั่งเทอร์มินัล และคำขออ่านไฟล์เพิ่มเติม ผ่านการเรียกเครื่องมือในรูปแบบแท็ก XML - ทุกบัญชีได้รับเครดิตมูลค่าสูงสุด $20 และเครดิตเพิ่มเติมมีในแพลนรายเดือน $99 แต่ระบุว่าราคาแพงกว่าคู่แข่งเพราะคอนเท็กซ์ขนาดใหญ่และการเรียก LLM ที่มีต้นทุนสูง
แก้โค้ดด้วยภาษาธรรมชาติในเทอร์มินัล
- Codebuff เป็นเครื่องมือ CLI ที่ทำงานเหมือน “Cursor Composer ในเทอร์มินัล”
- ป้อนการเปลี่ยนแปลงที่ต้องการด้วยภาษาธรรมชาติแล้วกด Enter จากนั้นเครื่องมือจะสำรวจ codebase แล้วแก้ไขไฟล์
- ทำได้ทั้งแก้ไขไฟล์ซอร์สเดิมและสร้างไฟล์ใหม่
- สามารถรันเทสต์, type checker และติดตั้งแพ็กเกจเพื่อทำคำขอให้เสร็จสมบูรณ์
- ติดตั้งและเริ่มใช้งานได้ด้วย
npm i -g codebuff- ใช้งานได้ทันทีโดยไม่มีด่านล็อกอิน
- มอบเครดิตมูลค่าสูงสุด $20 ให้ทุกบัญชี
- วิดีโอเดโม: YouTube
จากการทดลองแรกเริ่มสู่การทำเป็นผลิตภัณฑ์
- ไอเดียแรกเริ่มจากการทดลอง Sonnet 3.5 ใน hackathon
- สคริปต์แรกมีโครงสร้างดึงคอนเท็กซ์ของ codebase มาทั้งหมดในคราวเดียว และขั้นตอนที่สองเขียนไฟล์ใหม่
- กระบวนการ 2 ขั้นตอนนี้ยังคงอยู่ใน Codebuff ปัจจุบัน
- เดโมแรกยังสร้างโค้ดที่ใช้งานจริงไม่ได้
- เมื่อส่งต่อความรู้เฉพาะของแต่ละ codebase ให้โมเดล จึงเกิดไอเดีย knowledge.md
- ในเซิร์ฟเวอร์ของสตาร์ทอัพก่อนหน้า หากจะสร้าง endpoint ต้องแก้ไฟล์เฉพาะ 3 ไฟล์ แต่โมเดลไม่รู้เรื่องนี้
- เมื่อเขียนคู่มือ codebase เป็นไฟล์ Markdown เหมือนอธิบายให้พนักงานใหม่ แล้วใส่ใน system prompt ของ Sonnet 3.5 คุณภาพโค้ดดีขึ้นมาก
- ปัจจุบัน Codebuff ยังใช้ไฟล์
knowledge.mdที่อ่านอัตโนมัติในทุกคำขอ
- ก่อนสัมภาษณ์ YC คอขวดใหญ่ที่สุดคือความเสถียรของการแก้ไขไฟล์
- ลองใช้กลยุทธ์พรอมป์หลายแบบเพื่อแทนที่สตริงในไฟล์ต้นฉบับ แต่ยังทำงานได้ไม่เสถียร
- วันก่อนสัมภาษณ์ ได้ fine-tune GPT-4o ให้แปลงสเก็ตช์การเปลี่ยนแปลงที่ Claude วาดไว้เป็น git patch
- วันถัดมามันทำงานได้ และถูก deploy ขึ้น production ก่อนสัมภาษณ์ YC พอดี
แผนที่ codebase และโฟลว์การทำงานของเอเจนต์
- เมื่อรัน เครื่องมือจะไล่ดูไฟล์ซอร์สในไดเรกทอรีปัจจุบันและไดเรกทอรีย่อย เพื่อสร้าง แผนที่ codebase
- ใช้ tree-sitter พาร์สฟังก์ชัน·ชื่อคลาส หรือสัญลักษณ์เทียบเท่าของ 11 ภาษา
- ใช้ข้อมูล file tree ร่วมกับข้อมูลสัญลักษณ์
- ส่งคำขอไปยัง Claude Haiku 3.5 เพื่อแคชคอนเท็กซ์ของ codebase และลด latency ในการตอบอินพุตผู้ใช้
- เมื่อผู้ใช้ส่งข้อความ Claude จะเลือกไฟล์ที่เกี่ยวข้องก่อน
- หลังโหลดไฟล์ที่เลือกเข้าไปในคอนเท็กซ์ เอเจนต์จึงตอบกลับ
- การเรียกเครื่องมือถูกเขียนเป็นแท็ก XML และถูกพาร์ส
- ตัวอย่างคือแท็กแก้ไขไฟล์รูปแบบ
<edit_file path="src/app.ts">…</edit_file> - แท็กอื่นยังใช้รันคำสั่งเทอร์มินัลหรือขออ่านไฟล์เพิ่มเติมได้
โครงสร้างเซิร์ฟเวอร์และอินฟราสตรักเจอร์
- เซิร์ฟเวอร์มีโครงสร้างส่งต่อข้อความไปยัง Anthropic หรือ OpenAI และไม่เก็บ state
- ใช้ websocket สำหรับการเคลื่อนย้ายข้อมูลระหว่างไคลเอนต์กับเซิร์ฟเวอร์
- ในช่วง 3 เดือนแรก ไม่มีระบบยืนยันตัวตนหรือฐานข้อมูล ให้ติดตั้งฟรีและจัดการคำขอด้วย API key ของผู้ใช้เอง
- ต่อมาได้เพิ่มองค์ประกอบที่จำเป็นต่อการดำเนินงานผลิตภัณฑ์
- ฐานข้อมูล Postgres + Drizzle
- เซิร์ฟเวอร์ Bun
- โฮสติ้ง Render
- การยืนยันตัวตน Auth.js
- เว็บไซต์ NextJS
- การชำระเงิน Stripe
- การทำ logging ด้วย BetterStack
- แดชบอร์ด Retool
ราคา, กรณีใช้งาน และ SDK
- ราคาประกอบด้วยโควตาใช้ฟรีแบบจำกัดและแพลนเสียเงินรายเดือน $99
- แพลนเสียเงินให้เครดิตมากขึ้น
- ระบุว่าแพงกว่าคู่แข่งเพราะมีคอนเท็กซ์มากกว่าและการเรียก LLM มีต้นทุนสูง
- กรณีใช้งานจริงรวมถึงการสร้างแอป Flutter, เขียน unit test, แก้ไขซ้ำ ๆ และทำงานซ้ำ ๆ ให้เป็นอัตโนมัติ
- ผู้ใช้รายหนึ่งสร้างแอป Flutter สองแอปแบบขนานจนมียอดเรียกเก็บ $500 และทำแอปให้เสร็จผ่านการสนทนายาว ๆ กับ Codebuff โดยไม่ได้ดูโค้ดที่ถูกสร้างขึ้นเอง
- ผู้ใช้หลายคนสร้างแอปจริงสำหรับทีมหรือใช้ส่วนตัวได้ภายในช่วงสุดสัปดาห์
- การใช้งานทั่วไปที่พบบ่อยคือการเขียน unit test, รันลูปแก้โค้ดจนกว่าเทสต์จะผ่าน, ตั้งค่า OAuth flow และงาน scaffolding API
- ยังมี alpha SDK สำหรับผู้ใช้ที่ต้องการใช้ Codebuff ในระบบของตนเอง
- แอปสามารถเรียกอินเทอร์เฟซภาษาธรรมชาติเดียวกันและรับการแก้ไขโค้ดกลับมาได้
- ลิงก์สมัคร early access: Retool form
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ขอแสดงความยินดีกับการเปิดตัว Codebuff แต่ดูคล้ายกับ Aider มาก Aider เป็นโอเพนซอร์ส และเมื่อขอเพิ่มไฟล์ก็แค่กดยืนยันเท่านั้น Aider ยังสามารถรันคำสั่งได้ด้วย เลยสงสัยว่าต่างกันอย่างไร
เดโมมักใช้ได้กับโปรเจ็กต์ง่ายๆ เท่านั้น และยังขาดตัวอย่างกับโปรเจ็กต์จริงที่ซับซ้อน ต้องการความช่วยเหลือในการแก้ส่วนยากของ PR เครื่องมือหลายตัวช่วยให้เริ่มต้นได้ แต่ยังไม่พอสำหรับการแก้ปัญหา
ไม่อยากจ่าย $20 เพื่อส่งคีย์ SSH และคลิปบอร์ดไปให้บุคคลที่สามหลายราย อยากซื้อซอฟต์แวร์ที่รองรับ inline shell โดยไม่ต้องมีการเรียกเครือข่าย นี่เป็นความเห็นทั่วไปที่มีต่อผลิตภัณฑ์ลักษณะนี้
Codebuff ก่อนหน้านี้รู้จักกันในชื่อ manicode และมีประโยชน์กับงานรีแฟกเตอร์ที่ซับซ้อน เคยใช้แยกไฟล์ในโปรเจ็กต์ Rust ไปเป็นไดเรกทอรีโมดูล และมันสามารถรันทดสอบกับตรวจสอบข้อผิดพลาดตอนคอมไพล์ได้ งานนี้ใช้ไปราว 100 เครดิต
สงสัยว่าโค้ดถูกส่งผ่านเซิร์ฟเวอร์หรือไม่ คิดว่าทำเป็นบริการแบบโลคัลน่าจะดีกว่า สงสัยด้วยว่า LLM จะได้รับคำสั่งที่อาจทำให้ไฟล์สูญหายได้หรือไม่ และจะป้องกันเรื่องนี้อย่างไร
การให้ LLM รันคำสั่งโดยไม่มีมนุษย์ตรวจทานเป็นเรื่องเสี่ยงและมีช่องโหว่ด้านความปลอดภัย
มี AIDE, Continue, Cody, Aider, Cursor อยู่แล้ว เลยสงสัยว่าทำไมต้องใช้เครื่องมือนี้
เคยลองใช้เครื่องมือนี้แล้ว และมีบางจุดที่ดีกว่า CoPilot กับ Cursor โดยเฉพาะเมื่อเทียบกับ CoPilot จะไม่รู้สึกเหมือนต้องไป "แข่งขัน" กับตัวแก้ไข มีความกังวลเรื่องความปลอดภัย และสงสัยว่าจัดการไฟล์ที่มีความอ่อนไหวอย่างไร
สงสัยว่าในแง่คุณภาพโค้ดมันดีกว่า Cursor หรือไม่ ใช้ Cursor อยู่และช่วยประหยัดเวลาคัดลอกไฟล์ แต่ก็ยังใช้อินเทอร์เฟซ chatGPT/claude ในการเขียนโค้ด
มีการ fine-tune GPT-4o เพื่อแปลง change sketch ของ Claude ให้เป็น git patch ข้อมูลฝึกถูกสร้างขึ้นตอนดึก และงาน fine-tune ก็รันตอนนอนอยู่ อยากรู้รายละเอียดทั้งหมดของข้อมูลฝึก รวมถึงว่า change sketch และ git patch ทำงานอย่างไร