Tài liệu

Tài liệu

Mistral Vibe CLI

Vibe CLI kết nối với endpoint của bên thứ ba thông qua một khối TOML được chỉnh sửa thủ công, và tài liệu riêng của Mistral dùng gateway làm ví dụ hướng dẫn. Chỉ cần năm dòng trong [[providers]], agent sẽ chạy Claude hoặc GPT bằng khóa của bạn.

Một khối [[providers]] năm dòng trong .vibe/config.toml — api_base, api_key_env_var, api_style — trỏ Vibe CLI tới Kunavo, với key nằm trong biến môi trường thay vì tệp.

.vibe/config.toml
# ./.vibe/config.toml (project) or ~/.vibe/config.toml (user).
# "Project-level configuration takes precedence over user-level
# configuration", and the project file loads only in a trusted folder.
active_model = "sonnet-kunavo"

[[providers]]
name = "kunavo"
api_base = "https://api.kunavo.com/v1"
api_key_env_var = "KUNAVO_API_KEY"
api_style = "openai"
backend = "generic"

[[models]]
name = "claude-sonnet-5"
provider = "kunavo"
alias = "sonnet-kunavo"
# Optional, and documented on the api-keys-profiles page:
#   temperature   sampling temperature
#   input_price   indicative per-input cost, fed to --max-price
#   output_price  indicative per-output cost, fed to --max-price
# Take the two prices from the table further down this page if you want
# --max-price to mean anything.

# The key never goes in config.toml. api_key_env_var names the variable:
#   export KUNAVO_API_KEY="sk-kn-..."
api_base vẫn cần được giữ nguyên /v1. Tài liệu của Mistral chỉ mô tả trường này là “URL cơ sở cho API của nhà cung cấp” và không quy định điều gì về hậu tố — điều xác định yêu cầu là giá trị được dùng trong ví dụ minh họa trên cả hai trang tài liệu của họ, api_base = "https://openrouter.ai/api/v1", cùng với lý do đằng sau trong mã nguồn v2.25.5: bộ chuyển đổi openai thêm /chat/completions vào api_base và không thêm gì khác, còn nhà cung cấp Mistral tích hợp sẵn trong CLI mặc định dùng URL cơ sở /v1 vì cùng lý do. Bỏ hậu tố đi nghĩa là bạn yêu cầu /chat/completions tại đường dẫn gốc, khiến phản hồi là 404 chứ không phải lỗi xác thực.
Cấu hình này được đối chiếu với tài liệu riêng của Mistral và mã nguồn của Vibe vào ngày bên dưới. Kunavo chưa chạy Vibe CLI với endpoint của mình — chưa có phiên nào, lượt truyền phát nào hay vòng gọi công cụ nào. Một trang hướng dẫn thiết lập đã xuất bản không phải là kiểm thử khi chạy và không nên được hiểu là như vậy. Phần curl bên dưới là điều bạn có thể xác định trong mười giây; mọi hành vi khác của ứng dụng khách cần được kiểm chứng bằng chính Vibe.
Kunavo không cung cấp mô hình embedding, chuyển văn bản thành giọng nói hoặc chuyển giọng nói thành văn bản, vì vậy endpoint này chỉ phản hồi các yêu cầu chat completions — khối nhà cung cấp trỏ đến đây chỉ xử lý các lượt mô hình và không chuyển hướng yêu cầu nào khác.
Có một điều tình cờ có lợi cho bạn và bạn nên biết lý do. Đường dẫn OpenAI của Vibe tạo mọi payload với trường temperature, trong khi một số id Claude — bao gồm claude-sonnet-5 và claude-opus-5 — sẽ phản hồi 400 về cả bộ ba tham số lấy mẫu khi được gửi lên dịch vụ nguồn. Kunavo loại bỏ các tham số đó trước khi gửi đi, chỉ áp dụng với những id không chấp nhận chúng, nên trường luôn được gửi từ ứng dụng khách sẽ không dẫn đến lỗi từ chối. Vì vậy, khóa temperature trên cấu hình sẵn có [[models]] không gây vấn đề ở đây và cũng không có tác dụng với các id đó.
Chưa có khóa? Tạo tài khoản Kunavo, tạo khóa (bắt đầu bằng sk-kn-) và nạp tín dụng từ $10 — các lệnh gọi được thanh toán từ số dư đó và các lệnh gọi thất bại không bị tính phí. Sau đó, bảng điều khiển mở tại phần thiết lập Mistral Vibe CLI.

