Quay lại blog

Công cụ & tích hợpHướng dẫn

Kết nối Crush với CheapTokens: provider, model, key trong crushrc

Thêm CheapTokens vào Crush bằng hai lệnh crushrc: một provider completions và một model với giới hạn thực; key đến từ biến môi trường.

Bởi CheapTokens TeamĐã xuất bản 6 phút đọc

File cấu hình Crush với các dòng provider và model CheapTokens
Trên trang này
  1. Cài đặt Crush
  2. Đưa CheapTokens vào crushrc
  3. Mở Crush và chạy tác vụ đầu tiên
  4. Một phiên lập trình tốn bao nhiêu
  5. Nếu không hoạt động

Để kết nối Crush với CheapTokens, hãy đưa hai lệnh vào crushrc của bạn: provider add với base URL https://api.cheaptokens.dev/v1 và --type completions, cùng model add với id model đầy đủ. Sau đó mở Crush, nhấn Ctrl+l, chọn model và giao cho nó một tác vụ. Key nằm trong biến môi trường, không nằm trong file.

Nếu bạn làm theo hướng dẫn cũ, có lẽ nó chỉnh sửa crush.json. Crush vẫn đọc file đó, nhưng README của nó gọi đó là deprecated: cấu hình hiện tại là crushrc, và từ v0.99.0 (29 tháng 10 năm 2026) provider --type mô tả định dạng API, không phải nhà cung cấp. Nguồn là README của Crush và ghi chú phát hành, kiểm tra ngày 10 tháng 11 năm 2026; bản phát hành ổn định mới nhất tại thời điểm đó là v0.100.0.

Cài đặt Crush#

Chọn bất kỳ trình quản lý gói nào bạn đã có. Crush là một binary duy nhất, nên đi đường nào cũng không quan trọng.

Cài đặt Crush

Homebrew

bash
brew install charmbracelet/tap/crush

npm

bash
npm install -g @charmland/crush

winget

bash
winget install charmbracelet.crush

Go

bash
go install github.com/charmbracelet/crush@latest

README cũng liệt kê các kho apt và yum, Scoop, Nix, Arch và FreeBSD. Chạy crush một lần để kiểm tra rằng nó khởi động, rồi thoát.

Đưa CheapTokens vào crushrc#

README mô tả crushrc là "chỉ là Bash với một vài builtin riêng của Crush". Đó chính là toàn bộ mẹo: bạn viết shell, và provider add cùng model add là các lệnh mà Crush hiểu. Crush tìm file theo thứ tự này: ./.crushrc, ./crushrc, rồi ~/.config/crush/crushrc.

Vậy bạn chọn nơi nó nằm. Một .crushrc cục bộ trong dự án áp dụng cho một repository; file trong ~/.config/crush/ áp dụng ở mọi nơi. Lần thử đầu tiên, file toàn cục dễ hơn.

Đầu tiên đưa key vào shell của bạn. Tạo nó trong dashboard CheapTokens và export nó (giá trị bên dưới là placeholder):

bash
export CHEAPTOKENS_API_KEY="your-key-here"

Sau đó mở ~/.config/crush/crushrc và viết:

bash
provider add cheaptokens --type completions \
  --base-url "https://api.cheaptokens.dev/v1" \
  --api-key "$CHEAPTOKENS_API_KEY"

model add cheaptokens/deepseek-ai/DeepSeek-V4-Flash-0731 \
  --name "DeepSeek-V4-Flash" \
  --context-window 380000 \
  --default-max-tokens 32768

Có vài chi tiết đáng xem lại:

  • --type completions là tên Crush cho các provider tương thích OpenAI không phải chính OpenAI. responses dành cho proxy OpenAI, messages cho các provider tương thích Anthropic. openai-compat cũ vẫn hoạt động và được migrate.
  • Base URL kết thúc bằng /v1. Đó là địa chỉ CheapTokens cho Chat Completions kiểu OpenAI; danh sách đầy đủ các endpoint nằm trong tài liệu CheapTokens.
  • $CHEAPTOKENS_API_KEY được shell mở rộng, nên file không chứa bí mật và một .crushrc của dự án có thể đưa vào git an toàn.
  • Id model là id đầy đủ, deepseek-ai/DeepSeek-V4-Flash-0731. Một id ngắn như deepseek-v4-flash bị API từ chối. Sau tên provider có thêm một dấu gạch chéo, vì bản thân id đã có một dấu.
  • --context-window 380000 là 380K đã làm tròn của DeepSeek-V4-Flash, và --default-max-tokens 32768 là giới hạn mỗi câu trả lời của nó. Đây là giới hạn thực của model trong CheapTokens: ngữ cảnh 380K và tối đa 32.768 token mỗi câu trả lời. Hãy đặt chúng vào model add thay vì để các giá trị mẫu từ README (64000 và 5000).
File crushrc với provider và model CheapTokens
crushrc: một dòng provider và một dòng model; key đến từ môi trường

README chỉ hiển thị model add với một id đơn giản (deepseek/deepseek-chat). Id của bạn có thêm một dấu gạch chéo, nên trình chọn model ở bước tiếp theo là phép kiểm tra thực sự: nếu model xuất hiện dưới cheaptokens, dòng đó đã được đọc đúng như mong muốn.

