Tài liệu

Tài liệu

mini-SWE-agent

mini không có biến môi trường cho URL cơ sở và cũng không có mục nào để nhấp. Endpoint được khai báo bằng bốn dòng YAML mà mini chuyển thẳng cho litellm — kèm theo một registry giá, vì ngân sách mỗi lần chạy của mini không thể tính token nếu chưa biết mức giá.

mini-SWE-agent không có biến môi trường base URL — endpoint nằm trong model.model_kwargs.api_base của cấu hình YAML, rồi mini chuyển thẳng tới litellm.completion.

kunavo.yaml · mini -c kunavo.yaml
# mini has no base-URL environment variable and no settings UI. The endpoint
# goes in an agent config file, under model.model_kwargs — which mini's docs
# describe as "directly passed to litellm.completion".
model:
  model_name: "openai/claude-sonnet-5"
  model_kwargs:
    custom_llm_provider: "openai"
    api_base: "https://api.kunavo.com/v1"   # keep the /v1
  litellm_model_registry: "kunavo-registry.json"   # see "Cost tracking" below

# The key does not live in this file. With custom_llm_provider: "openai",
# litellm reads OPENAI_API_KEY, and mini documents two ways to set it:
#
#   export OPENAI_API_KEY=sk-kn-...          # environment, wins over .env
#   mini-extra config set OPENAI_API_KEY sk-kn-...   # mini's own .env
#
# Then run it:  mini -c kunavo.yaml
# Or make it the default:  mini-extra config set MSWEA_MINI_CONFIG_PATH kunavo.yaml
/v1 phải được giữ nguyên — cần lưu ý rằng mini không diễn đạt điều này trong một câu, vì vậy hãy xem thông tin xác định yêu cầu. mini không bao giờ đọc giá trị này: tài liệu ghi model_kwargs được “chuyển trực tiếp đến litellm.completion”, và minh họa lời gọi là litellm.completion(model=model_name, messages=messages, **model_kwargs). Vì vậy, quy tắc thuộc về litellm. Ví dụ cụ thể duy nhất về api_base mà mini đưa ra có hậu tố — http://localhost:8000/v1, trong ví dụ vLLM — còn trang tương thích với OpenAI của litellm yêu cầu “đảm bảo api_base của bạn có hậu tố /v1” khi yêu cầu trả về Not Found. Kilo Code và Aider dùng cùng dạng này; các ứng dụng theo kiểu Anthropic và goose dùng origin gốc, không có phần bổ sung.
Tiền tố openai/ trong tên mô hình và custom_llm_provider có cùng chức năng. Ví dụ của mini chỉ dùng cách thứ hai — dùng cách nào cũng được, dùng cả hai cũng được, nhưng dù chọn cách nào thì nó cũng phải khớp với litellm_provider trong registry giá. Tiền tố chỉ định giao thức truyền dữ liệu, không phải nhà cung cấp: một id Claude đi cùng openai/ là tổ hợp được chủ đích, vì id được phân giải tại endpoint chứ không phải bên trong litellm.
Cấu hình này được lấy từ tài liệu riêng của mini vào ngày bên dưới. Kunavo chưa chạy mini-SWE-agent với endpoint của mình — chưa có phiên nào, lượt truyền phát nào, vòng gọi công cụ nào, và điều tương tự cũng đúng với mọi ứng dụng khách khác trong nhóm này. Một trang hướng dẫn thiết lập đã xuất bản không phải là bài kiểm tra tính tương thích. Có hai điểm cụ thể chưa được xác định: liệu đường dẫn openai/ của litellm có thương lượng được tính năng gọi công cụ native — mặc định từ v2 của mini — với /v1/chat/completions của Kunavo hay không, và liệu bề mặt đó có xử lý các dấu cache_control mà mini tự gắn vào các id mang tên Claude hay không. Phần curl bên dưới là điều bạn có thể xác định trong mười giây; những điểm còn lại cần được kiểm chứng bằng một lượt chạy thử ngắn.
Kunavo không cung cấp mô hình embedding, chuyển văn bản thành giọng nói hoặc chuyển giọng nói thành văn bản, vì vậy endpoint này chỉ phản hồi các yêu cầu chat completions. mini chỉ yêu cầu một công cụ duy nhất là bash, nhưng nếu các tập lệnh xung quanh lập chỉ mục kho mã hoặc phiên âm nội dung thì những yêu cầu đó vẫn dùng khóa nhà cung cấp hiện có.
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 mini-SWE-agent.

