5 điểm bởi GN⁺ 2025-08-01 | 2 bình luận | Chia sẻ qua WhatsApp
  • Là một AI coding agent hoạt động trong terminal, hỗ trợ nâng cao năng suất mã bằng cách tích hợp với các LLM (mô hình ngôn ngữ lớn) để viết mã, tự động hóa quy trình làm việc và giữ ngữ cảnh mã
  • Có thể chọn nhiều mô hình, hoặc chuyển đổi mô hình linh hoạt ngay giữa phiên làm việc, đồng thời hỗ trợ duy trì phiên/ ngữ cảnh theo từng dự án
  • Cung cấp các tính năng thân thiện với nhà phát triển như tích hợp LSP (Language Server Protocol), hỗ trợ MCP (Model Context Protocol) có thể mở rộng, và bỏ qua .gitignore cùng các file khác
  • Hoạt động trên mọi môi trường terminal chính như macOS, Linux, Windows, FreeBSD và hỗ trợ cài đặt theo nhiều cách như trình quản lý gói, Go hoặc binary
  • Hỗ trợ đồng thời cài đặt trực quan và tùy chỉnh cao cấp, bao gồm biến môi trường, cấu hình JSON, danh sách trắng công cụ… với thiết kế dành cho cả người dùng nâng cao

Crush

  • Là một AI coding agent chạy trong terminal, hỗ trợ viết, chỉnh sửa và tự động hóa mã khi tích hợp linh hoạt với LLM ưa thích của nhà phát triển
  • Có thể tự do chọn và chuyển đổi giữa nhiều mô hình (Anthropic, OpenAI, Groq, OpenRouter, v.v.), đồng thời quản lý ngữ cảnh độc lập cho từng phiên
  • Qua LSP (Language Server Protocol) nhận thêm ngữ cảnh phù hợp theo từng ngôn ngữ để hỗ trợ code thông minh hơn
  • Thông qua MCP (Model Context Protocol), có thể thu thập và tận dụng thêm thông tin từ hệ thống bên ngoài, HTTP, dòng lệnh, SSE và nhiều nguồn khác

Tính năng chính

  • Hỗ trợ đa mô hình: Tích hợp nhiều LLM như OpenAI, Anthropic, Groq, OpenRouter và có thể thêm thủ công
  • Làm việc theo phiên: Tách biệt và quản lý nhiều phiên làm việc cũng như ngữ cảnh cho từng dự án
  • Chuyển đổi mô hình linh hoạt: Có thể đổi mô hình thoải mái ngay cả giữa phiên và vẫn giữ nguyên ngữ cảnh hiện tại
  • Tích hợp LSP: Kết nối LSP cho Go, TypeScript, Nix, ... để tăng cường ngữ cảnh code
  • Mở rộng: Dễ dàng mở rộng thêm tính năng mới qua giao thức MCP với HTTP/CLI/SSE bên ngoài
  • Hỗ trợ nền tảng rộng: Hoạt động trên terminal của các hệ điều hành chính như macOS, Linux, Windows (WSL, PowerShell), FreeBSD, OpenBSD, NetBSD
  • Cấu hình trực quan: Có thể dùng ngay mà không cần thiết lập trước; khi cần thì hỗ trợ cấu hình JSON cấp dự án hoặc toàn cục
  • Tính năng bỏ qua mạnh mẽ: Quản lý file/thư mục cần loại trừ ngữ cảnh qua file .gitignore, .crushignore
  • Danh sách trắng công cụ: Hỗ trợ tiền-cho phép khi chạy tool và tùy chọn chạy tự động; có thể bỏ qua toàn bộ prompt bằng cờ --yolo (cần thận trọng)
  • Nhà cung cấp tùy chỉnh: Thêm API tương thích OpenAI, Anthropic và cấu hình chi tiết theo ý muốn

Cài đặt và khởi chạy

  • Có thể cài đặt qua nhiều cách như Homebrew, NPM, Arch, Nix, Debian/Ubuntu, Fedora/RHEL và qua binary/Go
  • Lần đầu chạy cần nhập khóa API LLM ưa thích (OpenAI, Anthropic, Groq, v.v.), cũng có thể chỉ định bằng biến môi trường
  • Các LLM có thể kết nối qua biến môi trường ví dụ: OPENAI_API_KEY, ANTHROPIC_API_KEY, GROQ_API_KEY, OPENROUTER_API_KEY, GEMINI_API_KEY, VERTEXAI_PROJECT, ...

