Tài liệu

Tài liệu

CC Switch

CC Switch chuyển đổi Claude Code và Codex giữa các nhà cung cấp từ ứng dụng máy tính. Thêm Kunavo dưới dạng Cấu hình tùy chỉnh — gốc dịch vụ, xác thực Bearer, Anthropic Messages nguyên bản, không định tuyến cục bộ.

Ba trường và hai danh sách thả xuống. https://api.kunavo.com làm điểm cuối, khóa sk-kn-… của bạn và — phần mà hầu hết hướng dẫn bỏ qua — để API Format ở Anthropic Messages (Native) và Auth Field ở ANTHROPIC_AUTH_TOKEN. Kunavo hỗ trợ API Messages nguyên bản, vì vậy phía Claude Code không cần định tuyến cục bộ.

CC Switch → tab Claude Code → Thêm nhà cung cấp
Provider Name   Kunavo
API Key         sk-kn-...
API Endpoint    https://api.kunavo.com      <- service root, no /v1, no trailing slash

Advanced Options
  API Format    Anthropic Messages (Native) <- the default; do NOT switch
  Auth Field    ANTHROPIC_AUTH_TOKEN (Default)
Điểm cuối là gốc dịch vụ: không có /v1, không có dấu gạch chéo ở cuối. Các ứng dụng kiểu Anthropic tự nối thêm /v1/messages — vì vậy trường này khác với mọi ví dụ OpenAI, nơi /v1 nằm trong URL cơ sở. Xem giải thích đầy đủ trên trang ANTHROPIC_BASE_URL.

Từng bước (thẻ Claude Code)

  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ở CC Switch ở thẻ cấp cao nhất Claude Code rồi nhấp nút dấu cộng. Giữ nguyên Custom Configuration mặc định thay vì chọn cấu hình có sẵn.
  3. Điền Provider Name, API Key và đặt API Endpoint = https://api.kunavo.com.
  4. Mở rộng Advanced Options và xác nhận API Format là Anthropic Messages (Native) và Auth Field là ANTHROPIC_AUTH_TOKEN (Default). Cả hai đều là mặc định; mục đích là kiểm tra, không phải thay đổi.
  5. Lưu, rồi Activate. Thẻ này không nên hiển thị dấu Needs Routing — dấu đó chỉ xuất hiện ở những nhà cung cấp cần chuyển đổi giao thức.

Vì sao không có dấu “Cần định tuyến”

Tuyến cục bộ của CC Switch được dùng để kết nối các giao thức. Claude Code gửi yêu cầu Anthropic Messages đến /v1/messages; một cổng chỉ cung cấp OpenAI Chat Completions hoặc Responses API không thể phản hồi yêu cầu đó, nên tuyến này chuyển đổi yêu cầu khi gửi đi và chuyển đổi phản hồi khi nhận về. Quá trình chuyển đổi định dạng lại các sự kiện truyền trực tuyến, lệnh gọi công cụ và cấu hình suy luận — cách này hoạt động, nhưng tạo thêm một thành phần giữa trình soạn thảo và mô hình.

Kunavo cung cấp trực tiếp POST /v1/messages, vì vậy phía Claude Code không cần chuyển đổi: nhà cung cấp vẫn là Anthropic Messages (Native) và tuyến hoàn toàn không tham gia. Kunavo cũng cung cấp POST /v1/chat/completions và POST /v1/responses bằng cùng một khóa, nhờ đó có thể thực hiện chiều Codex bên dưới.

Thẻ CC SwitchĐặt định dạng thànhĐịnh tuyến cục bộ
Claude CodeAnthropic Messages (Native)Không cần
CodexAnthropic Messages (routing required)Bắt buộc — tuyến chuyển đổi /responses thành /v1/messages

Chạy các mô hình Claude bên trong Codex

Đây là chiều mà các hướng dẫn dành cho nhà cung cấp khác không đề cập. Codex sử dụng OpenAI Responses API, vì vậy nếu trỏ trực tiếp vào điểm cuối /v1/messages sẽ nhận lỗi 404 — CC Switch xử lý việc này bằng cách giữ Codex trên tuyến cục bộ và chuyển đổi giao thức. Trong thẻ Codex không có cấu hình Anthropic có sẵn, vì vậy đây cũng là một Custom Configuration:

CC Switch → tab Codex → Thêm nhà cung cấp
Provider Name      Kunavo
API Key            sk-kn-...
API Request URL    https://api.kunavo.com
Default Model      claude-sonnet-5

Advanced Options
  Upstream Format  Anthropic Messages (routing required)
