4 คะแนน โดย GN⁺ 2025-01-13 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Tabby เป็นผู้ช่วยเขียนโค้ด AI แบบโฮสต์เองที่นำเสนอเป็น ทางเลือกแบบโอเพนซอร์สและออนพรีมิส แทน GitHub Copilot โดยมุ่งเน้นเวิร์กโฟลว์ที่ดำเนินงานได้โดยไม่ต้องใช้บริการคลาวด์
  • เซิร์ฟเวอร์ชูจุดเด่นด้านการเป็นระบบแบบครบในตัวที่ ไม่ต้องใช้ DBMS หรือบริการคลาวด์ และออกแบบมาให้ผสานกับโครงสร้างพื้นฐานเดิมอย่าง Cloud IDE ได้ง่ายผ่านอินเทอร์เฟซ OpenAPI
  • สภาพแวดล้อมการรันรองรับ GPU ระดับผู้บริโภค และสามารถสั่งเปิดเซิร์ฟเวอร์ด้วยคำสั่ง Docker เพียงคำสั่งเดียว โดยใช้โมเดลโค้ด StarCoder-1B และโมเดลแชต Qwen2-1.5B-Instruct
  • อัปเดตล่าสุดรวมถึง v0.30 ที่อินเด็กซ์ GitLab Merge Request เป็นคอนเท็กซ์, v0.29 ที่เพิ่มเอกสารของตนเองผ่าน REST API และ v0.28 ที่เปลี่ยนข้อความ Answer Engine ให้เป็น Pages ที่แชร์ได้
  • มีเอกสารสำหรับส่วนขยาย IDE/Editor, การติดตั้ง, การตั้งค่า และคู่มือการมีส่วนร่วม พร้อมทั้งสามารถบิลด์เองด้วย cargo build ได้เมื่อเตรียมสภาพแวดล้อม Rust และ dependency บางส่วนแล้ว

บทบาทและคุณสมบัติพื้นฐานของ Tabby

  • Tabby เป็นผู้ช่วยเขียนโค้ด AI แบบโฮสต์เอง และเป็นทางเลือกแบบโอเพนซอร์สและออนพรีมิสแทน GitHub Copilot
  • คุณสมบัติหลักสรุปได้เป็นสามข้อ
    • เป็นระบบ ครบในตัว จึงไม่ต้องใช้ DBMS หรือบริการคลาวด์
    • มี อินเทอร์เฟซ OpenAPI ทำให้ผสานกับโครงสร้างพื้นฐานเดิมอย่าง Cloud IDE ได้ง่าย
    • รองรับ GPU ระดับผู้บริโภค
  • โปรเจกต์มีลิงก์ เอกสาร, Slack, โรดแมป
  • สามารถเปิดไลฟ์เดโมได้จากเว็บไซต์ Tabby

การเปลี่ยนแปลงล่าสุด

  • 2025-12-12: มี vscode@0.20.0 ซึ่งเชื่อม GitHub issue เข้ากับงาน Pochi เพื่อทำการพัฒนา และสามารถสร้าง PR จากไซด์บาร์พร้อมการวิเคราะห์ผล CI/Lint/Test ได้
  • 2025-07-02: v0.30 รองรับฟีเจอร์อินเด็กซ์ GitLab Merge Request เป็นคอนเท็กซ์
  • 2025-05-25: มีคำแนะนำสำหรับเข้าร่วมคิวรอพรีวิวแบบปิดของ Agent
  • 2025-05-20: ใน v0.29 สามารถเพิ่มเอกสารของตนเองเข้าไปใน Tabby ผ่าน REST API ได้
  • 2025-05-01: v0.28 แปลงข้อความ Answer Engine ให้เป็น Pages ที่คงอยู่และแชร์ได้
  • 2025-03-31: v0.27 เพิ่มความครบถ้วนให้เมนู @ ในแผงแชตด้านข้าง