Từng bước

  1. Tạo khóa tại /app/keys rồi sao chép khóa — khóa chỉ hiển thị một lần.
  2. Mở ~/.vibe/config.toml (hoặc tạo ./.vibe/config.toml trong kho mã mà bạn muốn áp dụng cấu hình này) rồi dán khối ở trên. Không có quy trình thêm nhà cung cấp để nhấp qua: Mistral hướng dẫn chỉnh sửa trực tiếp tệp này, còn /config và /model chỉ chuyển đổi giữa các cấu hình sẵn có.
  3. Export biến bạn đã khai báo trong api_key_env_var — export KUNAVO_API_KEY="sk-kn-...". Trang thông tin xác thực của Mistral ghi rõ CLI tải ~/.vibe/.env lúc khởi động để lấy thông tin xác thực, và ví dụ riêng của họ về nhà cung cấp bên thứ ba dùng lệnh shell export cho khóa không thuộc Mistral.
  4. Thêm một cấu hình sẵn có [[models]] cho mỗi id bạn muốn dùng, mỗi cấu hình có alias riêng, rồi đặt active_model trỏ đến một trong các bí danh đó. Bí danh chỉ có hiệu lực cục bộ — đó là giá trị được liệt kê trong /model, còn name là id thực sự được gửi đến endpoint.
  5. Chạy vibe trong một thư mục đáng tin cậy và giao cho Vibe một việc có thao tác với tệp, không phải lời chào. Lượt đầu tiên đọc và chỉnh sửa tệp sẽ kiểm tra tính năng gọi công cụ, vốn là nơi cấu hình nhà cung cấp sai thường bộc lộ.

Đã kiểm tra đối chiếu với trang cấu hình Vibe Code CLI của Mistral vào 21 tháng 9, 2026. Cài đặt của bên thứ ba có thể thay đổi; nếu tên trường ở đây không còn khớp với những gì bạn thấy, trang đó là nguồn có thẩm quyền, không phải trang này.

Đây là phiên bản ngắn. Hướng dẫn đầy đủ — lựa chọn mô hình, chi phí của một phiên thực tế và các trường hợp lỗi — nằm trong bài so sánh Vibe CLI với Claude Code.

Xác minh trước khi gỡ lỗi ứng dụng khách

Một yêu cầu sẽ xác định liệu lỗi nằm ở endpoint, khóa hay tệp cấu hình. Nếu lệnh này trả về JSON, cùng base URL và khóa sẽ hoạt động trong Mistral Vibe CLI.

# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
  -H "Authorization: Bearer sk-kn-..."

Đặt model id nào vào trường

Mọi mô hình văn bản đều có thể truy cập bằng model id — danh sách đang hoạt động là GET /v1/models, còn danh mục kèm giá nằm trên trang mô hình. Mức giá tính bằng USD trên mỗi 1M token, đầu vào / đầu ra.

ID mô hìnhKunavo vào / raPhù hợp ở đâu trong Mistral Vibe CLI
claude-sonnet-5$1.40 / $7.00bí danh đang hoạt động — bí danh mà active_model thường trỏ đến
claude-opus-5$3.50 / $17.50một cấu hình thứ hai dành cho chế độ lập kế hoạch, nơi một kế hoạch sai sẽ gây tốn kém nhất
claude-haiku-4-5$0.70 / $3.50các lượt chạy tiết kiệm và phân loại tệp nhanh, dưới một bí danh riêng để chuyển sang dùng
gpt-5-6-sol$2.00 / $12.00một họ mô hình khác dùng chung khối nhà cung cấp và cùng một khóa
Thanh toán theo token từ số dư trả trước, không có phí hàng tháng — xem trang Thanh toán. Với ngữ cảnh lặp lại — chiếm phần lớn dữ liệu mà trình chỉnh sửa hoặc ứng dụng trò chuyện gửi đi — bộ nhớ đệm prompt ảnh hưởng đến hóa đơn nhiều hơn lựa chọn mô hình.

Không phải mọi yêu cầu của bạn đều đi qua nhà cung cấp này

