Các phần cơ sở kiến thức ▾

Điều hướng

▸ Bắt đầu tại đây Theo vai trò

Danh mục

Công cụ 52
Bảng thuật ngữ 12

Công cụ

Kimi Code CLI: tác nhân Moonshot AI trên khóa riêng qua Gonka

Kimi Code CLI (lệnh kimi) — một tác nhân đầu cuối phục vụ phát triển từ Moonshot AI: nó đọc và sửa mã nguồn, chạy các lệnh, tìm kiếm qua các tệp và phân phối công việc cho các tác nhân con. Phiên bản hiện tại đã thay thế ứng dụng Python kimi-cli: nó được viết bằng TypeScript, được cài đặt dưới dạng một tệp nhị phân duy nhất và mở theo giấy phép MIT. Mọi nội dung dưới đây đều gắn liền với phiên bản 2.0.2 ngày 19 tháng 9 năm 2026 — phiên bản mà chúng tôi đã sử dụng để thực hiện hành trình từ cài đặt đến khi nhận phản hồi từ tác nhân vào ngày 23 tháng 9.

Theo mặc định, Kimi Code hoạt động trên các mô hình Kimi thông qua việc đăng nhập tài khoản (/login), nhưng bạn có thể thêm bao nhiêu nhà cung cấp tùy thích: bất kỳ endpoint nào tương thích với OpenAI đều có thể được mô tả bằng một vài dòng trong ~/.kimi-code/config.toml mà không cần tài khoản Moonshot. JoinGonka Gateway — là một endpoint như vậy dành cho mạng lưới phi tập trung Gonka.

Đi vào vấn đề chính: hiện tại không có các mô hình Kimi trong mạng lưới Gonka — mạng lưới đã phục vụ Kimi K2.6 từ tháng 5 đến tháng 9 năm 2026. Ngày nay, các mô hình DeepSeek V4 Flash, GLM-5.3 Flash và MiniMax M2.7 đang hoạt động trên đó, và hướng dẫn này sẽ chỉ cho bạn cách chạy Kimi Code trên các mô hình này. Tác nhân vẫn giữ nguyên, chỉ thay đổi mô hình và giá cả: $0.0069 cho một triệu token đầu vào, áp dụng cho tất cả các mô hình trong mạng lưới. Sau khi xác nhận địa chỉ, tài khoản của bạn sẽ nhận được 3M token miễn phí — đủ để bạn tự mình thử nghiệm tất cả các bước này.

Bắt đầu nhanh: cài đặt và một lệnh duy nhất

Bước 1: cài Kimi Code. Các cách chính thức từ tài liệu:

# macOS and Linux: prebuilt binary, no Node.js needed
curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash

# Windows (PowerShell); Git for Windows is required before the first run
irm https://code.kimi.com/kimi-code/install.ps1 | iex

# npm (Node.js 22.19 or newer)
npm install -g @moonshot-ai/kimi-code

Script sẽ đặt tệp nhị phân vào ~/.kimi-code/bin/kimi và thêm thư mục này vào PATH thông qua tệp cấu hình shell. Bản build chỉ hỗ trợ glibc: trên Alpine và các hệ thống dùng musl khác, nó sẽ dừng lại và gợi ý dùng npm. Hãy mở lại terminal và kiểm tra: kimi --version.

Bước 2: lấy khóa. Đăng ký tại gate.joingonka.ai/register, xác nhận địa chỉ và tạo khóa có tiền tố jg- trong mục «Khóa API».

Bước 3: chạy trình cài đặt.

npx @joingonka/setup --tool kimi-code