Hướng dẫn riêng của CC Switch bổ sung một cảnh báo đáng lưu ý: một số nhà cung cấp giới hạn Claude API của họ cho ứng dụng khách Claude Code, vì vậy khóa như vậy có thể báo lỗi khi dùng qua Codex. Kunavo thì không — cùng một khóa sk-kn-… cung cấp cả giao diện Messages lẫn Responses, và không giao diện nào có danh sách cho phép ứng dụng khách. Nếu muốn bỏ qua hoàn toàn bước chuyển đổi, Codex CLI cũng có thể trỏ thẳng đến giao diện /v1/responses nguyên bản của Kunavo; hướng dẫn nằm trên trang Codex CLI.

Ánh xạ mô hình

CC Switch ánh xạ ba cấp của Claude Code sang các ID mô hình thực tế. Điền cả ba cấp cùng Default fallback model — nếu không khớp, yêu cầu sẽ được chuyển tiếp với tên Claude ban đầu và gặp lỗi ở dịch vụ thượng nguồn. Mức giá tính bằng USD cho mỗi 1M token, đầu vào / đầu ra, được đọc trực tiếp từ danh mục.

CấpID mô hìnhKunavo vào / raTại sao
Haikuclaude-haiku-4-5$0.70 / $3.50Claude Code định tuyến các tác vụ phụ chạy nền đến đây — cấp rẻ nhất là lựa chọn phù hợp
Sonnetclaude-sonnet-5$1.40 / $7.00Mặc định phù hợp cho việc chỉnh sửa
Opusclaude-opus-5-5$2.80 / $14.00Các thay đổi ở cấp kiến trúc
Để bỏ chọn ô 1M trừ khi cấp này thực sự hỗ trợ cửa sổ ngữ cảnh một triệu token. Khai báo ngữ cảnh mà dịch vụ thượng nguồn không có không làm tăng giới hạn — chỉ khiến lỗi xuất hiện ở giữa một cuộc trò chuyện dài.

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

Một cặp yêu cầu là đủ để xác định lỗi nằm ở khóa, điểm cuối hay CC Switch. Nếu cả hai đều trả về 200, mọi lỗi còn lại đều do một trường trong biểu mẫu — gần như luôn là Auth Field hoặc /v1 không nên có trong điểm cuối.

# Settles whether a failure is the key, the endpoint, or CC Switch.
# 200 + a JSON list of model ids means the same key works in the app.
curl -sS https://api.kunavo.com/v1/models \
  -H "Authorization: Bearer sk-kn-..."

# The Anthropic face, which is the one the Claude Code tab actually calls.
curl -sS https://api.kunavo.com/v1/messages \
  -H "Authorization: Bearer sk-kn-..." \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-haiku-4-5","max_tokens":16,
       "messages":[{"role":"user","content":"ping"}]}'

Tài liệu tham khảo

CC Switch là phần mềm mã nguồn mở tại github.com/farion1231/cc-switch. Tên trường và cách hoạt động ở trên lấy từ hướng dẫn chính thức của ứng dụng — hướng dẫn định tuyến Claude Code và hướng dẫn định tuyến Codex; cả hai đều nêu áp dụng cho phiên bản 3.17.0 trở lên. Biểu mẫu ở các phiên bản cũ khác đôi chút; hãy kiểm tra mục Giới thiệu của ứng dụng nếu thiếu trường được nêu ở đây. Phía Kunavo được mô tả trong API Messages, chat completions và trang tích hợp.

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

Làm cách nào để thêm nhà cung cấp tùy chỉnh trong CC Switch?

Trên thẻ Claude Code, nhấp nút dấu cộng, giữ tùy chọn mặc định Cấu hình tùy chỉnh và điền Tên nhà cung cấp, Khóa API cùng Điểm cuối API. Điểm cuối API là URL gốc dịch vụ của cổng kết nối, không có dấu gạch chéo ở cuối — với Kunavo, đó là https://api.kunavo.com, không có /v1. Sau đó mở Tùy chọn nâng cao và kiểm tra hai trường: Định dạng API và Trường xác thực. Hai trường này quyết định nhà cung cấp có hoạt động được hay không, và cũng là hai trường mà hầu hết hướng dẫn thiết lập bỏ qua.

Kunavo có cần bật định tuyến cục bộ của CC Switch không?