Từng bước

  1. Tạo khóa tại /app/keys rồi sao chép khóa — khóa chỉ hiển thị một lần.
  2. Cài đặt và chạy một lần để tạo các đường dẫn cần thiết: pip install mini-swe-agent, rồi mini. Lần chạy đầu tiên sẽ cho biết vị trí của .env và cấu hình agent, đồng thời đề xuất mini-extra config setup.
  3. Đặt khóa ở nơi litellm sẽ tìm: export OPENAI_API_KEY=sk-kn-..., hoặc lưu lâu dài bằng mini-extra config set OPENAI_API_KEY sk-kn-.... mini lưu ý rằng “Biến môi trường được ưu tiên hơn các biến đặt trong tệp .env”, đây thường là lý do khiến khóa bạn vừa thay đổi dường như chưa được cập nhật.
  4. Lưu YAML ở trên thành kunavo.yaml cùng thư mục với các cấu hình agent khác, rồi thêm registry giá trong phần bên dưới — nếu thiếu registry, lần chạy sẽ dừng vì lỗi tính chi phí chứ không phải vì câu trả lời kém.
  5. Khởi chạy bằng mini -c kunavo.yaml, hoặc dùng mini -c kunavo.yaml -m openai/claude-haiku-4-5 để ghi đè id cho một lần chạy. mini mở ở chế độ confirm, trong đó bạn phê duyệt từng lệnh — đây là mặc định phù hợp cho lần đầu chạy với một endpoint mới.
  6. Giao cho mini một tác vụ thực sự chạy lệnh, không phải lời chào. Mặc định của mini v2 là tính năng gọi công cụ native, và prompt đi kèm yêu cầu rằng “Mỗi phản hồi phải dùng công cụ 'bash' ít nhất một lần để thực thi lệnh” — vì vậy, một vòng gọi công cụ thực sự sẽ cho biết cấu hình kết hợp có hoạt động hay không. Nếu các lệnh gọi công cụ trả về rỗng hoặc sai định dạng, mini vẫn cung cấp đường dẫn phân tích văn bản cũ hơn: mini -c mini_textbased.yaml, hoặc model_class: litellm_textbased trong tệp của bạn.

Đã kiểm tra đối chiếu với Hướng dẫn về mô hình cục bộ của mini-SWE-agent 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 mini-SWE-agent so với Claude Code.

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 mini-SWE-agent.

# 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 mini-SWE-agent
claude-sonnet-5$1.40 / $7.00id mặc định cho một phiên làm việc — mini gửi lại ngữ cảnh ở mỗi bước, nên chi phí phát sinh ở đây
claude-opus-5$3.50 / $17.50một lượt chạy mà việc chọn sai gói sẽ tốn kém; kết hợp với cost_limit thấp hơn, không phải cao hơn
claude-haiku-4-5$0.70 / $3.50các lượt chạy hàng loạt trên nhiều tác vụ và mọi vòng lặp bạn để ở chế độ yolo
gpt-5-6-sol$2.00 / $12.00một họ mô hình thứ hai dùng chung api_base — đổi model_name, thêm một mục registry
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.

Theo dõi chi phí là điều bắt buộc ở đây

Bản phát hành mini có mini.yaml đi kèm, trong đó cost_limit: 3. là mức trần chi phí cho mỗi lần chạy. Mức trần này được áp dụng bằng bộ tính chi phí của litellm, vốn định giá một lần chạy bằng cách tra model id trong registry. Các id của Kunavo không có trong registry đó, nên điều đầu tiên đa số người dùng gặp phải không phải là câu trả lời kém mà là lỗi: trang khắc phục sự cố của mini hiển thị lỗi này dưới dạng Exception: This model isn't mapped yet. model=…, custom_llm_provider=….