ขอบเขตฟีเจอร์ที่เห็นจากอัปเดตก่อนหน้า

  • Answer Engine ถูกแนะนำใน v0.13.0 ในฐานะเอนจินความรู้กลางสำหรับทีมวิศวกรรมภายใน และให้คำตอบโดยผสานกับข้อมูลภายในของทีมพัฒนา
  • Tabby เพิ่มฟีเจอร์ด้านการผสานระบบและการตั้งค่ามาอย่างต่อเนื่อง เช่น GitLab SSO, GitHub/GitLab แบบโฮสต์เอง, การผสานผ่าน HTTP API และ repo-context ของ Code Browser
  • เวิร์กโฟลว์ปลั๊กอิน IDE รวมถึงอัปเดตสำหรับ VSCode/Vim/IntelliJ, แผงแชตด้านข้างของ VSCode, การแก้ไขผ่านคำสั่งแชต, ตัวเลือกหลายแบบสำหรับ inline completion และข้อความคอมมิตที่สร้างอัตโนมัติ
  • การเติมโค้ดอัตโนมัติใช้ สแนปเป็ตที่เกี่ยวข้องในเครื่อง เช่น declaration ของ LSP ในเครื่องและโค้ดที่เพิ่งแก้ไข และใน v0.3.0 ได้เปิดใช้การเติมโค้ดแบบอิง RAG เป็นค่าเริ่มต้น
  • ด้านการรองรับโมเดล มีการกล่าวถึง CodeGemma, CodeQwen, Codestral, การรองรับแบบทดลองสำหรับ CodeLlama 7B และการรองรับ inference บน Apple M1/M2 Metal

วิธีเริ่มต้นและตัวอย่างการรัน

docker run -it \
  --gpus all -p 8080:8080 -v $HOME/.tabby:/data \
  tabbyml/tabby \
  serve --model StarCoder-1B --device cuda --chat-model Qwen2-1.5B-Instruct
  • ตัวเลือกเพิ่มเติมรวมถึงการตั้งค่าอย่างประเภทการทำ inference และ parallelism ซึ่งดูได้ในหน้าเอกสารแยกต่างหาก

การมีส่วนร่วมและการบิลด์

  • คู่มือการมีส่วนร่วมฉบับเต็มอยู่ใน CONTRIBUTING.md
  • โคลนซอร์สโค้ดพร้อม submodule ทั้งหมด
git clone --recurse-submodules https://github.com/TabbyML/tabby
cd tabby
  • หากโคลน repository ไว้แล้ว สามารถดึง submodule ทั้งหมดด้วยคำสั่ง git submodule update --recursive --init
  • สิ่งที่ต้องเตรียมก่อนบิลด์มีดังนี้
    • ตั้งค่าสภาพแวดล้อม Rust
    • macOS: brew install protobuf
    • Ubuntu/Debian: apt install protobuf-compiler libopenblas-dev
    • เครื่องมือที่มีประโยชน์สำหรับ Ubuntu: apt install make sqlite3 graphviz
  • เมื่อเตรียมเสร็จแล้วสามารถบิลด์ Tabby ด้วย cargo build
  • เวิร์กโฟลว์การมีส่วนร่วมคือแก้ไขแล้วส่ง Pull Request