Trình cài đặt sẽ hỏi khóa (không truyền được qua đối số dòng lệnh) và chỉ ghi các bảng của riêng nó vào ~/.kimi-code/config.toml:

  • nhà cung cấp [providers.joingonka] với loại openai — tức giao thức Chat Completions — địa chỉ gateway và khóa trong trường api_key; tệp sẽ có quyền 600;
  • mỗi mô hình trong mạng một bảng [models."joingonka/…"] — với cửa sổ ngữ cảnh và giới hạn phản hồi thực tế cùng các khả năng rõ ràng: gọi công cụ cho tất cả, suy luận cho DeepSeek V4 Flash và GLM-5.3 Flash, MiniMax M2.7 chỉ có công cụ;
  • default_model — DeepSeek V4 Flash, nếu mô hình mặc định chưa được chọn hoặc đang trỏ tới một mô hình đã rời khỏi mạng của gateway; việc chọn nhà cung cấp khác mà không có cờ --model sẽ không bị thay đổi, mà chỉ gợi ý lệnh chạy một lần;
  • sẽ lưu bản sao của tệp cũ, không đụng đến nhà cung cấp của người khác hay các trường của bạn trong bảng gateway, và cuối cùng gửi một yêu cầu thực tế đến gateway để cho biết khóa, địa chỉ và mô hình có được chấp nhận không.

Đây là kết quả trong lần chạy thử của chúng tôi (đã rút gọn):

Configured provider "joingonka" in ~/.kimi-code/config.toml
Base URL: https://gate.joingonka.ai/v1 (provider type "openai" — Chat Completions)
Models: joingonka/MiniMaxAI/MiniMax-M2.7, joingonka/deepseek-ai/DeepSeek-V4-Flash-0731, joingonka/zai-org/GLM-5.3-Flash
Default model: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
…
✓ Verified: the gateway accepted the key, base URL and model.

Mô hình mặc định khác được đặt bằng cờ --model (glm, minimax hoặc mã định danh đầy đủ); chế độ không hỏi đáp sẽ lấy khóa từ biến môi trường:

JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool kimi-code --model glm --non-interactive

Thư mục dữ liệu được chuyển bằng biến KIMI_CODE_HOME sẽ được trình cài đặt tự nhận biết. Còn ~/.kimi là thư mục của ứng dụng khách Python cũ kimi-cli: Kimi Code 2.x không đọc nó, mà trong lần chạy đầu tiên sẽ đề nghị chuyển cài đặt từ đó sang (lệnh kimi migrate cũng làm điều tương tự).

Cấu hình thủ công: config.toml

Mọi thứ trình cài đặt làm đều có thể viết tay. Kimi Code lưu cấu hình dưới dạng TOML; khóa bảng có dấu chấm hoặc dấu gạch chéo phải đặt trong dấu ngoặc kép. Đây là đoạn đầy đủ cho mạng Gonka:

default_model = "joingonka/deepseek-ai/DeepSeek-V4-Flash-0731"

[providers.joingonka]
type = "openai"
base_url = "https://gate.joingonka.ai/v1"
api_key = "jg-your-key"

[models."joingonka/deepseek-ai/DeepSeek-V4-Flash-0731"]
provider = "joingonka"
model = "deepseek-ai/DeepSeek-V4-Flash-0731"
max_context_size = 380000
max_output_size = 32768
capabilities = ["thinking", "tool_use"]
display_name = "DeepSeek V4 Flash (Gonka)"

[models."joingonka/zai-org/GLM-5.3-Flash"]
provider = "joingonka"
model = "zai-org/GLM-5.3-Flash"
max_context_size = 390000
max_output_size = 8192
capabilities = ["thinking", "tool_use"]
display_name = "GLM 5.3 Flash (Gonka)"

# MiniMax M2.7, khác với DeepSeek và GLM, được khai báo không có thinking
[models."joingonka/MiniMaxAI/MiniMax-M2.7"]
provider = "joingonka"
model = "MiniMaxAI/MiniMax-M2.7"
max_context_size = 200000
max_output_size = 8192
capabilities = ["tool_use"]
display_name = "MiniMax M2.7 (Gonka)"
TrườngGiá trịĐiều quan trọng
default_modelbí danh của modelTham chiếu đến tên bảng [models."…"], không phải đến ID model
max_context_sizecửa sổ ngữ cảnh của modelTrường bắt buộc; agent dựa vào đó để quyết định khi nào nén ngữ cảnh
max_output_sizegiới hạn phản hồiĐược gửi vào request dưới dạng max_tokens — chúng tôi đã kiểm chứng điều này trên đường truyền. Nếu thiếu trường này, Kimi Code sẽ yêu cầu tới 131 072 token phản hồi, nhiều hơn mức mà các model trong mạng có thể trả về
capabilitiesthinking, tool_useKimi Code không đoán khả năng của các model lạ dựa theo tên — hãy khai báo rõ ràng