Có hai cách xử lý và chúng không tương đương nhau. Công tắc toàn cục MSWEA_COST_TRACKING="ignore_errors" (hoặc cost_tracking: "ignore_errors" trong tệp) gỡ bỏ cơ chế kiểm soát thay vì sửa lỗi, và mini ghi rõ: “CẨN TRỌNG: Điều này có thể dẫn đến chi tiêu không được kiểm soát!” Cách còn lại là khai báo mức giá cho litellm, như phần litellm_model_registry trong khối thiết lập hướng dẫn. Các mức giá bên dưới là giá hiện hành trong danh mục của trang này, được chuyển đổi sang định dạng tính theo token của litellm:

kunavo-registry.json
{
  "claude-sonnet-5": {
    "input_cost_per_token": 0.0000014,
    "output_cost_per_token": 0.000007,
    "litellm_provider": "openai",
    "mode": "chat"
  },
  "claude-opus-5": {
    "input_cost_per_token": 0.0000035,
    "output_cost_per_token": 0.0000175,
    "litellm_provider": "openai",
    "mode": "chat"
  },
  "claude-haiku-4-5": {
    "input_cost_per_token": 0.0000007,
    "output_cost_per_token": 0.0000035,
    "litellm_provider": "openai",
    "mode": "chat"
  }
}
  1. Tên mô hình được đối chiếu chính xác, có phân biệt chữ hoa chữ thường. Ví dụ của mini dùng tên không có tiền tố nhà cung cấp làm khóa cho mục — tức là claude-sonnet-5 ở đây, dù cấu hình ghi openai/claude-sonnet-5.
  2. litellm_provider phải khớp với tiền tố và với custom_llm_provider. Cảnh báo của mini ghi rõ: “Nếu bạn dùng custom_llm_provider hoặc có tiền tố nhà cung cấp trong tên mô hình (ví dụ: openai/…), thì giá trị này cũng phải khớp với litellm_provider trong cấu hình!”
  3. Đường dẫn cũng có thể được lấy từ LITELLM_MODEL_REGISTRY_PATH thay vì khóa cấu hình — hữu ích cho các trình chạy theo lô, ví dụ LITELLM_MODEL_REGISTRY_PATH=kunavo-registry.json mini-extra swebench …
  4. Các mức giá này là dữ liệu đầu vào để lập ngân sách, không phải hóa đơn. Khoản thực tế bị tính phí là khoản được ghi nhận trong số dư Kunavo của bạn. Hãy sao chép lại mức giá nếu danh mục thay đổi hoặc lấy giá từ GET /v1/models.

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

Làm cách nào để trỏ mini-SWE-agent đến một endpoint API tùy chỉnh?

Thông qua tệp cấu hình, không phải biến môi trường — mini hoàn toàn không có biến URL cơ sở. Trong tệp cấu hình agent, đặt model.model_name thành id của bạn (có thể thêm tiền tố openai/), rồi đặt custom_llm_provider: "openai" và api_base thành URL cơ sở của endpoint trong model.model_kwargs. Tài liệu của mini giải thích lý do cách này hoạt động: model_kwargs “được chuyển trực tiếp đến litellm.completion”. Chọn tệp bằng `mini -c kunavo.yaml` hoặc đặt tệp làm cấu hình mặc định bằng MSWEA_MINI_CONFIG_PATH. Với Kunavo, URL cơ sở là https://api.kunavo.com/v1.

mini-SWE-agent lấy khóa API từ đâu?

