• เป็น 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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น