Đặt khóa ở đâu. Kimi Code không lấy khóa từ môi trường shell: export OPENAI_API_KEY=… không có tác dụng với nó. Có hai cách, và không thể dùng đồng thời cả hai:

CáchCú phápHoạt động thế nào
Khóa trong fileapi_key = "jg-…"Đây là cách trình cài đặt ghi; hoạt động từ mọi môi trường, hãy giữ file với quyền 600
Tên biến môi trườngapi_key_env = "JOINGONKA_API_KEY"Giá trị được đọc từ môi trường của tiến trình ở mỗi request; nếu thiếu biến, quá trình khởi chạy sẽ thất bại với lỗi có nêu tên biến đó

Nếu đặt cả hai trường trong cùng một bảng, Kimi Code sẽ từ chối khi khởi chạy: has both apiKey and apiKeyEnv set in config.toml - they are mutually exclusive. Lưu ý rằng kimi doctor không phát hiện xung đột này — nó chỉ kiểm tra hình thức của file.

Nên chọn loại provider nào. Kimi Code hỗ trợ nhiều giao thức, và gateway cũng vậy:

typebase_urlKhi nào nên chọn
openaihttps://gate.joingonka.ai/v1Lựa chọn chính: đường dẫn chuẩn của gateway, được trình cài đặt ghi sẵn
anthropichttps://gate.joingonka.aiĐịnh dạng Anthropic Messages, đường dẫn /v1/messages do client tự thêm vào; chu trình đầy đủ với công cụ đã chạy thành công trong lần thử của chúng tôi

Mỗi provider trong Kimi Code chỉ nói một giao thức, vì vậy giao thức thứ hai nghĩa là provider thứ hai với tên khác. Để thêm và xóa provider một cách tương tác, dùng lệnh /provider ngay trong agent.

Các mô hình, Thinking và tác nhân phụ

Model trong Kimi Code là một alias — tên của bảng [models."…"]. Trình cài đặt đặt tên theo cấu trúc joingonka/<model-id>, giống như Kimi Code đặt tên cho các model của mình (kimi-code/k3), và chính alias này là thứ cần dùng ở mọi nơi chọn model. Một identifier không có tiền tố, ví dụ MiniMaxAI/MiniMax-M2.7, sẽ không được Kimi Code tìm thấy.

Ở đâuCách nàoCó được lưu lại không
config.tomldefault_model = "joingonka/deepseek-ai/DeepSeek-V4-Flash-0731"có, cho các session mới
Cờ khởi chạykimi -m "joingonka/zai-org/GLM-5.3-Flash"không, chỉ lần chạy này thôi
Giao diện/model, chọn trong danh sáchEnter sẽ ghi đè default_model, Alt+S — chỉ cho session hiện tại

Trong lần chạy thử của chúng tôi, /model trông như thế này:

Select a model  (type to search)
Tab toggle provider · ↑↓ navigate · Enter select · Alt+S session-only · Esc cancel

 All   joingonka

   MiniMax M2.7 (Gonka)       joingonka
 ❯ DeepSeek V4 Flash (Gonka)  joingonka ← current
   GLM 5.3 Flash (Gonka)      joingonka

 Thinking  (←→ to switch)
  [ On ]    Off

Công tắc Thinking. Nút bật/tắt reasoning nằm dưới danh sách không tự nó thay đổi gì trên các model của mạng lưới: Kimi Code chỉ gửi mức độ reasoning đến những model có khai báo các mức đó. Với GLM-5.3 Flash thì nên làm điều này — ở model đó reasoning được tắt bằng giá trị low (chi tiết trong bài đánh giá model). Hãy thêm ba trường vào bảng model:

[models."joingonka/zai-org/GLM-5.3-Flash"]
# … fields written by the installer …
support_efforts = ["low", "high"]
default_effort = "high"
off_effort = "low"