Ví dụ cấu hình

  • Áp dụng tùy chọn nâng cao qua file JSON cấp toàn cục hoặc theo dự án (./.crush.json, ./crush.json, $HOME/.config/crush/crush.json)
  • Cấu hình LSP: Có thể chỉ định lệnh riêng cho từng ngôn ngữ
    {
      "lsp": {
        "go": { "command": "gopls" },
        "typescript": { "command": "typescript-language-server", "args": ["--stdio"] }
      }
    }
    
    Quảng cáo
  • Cấu hình MCP: Ví dụ mở rộng bên ngoài dựa trên HTTP/CLI/SSE
    {
      "mcp": {
        "filesystem": {
          "type": "stdio",
          "command": "node",
          "args": ["/path/to/mcp-server.js"]
        }
      }
    }
    
  • Bỏ qua file và phê duyệt công cụ
    • Loại trừ file/thư mục cụ thể bằng .crushignore
    • Dùng danh sách trắng cho công cụ hoặc cờ --yolo để bỏ qua prompt

Tính năng nâng cao cho người dùng chuyên sâu

  • Đăng ký nhà cung cấp tùy chỉnh: Thêm API tương thích OpenAI/Anthropic, chỉ định chi tiết về giá, ngữ cảnh, ...
  • Log: Cung cấp file log theo dự án, xem thời gian thực qua lệnh CLI crush logs, crush logs --follow
  • Tùy chọn debug: Bật log chi tiết bằng cờ --debug hoặc qua cấu hình

2 bình luận

 
kaydash 2025-08-03