Không. Định tuyến cục bộ dùng để chuyển đổi giữa các giao thức — nó chuyển yêu cầu /v1/messages của Claude Code thành OpenAI Responses hoặc Chat Completions khi dịch vụ thượng nguồn chỉ hỗ trợ các giao thức đó. Kunavo cung cấp trực tiếp Anthropic Messages API tại https://api.kunavo.com/v1/messages, nên API Format giữ nguyên giá trị mặc định Anthropic Messages (Native), thẻ nhà cung cấp không bao giờ hiển thị dấu Needs Routing và yêu cầu đi thẳng đến dịch vụ thượng nguồn. Cổng kết nối chỉ cung cấp Chat Completions phải chạy qua tuyến cục bộ cho mọi yêu cầu.

Tại sao Điểm cuối API không có /v1 trong khi các ví dụ OpenAI lại có?

Vì hai quy ước này khác nhau một cách có chủ đích. Máy khách theo kiểu Anthropic tự nối thêm /v1/messages, nên chúng chỉ cần URL gốc — https://api.kunavo.com. OpenAI SDK yêu cầu /v1 đã có sẵn trong base_url, nên chúng cần https://api.kunavo.com/v1. Thẻ Claude Code của CC Switch thuộc phía Anthropic, nên bỏ /v1. Nhầm lẫn điều này là lỗi thiết lập phổ biến nhất trên mọi máy khách; trang ANTHROPIC_BASE_URL giải thích cả hai dạng.

Tôi có nên đặt Trường xác thực thành ANTHROPIC_API_KEY không?

Không — hãy giữ giá trị mặc định ANTHROPIC_AUTH_TOKEN. Giá trị mặc định đó khiến CC Switch gửi Authorization: Bearer <key>. Chọn ANTHROPIC_API_KEY khiến nó gửi tiêu đề x-api-key thay thế; Kunavo đọc tiêu đề này cũng tốt như tiêu đề kia, nên vấn đề không nằm ở tiêu đề mà ở việc phê duyệt. Claude Code yêu cầu phê duyệt một lần trước khi sử dụng ANTHROPIC_API_KEY trong phiên tương tác, và khóa bị từ chối tại đó sẽ bị bỏ qua sau này — một lỗi xác thực trông như khóa sai dù khóa vẫn hợp lệ.

Tôi có thể chạy các mô hình Claude trong Codex thông qua CC Switch không?

Có, và đây là phần mà hầu hết hướng dẫn về nhà cung cấp bỏ qua. Trên thẻ Codex, thêm Cấu hình tùy chỉnh với URL yêu cầu API là https://api.kunavo.com và Mô hình mặc định như claude-sonnet-5, rồi đặt Định dạng thượng nguồn thành Anthropic Messages (cần định tuyến) trong Tùy chọn nâng cao. Phải bật định tuyến cục bộ cho chiều này vì Codex dùng Responses API và tuyến định tuyến viết lại /responses thành /v1/messages. Hướng dẫn của chính CC Switch cảnh báo rằng một số nhà cung cấp giới hạn Claude API của họ chỉ cho máy khách Claude Code và các khóa như vậy không hoạt động qua Codex — Kunavo không áp dụng giới hạn đó: cùng một khóa sk-kn- phục vụ cả hai giao diện.

Tôi nên điền những ID mô hình nào vào ánh xạ mô hình của CC Switch?

Sử dụng ID danh mục của Kunavo. Phân bổ mặc định phù hợp là claude-haiku-4-5 ($0.70 / $3.50 trên mỗi 1M token) ở tầng Haiku, vì Claude Code gửi các tác vụ nền đến đó; claude-sonnet-5 ($1.40 / $7.00) ở Sonnet; và claude-opus-5-5 ($2.80 / $14.00) ở Opus. Luôn điền cả mô hình dự phòng mặc định — nếu để trống, CC Switch sẽ chuyển tiếp các yêu cầu không khớp dưới tên Claude ban đầu, và các yêu cầu đó sẽ gặp lỗi ở upstream. Danh sách hiện tại có tại GET /v1/models.

CC Switch lưu khóa API của tôi ở đâu?

Trong kho lưu trữ riêng của nó, không phải trong cấu hình của máy khách. CC Switch lưu các nhà cung cấp trong ~/.cc-switch/cc-switch.db và khi định tuyến cục bộ tiếp quản máy khách, nó chỉ ghi địa chỉ tuyến cục bộ vào ~/.claude/settings.json với một giá trị giữ chỗ trong mục xác thực — khóa thật được tuyến định tuyến chèn vào khi chuyển tiếp. Đây là đặc tính của CC Switch, không phải của Kunavo; điều này đáng biết vì nó có nghĩa là khóa bạn dán không phải khóa nằm trong tệp mà bạn có thể sắp đưa vào một commit.