Chúng tôi đã kiểm tra xem điều gì được gửi đến gateway: khi bật Thinking, Kimi Code gửi reasoning_effort: "high" và model thực hiện reasoning; khi tắt — gửi "low" và câu trả lời đến mà không có khối reasoning. Chạy lại trình cài đặt sẽ không đụng đến các trường này: nó chỉ sửa các key của riêng nó.

Model cho các subagent. Các subagent tích hợp (coder, explore, plan) mặc định chạy trên model của agent chính. Mục [secondary_model] cho chúng một pool để agent chính tự chọn, dựa trên các gợi ý. Bất kỳ alias nào cũng phù hợp cho pool — DeepSeek V4 Flash, GLM-5.3 Flash hay MiniMax M2.7:

[secondary_model]
default_model = "joingonka/deepseek-ai/DeepSeek-V4-Flash-0731"

[secondary_model.models]
"joingonka/deepseek-ai/DeepSeek-V4-Flash-0731" = "Long context and long output: big reads and edits."
"joingonka/zai-org/GLM-5.3-Flash" = "Reasoning model for tricky logic and debugging."

Các key của pool bắt buộc phải trùng với các alias trong [models]: theo tài liệu, một liên kết hỏng sẽ khiến không thể tạo session. Dòng cho MiniMax M2.7 cũng được thêm theo cách tương tự; các liên kết đến những model đã rời khỏi mạng lưới sẽ được trình cài đặt tự dọn sạch khi chạy lại.

Nên chọn model nào. Giá của mọi model trong mạng lưới đều như nhau, vì vậy lựa chọn là về hành vi. Đây là cách chúng thể hiện trong Kimi Code 2.0.2 với bài toán «đọc file và tìm lỗi» (đối chiếu ngày 23 tháng 9 năm 2026):

ModelContext / trả lờiHành vi trong Kimi Code
DeepSeek V4 Flash380K / 32768Lựa chọn của trình cài đặt: cửa sổ lớn và trần trả lời cao nhất trong mạng lưới. Giải đúng bài toán
GLM-5.3 Flash390K / 8192Model có reasoning: reasoning đi theo luồng riêng (trong kimi -p — ra stderr), câu trả lời — ra stdout. Reasoning nằm trong giới hạn trả lời
MiniMax M2.7200K / 8192Giải đúng bài toán trong hai bước; reasoning đi theo luồng riêng (trong kimi -p — ra stderr), stdout chỉ có câu trả lời

Kiểm tra: điều gì sẽ xảy ra

Trước tiên, hãy đảm bảo Kimi Code nhận diện được nhà cung cấp và tệp được phân tích không có lỗi:

$ kimi provider list
joingonka  type=openai  models=3  source=inline

Default model: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731

$ kimi doctor
OK config.toml  ~/.kimi-code/config.toml

Đừng công bố kết quả của kimi provider list --json ở bất cứ đâu: khóa trong đó hiển thị dưới dạng văn bản thuần.

Tiếp theo — chạy thử một lần. Hãy đặt vào thư mục một tệp calc.py chứa hàm cộng mà thực ra lại trừ, rồi yêu cầu tìm lỗi:

kimi -p "Read calc.py and tell me in one sentence whether it has a bug."

Ở chế độ -p, câu trả lời đi ra stdout, còn lập luận và tiến trình công cụ đi ra stderr, nên rất tiện để xử lý đầu ra bằng script. GLM-5.3 Flash đã trả lời như sau:

• Yes: the `add` function in calc.py:2 returns `a - b` instead of `a + b`, so `add(2, 3)` prints `-1`.

Lưu ý: ở chế độ -p, Kimi Code không hỏi gì cả và tự thực thi lệnh — trong lần chạy của chúng tôi, mô hình đã tự ý thử chạy python3 để kiểm tra phỏng đoán. Lần đầu khởi chạy giao diện trong một thư mục mới sẽ bắt đầu bằng câu hỏi Trust this folder? — câu hỏi này liên quan đến các MCP-server của dự án — và trên màn hình chào mừng có hiển thị mô hình: Model: DeepSeek V4 Flash (Gonka). Nửa còn lại của kiểm tra là trang quản lý của gateway: trong mục "Sử dụng", yêu cầu sẽ xuất hiện trong bảng phân tách theo mô hình và theo khóa.

