Tài liệu
opencode
opencode xây dựng các nhà cung cấp của mình trên Vercel AI SDK, vì vậy để trỏ đến điểm cuối mới chỉ cần một khối chỉ định gói npm và baseURL. Gói bạn chỉ định sẽ quyết định định dạng giao thức mà nó sử dụng.
Một khối nhà cung cấp trong opencode.json — @ai-sdk/openai-compatible cho chat completions, @ai-sdk/openai khi bạn muốn bề mặt /v1/responses.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"kunavo": {
"npm": "@ai-sdk/openai-compatible",
"name": "Kunavo",
"options": {
"baseURL": "https://api.kunavo.com/v1",
"apiKey": "{env:KUNAVO_API_KEY}"
},
"models": {
"claude-sonnet-5": {
"name": "Claude Sonnet 5",
"limit": { "context": 200000, "output": 64000 }
},
"claude-haiku-4-5": { "name": "Claude Haiku 4.5" }
}
}
}
}npm chọn định dạng giao thức. @ai-sdk/openai-compatible sử dụng /v1/chat/completions; @ai-sdk/openai sử dụng /v1/responses. Kunavo hỗ trợ cả hai, vì vậy cách nào cũng được — dùng gói Responses khi bạn muốn giữ lại các mục reasoning trong dòng model GPT, và dùng gói chat completions cho mọi trường hợp khác."apiKey": "{env:KUNAVO_API_KEY}" đọc khóa từ biến môi trường khi tải cấu hình. opencode.json là tệp sẽ được đưa vào kho lưu trữ; khóa ghi trực tiếp trong đó sẽ không còn bí mật.limit.context và limit.output cho từng model. opencode theo dõi ngữ cảnh còn lại dựa trên các con số đó, vì vậy model không được đặt hai giá trị này sẽ được tính theo mặc định không dành riêng cho nó.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 opencode.Từng bước
- Tạo khóa tại
/app/keysrồi sao chép khóa — khóa chỉ hiển thị một lần. - Xuất biến môi trường:
export KUNAVO_API_KEY=sk-kn-... - Thêm khối nhà cung cấp vào
opencode.json— tệp toàn cục tại~/.config/opencode/opencode.jsonđể áp dụng cho mọi dự án, hoặc tệp trong thư mục gốc của dự án để chỉ áp dụng cho kho lưu trữ này. - Khởi chạy
opencoderồi chọn model từ danh sách model; nhà cung cấp sẽ xuất hiện dưới tênnamemà bạn đã đặt. - Để thêm model sau này, thêm khóa khác bên dưới
models— mã là giá trị được gửi qua giao thức, cònnamechỉ là nhãn.
Đã kiểm tra đối chiếu với tài liệu về nhà cung cấp của opencode vào 6 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.
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 opencode.
# 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ình | Kunavo vào / ra | Phù hợp ở đâu trong opencode |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | model dựng mã mặc định |
claude-opus-5 | $3.50 / $17.50 | chế độ lập kế hoạch, nơi kế hoạch chi phối mọi việc tiếp theo |
claude-haiku-4-5 | $0.70 / $3.50 | tác vụ tác nhân con và tìm kiếm, khi số lượng yêu cầu lớn |
gpt-5-6-sol | $2.00 / $12.00 | dùng với @ai-sdk/openai để giữ nguyên các mục reasoning qua cả lượt gửi và nhận |
Câu hỏi thường gặp
Làm cách nào để thêm nhà cung cấp tùy chỉnh vào opencode?
Thêm một khối bên dưới "provider" trong opencode.json, chỉ định gói npm, tên hiển thị, options.baseURL, options.apiKey và một bản đồ models. Dùng @ai-sdk/openai-compatible cho điểm cuối cung cấp /v1/chat/completions và @ai-sdk/openai cho điểm cuối cung cấp /v1/responses. Sau đó, nhà cung cấp sẽ xuất hiện trong danh sách model của opencode dưới tên bạn đã đặt.
Làm cách nào để giữ khóa API ngoài opencode.json?
Dùng cú pháp nội suy {env:VAR_NAME} trong options.apiKey — ví dụ "apiKey": "{env:KUNAVO_API_KEY}" — rồi xuất biến đó trong shell. opencode phân giải biến khi tải cấu hình, vì vậy tệp vẫn an toàn để commit cùng với dự án mà nó cấu hình.
@ai-sdk/openai và @ai-sdk/openai-compatible trong opencode khác nhau thế nào?
Chúng chọn các điểm cuối khác nhau trên cùng một URL cơ sở. @ai-sdk/openai-compatible gọi /chat/completions, tuyến mà gần như mọi cổng đều triển khai; @ai-sdk/openai gọi /responses, bề mặt OpenAI mới hơn. Hãy chọn gói mà điểm cuối của bạn thực sự hỗ trợ — dùng sai gói sẽ tạo lỗi 404 dù URL cơ sở vẫn chính xác.
Vì sao opencode hết ngữ cảnh sớm hơn dự kiến?
Vì mục model không có khối limit, nên opencode tính ngân sách theo giá trị mặc định thay vì cửa sổ ngữ cảnh thực của model. Thêm "limit": { "context": <window>, "output": <max output> } cho model đó trong opencode.json, dùng các số liệu từ danh mục của nhà cung cấp; khi đó chỉ báo ngữ cảnh và các mốc rút gọn sẽ khớp với thực tế.