OpenCode là câu trả lời mặc định còn Nanocoder là lựa chọn thiểu số có chủ đích: vào ngày 19 tháng 9 năm 2026, OpenCode có 208.444 sao trên GitHub so với 2.487 của Nanocoder, và gói npm của OpenCode được tải 9.436.914 lần trong 30 ngày tính đến ngày 16 tháng 9, so với 6.614 lần của Nanocoder. Cả hai đều là tác nhân lập trình chạy trong terminal miễn phí, được cấp phép MIT, cho phép bạn trỏ đến một endpoint API tùy chỉnh. Lựa chọn giữa chúng không phải là xếp hạng chất lượng — đó là lựa chọn giữa phạm vi rộng nhất với hai sản phẩm do chính bên phát triển cung cấp cùng cạnh tranh cho khoản chi token của bạn, và phạm vi hẹp hơn do một tập thể không bán gì cả vận hành.
Hãy xem các con số lượt tải đó là bậc độ lớn thay vì số người dùng. OpenCode còn được cài đặt thông qua script curl và Homebrew, còn runner CI làm tăng mọi con số npm; Nanocoder cũng được phân phối qua Homebrew và Nix ngoài npm. Tỷ lệ này đáng tin theo hướng tương đối; các con số tuyệt đối thì không.
Trước hết, hãy chắc chắn rằng bạn đang so sánh đúng hai dự án
Có ba trường hợp trùng tên xuất hiện ngay trong kết quả tìm kiếm cho phép so sánh này, và hai trong số đó sẽ làm hỏng thiết lập chứ không chỉ khiến bạn nhầm lẫn.
| Tên bạn có thể đã tìm thấy | Thực chất nó là gì | Có nằm trong phép so sánh này không? |
|---|---|---|
| anomalyco/opencode | OpenCode bản TypeScript tại opencode.ai. Chưa lưu trữ, MIT, nhánh mặc định dev | Có — đây là OpenCode được đề cập ở đây |
| opencode-ai/opencode | CLI Go nguyên bản. Đã lưu trữ, 13.752 sao, lần push cuối ngày 18 tháng 9 năm 2025; README hướng người đọc đến Crush | Không. Xem mục trong thư mục |
| OpenCoder | Một họ mô hình ngôn ngữ lớn mã nguồn mở, không phải CLI. Không có tệp cấu hình, cài đặt provider hay cơ chế BYOK | Không. Điểm benchmark của nó không nói lên điều gì về agent |
| Nano-Collective/nanocoder | Nanocoder, npm @nanocollective/nanocoder, tài liệu tại docs.nanocollective.org | Có — đây là Nanocoder được đề cập ở đây |
| nanocode-project/nanocode | Một dự án Python riêng biệt, gần như không còn hoạt động, được tạo ngày 1 tháng 4 năm 2026 và push thêm một lần vào ngày hôm sau | Không. Xem mục trong thư mục |
Có thêm một thay đổi đáng biết trước khi bạn làm theo hướng dẫn cũ. Repository mà nhiều hướng dẫn vẫn gọi là sst/opencode hiện chuyển hướng 301 đến anomalyco/opencode, còn tổ chức GitHub sst trống với mô tả rằng tổ chức này đã chuyển sang anomalyco (GitHub API, ngày 19 tháng 9 năm 2026). Tài liệu riêng của OpenCode xác nhận điều đó trong các lệnh cài đặt — brew install anomalyco/tap/opencode, ghcr.io/anomalyco/opencode — và mọi trang tài liệu đều ghi bản quyền Anomaly ở chân trang. Tên sản phẩm không thay đổi, chỉ có tổ chức thay đổi. Một ngày đổi tên đang được lan truyền trên mạng xã hội; không thể xác minh tại đây, nên không công bố ngày nào trên trang này.
Ai nên chọn sản phẩm nào
Hãy bắt đầu từ mô hình mặc định của bạn, không phải từ danh sách tính năng. Nếu ngày làm việc của bạn đã chạy trên một mô hình frontier được host và suy luận cục bộ chỉ là thử nghiệm thỉnh thoảng, cách tiếp cận của OpenCode phù hợp với bạn. Nếu ngày làm việc của bạn chạy trên Ollama, llama.cpp, LM Studio, vLLM hoặc MLX và API được host là ngoại lệ, cách tiếp cận của Nanocoder phù hợp hơn — dù đây là khác biệt về mặc định, không phải về khả năng, vì OpenCode cũng lập tài liệu về base URL của Ollama, LM Studio và llama.cpp.
| Nếu điều này đúng với bạn | Lựa chọn | Bởi vì |
|---|---|---|
| Bạn muốn agent trong một TUI, ứng dụng desktop và tiện ích mở rộng IDE, cùng với server và plugin | OpenCode | Nanocoder cung cấp TUI terminal với --vscode và ACP server cho Zed; đó là toàn bộ phạm vi |
| Bạn cần các quyền khai báo, có thể xem xét theo từng công cụ và từng agent | OpenCode | Quy tắc là dữ liệu: allow/ask/deny cho từng công cụ với wildcard bash, được commit vào repository |
| Bạn muốn các lệnh shell bị giới hạn bởi hệ điều hành, không phải bởi prompt | Nanocoder | nanocoder.sandbox bọc execute_bash trong sandbox-exec hoặc bwrap; OpenCode không có cờ tương đương trong tài liệu quyền |
Gateway của bạn cung cấp /v1/responses và bạn muốn dùng định dạng wire đó | OpenCode | Union provider của Nanocoder không có tùy chọn Responses chung |
| Bạn muốn maintainer của agent không có lợi ích trong việc bạn mua token nào | Nanocoder | Nanocoder không có tài khoản, gói dịch vụ hay gateway. OpenCode cung cấp hai |
| Bạn đang chuẩn hóa một nhóm và cần SSO cùng cấu hình bắt buộc trên toàn tổ chức | OpenCode | Đó chính xác là thứ OpenCode Enterprise giới hạn, tính theo seat với mức giá chưa công bố |
| Bạn muốn một mô hình extension duy nhất thay vì nhiều hệ thống con | Nanocoder | Skills là lớp bao trùm duy nhất cho command, subagent, công cụ và trigger |
| Bạn muốn kho issue, ví dụ và tích hợp bên thứ ba lớn hơn | OpenCode | Khoảng cách về mức độ sử dụng ở trên chính là toàn bộ lập luận, và đó là một khác biệt có thật |
Chi phí di chuyển đối xứng và nhỏ ở lớp provider, nhưng không đối xứng ở các lớp phía trên. Endpoint tùy chỉnh là một khối JSON trong cả hai client, nên chuyển gateway qua lại chỉ mất vài phút. Những gì không thể chuyển là phần bạn xây dựng bên trên: các gói Nanocoder Skills trong .nanocoder/skills/ và lifecycle hook của nó — trong đó hook pre-tool-use thoát với mã khác 0 sẽ từ chối lần gọi và cho mô hình biết lý do — không có tương đương trong OpenCode để dán vào, còn các khối quyền theo agent, plugin và cấu hình LSP của OpenCode cũng không có tương đương trong Nanocoder. Hãy tính phần việc đó trước khi đếm số dòng cấu hình.
Hai client thực sự khác nhau như thế nào
| Khía cạnh | Nanocoder | OpenCode |
|---|---|---|
| Repository và giấy phép | Nano-Collective/nanocoder, MIT theo package.json, và văn bản MIT nằm trong LICENSE.md. Bộ phát hiện riêng của GitHub vẫn báo NOASSERTION cho repository | anomalyco/opencode, MIT theo GitHub API |
| Bản phát hành hiện tại | v1.30.0, ngày 26 tháng 8 năm 2026; npm @nanocollective/nanocoder 1.30.0 cùng ngày | v1.18.31, ngày 14 tháng 9 năm 2026; npm opencode-ai 1.18.31 cùng ngày |
| Môi trường chạy | Node >= 22 theo package.json | Cài đặt qua script curl, npm, Homebrew, mise hoặc Docker, theo tài liệu cài đặt |
| Giao diện | TUI terminal, --vscode, --acp cho Zed | TUI terminal, ứng dụng desktop, tiện ích mở rộng IDE, cùng CLI, web, server, SDK và plugin |
| Tệp cấu hình | agents.config.json — thư mục dự án hoặc thư mục cấu hình theo từng hệ điều hành; NANOCODER_CONFIG_DIR bỏ qua mọi tra cứu khác | opencode.json hoặc ~/.config/opencode/opencode.json, JSON hoặc JSONC, với phép nội suy {env:VAR} và {file:path} |
| Thứ tự ưu tiên cấu hình | Được phân giải theo từng khối: tệp có độ ưu tiên cao nhất định nghĩa một khối sẽ cung cấp toàn bộ khối đó, còn các trường bị bỏ qua sẽ quay về giá trị mặc định tích hợp thay vì tệp có độ ưu tiên thấp hơn | Tám lớp được hợp nhất, không thay thế — các cấu hình về sau chỉ ghi đè cấu hình trước đối với những key xung đột |
| Kiểm soát thực thi | Bốn chế độ toàn cục được chuyển đổi bằng Shift+Tab: Normal, Auto-Accept (bash và git mang tính phá hoại vẫn yêu cầu xác nhận), Yolo, Plan | Các quy tắc khai báo theo từng công cụ cho read, edit, bash, webfetch, task, skill, lsp và nhiều công cụ khác, mỗi công cụ có allow/ask/deny, cùng wildcard và ghi đè theo từng agent |
| Sandbox cấp hệ điều hành | nanocoder.sandbox, tắt theo mặc định: sandbox-exec trên macOS, bwrap trên Linux, không được hỗ trợ trên Windows. Tài liệu nêu rõ đây không phải ranh giới bảo vệ secrets — thao tác đọc không bị chặn | Không được cung cấp dưới dạng cờ trong tài liệu quyền; doom_loop và external_directory mặc định là ask còn thao tác đọc .env bị từ chối |
| Không đầu | nanocoder run "..." tự động chấp nhận và thoát; --plain --json xuất một đối tượng JSON chứa câu trả lời, nhật ký công cụ và các tệp đã sửa đổi. Giới hạn lượt nanocoder.maxTurns mặc định là 200, còn NANOCODER_MAX_TURNS ghi đè giá trị đó | opencode run "..." là tương đương phi tương tác được lập tài liệu, với --format json cho đầu ra mà máy có thể đọc — các sự kiện JSON thô thay vì một đối tượng tóm tắt duy nhất. Các giao diện server, SDK, GitHub và GitLab cũng được lập tài liệu bên cạnh nó |
| Extension | Skills là lớp bao trùm duy nhất cho command, subagent, công cụ và trigger, cùng lifecycle hook và MCP | Các hệ thống con riêng biệt: plugin, agent skill, server LSP, server MCP, ACP |
| Sản phẩm trả phí chính thức | Không có. Không tài khoản, không gói dịch vụ, không gateway | Zen (trả theo mức sử dụng), Go ($10 mỗi tháng), Enterprise (theo seat, chưa công bố) |
Nguồn cho bảng này, đều được đọc ngày 19 tháng 9 năm 2026 trừ khi có ghi chú khác: GitHub API, npm registry, tài liệu cấu hình và tính năng của Nanocoder, cùng các trang cấu hình, quyền và CLI của OpenCode.
Trỏ một trong hai sản phẩm đến endpoint API của riêng bạn
Cả hai đều lập tài liệu về endpoint tùy chỉnh, nên gateway là cấu hình được hỗ trợ trong cả hai. Điểm khác biệt là số lượng định dạng wire mà bạn có thể truy cập.
OpenCode nêu tên một package npm trong khối provider và lựa chọn đó xác định giao thức: @ai-sdk/openai-compatible sử dụng /v1/chat/completions, còn @ai-sdk/openai sử dụng /v1/responses. Kunavo cung cấp cả hai, nên đây là một lựa chọn thực sự chứ không phải thủ tục hình thức.
{
"$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-4-6": {
"name": "Claude Sonnet 4.6",
"limit": { "context": 200000, "output": 64000 }
}
}
}
}
}Có hai chi tiết mà trang provider nêu rõ và có ý nghĩa với bất kỳ endpoint nào mà nó chưa biết. Thứ nhất, đăng ký key bằng /connect, cuộn đến Other và sử dụng cùng provider id mà bạn đã dùng trong tệp; thông tin xác thực được lưu vào ~/.local/share/opencode/auth.json. Thứ hai, khối limit đáng được thiết lập ở đây — tài liệu cho biết các provider tiêu chuẩn tự động lấy giới hạn ngữ cảnh và đầu ra từ models.dev, còn Kunavo không nằm trong số đó. Các giá trị trong khối ở trên là những con số ví dụ của chính tài liệu, không phải giới hạn đã công bố của mô hình này; hãy đặt chúng theo trang riêng của mô hình trước khi dựa vào đồng hồ đo ngữ cảnh.
Phần tương đương của Nanocoder nằm trong nanocoder.providers. Lưu ý baseUrl viết thường, khác với baseURL của OpenCode, và phép thay thế ${VAR} được áp dụng đệ quy cho các trường chuỗi.
{
"nanocoder": {
"providers": [
{
"name": "Kunavo",
"sdkProvider": "openai-compatible",
"baseUrl": "https://api.kunavo.com/v1",
"apiKey": "${KUNAVO_API_KEY}",
"models": ["claude-sonnet-4-6"],
"contextWindow": 200000
}
]
}
}Có ba điểm dễ mắc bẫy riêng của Nanocoder đáng đọc trước khi bạn dán cấu hình đó vào. Union sdkProvider được giới hạn ở năm giá trị trong source/types/config.ts — openai-compatible, google, anthropic, chatgpt-codex và github-copilot — và giá trị thứ tư được nối với đăng nhập trình duyệt vào chính endpoint Codex của ChatGPT thay vì một base URL tùy ý, nên không có tùy chọn Responses chung để khai báo. Nếu thay vào đó bạn trỏ sdkProvider: "anthropic" đến một endpoint tương thích với Anthropic, tài liệu provider riêng của Nanocoder cảnh báo rằng @ai-sdk/anthropic suy ra giới hạn đầu ra từ model id và mặc định là 4096 token cho mọi giá trị không được nhận diện là mô hình Claude, khiến các câu trả lời dài bị cắt giữa câu mà không báo lỗi; cách khắc phục là đặt rõ maxOutputTokens trong mục provider. Và vì các cài đặt được phân giải theo từng khối, một tệp cấp dự án định nghĩa nanocoder.providers sẽ cung cấp toàn bộ khối đó — các mục cùng cấp trong cấu hình toàn cục không được hợp nhất vào. nanocoder config diff là cách được lập tài liệu để xem nội dung thực sự đã được phân giải.
Không đoạn cấu hình nào được kiểm thử khi chạy với endpoint của Kunavo. Kunavo công bố một hướng dẫn thiết lập cho OpenCode, đây là tài liệu tham chiếu cấu hình chứ không phải kiểm thử tương thích, và không công bố hướng dẫn nào cho Nanocoder. Hãy coi cả hai khối là điểm khởi đầu, chạy một tác vụ có giới hạn và đọc những gì tài khoản của bạn thực sự đã ghi nhận.
Một khoảng trống chung: cả hai ứng dụng khách đều không biết siêu dữ liệu mô hình của gateway của bạn
Cả hai ứng dụng khách đều dựa vào models.dev để lấy giới hạn ngữ cảnh, mức trần đầu ra và chi phí trên mỗi token. Tệp đó liệt kê 222 nhà cung cấp khi được kiểm tra vào ngày 19 tháng 9 năm 2026, và Kunavo không nằm trong số đó — trang này không thể xác định lý do vắng mặt. Hệ quả hơi khác nhau tùy ứng dụng khách nhưng áp dụng như nhau cho cả hai, vì vậy đây không phải là lý do để ưu tiên một ứng dụng.
Trong OpenCode, khai báo limit.context và limit.output cho từng mô hình, nếu không chỉ báo ngữ cảnh còn lại sẽ tính ngân sách theo giá trị mặc định không thuộc mô hình của bạn. Trong Nanocoder, đặt contextWindow hoặc contextWindows theo từng mô hình; phần chân trang của mỗi phản hồi in số token và chi phí ước tính được tính theo dữ liệu giá từ models.dev, đồng thời tài liệu cẩn thận nêu rằng phần chi phí sẽ bị lược bỏ khi không có thông tin giá, vì vậy số bị thiếu có nghĩa là chưa xác định chứ không phải bằng không. Dù theo cách nào, con số của ứng dụng khách là phép tính riêng trên số token được báo cáo — hãy đối soát với sổ cái của nhà cung cấp, không phải với chân trang.
Chi phí thực tế của từng ứng dụng
Cả hai ứng dụng khách đều miễn phí. Điểm bất đối xứng nằm ở những gì đứng sau chúng.
Nanocoder không có tài khoản, gói, dịch vụ lưu trữ hay bất kỳ thứ gì để nâng cấp — README của dự án nêu rằng không có gói trả phí nào giới hạn các phần hữu ích, và dự án tự mô tả là được tài trợ bởi các nhà tài trợ thay vì người dùng. Có một thông tin cần công khai ở đây: Atlas Cloud là một nhà tài trợ được liệt kê, đồng thời cũng xuất hiện trong danh sách nhà cung cấp được Nanocoder hỗ trợ và bán một gói lập trình. Đây là một động cơ không trung lập trong một dự án vốn không phụ thuộc nhà cung cấp, và bạn nên biết điều đó.
OpenCode cũng miễn phí, nhưng cùng nhà cung cấp đó bán hai sản phẩm cạnh tranh trực tiếp cho đúng khoản chi mà một gateway muốn thu hút. Không sản phẩm nào là bắt buộc: tài liệu mô tả cả hai là tùy chọn, và trang mục tiêu của Zen cam kết cho phép bạn sử dụng bất kỳ nhà cung cấp nào khác với OpenCode.
| Sản phẩm | Giá niêm yết | Bạn thực sự cần dự trù khoản nào |
|---|---|---|
| Nanocoder | $0, MIT | Token mô hình tại bất kỳ nhà cung cấp nào bạn cấu hình, hoặc phần cứng và điện năng cho các mô hình chạy cục bộ |
| OpenCode | $0, MIT | Tương tự — bản thân ứng dụng khách không tính phí gì |
| OpenCode Go | $10 mỗi tháng | Kệ cố định mà tài liệu gọi là các mô hình lập trình mở, không chỉ gồm các mô hình có trọng số mở — Grok 4.6 và GPT 5.6 Luna đều được liệt kê trên đó. Mỗi mô hình có mức trần hàng tháng từ $15 đến $60, trong đó gói 5 giờ bằng 20% mức trần và gói hàng tuần bằng 50%. Mỗi workspace chỉ có thể đăng ký một thành viên |
| OpenCode Zen | Thanh toán theo mức sử dụng, trên mỗi 1M token | Claude Opus 5: $5,00 đầu vào / $25,00 đầu ra; Claude Sonnet 5: $2,00 / $10,00; Claude Haiku 4.5: $1,00 / $5,00. Tự động nạp thêm $20 mỗi khi số dư giảm xuống dưới $5 |
| OpenCode Enterprise | Theo chỗ ngồi, chưa công bố con số | SSO, cấu hình toàn tổ chức và buộc lưu lượng đi qua một gateway nội bộ duy nhất. Trang này nêu rằng nếu bạn có gateway riêng, token sẽ không bị tính phí |
Đọc ngày 19 tháng 9 năm 2026. Bảng này đặc biệt lưu ý hai điều. Trang mục tiêu của Zen nêu ý định chuyển phần giảm giá cho người dùng bằng cách bán theo giá vốn, chỉ cộng thêm để bù phí xử lý. Ba mức giá Claude mà Zen công bố khớp với mức giá do chính Anthropic công bố cho các mô hình đó — Opus 5 ở mức $5 / $25, Sonnet 5 ở mức $2 / $10, Haiku 4.5 ở mức $1 / $5 — vì vậy đối với ba mô hình này, so sánh với Zen cũng là so sánh với bảng giá của nhà cung cấp mô hình. Việc kiểm tra chỉ được thực hiện cho ba mô hình này vào ngày 19 tháng 9 năm 2026 và không nói lên điều gì về phần còn lại của kệ Zen. Các mô hình miễn phí của Zen cũng kèm theo các chuỗi về việc sử dụng dữ liệu được in trên cùng trang, từ việc dữ liệu được dùng để cải thiện mô hình trong thời gian miễn phí đến các endpoint chỉ dành cho dùng thử, yêu cầu bạn không gửi dữ liệu mật. Một gói miễn phí kèm quyền huấn luyện là một sản phẩm khác với gói miễn phí không kèm quyền đó.
Một ước tính minh họa cho hóa đơn token bên dưới cả hai ứng dụng khách
Đây là phép tính token mang tính minh họa, không phải chi phí tác vụ đo được và không phải mức trần hóa đơn. Giả sử một phiên gửi 200.000 token đầu vào chưa được lưu trong bộ nhớ đệm và nhận 15.000 token đầu ra. Mức giá lấy từ danh mục Kunavo hiện hành theo mỗi triệu token; các phiên thực tế của bạn sẽ khác tùy kích thước kho lưu trữ, đầu ra của công cụ và tần suất tác nhân đọc lại tệp.
| Mô hình | Đầu vào / đầu ra trên mỗi 1M | Chi phí ước tính, một phiên | Số phiên mô phỏng trên mỗi $10 tín dụng |
|---|---|---|---|
| Claude Haiku 4.5 | $0,70 / $3,50 | $0,192 | 51 |
| GPT-5.6 Terra | $0,70 / $4,20 | $0,203 | 49 |
| Claude Sonnet 4.6 | $2,10 / $10,50 | $0,578 | 17 |
| Claude Opus 5 | $3,50 / $17,50 | $0,963 | 10 |
Phép so sánh mà mọi người thực sự muốn ở đây là với $10 mỗi tháng của OpenCode Go, và đây không phải so sánh tương đương. Go cung cấp một kệ cố định với mức trần hàng tháng từ $15 đến $60 cho từng mô hình: bảng giới hạn sử dụng của chính dịch vụ không liệt kê mô hình Claude nào và cũng không có mô hình Gemini nào, mục GPT duy nhất là GPT 5.6 Luna, còn Grok 4.6 cũng nằm trên đó — vì vậy cụm từ "các mô hình lập trình mở" trong tài liệu không có nghĩa là chỉ các mô hình có trọng số mở (đã kiểm tra ngày 19 tháng 9 năm 2026). Các mô hình ở trên thuộc một kệ hoàn toàn khác. Với các giả định này, $10 tín dụng trả trước của Kunavo tương ứng khoảng 51 phiên có dạng đó trên Claude Haiku 4.5 với giá $0,192 mỗi phiên, và khoảng 10 trên Claude Opus 5. Con số này giúp định cỡ ngân sách; nó không cho biết mô hình nào tạo ra kết quả tốt hơn trên kho lưu trữ của bạn, và mức giá niêm yết rẻ nhất không đồng nghĩa với chi phí hoàn thành tác vụ thấp nhất — một mô hình rẻ hơn nhưng cần ba lần thử có thể tốn nhiều hơn mô hình chỉ cần một lần.
So sánh tương đương nằm ở kệ thanh toán theo mức sử dụng của Zen, nơi cùng một mô hình xuất hiện ở cả hai phía. Zen công bố Claude Opus 5 ở mức $5,00 trên mỗi triệu token đầu vào và $25,00 trên mỗi triệu token đầu ra; danh mục của Kunavo hiện hiển thị $3,50 và $17,50 cho cùng mô hình. Đây là phép so sánh đáng thực hiện, và cần đọc cẩn thận: mức $5,00 / $25,00 của Zen chính là mức giá do Anthropic công bố cho mô hình này, vì vậy đây là hai danh mục định giá cùng một mô hình khác nhau, chứ không phải nhà bán lại bị tính giá thấp hơn do bị cộng thêm. Hãy xác nhận cả hai trong bước thanh toán trước khi điều chỉnh ngân sách, vì một trong hai danh mục đều có thể thay đổi giá.
Số tiền trong danh mục của Kunavo là mức sàn tính phí chứ không phải mức trần: khi nhà cung cấp thượng nguồn báo cáo khoản phí của mình, số tiền thanh toán là giá trị lớn hơn giữa chi phí theo danh mục và chi phí của nhà cung cấp thượng nguồn nhân với hệ số cộng giá áp dụng. Phí bộ nhớ đệm và các công cụ bên ngoài không nằm trong ví dụ này. Mức nạp tối thiểu là $10 vào số dư trả trước, đây là mức tiền nạp tối thiểu chứ không phải phí cho một tác vụ hay gói đăng ký.
Thiết lập ứng dụng bạn đã chọn
Nếu bạn chọn OpenCode, khối cấu hình ở trên là toàn bộ phần tích hợp và hướng dẫn tích hợp OpenCode trình bày chi tiết cả hai định dạng truyền; hãy tạo tài khoản Kunavo khi bạn sẵn sàng nạp tiền cho một khóa. Nếu bạn chọn Nanocoder, sử dụng cùng base URL thông qua nhà cung cấp openai-compatible của nó và duy trì một route đang hoạt động trong khi thử nghiệm — tại đây chưa thực hiện kiểm thử runtime Nanocoder với Kunavo.
Vẫn đang cân nhắc? Các lựa chọn thay thế cho OpenCode mở rộng phạm vi vượt ra ngoài hai ứng dụng này, API tốt nhất cho OpenCode so sánh riêng các route nhà cung cấp dành cho ứng dụng đó, giá OpenCode đi sâu hơn về Zen và Go, còn thư mục API tác nhân ghi lại cách mọi ứng dụng khách trong lĩnh vực này xử lý base URL tùy chỉnh. Nếu một khối nhà cung cấp đã gặp lỗi, không tìm thấy nhà cung cấp OpenCode trình bày nguyên nhân thường gặp, còn API tương thích OpenAI giải thích cụm từ đó đảm bảo và không đảm bảo điều gì.
Câu hỏi thường gặp
Nanocoder hay OpenCode tốt hơn?
Không sản phẩm nào tốt hơn một cách tuyệt đối, và mức độ sử dụng của chúng cũng không tương đương. OpenCode là lựa chọn phổ biến: 208.444 sao trên GitHub và 9.436.914 lượt tải npm cho opencode-ai trong 30 ngày tính đến ngày 16 tháng 9 năm 2026, so với 2.487 sao và 6.614 lượt tải của @nanocollective/nanocoder trong cùng khoảng thời gian. Chọn OpenCode khi bạn muốn phạm vi khả năng rộng hơn — TUI, ứng dụng máy tính, tiện ích mở rộng IDE, máy chủ, phần bổ trợ, tích hợp GitHub và GitLab, cùng hệ thống cấu hình được xây dựng để kiểm soát trên toàn tổ chức. Chọn Nanocoder khi mô hình cục bộ là mặc định thay vì phương án dự phòng, khi bạn muốn hệ điều hành cô lập các lệnh shell, hoặc khi bạn muốn bên bảo trì tác nhân không đồng thời bán token cho bạn. Số lượt tải bị thổi phồng bởi CI và các kênh cài đặt song song, vì vậy hãy hiểu chúng là bậc độ lớn chứ không phải số người dùng.
Nanocoder có phải là cùng dự án với nanocode không?
Không, và nhầm lẫn giữa chúng sẽ làm hỏng thiết lập của bạn. Nanocoder là Nano-Collective/nanocoder, được phát hành lên npm với tên @nanocollective/nanocoder và được lập tài liệu tại docs.nanocollective.org. nanocode là nanocode-project/nanocode, một dự án Python riêng biệt gần như không còn hoạt động, được tạo ngày 1 tháng 4 năm 2026 và có lần push cuối vào ngày hôm sau. Các lệnh cài đặt, tệp cấu hình và cài đặt base URL của chúng không tương thích với nhau, và khả năng tương thích OpenAI được nanocode quảng bá không tồn tại trong mã nguồn — nó bọc Anthropic SDK, nên endpoint chat-completions thông thường sẽ không hoạt động với nó.
Đây là OpenCode nào — bản Go hay bản TypeScript?
Bản TypeScript. Repository từng nằm tại sst/opencode hiện chuyển hướng 301 đến anomalyco/opencode, còn tổ chức GitHub sst trống với thông báo rằng tổ chức này đã chuyển sang anomalyco. Tên sản phẩm vẫn là OpenCode; tài liệu tại opencode.ai sử dụng các đường dẫn cài đặt của anomalyco và phần chân trang ghi bản quyền Anomaly. Một dự án khác, opencode-ai/opencode, là CLI Go đã lưu trữ, có lần push cuối vào ngày 18 tháng 9 năm 2025 và README hướng người dùng đến Crush. Định dạng cấu hình và danh sách provider của dự án đó không áp dụng cho OpenCode hiện tại.
Nanocoder và OpenCode đều có thể sử dụng gateway API bên thứ ba không?
Có, cả hai đều lập tài liệu về endpoint tùy chỉnh, nhưng phạm vi giao thức có thể truy cập khác nhau. OpenCode chọn định dạng wire bằng cách nêu tên package npm trong khối provider: @ai-sdk/openai-compatible cho /v1/chat/completions, @ai-sdk/openai cho /v1/responses, theo tài liệu provider của họ. Union sdkProvider của Nanocoder được giới hạn ở năm giá trị trong source/types/config.ts — openai-compatible, google, anthropic, chatgpt-codex và github-copilot — và chatgpt-codex gắn với đăng nhập trình duyệt vào chính endpoint Codex của ChatGPT thay vì một base URL tùy ý, nên không có tùy chọn Responses chung. Một gateway cung cấp /v1/responses phải được truy cập thông qua giao diện chat-completions trong Nanocoder.
OpenCode có buộc bạn phải mua OpenCode Zen hoặc OpenCode Go không?
Không. Tài liệu riêng của OpenCode mô tả Zen và Go là tùy chọn, còn trang mục tiêu của Zen cam kết cho phép bạn sử dụng bất kỳ provider nào khác với OpenCode. Cổng thương mại là OpenCode Enterprise, tính phí theo seat nhưng không công bố mức giá, và thứ bị giới hạn là quyền kiểm soát tập trung — SSO, cấu hình trên toàn tổ chức, buộc lưu lượng đi qua một gateway nội bộ — chứ không phải khả năng cấu hình endpoint tùy chỉnh. Trang mục tiêu của Zen cũng nêu ý định chuyển phần giảm giá cho người dùng bằng cách bán theo giá vốn, chỉ cộng markup để trang trải phí xử lý; ba mức giá Claude được công bố khớp với mức giá do Anthropic công bố cho các mô hình đó, được kiểm tra ngày 19 tháng 9 năm 2026.
Tại sao mô hình của tôi không hiển thị chi phí hoặc hiển thị sai giới hạn ngữ cảnh trong một trong hai client?
Vì cả hai client đều đọc metadata mô hình từ models.dev, nơi api.json liệt kê 222 provider khi được kiểm tra ngày 19 tháng 9 năm 2026 và không bao gồm Kunavo. Trong OpenCode, bạn khai báo thủ công models.<id>.limit.context và .limit.output, vì tài liệu cho biết chỉ các provider tiêu chuẩn mới tự động lấy các giá trị đó từ models.dev; nếu bỏ qua, client sẽ tính ngân sách ngữ cảnh còn lại dựa trên mặc định không phải của mô hình bạn. Trong Nanocoder, bạn đặt contextWindow hoặc contextWindows theo từng mô hình, còn phần chân trang chi phí cho mỗi response đơn giản là không hiển thị gì khi không có thông tin giá — tài liệu nêu rõ số bị thiếu có nghĩa là chưa biết, tuyệt đối không phải bằng không.
Chi phí chuyển từ sản phẩm này sang sản phẩm kia là bao nhiêu?
Khối provider là phần dễ; các chỉ dẫn agent và extension thì không. Cả hai đều nhận cấu hình JSON với base URL, key và danh sách mô hình, nên khai báo lại một gateway chỉ mất mười phút theo cả hai chiều. Những gì không thể chuyển là mọi thứ được xây dựng bên trên: các gói Skills của Nanocoder trong .nanocoder/skills/ và lifecycle hook của nó không có tương đương trong OpenCode để sao chép vào, còn các quy tắc quyền theo từng công cụ, định nghĩa agent, plugin và cấu hình LSP của OpenCode cũng không có tương đương trong Nanocoder. Hãy dự toán việc di chuyển dựa trên lượng nội dung bạn đã viết, không phải dựa trên khối provider.
Các số liệu về kho lưu trữ, bản phát hành và lượt tải được đọc từ GitHub API và npm registry vào ngày 19 tháng 9 năm 2026; các tuyên bố về hành vi và giá được đọc từ tài liệu chính thức của cả hai dự án trong cùng ngày, và danh sách nhà cung cấp models.dev cũng được kiểm tra khi đó. Chưa ứng dụng khách nào được kiểm thử runtime với endpoint của Kunavo, không thực hiện kiểm thử hiệu năng hay khả năng tương thích, và mọi con số đô la cho Kunavo trên trang này đều là phép tính token minh họa từ danh mục hiện hành chứ không phải chi phí tác vụ đo được.