Nếu có gì đó không ổn, thường có thể đọc ngay chẩn đoán từ thông báo:

Hiển thị gìNghĩa là gìCần làm gì
No model configured. Run `kimi` and use /login to sign in …Nhà cung cấp chưa được cấu hình hoặc default_model trốngChạy trình cài đặt hoặc điền default_model
Model "deepseek-ai/DeepSeek-V4-Flash-0731" is not configured in config.toml.Trong -m đã truyền ID mô hình chứ không phải aliasThêm tiền tố: joingonka/deepseek-ai/…
provider.auth_error: 401 Invalid API keyGateway không chấp nhận khóaKiểm tra api_key trong [providers.joingonka]: Kimi Code không đọc biến môi trường
declares api_key_env = "JOINGONKA_API_KEY" … but the environment variable is not set or is emptyĐã chọn cách dùng biến môi trường nhưng biến đó không có trong môi trườngExport biến trước khi chạy hoặc quay lại dùng api_key
429 … currently overloaded in the Gonka network (rate limit)Mô hình trong mạng đã hết dung lượng trốngKimi Code sẽ tự thử lại những lỗi như vậy; nếu kéo dài — hãy đổi mô hình qua /model. Tình trạng có thể xem tại trang trạng thái

Chi phí là bao nhiêu

Với mỗi câu lệnh của bạn, Kimi Code thêm một lời nhắc hệ thống (system prompt) và mô tả của khoảng hai chục công cụ tích hợp sẵn, và một tác vụ thường mất vài bước. Trong lần chạy thử của chúng tôi, mỗi bước mang theo khoảng 20 nghìn token đầu vào, và "đọc tệp, tìm lỗi" mất hai bước — khoảng 40 nghìn token, gần như toàn bộ ở đầu vào. Do đó, giá mỗi token ở đây là yếu tố quyết định.

Thông qua JoinGonka Gateway, token có giá $0.0069 cho mỗi triệu token đầu vào và $0.021 cho mỗi triệu token đầu ra — giá này giống nhau cho tất cả các mô hình trong mạng và được cập nhật trên trang này từ nguồn trực tiếp.

Kịch bảnMức tiêu thụQua Gateway
Tác vụ một lần: đọc tệp, tìm lỗi~40K tokenphần trăm của một xu
Một ngày làm việc tích cực3-7M tokenvài xu
Một tháng phát triển tích cực~150M tokenkhoảng một đô la

Các ước tính trong cột bên phải dựa trên giá tháng 9 năm 2026. Để so sánh — cách bạn có thể thanh toán cho các mô hình trong Kimi Code:

Phương thứcCách kết nốiYêu cầu
Kimi Code (OAuth)/login, đăng nhập bằng mã thiết bịtài khoản Kimi; giới hạn và giá cả theo điều khoản dịch vụ
Kimi Platform/login bằng API-key của nền tảngkhóa từ platform.kimi.com hoặc platform.kimi.ai, thanh toán theo bảng giá nền tảng
JoinGonka Gatewaynhà cung cấp trong config.tomlkhóa jg-…; không cần tài khoản Moonshot, thanh toán theo token thực tế, mức tiêu thụ được hiển thị trong bảng điều khiển

Mức tiêu thụ chính xác và số dư — có trong bảng điều khiển, trong các phần "Sử dụng" và "Thanh toán". Kimi Code tự theo dõi độ dài hội thoại: thanh trạng thái hiển thị phần ngữ cảnh đã sử dụng, và lệnh /compact nén thủ công lịch sử.

Những điều cần lưu ý khi làm việc

