# Crush

Nguồn: https://docs.aicentos.com/vi/clients/crush

Language: vi

> Dùng aicentos trong Crush —— thêm provider tùy chỉnh qua crush.json

Crush là agent lập trình terminal do Charmbracelet phát hành, viết bằng Go, hỗ trợ khai báo bất kỳ provider tùy chỉnh nào tương thích OpenAI trong `crush.json`. Trỏ base\_url về aicentos, là có thể dùng các mô hình aicentos tích hợp ngay trong TUI.

## Chuẩn bị

Trước tiên, tạo một Key riêng cho Crush tại trang "API Key" trong Console (khuyến nghị đặt tên `crush` để dễ theo dõi mức sử dụng):

* Console: [https://aicentos.com](https://aicentos.com)
* Tạo Key: [https://aicentos.com/keys](https://aicentos.com/keys)
* Nạp tiền khi hết số dư: [https://aicentos.com/wallet](https://aicentos.com/wallet)

Xác nhận đã cài Crush:

```bash
crush --version
```

## Cấu hình cần điền

| Trường        | Giá trị                                      |
| ------------- | -------------------------------------------- |
| File cấu hình | `~/.config/crush/crush.json`                 |
| type          | `openai-compat`                              |
| base\_url     | `https://aicentos.com/v1`                    |
| api\_key      | `$AICENTOS_API_KEY`                          |
| Mô hình       | tên mô hình trong "Model Square" của Console |

## Các bước thiết lập

### 1. Thiết lập biến môi trường API Key

```bash
export AICENTOS_API_KEY="sk-API-Key-của-bạn"
```

Muốn lưu lâu dài thì ghi vào `~/.zshrc` hoặc `~/.bashrc`, rồi `source` một lần.

### 2. Sửa crush.json

File cấu hình toàn cục nằm ở `~/.config/crush/crush.json` (trên Windows là `%USERPROFILE%\AppData\Local\crush\crush.json`); `.crush.json` hoặc `crush.json` ở thư mục gốc dự án sẽ ghi đè cấu hình toàn cục.

Ghi vào:

```json
{
  "$schema": "https://charm.land/crush.json",
  "providers": {
    "aicentos": {
      "type": "openai-compat",
      "base_url": "https://aicentos.com/v1",
      "api_key": "$AICENTOS_API_KEY",
      "models": [
        {
          "id": "gpt-4o",
          "name": "GPT-4o",
          "context_window": 128000,
          "default_max_tokens": 8192,
          "can_reason": true
        }
      ]
    }
  }
}
```

`models[].id` phải khớp hoàn toàn với model ID phía endpoint, hãy lấy "Model Square" của Console làm chuẩn, có thể tham khảo [Các mô hình hỗ trợ](https://docs.aicentos.com/vi/billing/models-list).

### 3. Chọn mô hình

Sau khi khởi động `crush`, trong TUI nhấn `Ctrl+L` (hoặc nhập `/model`), xác nhận thấy được `aicentos` và các mô hình của nó.

## Kiểm tra

Dùng chế độ không tương tác để xác minh nhanh:

```bash
crush run "Trả lời trong một câu: 1+1 bằng mấy"
```

Khi cần xem log yêu cầu, thêm `--debug`. Nếu gặp 404, kiểm tra `base_url` đã có `/v1` chưa.

## Lưu ý

* **Đừng điền `openai` vào `type`**. `openai` dành cho proxy thực sự đi qua OpenAI (hoặc Azure OpenAI); khi trỏ về endpoint tương thích của bên thứ ba bắt buộc phải điền `openai-compat`, nếu không sẽ gặp lỗi nhận diện mô hình hoặc lỗi API.
* `base_url` điền đến `/v1` là đủ, đừng có dấu gạch chéo ở cuối.
* `api_key` hỗ trợ mở rộng `$VAR` và `$(command)`, khuyến nghị giữ key trong biến môi trường hoặc file key, đừng ghi cứng dạng văn bản thuần.
* Nếu kết nối đến endpoint giao thức Anthropic (`type` là `anthropic`), `base_url` nên dừng ở `/api`, Crush sẽ tự thêm `/v1/messages`, và cần khai báo thêm `anthropic-version` trong `extra_headers`.
* Lỗi đã biết: khi dùng provider tùy chỉnh, số đếm token và thống kê chi phí trong TUI có thể hiển thị 0, điều này không ảnh hưởng đến yêu cầu thực tế và việc tính phí.
* Khi cần bật đầu ra suy luận, mô hình phong cách OpenAI dùng `"can_reason": true` kết hợp `"reasoning_effort"`; mô hình phong cách Anthropic dùng `"think": true`.

## Liên kết liên quan

* Tài liệu Provider tùy chỉnh: [https://github.com/charmbracelet/crush](https://github.com/charmbracelet/crush)