Tài liệu

Tài liệu

Nanocoder

Nanocoder xử lý endpoint từ xa giống như Ollama: một mục trong nanocoder.providers gồm tên, URL cơ sở, khóa và danh sách mô hình. sdkProvider mặc định là openai-compatible, vì vậy không cần khai báo thêm gì.

Một mục Custom Provider trong nanocoder.providers của agents.config.json — name, baseUrl, apiKey, models — không cần dòng sdkProvider vì mặc định là openai-compatible.

agents.config.json
{
  "nanocoder": {
    "providers": [
      {
        "name": "Kunavo",
        "baseUrl": "https://api.kunavo.com/v1",
        "apiKey": "${KUNAVO_API_KEY}",
        "models": ["claude-sonnet-5", "claude-haiku-4-5", "gpt-5-6-sol"]
      }
    ]
  }
}
Kunavo chưa chạy Nanocoder với endpoint này. Mọi trường ở trên đều được chép lại từ trang Custom Provider của chính Nanocoder, không phải từ một phiên sử dụng mà bất kỳ ai ở đây đã hoàn tất — đây là tài liệu tham khảo cấu hình, không phải bài kiểm tra tính tương thích. Trước tiên, hãy chạy một tác vụ nhỏ có giới hạn và chuẩn bị sẵn một cách khác để thực hiện trong lúc đó.
URL cơ sở giữ hậu tố /v1. Tài liệu Nanocoder giải đáp bằng ví dụ thay vì một quy tắc: bảng trường chỉ mô tả baseUrl là “URL endpoint API”, nhưng ví dụ ngay trên trang Custom Provider là "baseUrl": "https://my-api.example.com/v1", và mọi trang nhà cung cấp tương thích OpenAI trên trang web đều làm tương tự — https://openrouter.ai/api/v1, http://localhost:11434/v1. Bỏ hậu tố này sẽ gây lỗi 404 ở tuyến, chứ không phải lỗi 401 ở khóa.
sdkProvider được cố ý lược bỏ ở trên — bảng trường cho biết giá trị này “mặc định là openai-compatible”, đúng với định dạng trên đường truyền mà Kunavo phản hồi tại đây. Các giá trị được tài liệu hóa khác (google, anthropic, github-copilot) sẽ chuyển sang SDK khác; không cần giá trị nào trong số đó để truy cập endpoint chat-completions.
Ba vị trí tra cứu quyết định cấu hình nào được ưu tiên, theo thứ tự này: NANOCODER_PROVIDERS (hoặc NANOCODER_PROVIDERS_FILE), rồi đến agents.config.json trong thư mục làm việc, sau đó là tệp cấu hình theo người dùng — ~/Library/Preferences/nanocoder/ trên macOS, ~/.config/nanocoder/ trên Linux, %APPDATA%\nanocoder\ trên Windows. Tệp được tìm thấy đầu tiên sẽ được dùng; đặt NANOCODER_CONFIG_DIR sẽ bỏ qua hoàn toàn việc tra cứu trong dự án và thư mục chính. Nếu khóa bạn sửa không phải khóa được gửi đi, hãy kiểm tra thứ tự ưu tiên này.
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 Nanocoder.

Từng bước

  1. Tạo khóa tại /app/keys rồi sao chép — khóa chỉ được hiển thị một lần. Xuất khóa thành KUNAVO_API_KEY thay vì dán vào tệp: Nanocoder thay thế đệ quy $VAR, ${VAR} và ${VAR:-default} trong mọi chuỗi của mục nhà cung cấp, đồng thời đọc .env từ thư mục làm việc.
  2. Chạy /settings providers trong Nanocoder rồi chọn Custom Provider. Trình hướng dẫn lần lượt yêu cầu nhập Provider name, Base URL, API key (optional), Model names và Request timeout, đồng thời đề nghị lấy danh sách mô hình từ endpoint — Kunavo phản hồi GET /v1/models, nên danh sách sẽ tự động được điền.
  3. Hoặc bỏ qua trình hướng dẫn và tự viết agents.config.json bằng khối cấu hình ở trên. Lưu ý rằng các thiết lập được phân giải theo từng tệp: tệp cấp dự án định nghĩa nanocoder.providers sẽ cung cấp toàn bộ khối đó, nên các mục trong cấu hình toàn cục sẽ không được gộp vào.
  4. Đặt cửa sổ ngữ cảnh. Nanocoder xác định giới hạn theo thứ tự /context-max, rồi contextWindows[model], contextWindow, NANOCODER_CONTEXT_LIMIT, cuối cùng là models.dev — Kunavo không phải nhà cung cấp trên models.dev, nên nếu không có một trong bốn giá trị đầu, hệ thống sẽ tính ngân sách dựa trên giá trị dự phòng không phải của mô hình bạn dùng. Các con số nằm tại /models.
  5. Mở /model, chọn một trong các ID bạn đã liệt kê — bộ chọn hiển thị chúng dưới tên name mà bạn đã cung cấp — rồi chạy một tác vụ nhỏ cần gọi công cụ. Nếu lệnh gọi công cụ trả về dữ liệu sai định dạng trên một mô hình cụ thể, disableToolModels sẽ tắt tính năng đó riêng cho từng mô hình thay vì cho cả nhà cung cấp.

