Skip to content

Kết nối OpenCode

Độ khó ⌨️ Trung cấp (tập tin cấu hình JSON) | Định dạng API Tương thích OpenAI | base_url https://byesu.com/v1

Thông tin kết nối
Địa chỉ APIhttps://byesu.com/v1
Mô hìnhclaude-opus-4-8
Định dạng API Tương thích OpenAI · tên mô hình theo bảng điều khiển

OpenCode là một trong những AI coding agent mã nguồn mở được gắn sao nhiều nhất trên GitHub — một trợ lý ưu tiên terminal (cũng có ứng dụng desktop và tiện ích mở rộng IDE), được thiết kế chủ đích để không phụ thuộc nhà cung cấp: nó không bao giờ khóa bạn vào một hãng mô hình duy nhất. Triết lý đó rất hợp với byesu — một gateway AI API có cả endpoint tương thích OpenAI lẫn endpoint Anthropic gốc. Khai báo byesu một lần làm nhà cung cấp tùy chỉnh trong opencode.json, và chỉ với một key duy nhất, Claude Opus 4.8, Claude Sonnet 5, GPT-5.6 và Grok 4.5 sẽ xuất hiện trong trình chọn mô hình của OpenCode — tính phí theo mức dùng, không cần thuê bao.

Trước khi bắt đầu

Vào Bảng điều khiển → Token và tạo một token trong nhóm bao gồm các mô hình bạn định dùng (xem Chọn nhóm). Mọi chỗ xuất hiện sk-xxxx bên dưới đều thay bằng key của riêng bạn.

Điều kiện chuẩn bị

① Đã cài OpenCode — dùng bất kỳ cách chính thức nào cũng được:

bash
curl -fsSL https://opencode.ai/install | bash
bash
npm install -g opencode-ai
bash
brew install anomalyco/tap/opencode

Cài xong, kiểm tra lại:

bash
opencode --version

② Một token byesu — tạo trong bảng điều khiển, thuộc nhóm khớp với các mô hình bạn muốn dùng (đây chính là nguồn gốc của lỗi "no available channel" sẽ nhắc tới bên dưới).

Bước 1: Thêm byesu làm nhà cung cấp tùy chỉnh

OpenCode đọc opencode.json từ hai nơi:

  • Toàn cục: ~/.config/opencode/opencode.json — áp dụng cho mọi dự án. Đây là nơi khuyến nghị đặt khối provider.
  • Theo dự án: opencode.json ở thư mục gốc dự án — ghi đè tập tin toàn cục cho dự án đó.

Tạo mới (hoặc bổ sung vào) một trong hai tập tin với nội dung sau:

json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "byesu/claude-opus-4-8",
  "small_model": "byesu/claude-sonnet-5",
  "provider": {
    "byesu": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "byesu",
      "options": {
        "baseURL": "https://byesu.com/v1",
        "apiKey": "sk-token-của-bạn"
      },
      "models": {
        "claude-opus-4-8": { "name": "Claude Opus 4.8" },
        "claude-sonnet-5": { "name": "Claude Sonnet 5" },
        "gpt-5.6-terra": { "name": "GPT-5.6 Terra" },
        "grok-4.5": { "name": "Grok 4.5" }
      }
    }
  }
}

Ý nghĩa từng phần:

TrườngÝ nghĩa
provider.byesuKhóa bạn chọn ở đây trở thành provider ID — mọi tham chiếu mô hình đều dùng dạng byesu/<model-id>
npmAdapter AI SDK mà OpenCode nạp cho nhà cung cấp này. Endpoint của byesu đi qua /v1/chat/completions, nên phải là @ai-sdk/openai-compatible
options.baseURLhttps://byesu.com/v1 — kết thúc bằng /v1, đừng thêm /chat/completions
options.apiKeyToken sk- của bạn; OpenCode sẽ tự gửi nó dưới dạng header Bearer
modelsMỗi khóa là một ID mô hình đúng nguyên văn như hiển thị trong bảng điều khiển; name chỉ là nhãn hiển thị trong trình chọn
model / small_modelMô hình mặc định, cùng một mô hình phụ nhẹ (đặt tiêu đề phiên, tóm tắt) — cả hai đều theo dạng provider_id/model_id

Ba chỗ dễ sai nhất

  1. npm phải là @ai-sdk/openai-compatible. Gói @ai-sdk/openai nhắm tới API /v1/responses của OpenAI và sẽ không khớp với endpoint này.
  2. Các khóa mô hình dưới models phải khớp chính xác tên trong bảng điều khiển (claude-opus-4-8, không phải claude-opus-4.8).
  3. Ở mọi chỗ khác trong cấu hình, mô hình luôn mang tiền tố nhà cung cấp: byesu/claude-opus-4-8, không bao giờ dùng tên trần.

Tùy chọn: mỗi mục mô hình còn chấp nhận một object limit ({ "context": ..., "output": ... }) để đồng hồ ngữ cảnh của OpenCode hiển thị chính xác. Không có nó mọi thứ vẫn hoạt động bình thường.

Bước 2 (tùy chọn): Giữ key ngoài tập tin cấu hình