Muốn thêm model khác trên cùng số dư? Thêm một dòng model add nữa với id và giới hạn riêng. GLM-5.3-Flash là zai-org/GLM-5.3-Flash (ngữ cảnh 390K, tối đa 8.192 token mỗi câu trả lời), và MiniMax-M2.7 là MiniMaxAI/MiniMax-M2.7 (ngữ cảnh 180K, tối đa 8.192 token mỗi câu trả lời). Giữ --default-max-tokens bằng hoặc thấp hơn giới hạn câu trả lời của model bạn thêm.

Mở Crush và chạy tác vụ đầu tiên#

Khởi động crush trong một thư mục dự án. Nhấn Ctrl+l để mở trình chọn model và chọn DeepSeek-V4-Flash từ nhóm cheaptokens. README không mô tả lệnh crushrc nào cho model mặc định, nên trình chọn là cách làm.

Từ crushrc đến câu trả lời đầu tiên: provider, model, trình chọn, tác vụ
Đường đi từ cấu hình đến câu trả lời đầu tiên

Giờ giao cho nó một việc nhỏ và có thể kiểm tra, ví dụ: Read this repo and tell me which file starts the app, in two lines. Một câu trả lời nêu tên một file thực có nghĩa là toàn bộ chuỗi hoạt động: key, base URL, id model.

Tự mình thử xemThử xem: bạn nhấn Ctrl+l và model không có trong danh sách. Bạn kiểm tra gì trước tiên?Hiện đáp án

Vị trí file và biến. Crush tìm cấu hình theo thứ tự ưu tiên: ./.crushrc, ./crushrc, ~/.config/crush/crushrc. Kiểm tra rằng dự án không có .crushrc hay crushrc nào khác với nội dung khác, và provider đã được thêm vào file bạn đã sửa. Và echo $CHEAPTOKENS_API_KEY phải in ra key trong cùng shell nơi bạn khởi động crush.

Các lời nhắc cấp quyền có lý do của nó. permissions allow <tools> trong crushrc cho phép các tool được đặt tên chạy mà không hỏi; --yolo bỏ qua mọi lời nhắc, và chính README nói phải rất cẩn thận với nó.

Một phiên lập trình tốn bao nhiêu#

Một bước agent trong terminal nặng về input: Crush gửi lịch sử, nội dung file và output của tool mỗi lần, và nhận về một câu trả lời khiêm tốn. Giả sử một bước trung bình gửi 30.000 token và nhận 2.000. Trên DeepSeek-V4-Flash, bước đó tốn $0.00065, và giá như nhau ở mọi giờ, không có giờ cao điểm. Tính cả input và output cộng lại, như vậy rẻ hơn giá tham chiếu của OpenRouter.

Thay bằng số của bạn: một phiên 40 bước như vậy chỉ cách một thanh trượt.

Máy tính chi phí

Một ngày của coding agent trong Crush

Token đầu vào mỗi yêu cầu: 30.000 · Token đầu ra mỗi yêu cầu: 2.000 · Số yêu cầu mỗi ngày: 40

Mô hìnhMỗi ngàyMỗi tháng
GLM-5.3-Flash$0.0272$0.816
DeepSeek-V4-Flash$0.026$0.78
MiniMax-M2.7$0.072$2.16

Input mỗi bước tăng dần khi phiên kéo dài, nên hãy kiểm tra một phiên dài so với cửa sổ 380K thay vì so với mức trung bình. Giá hiện tại theo token cho mọi model nằm trên trang giá.

Nếu không hoạt động#

Crush ghi log trong dự án của bạn, ./.crush/logs/crush.log. Đọc nó trước khi đoán:

bash
crush logs --tail 500
crush logs --follow
crush --debug

Bạn cũng có thể đặt option debug true vào crushrc để giữ output debug. Sau đó đối chiếu những gì bạn thấy với mã trạng thái HTTP mà API trả về:

  • 401: key đã được gửi nhưng không được nhận diện: gõ sai hoặc key đã bị thay. Tạo hoặc sao chép lại.
  • 402: số dư hoặc giới hạn của key đã hết. Một request không có key cũng trông giống vậy, nên hãy chạy echo $CHEAPTOKENS_API_KEY trong shell nơi bạn khởi động crush. Nếu key có ở đó, hãy nạp thêm số dư.
  • 429: quá nhiều request trong thời gian ngắn. Chờ theo giá trị Retry-After rồi thử lại.
  • 400 hoặc "model not found": xem id model. Nó phải là id đầy đủ từ tài liệu, có tiền tố nhà cung cấp.

Nếu bạn chuyển từ crush.json, lưu ý rằng ~/.local/share/crush/crush.json là trạng thái của Crush, không phải cấu hình; đừng chỉnh sửa nó bằng tay.

Để có cùng thiết lập trong các tool khác, xem Kết nối Aider với CheapTokens và Kết nối Kilo Code với CheapTokens. Trang model cho DeepSeek giá rẻ có các giới hạn của model được dùng ở đây.