Đây là điều mà một khối cấu hình không thể cho bạn biết, và chỉ riêng Vibe mới có đặc điểm này, không liên quan đến Kunavo. Ở phiên bản v2.25.5, CLI định tuyến các yêu cầu hoàn tất tiện ích chạy nền — những lời gọi nhỏ dùng để đặt tên cho các cuộc trò chuyện và worktree — đến mô hình riêng mistral-vibe-cli-fast của Mistral bất cứ khi nào có thể sử dụng một nhà cung cấp Mistral. Các giá trị mặc định đi kèm luôn cấu hình một nhà cung cấp như vậy, ngay cả khi mô hình đang hoạt động trong phiên là của bạn. Mã nguồn nói rõ cả lựa chọn ưu tiên lẫn phương án dự phòng: khi không thể sử dụng nhà cung cấp Mistral nào, yêu cầu tiện ích sẽ được gửi đến mô hình đang hoạt động của phiên.

Vì vậy, nếu bạn muốn mọi yêu cầu trong phiên đều được gửi đến nhà cung cấp đã cấu hình, cần thỏa mãn một trong các điều kiện sau:

  • MISTRAL_API_KEY chưa được đặt, nên thông tin xác thực của mô hình nhanh không được phân giải và yêu cầu tiện ích chuyển sang phương án dự phòng; hoặc
  • bí danh của mô hình nhanh bị loại khỏi danh sách qua allowed_models, tạo ra cùng kết quả bằng danh sách cho phép thay vì bằng khóa.

Bộ phân loại Smart Approve còn đi xa hơn — mục trong changelog phiên bản 2.25.1 cho biết bộ phân loại này chạy trên mô hình Mistral nhanh bất kể mô hình đang hoạt động trong phiên là gì — vì vậy, một phiên chỉ dùng Kunavo trên thực tế sẽ ở accept-edits hoặc plan thay vì Smart Approve. Những điều này không làm cấu hình ở trên mất tác dụng; chúng chỉ có nghĩa là khối nhà cung cấp áp dụng cho các lượt mô hình của bạn, chứ không phải mọi gói tin mà chương trình gửi đi.

Các giá trị api_style khác

Tài liệu liệt kê một giá trị cho api_style và mô tả nó là ví dụ: "openai". Mã nguồn v2.25.5 có thêm bốn giá trị — "anthropic", "openai-responses", "reasoning" và "vertex-anthropic" — trong một từ điển thông thường không có bước xác thực, vì vậy lỗi chính tả chỉ xuất hiện lúc gửi yêu cầu chứ không phải lúc tải tệp. Hãy xem các giá trị này là đã được xác minh từ mã nguồn nhưng chưa được tài liệu hóa. Nếu thử giá trị Anthropic, hãy lưu ý một điểm dễ nhầm: endpoint của bộ chuyển đổi là /v1/messages, vì vậy api_base phải là origin gốc, https://api.kunavo.com, không có /v1 — trái ngược với khối cấu hình ở trên. Kunavo có phản hồi với /v1/messages cho các id bắt đầu bằng claude-. Trang này trình bày kiểu openai vì đó là kiểu được Mistral tài liệu hóa.

Câu hỏi thường gặp

Làm thế nào để thêm nhà cung cấp tùy chỉnh vào Mistral Vibe CLI?

Thêm thủ công trong config.toml — không có giao diện để thêm nhà cung cấp. Trang cấu hình của Mistral hướng dẫn dùng ./.vibe/config.toml trong thư mục làm việc và ~/.vibe/config.toml trong thư mục chính; tệp cấu hình dự án được ưu tiên. Ví dụ hoàn chỉnh của họ gồm một bảng [[providers]] với các trường name, api_base, api_key_env_var, api_style và backend, cùng một bảng [[models]] có name, provider và alias, và một active_model trỏ đến bí danh đó. Khóa API không bao giờ được ghi vào tệp: api_key_env_var là tên biến môi trường chứa khóa.

api_base của Vibe CLI có cần kết thúc bằng /v1 không?