Đã kiểm tra đối chiếu với Trang Custom Provider của Nanocoder 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 Nanocoder so với OpenCode — mỗi công cụ khiến bạn tốn thêm bao nhiêu ngoài khối cấu hình nhà cung cấp.

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 Nanocoder.

# 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 Nanocoder
claude-sonnet-5$1.40 / $7.00mô hình làm việc mặc định cho vòng lặp chỉnh sửa và chạy của agent trên terminal
claude-haiku-4-5$0.70 / $3.50các phiên kéo dài, dùng nhiều công cụ và phân loại tệp nhanh, nơi số lượt trao đổi quyết định chi phí
gpt-5-6-sol$2.00 / $12.00ý kiến thứ hai từ một họ mô hình khác dùng cùng khóa
claude-opus-5$3.50 / $17.50một lần tái cấu trúc khó trong phiên, nơi một kế hoạch sai sẽ tốn kém
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.

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

Nanocoder có hỗ trợ endpoint API tùy chỉnh không?

Có, đây là tính năng chính thức được tài liệu hóa chứ không phải trường không được tài liệu hóa. Trang "Custom Provider" của Nanocoder nêu rằng có thể thêm bất kỳ dịch vụ nào cung cấp API tương thích OpenAI làm nhà cung cấp tùy chỉnh, đồng thời đưa ra đối tượng cấu hình cần viết: name, baseUrl, apiKey và models. Bạn có thể thêm theo cách tương tác bằng trình hướng dẫn /settings providers hoặc viết cấu hình thủ công trong agents.config.json. Đây là nội dung tài liệu tính đến ngày 21 tháng 9 năm 2026.

Tôi nhập khóa API Nanocoder ở đâu?

Trong trường apiKey của mục nhà cung cấp, bên trong agents.config.json. Nanocoder áp dụng thay thế biến môi trường đệ quy cho các trường chuỗi trong cấu hình nhà cung cấp, vì vậy cách an toàn hơn là dùng "apiKey": "${KUNAVO_API_KEY}" và xuất giá trị trong shell hoặc tệp .env ở thư mục làm việc. Các giá trị ghi đè qua NANOCODER_PROVIDERS có độ ưu tiên cao nhất, tiếp theo là agents.config.json cấp dự án, rồi đến tệp theo người dùng; vì vậy nếu thay đổi có vẻ không có tác dụng, thường là do một giá trị ở trước đó trong thứ tự đang ghi đè.

baseUrl của Nanocoder có cần kết thúc bằng /v1 không?

Với endpoint tương thích OpenAI thì có — chẳng hạn https://api.kunavo.com/v1. Tài liệu Nanocoder không nêu rõ quy tắc về hậu tố này, bảng trường chỉ mô tả baseUrl là URL endpoint API. Thay vào đó, ví dụ trong tài liệu giải đáp điều này: mẫu trên trang Custom Provider dùng https://my-api.example.com/v1 và mọi trang nhà cung cấp tương thích OpenAI trên trang web đều có cùng hậu tố. Nếu thiếu /v1, tuyến sẽ báo lỗi 404 thay vì lỗi xác thực.

Vì sao Nanocoder không hiển thị chi phí hoặc kích thước ngữ cảnh sai cho các mô hình này?

Vì Nanocoder đọc siêu dữ liệu mô hình từ models.dev, còn một cổng trung gian bên thứ ba không có trong danh sách sẽ không có mục tại đó. Thứ tự giới hạn ngữ cảnh được tài liệu hóa là /context-max hoặc --context-max, rồi contextWindows[model], tiếp theo contextWindow, rồi NANOCODER_CONTEXT_LIMIT, cuối cùng là models.dev; vì vậy hãy đặt một trong bốn giá trị đầu trong mục nhà cung cấp để đồng hồ đo hiển thị chính xác. Dù thế nào, con số chi phí cho mỗi phản hồi vẫn là phép tính riêng của ứng dụng khách dựa trên số token được báo cáo — hãy đối chiếu với sổ ghi của nhà cung cấp, không phải phần chân trang.