Chế độ cấp quyền. Trong giao diện Kimi Code, chế độ mặc định là Always Ask: việc đọc được thực hiện ngay lập tức, các thay đổi và lệnh chỉ được thực hiện sau khi bạn xác nhận. Ask When Needed (/yolo hoặc cờ --yolo) bỏ qua các thay đổi và lệnh thông thường, nhưng sẽ hỏi về các tệp tin nhạy cảm và các lệnh nguy hiểm; Never Ask (/auto, --auto) không hỏi gì cả. Chế độ lập kế hoạch được bật bằng Shift-Tab. Một lần chạy đơn kimi -p luôn diễn ra mà không có câu hỏi, vì vậy hãy chạy nó trong container hoặc bản sao làm việc riêng biệt.

Những gì hoạt động mà không cần tài khoản Moonshot. Nhà cung cấp riêng xử lý mọi thứ mà mô hình thực hiện: đọc và chỉnh sửa mã, lệnh, tác nhân phụ, phiên làm việc, máy chủ MCP. Tìm kiếm web là dịch vụ của Moonshot: nếu không đăng nhập vào tài khoản, công cụ WebSearch sẽ không có trong bộ tác nhân, nhưng việc tải trang theo địa chỉ (FetchURL) vẫn còn. Các mô hình mạng là mô hình văn bản, vì vậy việc nhập hình ảnh và video trên chúng không hoạt động.

Viễn thông và cập nhật. Viễn thông ẩn danh được bật theo mặc định: để tắt nó, hãy sử dụng dòng telemetry = false trong config.toml hoặc biến môi trường KIMI_DISABLE_TELEMETRY=1. Các bản cập nhật được cài đặt tự động ([upgrade] auto_install = true trong ~/.kimi-code/tui.toml); nếu bạn cần tính dự đoán, hãy tắt nó và cập nhật bằng lệnh kimi upgrade. Cổng không lưu trữ nội dung của các prompt và câu trả lời — chỉ có dữ liệu tổng hợp về mức tiêu thụ được giữ lại trong thống kê.

Nhiều môi trường. Kimi Code không có cài đặt nhà cung cấp ở cấp độ dự án. Bạn có thể phân tách các khóa làm việc và cá nhân bằng biến KIMI_CODE_HOME: với biến này, cài đặt, phiên làm việc và nhật ký sẽ chuyển sang một thư mục khác, và trình cài đặt được chạy với cùng biến đó cũng sẽ ghi vào cùng một thư mục đó.

Trong trình chỉnh sửa. Kimi Code hoạt động bên trong Zed, JetBrains và các ứng dụng khách ACP khác thông qua lệnh kimi acp — với cùng thư mục dữ liệu và cùng các nhà cung cấp.

Các phòng thí nghiệm mà mô hình của họ được mạng lưới phục vụ cũng phát hành các tác nhân riêng: MiniMax có MiniMax Code trên terminal, DeepSeek có DeepSeek Harness, Z.ai (tác giả của GLM) có ZCode. Tất cả chúng đều kết nối với cùng một cổng với cùng một khóa.

Kimi Code CLI là một tác nhân terminal của Moonshot AI, mở cho các nhà cung cấp bên thứ ba: hiện không có mô hình Kimi trong mạng lưới Gonka, nhưng nó hoạt động bình thường trên DeepSeek V4 Flash, GLM-5.3 Flash và MiniMax M2.7 mà không cần tài khoản Moonshot. Cách nhanh nhất là npx @joingonka/setup --tool kimi-code: trình cài đặt sẽ ghi nhà cung cấp joingonka với loại openai và khóa, các bảng mô hình với giới hạn trung thực và mô hình mặc định vào ~/.kimi-code/config.toml, sau đó kiểm tra kết nối bằng một yêu cầu trực tiếp. Mô hình được chọn bằng bí danh joingonka/<id> — trong /model hoặc bằng cờ -m; để nút gạt Thinking hoạt động với GLM-5.3 Flash, hãy khai báo support_efforts và off_effort = "low". Kiểm tra bằng lệnh kimi provider list và kimi -p trên một tệp có lỗi; thanh toán cho các token thực tế theo giá thống nhất của mạng lưới.

Muốn tìm hiểu thêm?

Khám phá các phần khác hoặc bắt đầu kiếm GNK ngay bây giờ.

Nhận khóa và token miễn phí →