Hai cách gọn gàng để tránh lưu key dưới dạng văn bản thuần trong opencode.json:

Nội suy biến môi trường. OpenCode mở rộng các placeholder {env:VAR} bên trong cấu hình:

json
"options": {
  "baseURL": "https://byesu.com/v1",
  "apiKey": "{env:BYESU_API_KEY}"
}
bash
# Thêm vào ~/.zshrc hoặc ~/.bashrc, rồi mở lại terminal
export BYESU_API_KEY="sk-token-của-bạn"

Lệnh /connect. Khởi động opencode, gõ /connect, chọn Other, nhập byesu làm provider ID rồi dán key của bạn. OpenCode lưu thông tin xác thực trong kho riêng của nó, và bạn có thể bỏ hẳn apiKey khỏi cấu hình.

WARNING

Provider ID bạn nhập trong /connect phải trùng với khóa dưới provider trong opencode.json (ở đây là byesu), nếu không thông tin xác thực đã lưu sẽ không bao giờ được sử dụng.

Bước 3: Chạy thử và kiểm tra

Vào bất kỳ thư mục dự án nào và khởi động:

bash
opencode

/models — bốn mục byesu sẽ xuất hiện trong trình chọn. Chọn một mô hình và hỏi thứ gì đó nhỏ (ví dụ «liệt kê các tập tin trong thư mục hiện tại»). Nếu nó trả lời bình thường là bạn đã kết nối thành công ✅

Chuyển mô hình, Plan và Build

/models cho phép chuyển mô hình bất cứ lúc nào giữa phiên. Phím Tab chuyển qua lại giữa agent Build (toàn quyền dùng công cụ) và agent Plan (chế độ phân tích, hỏi trước khi sửa tập tin), và mỗi agent có thể ghim một mô hình byesu riêng:

json
{
  "agent": {
    "plan": { "model": "byesu/claude-sonnet-5" }
  }
}

Một cách chia phổ biến: Opus 4.8 làm mặc định cho Build, Sonnet 5 cho agent Plan kiêm nhiệm vụ small_model.

Gặp trục trặc?

  • 401 / invalid token → key bị sai, hoặc provider ID trong /connect không trùng với khóa provider trong cấu hình (chi tiết)
  • No available channel → nhóm của token không bao gồm mô hình bạn chọn; hãy tạo token trong đúng nhóm (Chọn nhóm, chi tiết)
  • Model not found → một khóa dưới models không khớp chính xác tên mô hình trong bảng điều khiển, hoặc một tham chiếu thiếu tiền tố byesu/ (chi tiết)
  • Số dư không đủ → nạp tiền trong bảng điều khiển bằng USDT, Alipay hoặc WeChat Pay (chi tiết)
  • Các vấn đề khác, xem Lỗi thường gặp & Cách khắc phục

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

Làm sao thêm một nhà cung cấp tương thích OpenAI tùy chỉnh vào OpenCode?

Khai báo nó dưới khóa provider trong opencode.json: đặt npm@ai-sdk/openai-compatible, options.baseURLhttps://byesu.com/v1, options.apiKey là token sk- của bạn, và liệt kê các ID mô hình dưới models. Từ đó trở đi, mọi mô hình được tham chiếu theo dạng byesu/<model-id>.

Nhà cung cấp tùy chỉnh trong OpenCode nên dùng gói npm nào?

@ai-sdk/openai-compatible — đây là adapter dành cho các nhà cung cấp đi qua /v1/chat/completions, chính là giao diện mà endpoint tương thích OpenAI của byesu sử dụng. Gói @ai-sdk/openai lại nhắm tới API /v1/responses của OpenAI nên sẽ không khớp.

Tôi có thể giữ API key ngoài opencode.json không?

Có, hai cách: dùng nội suy biến môi trường ("apiKey": "{env:BYESU_API_KEY}" kèm một dòng export trong tập tin cấu hình shell), hoặc chạy /connect bên trong OpenCode và lưu key dưới một provider ID trùng với khóa trong cấu hình của bạn.

Vì sao OpenCode báo lỗi "no available channel"?

Token được tạo trong một nhóm không bao gồm mô hình bạn chọn. Hãy tạo token trong nhóm phù hợp tại bảng điều khiển byesu (xem Chọn nhóm), thay key mới vào, rồi thử lại.

Hai agent Plan và Build của OpenCode có thể dùng mô hình khác nhau không?

Có. Phím Tab chuyển qua lại giữa Build và Plan trong phiên làm việc, và mỗi agent nhận phần ghi đè model riêng trong opencode.json — ví dụ đặt agent.plan.modelbyesu/claude-sonnet-5 trong khi Build vẫn giữ byesu/claude-opus-4-8.

Dùng OpenCode qua byesu được tính phí như thế nào?

Tính phí theo mức dùng trên từng token, với hệ số minh bạch so với giá niêm yết chính thức và không cần thuê bao. Bảng điều khiển hiển thị giá tính phí thực tế theo thời gian thực ngay bên cạnh từng mô hình, và bạn có thể nạp tiền bằng USDT, Alipay hoặc WeChat Pay.

Gặp sự cố? Liên hệ hỗ trợ hoặc tham gia nhóm của chúng tôi.