Crush - AI coding agent ที่ทรงพลังสำหรับเทอร์มินัล
(github.com/charmbracelet)- เป็น AI coding agent ที่ทำงานในเทอร์มินัล เชื่อมต่อกับ LLM (Large Language Model) หลากหลายเพื่อสนับสนุนการเขียนโค้ด การอัตโนมัติของเวิร์กโฟลว์ และการคงรักษาบริบทของโค้ด เพื่อช่วยเพิ่ม ประสิทธิภาพการผลิตโค้ด
- รองรับการเลือก หลายโมเดล ได้อย่างอิสระหรือสลับ โมเดล ได้ระหว่างการทำงานในเซสชัน และรองรับการคงสถานะ เซสชัน/บริบทตามโครงการ
- รองรับฟังก์ชันที่เป็นมิตรกับนักพัฒนา เช่น การผสาน LSP (Language Server Protocol) การรองรับ MCP (Model Context Protocol) ที่ขยายได้ และการยกเว้นไฟล์ด้วย .gitignore และไฟล์อื่น ๆ
- ทำงานได้ในสภาพแวดล้อมเทอร์มินัลหลักทั้งหมด เช่น macOS, Linux, Windows, FreeBSD และสามารถติดตั้งได้หลายวิธีทั้งผ่านตัวจัดการแพ็กเกจ, Go และไฟล์ไบนารี
- รองรับการตั้งค่าอันเป็นธรรมชาติและการปรับแต่งระดับสูงได้พร้อมกัน โดยมีตัวแปรสภาพแวดล้อม การตั้งค่า JSON และรายชื่อเครื่องมือที่อนุญาต ซึ่งออกแบบให้รองรับผู้ใช้ขั้นสูง
Crush
- AI coding agent ที่รันในเทอร์มินัล ซึ่งสามารถผสานกับ LLM ที่นักพัฒนาชอบได้อย่างอิสระเพื่อรองรับ การเขียน การแก้ไข และการอัตโนมัติ ของโค้ด
- รองรับการเลือกและสลับ หลายโมเดล (Anthropic, OpenAI, Groq, OpenRouter ฯลฯ) ได้อิสระ และจัดการบริบทแยกตามแต่ละเซสชันได้
- ใช้ LSP (Language Server Protocol) เพื่อรับบริบทเพิ่มเติมที่เหมาะสมกับแต่ละภาษา ทำให้ช่วยเหลือการเขียนโค้ดได้ฉลาดขึ้น
- ด้วย MCP (Model Context Protocol) สามารถเก็บและใช้ข้อมูลเพิ่มเติมจากระบบภายนอก HTTP, command line และ SSE ได้หลากหลายแหล่ง
คุณสมบัติหลัก
- รองรับมัลติโมเดล: เชื่อมต่อกับ LLM หลากหลายเช่น OpenAI, Anthropic, Groq, OpenRouter และสามารถเพิ่มเองได้
- การทำงานตามเซสชัน: รองรับหลายเซสชันและบริบทแยกตามโครงการสำหรับแต่ละงาน
- การสลับโมเดลอย่างยืดหยุ่น: เปลี่ยนโมเดลได้อย่างอิสระได้แม้ในระหว่างเซสชัน พร้อมรักษาบริบทเดิม
- การผสาน LSP: เชื่อมต่อ LSP ของภาษา Go, TypeScript, Nix และภาษาอื่น เพื่อเสริมความเข้าใจบริบทของโค้ด
- ความสามารถในการขยาย: เพิ่มฟังก์ชันได้ง่ายผ่านโปรโตคอล MCP เพื่อเชื่อมต่อ HTTP/CLI/SSE จากภายนอก
- รองรับแพลตฟอร์มกว้าง: ทำงานได้บนเทอร์มินัลของ macOS, Linux, Windows (WSL, PowerShell), FreeBSD, OpenBSD, NetBSD และ OS terminal หลักอื่น ๆ
- การตั้งค่าใช้งานทันที: ใช้งานได้ทันทีโดยไม่ต้องตั้งค่า และรองรับการตั้งค่า JSON เฉพาะโปรเจกต์หรือระดับระบบ
- การละเว้นที่ทรงพลัง: จัดการไฟล์/ไดเรกทอรีที่ไม่รวมในบริบทผ่าน
.gitignoreและ.crushignore - whitelist เครื่องมือ: รองรับการอนุมัติล่วงหน้าก่อนเรียกใช้เครื่องมือและตัวเลือกการทำงานอัตโนมัติ พร้อม flag
--yoloที่ให้ข้าม prompt ทั้งหมดได้ (ควรใช้ด้วยความระวัง) - custom provider: เพิ่มและปรับแต่งตัวเลือกรายละเอียดย่อย เช่น ราคาระดับ API และบริบทได้กับ OpenAI และ Anthropic compatible API
การติดตั้งและเริ่มต้นใช้งาน
- ติดตั้งได้ผ่านตัวจัดการแพ็กเกจและวิธีอื่น ๆ มากมาย เช่น Homebrew, NPM, Arch, Nix, Debian/Ubuntu, Fedora/RHEL และไบนารี/Go
- เมื่อตั้งค่าใช้งานครั้งแรก ต้องกรอก LLM API Key ที่ต้องการก่อน (OpenAI, Anthropic, Groq เป็นต้น) หรือกำหนดผ่านตัวแปรสภาพแวดล้อมได้
- ตัวแปรสภาพแวดล้อมที่รองรับสำหรับเชื่อมต่อ LLM ได้แก่
OPENAI_API_KEY,ANTHROPIC_API_KEY,GROQ_API_KEY,OPENROUTER_API_KEY,GEMINI_API_KEY,VERTEXAI_PROJECTเป็นต้น
ตัวอย่างการตั้งค่า
- ใช้ไฟล์ JSON ระดับ global หรือระดับโปรเจกต์ (
./.crush.json,./crush.json,$HOME/.config/crush/crush.json) เพื่อใช้ตัวเลือกขั้นสูง - การตั้งค่า LSP: ระบุคำสั่งเฉพาะของแต่ละภาษาได้
{ "lsp": { "go": { "command": "gopls" }, "typescript": { "command": "typescript-language-server", "args": ["--stdio"] } } } - การตั้งค่า MCP: ตัวอย่างการขยายระบบภายนอกผ่าน HTTP/CLI/SSE
{ "mcp": { "filesystem": { "type": "stdio", "command": "node", "args": ["/path/to/mcp-server.js"] } } } - การยกเว้นไฟล์และการอนุมัติเคล็อกเครื่องมือ
- ใช้
.crushignoreเพื่อไม่รวมไฟล์/โฟลเดอร์บางส่วน - ใช้ whitelist การอนุญาตการรันเครื่องมือหรือ flag
--yoloเพื่อข้าม prompt
- ใช้
ฟีเจอร์สำหรับผู้ใช้ขั้นสูง
- ลงทะเบียน custom provider: เพิ่ม API ที่เข้ากันได้กับ OpenAI/Anthropic, ระบุตัวเลือกระดับละเอียดเช่นราคา/บริบทได้
- ระบบบันทึก (logging): มีไฟล์ล็อกแยกตามโปรเจกต์ และใช้คำสั่ง CLI อย่างเช่น
crush logs,crush logs --followเพื่อติดตามแบบเรียลไทม์ - ตัวเลือกดีบัก: เปิด log แบบละเอียดด้วย flag
--debugหรือผ่าน config
2 ความคิดเห็น
aider ห่วยจริง ๆ นั่นแหละ;;
ความคิดเห็นจาก Hacker News
รู้สึกแปลกที่เอเจนต์เขียนโค้ด AI บนเทอร์มินัลส่วนใหญ่พยายามทำ text UI ให้หวือหวามาก มีทั้งพื้นที่ว่างเยอะ ๆ line art วิดเจ็ต ASCII art ไล่สี ไปจนถึงแอนิเมชัน แต่กลับขาดพื้นฐานสำคัญอย่างคีย์ไบน์ดิงที่ต้องการ, tab completion, scrollback ที่สม่ำเสมอ หรือการเรนเดอร์ข้อความแบบไม่กะพริบ อย่างน้อยเครื่องมือนี้ก็ไม่ได้เขียนด้วย node.js เลยพอน่าคาดหวังเรื่องประสิทธิภาพ เช่น ลดการ redraw เอาต์พุตเทอร์มินัลโดยไม่จำเป็น แต่พอลองใช้โดยคาดหวัง REPL หรือ CLI กลับพบว่าแม้โมเดลการโต้ตอบจะเหมือนกัน แต่การทำงานต่างออกไปมาก และก็ให้ความรู้สึกต่างจาก Unix TUI สาย editor หรือ reader อย่างชัดเจน สงสัยว่าแนวทางนี้แค่ตาม Claude Code หรือจริง ๆ เริ่มมาตั้งแต่ก่อนหน้านั้นแล้ว เลยยังชอบ Aider มากกว่า เพราะหน้าตาและการใช้งานใกล้เคียง REPL มากกว่า
เครื่องมือนี้ทำโดยบริษัทชื่อ Charm และภารกิจของเขาคือทำให้ command prompt ดูน่าใช้ พวกเขาทำมาหลายปีก่อนกระแส LLM เสียอีก เป็นบริษัทที่สร้างเฟรมเวิร์กและเครื่องมือ CLI สำหรับ golang
สิ่งที่ชอบในเทอร์มินัลคือเวิร์กโฟลว์แบบเน้นการเลื่อนดู ที่พิมพ์คำสั่งแล้วเห็น action และ output จากหลายแหล่งหลายโปรแกรมไหลเรียงเป็นลำดับเหมือน log จริง ๆ แล้วสิ่งที่อยากได้คือเวิร์กโฟลว์แบบเลื่อนดูหลายโปรแกรมบน HTML ที่ทรงพลัง แต่ความพยายามช่วงนี้เหมือนเอาข้อเสียของทั้งสองฝั่งมารวมกัน อยากเจอ UI ที่ดีบนระบบเรนเดอร์ที่ดีกว่านี้
กระแส text UI แบบนี้จริง ๆ เป็นสไตล์เฉพาะของ charmbracelet มาตั้งแต่ก่อนเอเจนต์ AI จะมาเสียอีก สำหรับผมชอบตรงที่ต่างจาก TUI แบบดั้งเดิม เพราะคีย์ไบน์ดิงค้นพบและเข้าใจได้ค่อนข้างตรงไปตรงมา
เหตุผลหนึ่งที่อินเทอร์เฟซพวกนี้ดึงทั้งแฟนและนักพัฒนาได้เร็วมากในช่วงนี้ น่าจะเป็นเพราะหลายคนคุ้นกับเอดิเตอร์สไตล์ IDE แบบกราฟิกอยู่แล้ว ไม่ใช่นักพัฒนาทุกคนที่ทำงานอยู่แต่ในเทอร์มินัลเสมอไป (ผมเองก็ยังมีวันที่ไม่เปิดแม้แต่ X/Wayland)
อย่างน้อยก็ใช้ Claude Code จากใน emacs ได้ https://github.com/stevemolitor/claude-code.el
ข้อดีอย่างหนึ่งของเครื่องมือนี้คือยังอยู่ช่วงเริ่มต้น ทำให้โค้ดยังชัดเจนและแยกโมดูลดีมาก ทั้งการเรียกใช้เครื่องมือ, session, การสรุปอัตโนมัติ, การจัดการ persistence ฯลฯ ถ้าอยากออกแบบเอเจนต์ นี่เป็นพิมพ์เขียวที่ยอดเยี่ยมมาก ควรเก็บลิงก์ commit นี้ไว้เลย
สำหรับคนที่อยากอ่านข้อความจริง ๆ ว่าในเดโม GIF เกิดอะไรขึ้นบ้าง มีคนเอาไปแปลงให้ช้าลงด้วย ffmpeg แล้วทำเป็นวิดีโอไว้ https://share.cleanshot.com/XBXQbSPP
ลองใช้อย่างจริงจังราว 15 นาทีแล้ว เมื่อเทียบกับ Claude Code ข้อดีคือ UI สวย มี sidebar ที่มีประโยชน์สำหรับติดตามไฟล์ที่เปลี่ยนและค่าใช้จ่าย เป็นต้น และ UX สำหรับยอมรับการเปลี่ยนแปลงก็ลื่นไหลดีมาก (มี hotkey และ diff ที่ดูง่าย) ส่วนข้อเสียคือยังผสมหลายโมเดลเข้าด้วยกันไม่ได้ และมีไฟล์ไบนารีที่ไม่จำเป็นถูกเพิ่มเข้ามาในไดเรกทอรีหลายไฟล์ การ init ครั้งแรกจะสร้างไฟล์ชื่อ CHARM.md แต่ไม่ได้ตรงกับข้อมูลที่ผมอยากแชร์ให้โมเดลรู้ ตัวอย่างเช่น มันไม่ได้บอกว่า test case ภาษา Go ของผมใช้ PascalCasing นอกจากนี้พอกด Ctrl+C เพื่อออก เทอร์มินัลของผมก็แครช
คำถามที่สำคัญจริง ๆ คือ ในบรรดาเอเจนต์ใหม่ ๆ มีตัวไหนที่รองรับ local model ได้ดีจริงบ้าง อยากตัดการพึ่งพา external API ออกไป และก็ยอมแลกกับประสิทธิภาพที่ลดลงได้ระดับหนึ่ง
Crush มี issue สำหรับเพิ่มการรองรับ Ollama อยู่และกำลังดำเนินการมาได้ 2 สัปดาห์แล้ว
เอเจนต์ส่วนใหญ่ทำงานได้กับ endpoint ที่เข้ากันได้กับ OpenAI
OpenHands สามารถตั้งค่าให้ใช้ LLM อะไรก็ได้ตามต้องการ https://github.com/All-Hands-AI/OpenHands
Aider ก็ระบุว่ารองรับ local model เช่นกัน แต่ผมยังไม่ได้ลองใช้เอง https://aider.chat/docs/llms.html
ถ้ามีตารางที่เปรียบเทียบเครื่องมือใหม่พวกนี้ทั้งหมดอย่าง Claude Code, opencode, aider, cortex ก็คงดีมาก เพราะดูไม่ค่อยออกง่าย ๆ ว่าแต่ละตัวทำงานอย่างไรหรือแตกต่างกันตรงไหน
การเปรียบเทียบหรือ benchmark ที่ใช้โมเดลเชิงพาณิชย์ทำได้ยากมากเพราะค่าใช้จ่าย ตอนผมเขียนเปเปอร์ล่าสุดก็หมดเงินไปเกิน 10,000 ดอลลาร์เพียงเพื่อประเมิน SOTA commercial model หลายตัว การเทียบกับ open model ยังพอทำได้ถูกกว่า แต่ผู้รีวิวก็มักอยากเห็นการเทียบกับ "ตัวที่ดีที่สุด" อยู่ดี เลี่ยงไม่ได้ นอกจากนั้น โครงสร้างภายในหรือสแตกของ commercial model ก็ไม่โปร่งใสและเปลี่ยนได้ตลอด เลยไม่มีประสิทธิภาพมาก ๆ ผมคิดว่าในการวิจัยเชิงวิชาการไม่ควรถูกบังคับให้ต้องเทียบกับ commercial model เสมอไป
เท่าที่จำได้ เดิมชื่อมันคือ opencode แต่มีความขัดแย้งกันระหว่างนักพัฒนา เลยเปลี่ยนชื่อ
ประสิทธิภาพไม่ได้ขึ้นกับตัวเครื่องมืออย่างเดียว แต่ขึ้นกับโมเดลที่ใช้, codebase (context) และงานที่ได้รับ (prompt) ด้วย องค์ประกอบเหล่านี้ไม่เป็นอิสระต่อกัน และประสิทธิภาพต่างกันมากตามแต่ละชุดการจับคู่ ตัวอย่างเช่น Claude Sonnet 4 กับ Claude Code ทำงานได้ดีมากกับการพัฒนาฟีเจอร์ backend ภาษา Python ขณะที่ Gemini 2.5 Pro ทำได้ดีกว่ากับการแก้โค้ด frontend React หมายความว่าคุณไม่สามารถตรึงทุกตัวแปรแล้วเทียบเฉพาะเครื่องมือได้ ต้องดูเป็นชุด toolmodelcontext*prompt ด้วย 16x Eval จัดการบางส่วนของเรื่องนี้แล้ว แต่ยังไม่รวมองค์ประกอบอย่างตัวเครื่องมือ https://eval.16x.engineer/
คำว่า "glamorous" ใช้ใน British English ด้วย https://dictionary.cambridge.org/dictionary/english/glamorous
ใช้ Crush มาตลอดช่วงหลายสัปดาห์ที่ผ่านมา และตื่นเต้นกับมันมาก ติดตาม Charm มานานแล้ว และพวกเขาเป็นหนึ่งในไม่กี่ทีมที่เข้าใจประสบการณ์นักพัฒนาอย่างแท้จริง พร้อมสร้างเครื่องมือที่คนชอบใช้อย่างต่อเนื่อง การเข้าร่วมสนาม AI coding ได้เร็วขนาดนี้ก็เป็นสัญญาณที่ดีด้วย เห็นได้ชัดว่าเป็นเครื่องมือที่สร้างโดยคนที่ใช้งานของจริง
มีอีกตัวออกมาแล้ว และคราวนี้ดีไซน์ดีจริง ๆ ต้องลองแน่นอน สิ่งที่ยังน่าเสียดายในทุกเครื่องมือ (แก้ไข: opencode ล็อกอินด้วย GitHub ได้) คือไม่สามารถยืนยันตัวตนด้วย subscription ที่จ่ายรายเดือนของผมกับบริการอย่าง github copilot, claude code, openai codex, cursor ฯลฯ ได้โดยตรง แม้จะสมัครใช้บริการอยู่แล้ว แต่ถ้าเปลี่ยนอินเทอร์เฟซได้อย่างอิสระตอนที่ไม่ชอบของเดิม ก็คงดีมาก
LSP-enhanced: Crush ใช้ LSP เป็น context เสริมแบบเดียวกับที่เครื่องมือทั่วไปนิยมใช้ นี่คือฟีเจอร์ที่น่าสนใจที่สุดสำหรับผม ส่วนฟีเจอร์ multi-session และ project ก็ชวนให้สนใจเหมือนกัน