aider thật sự dở quá;;

 
GN⁺ 2025-08-01
Ý kiến trên Hacker News
  • Tôi thấy khá lạ khi hầu hết các AI coding agent chạy trong terminal đều cố làm cho text UI trở nên hào nhoáng. Nhiều khoảng trắng, line art, widget, ASCII art, gradient, cả animation nữa. Nhưng những thứ cơ bản như key binding đầy đủ theo ý muốn, tab completion, scrollback nhất quán, hay render văn bản không nhấp nháy thì lại thiếu. Dù sao thì công cụ này ít nhất không được viết bằng node.js, nên về mặt hiệu năng có thể đáng kỳ vọng hơn vì terminal output giảm được các lần redraw không cần thiết. Nhưng nếu dùng với kỳ vọng là một REPL hay CLI thì nó lại hoạt động hoàn toàn khác dù mô hình tương tác bề ngoài có vẻ giống nhau, và cũng cho cảm giác rất khác so với các Unix TUI kiểu editor hay reader. Tôi tò mò không biết xu hướng này chỉ là bắt chước Claude Code, hay đã bắt đầu từ sớm hơn. Vì thế tôi vẫn thích Aider hơn. Nó cho cảm giác và khả năng sử dụng gần với REPL hơn

    • Công cụ này do một công ty tên là Charm làm ra, và sứ mệnh của họ là làm cho cửa sổ dòng lệnh trở nên hấp dẫn hơn. Họ đã hoạt động nhiều năm trước cả làn sóng LLM. Đây là nơi làm framework và công cụ CLI cho golang

    • Điều tôi thích ở terminal là workflow kiểu cuộn, nơi mình gõ lệnh rồi xem action và output từ nhiều nguồn và chương trình hiện ra tuần tự như log. Thứ tôi thực sự muốn là một workflow cuộn đa chương trình mạnh mẽ dựa trên HTML. Nhưng những nỗ lực gần đây lại giống như ghép nhược điểm của cả hai phía vào với nhau. Tôi muốn gặp một UI tốt trên một hệ thống render tốt hơn

    • Thực ra trào lưu text UI này đã là phong cách đặc trưng của charmbracelet từ trước cả khi có AI agent. Cá nhân tôi lại thích vì khác với các TUI truyền thống, key binding của nó dễ khám phá một cách trực quan

    • Có lẽ một lý do khiến các giao diện này đang nhanh chóng thu hút fan và nhà phát triển là vì nhiều người vốn quen với editor kiểu IDE đồ họa. Không phải lập trình viên nào cũng làm việc hoàn toàn trong terminal. (Tôi thì vẫn có những ngày chẳng bật cả X/Wayland)

    • Ít nhất thì có thể dùng Claude Code trong emacs https://github.com/stevemolitor/claude-code.el

  • Một điểm hay của công cụ này là nó vẫn còn ở giai đoạn đầu nên mã nguồn rất rõ ràng và được mô-đun hóa tốt. Nếu muốn thiết kế agent thì đây là một bản thiết kế tham khảo rất tốt về tool calling, session, auto summary, quản lý persistence, v.v. Rất đáng lưu lại link commit này

  • Với những ai thực sự muốn đọc được điều gì đang diễn ra trong demo GIF, tôi đã chuyển nó thành video chậm hơn bằng ffmpeg rồi đăng lên https://share.cleanshot.com/XBXQbSPP

  • Tôi đã dùng nghiêm túc khoảng 15 phút. So với Claude Code, ưu điểm là UI đẹp, sidebar hữu ích để theo dõi file thay đổi và chi phí, cùng UX chấp nhận thay đổi khá mượt (hotkey, diff dễ xem). Ngược lại, nhược điểm là không thể kết hợp nhiều model, và có khá nhiều file nhị phân không cần thiết bị thêm vào thư mục. Lần init ban đầu tạo ra một file tên là CHARM.md, nhưng nó không khớp với loại thông tin tôi muốn chia sẻ với model. Ví dụ, nó không truyền được chuyện test case Go của tôi dùng PascalCasing. Ngoài ra, khi thoát bằng Ctrl+C thì terminal của tôi bị crash

    • Về chuyện init ban đầu tạo CHARM.md, giờ thì mong mọi người cuối cùng thống nhất với nhau về một chuẩn duy nhất, quen thuộc cho file instruction của agent (ví dụ: AGENT.md). Dù đó là chuẩn mà Amp quảng bá cho CLI tool của họ, tôi vẫn thấy mình ủng hộ cách đó dù nhận ra tính mỉa mai https://ampcode.com/AGENT.md. Hoặc có cả kiểu hack vòng vo này https://kau.sh/blog/agents-md/
  • Câu hỏi thực sự quan trọng là trong số các agent mới này, cái nào hỗ trợ local model tử tế. Tôi muốn bỏ phụ thuộc vào API bên ngoài, và sẵn sàng chấp nhận hy sinh một phần hiệu năng

  • Sẽ rất tuyệt nếu có một bảng so sánh đầy đủ tất cả các công cụ mới như Claude Code, opencode, aider, cortex. Không dễ để nhìn một phát là hiểu từng công cụ hoạt động ra sao hay khác biệt ở đâu

    • So sánh hay benchmark với model thương mại rất khó vì chi phí. Gần đây khi tôi viết một bài báo, chỉ riêng việc đánh giá nhiều commercial SOTA model đã tốn hơn 10.000 USD. So sánh với open model thì rẻ hơn, nhưng reviewer lại muốn có đối chiếu với loại “tốt nhất” nên cũng đành chịu. Không chỉ vậy, kiến trúc nội bộ hay stack của các model thương mại không minh bạch và có thể thay đổi bất cứ lúc nào, nên cực kỳ kém hiệu quả. Tôi không nghĩ việc mặc định yêu cầu so sánh với model thương mại trong nghiên cứu học thuật là điều tốt

    • Tôi nhớ tên gốc của nó là opencode, nhưng sau đó đổi tên vì có mâu thuẫn giữa các nhà phát triển

    • Hiệu năng không chỉ phụ thuộc vào công cụ, mà còn vào model được dùng, codebase (context), và tác vụ được giao (prompt). Các yếu tố này không độc lập, và hiệu năng chênh lệch nhiều tùy theo tổ hợp. Ví dụ, Claude Sonnet 4 với Claude Code rất tốt cho việc triển khai tính năng backend Python, còn Gemini 2.5 Pro lại tốt hơn khi sửa code React phía frontend. Tức là không thể cố định mọi biến rồi chỉ so công cụ; cần xét cả tổ hợp công cụmodelcontext*prompt. 16x Eval có đề cập một phần đến chuyện này, nhưng vẫn chưa đưa các yếu tố như công cụ vào https://eval.16x.engineer/

  • “glamorous” cũng là một cách diễn đạt được dùng trong tiếng Anh Anh https://dictionary.cambridge.org/dictionary/english/glamorous

  • Tôi đã dùng Crush trong vài tuần qua, và thực sự rất kỳ vọng. Tôi theo dõi Charm đã lâu, và đây là một trong số ít đội ngũ thực sự hiểu developer experience đồng thời liên tục làm ra những công cụ mà mọi người thích. Việc họ tham gia cuộc đua AI coding sớm như vậy cũng là tín hiệu tốt. Rõ ràng đây là công cụ do những người thực sự dùng nó tạo ra

  • Lại thêm một cái nữa xuất hiện, nhưng lần này thiết kế thực sự đẹp. Chắc chắn tôi sẽ thử. Điều khiến tôi thấy tiếc ở mọi công cụ (EDIT: opencode có thể xác thực bằng github) là không thể xác thực trực tiếp bằng gói thuê bao hiện có của tôi với các dịch vụ thu phí hàng tháng (github copilot, claude code, openai codex, cursor, v.v.). Tôi đã đăng ký dịch vụ rồi, nên sẽ rất tuyệt nếu có thể tự do thay đổi giao diện khi không thích interface mặc định

    • Hầu hết công cụ không hỗ trợ để chương trình khác “dùng” gói đăng ký hàng tháng. Vì vậy phải lấy API key riêng và trả phí theo token. Ngay cả Claude Code cũng đã từng không tích hợp được bằng chính gói thuê bao của nó trong một thời gian
  • Tăng cường bằng LSP: Crush tận dụng LSP làm context bổ sung như cách người ta thường dùng. Đây là tính năng khiến tôi hứng thú nhất theo tiêu chí của mình. Tôi cũng quan tâm đến các tính năng multi-session hay project

    • Có LSP MCP nên có thể dùng chung với các agent khác nữa