1 ความคิดเห็น

 
GN⁺ 2025-01-13
ความคิดเห็นจาก Hacker News
  • เดโมการเติมฟังก์ชัน findMaxElement บนหน้าแรกดูเหมือนเป็นตัวอย่างที่สะท้อนภาพอนาคต หรือบางทีอาจสะท้อนสภาพปัจจุบันได้ดีอยู่แล้ว
    Python 6 บรรทัดที่ถูกเสนอให้ฟังก์ชันนั้นสามารถแทนด้วย return max(arr) ได้เลย และถึงจะทำงานได้ แต่มันเป็น โค้ดระดับจูเนียร์ อย่างสมบูรณ์
    โค้ดแย่ ๆ แบบนี้น่ากลัวก็จริง แต่ที่น่ากังวลกว่านั้นคือคนที่ autocomplete มันแบบไม่คิดอาจหยุดพัฒนาฝีมือไปเลย
    อาจเก็บ story point ได้ก็จริง แต่ก็น่าสงสัยว่าในฐานะนักพัฒนาแล้วเก่งขึ้นจริงหรือไม่

    • ผมมองว่านี่เป็นปัญหาที่จะ ปรับแก้ตัวเอง ได้ โค้ดคุณภาพระดับนี้เอาไปปล่อยเป็นผลิตภัณฑ์ไม่ได้ และสุดท้ายถ้าจะให้ผ่านการทดสอบ ก็ต้องเข้าใจรายละเอียด 20~30% สุดท้ายที่ LLM ทำแทนไม่ได้
      แต่การจะเข้าใจ 20% นั้น ก็ต้องเข้าใจ 80% ที่ LLM จัดการไปด้วย ดังนั้นผมจึงไม่กังวลมากนัก ตราบใดที่ LLM ไม่สามารถทำแทนไปจนถึงการ deploy ได้
    • ในทางกลับกัน นี่อาจกลายเป็น ชั้น abstraction ขั้นถัดไปก็ได้
      เหมือนภาษาเครื่อง → assembly → C → Python → LLM(ภาษาธรรมชาติ) กล่าวคือคอมไพล์ prompt ของมนุษย์ให้เป็นโค้ดตัวกลางแบบ Python
      CPython เวอร์ชันแรก ๆ ก็คงไม่ได้สมบูรณ์แบบ และวิศวกรก็คงรู้สึกไม่สบายใจเช่นกัน ถ้าโชคดี “คอมไพเลอร์” ตัวใหม่นี้ก็จะค่อย ๆ ดีขึ้นและมีประสิทธิภาพมากขึ้น แต่ก็คงไม่สมบูรณ์แบบ
      ถึงอย่างนั้น ผู้คนก็อาจต้องจ่ายต้นทุนคล้ายกับที่เราจ่ายไปแล้วเพื่อแลกกับการไม่ต้องจัดการ assembly โดยตรง
    • เวลาได้รับข้อเสนอจาก Cursor การถามต่อแทบทุกครั้งว่า “มีวิธีที่ดีกว่านี้ไหม?” เป็นนิสัยที่ถูกประเมินค่าต่ำไป
    • เมื่อก่อนเราเคยรู้อะไรบางอย่าง พอมี Google ก็แค่ค้นหา แต่ก็ยังทำเองได้อยู่
      ตอนนี้มี AI แล้วก็เริ่มถามให้มันทำแทน สุดท้ายก็ไม่เหลือทั้งสิ่งที่รู้และสิ่งที่ทำได้
    • ตัวอย่างนั้นดูเหมือนจะแสดงให้เห็น วิจารณญาณของบริษัท ที่เลือกโค้ดนั้นมาเป็นเดโมบนหน้าแรกมากกว่า
  • ไม่คิดเลยว่าโปรเจกต์ของเราจะขึ้นหน้าแรก HN ในวันอาทิตย์
    Tabby พัฒนามาไกลมากตั้งแต่เปิดตัวเมื่อ 2 ปีก่อน https://www.tabbyml.com และตอนนี้กลายเป็น แพลตฟอร์มนักพัฒนา AI แบบครบวงจรที่มีทั้งการเติมโค้ดและแชตกับ codebase
    สำหรับการใช้งานในทีม/องค์กร ยังรองรับ SSO, การควบคุมการเข้าถึง และการยืนยันตัวตนผู้ใช้ด้วย https://demo.tabbyml.com/search/how-to-add-an-embedding-api-...
    ผู้ใช้ที่นำไปใช้งานพบว่า Tabby เป็นแพลตฟอร์มเดียวที่ให้ self-service onboarding แบบครบถ้วนในรูปแบบ on-premises และประสิทธิภาพก็เทียบได้กับตัวเลือกอื่น ๆ ในตลาด ถ้าสนใจก็แนะนำให้ลองดู
    https://www.reddit.com/r/LocalLLaMA/s/lznmkWJhAZ
    https://www.linkedin.com/posts/kelvinmu_last-week-i-introduc...

    • อยากรู้ว่ามีปลั๊กอินสำหรับ MSVC ไหม
    • รองรับเฉพาะ Nvidia กับ Apple หรือเปล่า? อยากรู้ว่าทำงานบน AMD GPU ได้ไหม
  • ในฐานะคนที่ไม่ค่อยรู้เรื่อง AI แบบโลคัลแต่ก็อยากลองใช้ อยากรู้ว่า “run tabby in 1 minute” https://github.com/TabbyML/tabby#run-tabby-in-1-minute อยู่ในระดับไหนเมื่อเทียบกับ ChatGPT ฟรี 4o-mini เป็นต้น
    ถ้ารันคำสั่ง Docker ด้านล่างบน MacBook Pro สเปกระดับกลาง จะได้ใช้ AI ที่ความเร็วและความสามารถใกล้เคียงกันไหม หรือว่ายังไม่ถึงระดับนั้น
    docker run -it --gpus all -p 8080:8080 -v $HOME/.tabby:/data tabbyml/tabby serve --model StarCoder-1B --device cuda --chat-model Qwen2-1.5B-Instruct
    ดูแล้วมีหน้าแนะนำแยกสำหรับ MacBook และมีบริบทเพิ่มเติม https://tabby.tabbyml.com/docs/quick-start/installation/appl...
    เขียนไว้ว่า “พลังประมวลผลของ M1/M2 มีจำกัด จึงอาจเพียงพอสำหรับการใช้งานส่วนบุคคล แต่ถ้าต้องการอินสแตนซ์แบบแชร์สำหรับทีม ให้พิจารณาโฮสต์ด้วย Docker ที่ใช้ CUDA หรือ ROCm”

    • gpt-4o-mini อาจไม่ใช่เกณฑ์ที่ดีที่สุดในการตัดสินว่า LLM ที่ดีทำอะไรกับโค้ดได้บ้าง: https://aider.chat/docs/leaderboards/#aider-polyglot-benchma...
      โมเดลเล็กมากอย่าง 1.5B ค่อนข้างโง่ จึงไม่ดีนักสำหรับการสร้างโค้ดแบบสนทนา แต่แม้โมเดลไม่เกิน 3B ก็ทำ ข้อเสนอการเติมด้วย Tab ได้ค่อนข้างดี
      ยังมีโมเดล “open” ขนาดใหญ่กว่าที่รันในเครื่องได้ด้วย และโมเดลช่วง 32B~70B อาจดีกว่า gpt-4o-mini มากในแทบทุกด้าน รวมถึงการเขียนโค้ด เช่น llama3.3-70b-instruct และ qwen2.5-coder-32b-instruct ถือว่าใช้ได้ทีเดียว
      ถ้า RAM น้อยจริง ๆ qwen2.5-coder-7b-instruct หรือ codegemma-7b-it ก็ยังพอใช้กับงานง่าย ๆ ได้
      แค่คำว่า “MacBook Pro สเปกระดับกลาง” ยังไม่พอ สิ่งสำคัญคือมี RAM เท่าไร ตามหลักคร่าว ๆ ต้องใช้ RAM ประมาณ 1GB ต่อพารามิเตอร์ 1B
      ถ้า quantize หนัก ๆ ก็ราว 500MB ส่วนโมเดลไม่ quantize จะประมาณ 2GB แต่การ quantize 8 บิตมักอยู่ราว 1GB และโดยรวมก็ใช้ได้ดี
    • ขอถามเพิ่มเติม โมเดลโอเพนซอร์สมัก “ฉลาด” น้อยกว่าโมเดลปิด อยากรู้ว่ามีแผนจะชดเชยด้วยการให้ บริบทที่ดีกว่า เช่น query เอกสารเทคนิคที่เกี่ยวข้องแล้วใส่เข้าไปใน context หรือไม่
  • “ปุ่มเปิด/ปิด telemetry ของ IDE / ส่วนขยาย” ไม่สามารถปิดได้ใน Community Edition เลยสงสัยว่าข้อมูล telemetry ระยะไกลนี้มีอะไรบ้าง

    • ข้อมูลสถานะที่ถูกเก็บรวบรวมมีโครงสร้างประมาณด้านล่าง
      struct HealthState {
      model: String,
      chat_model: Option,
      device: String,
      arch: String,
      cpu_info: String,
      cpu_count: usize,
      cuda_devices: Vec,
      version: Version,
      webserver: Option,
      }
      https://tabby.tabbyml.com/docs/administration/usage-collecti...
  • ตอนนี้ใช้ Continue.dev กับ ollama สำหรับงานลักษณะคล้ายกันอยู่ และการมีเครื่องมือในสายนี้เพิ่มขึ้นก็เป็นเรื่องน่ายินดีเสมอ
    แต่เหมือนเดิม ถ้าจะรันโมเดลดี ๆ จริง ๆ เช่น Qwen2.5-coder 32B ก็ต้องใช้ฮาร์ดแวร์ที่ค่อนข้างแรง

  • ตัวอย่างทั้งหมดเป็นโค้ดที่ปกติน่าจะหาได้จากไลบรารีอยู่แล้ว และโค้ดบางส่วนก็ดูน่าสงสัยเรื่องคุณภาพ
    LLM กำลังจะกลายเป็น บอตสแปม สำหรับ codebase หรือเปล่า?

  • ตามหัวข้อ “วิธีใช้ NVIDIA GPU หลายตัว” ระบุว่า Tabby รองรับ GPU เดี่ยวเท่านั้น และถ้าจะใช้ GPU หลายตัว ให้เปิด Tabby หลายอินสแตนซ์ แล้วตั้งค่า CUDA_VISIBLE_DEVICES สำหรับ CUDA และ HIP_VISIBLE_DEVICES สำหรับ ROCm
    ถ้าอย่างนั้นก็สงสัยว่าไม่รองรับการใช้ GPU 2 ตัวที่เชื่อมกันด้วย NVLink สำหรับ inference ใช่ไหม หรือกรณีนี้ต่างออกไปเพราะ NVLink ทำให้สอง GPU ถูกจัดการเหมือนเป็นตัวเดียว

    • ถ้าต้องการใช้ GPU หลายตัวให้ดีขึ้น แนะนำให้ใช้แบ็กเอนด์เฉพาะสำหรับ model serving
      ดูตัวอย่างได้ที่ https://tabby.tabbyml.com/docs/references/models-http-api/vl...
  • เป็นโปรเจกต์ที่ยอดเยี่ยม โดยเฉพาะชอบไอเดียที่ไม่ต้องส่งข้อมูลไปให้บริษัทใหญ่ ๆ และต้องเชื่อใจเงื่อนไขการใช้งานของเขา
    ประสิทธิผลของ coding assistant แปรผันโดยตรงกับ ความยาวคอนเท็กซ์ แต่โมเดลเปิดที่รันบนคอมพิวเตอร์ส่วนตัวได้มักจะเล็กกว่ามาก
    ถ้ามีข้อมูลเชิงปริมาณว่ามันมีประโยชน์แค่ไหนกับ codebase ที่ซับซ้อนกว่านี้ก็คงดี

    • หวังว่า coding assistant แบบโลคัล 100% จะแพร่หลาย แต่ตอนนี้คำแนะนำว่า “ทำงานได้ดีที่สุดบน GPU ราคา $10K+” เป็นอุปสรรค สุดท้ายก็เลยยังต้องใช้บริการจากบริษัทใหญ่อยู่ดี
  • สงสัยเรื่องฮาร์ดแวร์ที่แนะนำ ต้องมี GPU ไหม? บน Ryzen APU รุ่นเก่า (Zen 3 กับกราฟิก Vega 7) จะรันได้พอใช้หรือเปล่า?

    • คอขวดทั่วไปของ LLM แบบโฮสต์เองคือ แบนด์วิดท์หน่วยความจำ
      จะมีกราฟิกในตัวหรือไม่ก็ไม่ได้ต่างกันมาก และถ้ารันด้วย CPU อย่างเดียว โมเดลก็จะทำงานช้ามากเหมือนกัน
      เหตุผลที่ Mac พอใช้กับ LLM ได้ก็เพราะ Apple Silicon มีแบนด์วิดท์หน่วยความจำที่สูงผิดปกติ แต่ก็ยังห่างไกลจากความเร็วของ GPU ระดับสูงที่มี VRAM เร็วมาก
      ถ้าเป็นโมเดลขนาดเล็กมากสำหรับใช้กับ tab completion CPU AMD รุ่นเก่าก็น่าจะรับมือได้พอสมควร
    • ตัวอย่างการตั้งค่าแบบโลคัลด้วย 3090 ดูได้ที่ https://www.reddit.com/r/LocalLLaMA/s/lznmkWJhAZ
  • เจ๋งมาก โดยเฉพาะดีใจที่มี ไคลเอนต์ Eclipse https://github.com/TabbyML/tabby/tree/3bd73a8c59a1c21312e812...
    แต่ต้องค้นอยู่พักหนึ่งถึงจะเจอข้อมูลไคลเอนต์ Eclipse ไม่มีอยู่ทั้งใน README หลัก และในรายการส่วนขยาย IDE ของเอกสาร
    ไม่แน่ใจว่าเป็นแค่ตกหล่น หรือยังไม่พร้อมจะ “เปิดตัวจริงจัง”