Từ biến khóa litellm tương ứng với nhà cung cấp bạn đã chọn. Với custom_llm_provider: "openai", đó là OPENAI_API_KEY. Bạn có thể export biến này trong shell hoặc lưu lâu dài bằng `mini-extra config set OPENAI_API_KEY <key>` — lệnh này ghi vào tệp .env của mini, và mini lưu ý rằng biến môi trường được ưu tiên hơn nội dung trong tệp. Khóa không phải là trường trong cấu hình agent. Nếu bạn đang làm theo hướng dẫn cũ, hãy lưu ý rằng hướng dẫn chuyển đổi v2 ghi MSWEA_MODEL_API_KEY là “Không còn được dùng để ghi đè khóa API”.

api_base của mini-SWE-agent có cần kết thúc bằng /v1 không?

Có, với endpoint tương thích OpenAI — chẳng hạn https://api.kunavo.com/v1 — dù mini đưa ra quy ước này qua ví dụ chứ không nêu thành quy tắc. mini chuyển tiếp model_kwargs thẳng đến litellm.completion, nên quy ước này thuộc về litellm. Giá trị api_base cụ thể duy nhất được in trong tài liệu của mini là http://localhost:8000/v1 trong ví dụ vLLM. Trang tương thích OpenAI của litellm giải quyết vấn đề bằng câu: nếu yêu cầu trả về Not Found, hãy đảm bảo api_base có hậu tố /v1. Vì vậy, thiếu /v1 sẽ dẫn đến lỗi 404 chứ không phải lỗi xác thực.

Tại sao mini-SWE-agent báo lỗi "This model isn't mapped yet"?

Vì litellm không thể định giá model id, trong khi cost_limit cho mỗi lần chạy của mini — 3. đô la trong mini.yaml đi kèm — được áp dụng bằng bộ tính chi phí của litellm. Cách khắc phục mini đề xuất là dùng registry mô hình: một tệp JSON theo định dạng giá mô hình của litellm, lấy tên mô hình không có tiền tố nhà cung cấp làm khóa, với litellm_provider khớp với giá trị bạn đặt cho custom_llm_provider hoặc tiền tố tên. Trỏ litellm_model_registry trong cấu hình hoặc LITELLM_MODEL_REGISTRY_PATH trong môi trường đến tệp đó. Đặt MSWEA_COST_TRACKING="ignore_errors" cũng sẽ tắt thông báo lỗi, nhưng đồng thời gỡ bỏ cơ chế giới hạn chi tiêu thay vì sửa lỗi.

mini-SWE-agent có thể dùng các mô hình Claude qua endpoint tương thích OpenAI không?

Có. Tiền tố openai/ và tên custom_llm_provider chỉ giao thức truyền dữ liệu, không phải nhà cung cấp: litellm gửi yêu cầu chat completion theo định dạng OpenAI đến api_base bạn đã cấu hình và chuyển tiếp model id, nên id Claude được phân giải tại endpoint đó chứ không phải trong bảng nhà cung cấp của litellm. Có một tác động riêng của mini mà bạn nên biết: mini tự thêm các thiết lập kiểm soát bộ nhớ đệm khi tên mô hình được phân giải có chứa "anthropic", "claude", "sonnet" hoặc "opus", như trường hợp id openai/claude-… có tiền tố.

Kunavo đã kiểm thử mini-SWE-agent với endpoint của mình chưa?

Chưa. Nội dung được kiểm tra vào ngày 21 tháng 9 năm 2026 là tài liệu riêng của mini — các khóa, thứ tự của chúng và dạng api_base đều được trích từ tài liệu đó. Kunavo chưa chạy phiên mini nào với endpoint của mình và không đưa ra tuyên bố nào về truyền phát, vòng gọi công cụ hay báo cáo chi phí trong ứng dụng khách này. Có hai điểm cụ thể vẫn chưa được xác định: liệu đường dẫn openai/ của litellm có thương lượng tính năng gọi công cụ native — mặc định của mini kể từ v2.0 — với endpoint chat-completions hay không, và liệu endpoint đó có xử lý các dấu cache_control mà mini gắn vào các id mang tên Claude hay không. Lệnh curl trên trang này xác nhận endpoint và khóa; một lượt chạy thử ngắn ở chế độ confirm sẽ xác định phần còn lại.