Có, nếu api_style là “openai”. Tài liệu tham khảo cấu hình của Mistral chỉ mô tả api_base là URL cơ sở cho API của nhà cung cấp và không nêu quy tắc nào về hậu tố này, nhưng ví dụ hoàn chỉnh trên cả hai trang đều dùng giá trị kết thúc bằng /v1. Mã nguồn v2.25.5 cho thấy lý do: bộ điều hợp kiểu OpenAI nối /chat/completions vào api_base và không thêm gì khác; nhà cung cấp Mistral tích hợp sẵn trong CLI cũng mặc định dùng URL cơ sở có /v1. Vì vậy, với Kunavo, giá trị cần dùng là https://api.kunavo.com/v1. Bỏ hậu tố này sẽ dẫn đến lỗi 404, không phải lỗi xác thực. Trường hợp ngược lại là kiểu “anthropic” không được tài liệu hóa — endpoint của kiểu này là /v1/messages, vì vậy api_base không được kèm /v1.

Mistral Vibe CLI có chạy được các mô hình Claude không?

Có, thông qua cấu hình sẵn của nhà cung cấp chứ không phải một công tắc. api_style chỉ giao thức truyền nhận, không chỉ định nhà cung cấp; trường name trong cấu hình mô hình được gửi nguyên văn đến endpoint. Vì vậy, một ID Claude sẽ được phân giải tại endpoint bạn đã cấu hình, chứ không phải bên trong CLI. Tài liệu của Mistral minh họa cách này với một cổng trung gian bên thứ ba, nên đây là cách được tài liệu hướng dẫn chứ không phải giải pháp tạm.

Vì sao Vibe CLI vẫn gọi Mistral sau khi tôi cấu hình nhà cung cấp riêng?

Vì các yêu cầu hoàn tất tiện ích chạy nền được định tuyến riêng. Ở phiên bản v2.25.5, CLI ưu tiên mô hình mistral-vibe-cli-fast của Mistral cho các lệnh nền nhỏ — đặt tên cuộc hội thoại và worktree — bất cứ khi nào có thể dùng nhà cung cấp Mistral. Cấu hình mặc định được phát hành luôn thiết lập một nhà cung cấp như vậy, ngay cả khi phiên làm việc đang dùng mô hình khác. CLI chuyển về mô hình đang hoạt động khi không thể dùng nhà cung cấp Mistral; trên thực tế, điều này xảy ra khi chưa đặt MISTRAL_API_KEY hoặc khi bí danh đó bị loại khỏi allowed_models. Bộ phân loại Smart Approve còn nghiêm ngặt hơn: ghi chú phát hành nêu rõ bộ phân loại này luôn chạy trên mô hình Mistral fast, bất kể mô hình đang hoạt động của phiên làm việc.

Kunavo đã kiểm thử Mistral Vibe CLI chưa?

Chưa. Những gì đã được kiểm tra vào ngày 21 tháng 9 năm 2026 là tài liệu của chính Mistral — tên các trường, thứ tự của chúng và vấn đề /v1 đều lấy từ tài liệu này; lập luận về URL cơ sở được đối chiếu với mã nguồn v2.25.5 của gói mistral-vibe. Kunavo chưa chạy phiên Vibe nào với endpoint của mình và không đưa ra tuyên bố nào về khả năng truyền phát, các lượt gọi công cụ qua lại hay cách ứng dụng hoạt động trong tác vụ dài. Có thể kiểm tra riêng endpoint và khóa bằng lệnh curl trên trang này; phần còn lại là vấn đề giữa bạn và ứng dụng khách.

Vibe CLI lấy khóa API ở đâu?

Từ biến môi trường được nêu trong api_key_env_var — với cấu hình nhà cung cấp Kunavo, đó là tên bạn đặt cho biến, chẳng hạn KUNAVO_API_KEY. Trang thông tin xác thực của Mistral nêu ba nguồn cho khóa riêng của họ, theo thứ tự ưu tiên: luồng thiết lập tương tác, ghi vào ~/.vibe/.env; biến môi trường được xuất, được ưu tiên hơn tệp đó; và chỉnh sửa trực tiếp ~/.vibe/.env, tệp mà CLI tải khi khởi động. Ví dụ về nhà cung cấp bên thứ ba của họ dùng lệnh export trong shell. Trang này cũng lưu ý rằng .env chỉ dành cho thông tin xác thực, còn cấu hình chung thuộc về config.toml.