문서

문서

mini-SWE-agent

mini에는 기본 URL 환경 변수나 클릭할 설정 메뉴가 없습니다. 엔드포인트는 mini가 litellm에 그대로 전달하는 YAML 네 줄로 설정하며, cost_limit이 토큰 수를 계산할 수 있도록 가격 레지스트리도 필요합니다.

mini-SWE-agent에는 기본 URL 환경 변수가 없습니다 — 엔드포인트는 YAML 구성의 model.model_kwargs.api_base 아래에 지정하며, mini가 이를 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를 유지하세요. mini 문서에는 이를 한 문장으로 명시하지 않지만, 판단에 필요한 내용은 다음과 같습니다. mini는 해당 값을 읽지 않습니다. 문서에 따르면 model_kwargs는 “litellm.completion에 직접 전달”되며, 호출 예시는 litellm.completion(model=model_name, messages=messages, **model_kwargs)와 같습니다. 따라서 적용되는 규칙은 litellm의 규칙입니다. mini가 직접 제시하는 구체적인 api_base 사례는 하나뿐인데, vLLM 예시의 http://localhost:8000/v1입니다. litellm의 OpenAI 호환 페이지도 요청에 Not Found가 반환될 경우 “api_base에 /v1 접미사가 있는지 확인”하라고 안내합니다. Kilo Code와 Aider도 같은 형식을 사용하고, Anthropic 형식의 클라이언트와 goose는 접미사가 없는 기본 주소를 사용합니다.
모델 이름의 openai/ 접두사와 custom_llm_provider는 같은 역할을 하며, mini의 예시에서는 두 번째 방식만 사용합니다. 둘 중 하나만 사용해도 되고 둘 다 사용해도 되지만, 어떤 방식을 선택하든 가격 레지스트리의 litellm_provider와 일치해야 합니다. 접두사는 통신 프로토콜을 나타내며 공급자를 뜻하지 않습니다. 따라서 openai/ 아래에 Claude ID를 지정하는 것이 의도된 조합입니다. ID는 litellm 내부가 아니라 엔드포인트에서 확인되기 때문입니다.
이 구성은 아래에 표시된 날짜에 mini 자체 문서에서 확인한 내용입니다. Kunavo는 mini-SWE-agent를 자사 엔드포인트에 연결해 실행한 적이 없습니다. 세션, 스트리밍 턴, 도구 왕복 실행을 모두 테스트하지 않았으며, 이 계열의 다른 클라이언트도 마찬가지입니다. 설정 가이드를 게시했다는 사실은 호환성을 테스트했다는 뜻이 아닙니다. 아직 확인되지 않은 사항은 두 가지입니다. litellm의 openai/ 경로가 Kunavo의 /v1/chat/completions를 대상으로 mini v2의 기본값인 네이티브 도구 호출을 협상하는지 여부와, 해당 인터페이스가 Claude 이름의 ID에 mini가 자동으로 추가하는 cache_control 마커를 처리하는지 여부입니다. 아래의 curl로는 10초 안에 확인할 수 있습니다. 나머지는 직접 간단히 첫 실행을 해봐야 알 수 있습니다.
Kunavo는 임베딩, 텍스트 음성 변환 또는 음성 텍스트 변환 모델을 제공하지 않으므로, 이 엔드포인트는 채팅 완료 요청에만 응답합니다. mini는 단일 도구인 bash만 요청하지만, 주변 스크립트가 저장소를 인덱싱하거나 음성을 텍스트로 변환한다면 해당 호출에는 기존 공급자 키를 계속 사용하세요.
아직 키가 없나요? Kunavo 계정을 만들고, 키를 생성한 다음(키는 sk-kn-로 시작합니다) $10부터 크레딧을 추가하세요. 호출 비용은 해당 잔액에서 차감되며 실패한 호출에는 요금이 부과되지 않습니다. 그러면 대시보드가 mini-SWE-agent 설정 화면에서 열립니다.

단계별 안내

  1. /app/keys에서 키를 생성해 복사하세요. 키는 한 번만 표시됩니다.
  2. 경로가 생성되도록 설치한 다음 한 번 실행하세요. pip install mini-swe-agent를 실행한 뒤 mini를 실행합니다. 첫 실행 시 .env와 에이전트 구성 파일의 위치가 출력되고, mini-extra config setup를 선택할 수 있습니다.
  3. litellm이 조회할 위치에 키를 설정하세요. export OPENAI_API_KEY=sk-kn-...를 사용하거나 mini-extra config set OPENAI_API_KEY sk-kn-...로 저장할 수 있습니다. mini는 “환경 변수는 .env 파일에 설정된 변수보다 우선합니다”라고 안내합니다. 방금 변경한 키가 바뀌지 않은 것처럼 보이는 일반적인 이유입니다.
  4. 위 YAML을 다른 에이전트 구성 파일과 함께 kunavo.yaml에 저장하고 아래 섹션의 가격 레지스트리를 추가하세요. 레지스트리가 없으면 잘못된 답변이 아니라 비용 계산 오류로 실행이 중단됩니다.
  5. mini -c kunavo.yaml로 시작하거나, 한 번만 사용할 ID를 지정하려면 mini -c kunavo.yaml -m openai/claude-haiku-4-5를 사용하세요. mini는 명령을 하나씩 승인하는 confirm 모드로 시작합니다. 새 엔드포인트를 처음 실행할 때 적합한 기본값입니다.
  6. 인사말이 아니라 실제로 명령을 실행하는 작업을 맡기세요. mini v2의 기본값은 네이티브 도구 호출이며, 기본 프롬프트에는 “모든 응답은 명령을 실행하기 위해 'bash' 도구를 최소 한 번 사용해야 합니다”라고 명시되어 있습니다. 따라서 도구 왕복 실행을 실제로 한 번 해봐야 연동이 작동하는지 확인할 수 있습니다. 도구 호출 결과가 비어 있거나 형식이 잘못된 경우에도 mini에는 이전 텍스트 파싱 경로가 포함되어 있습니다. mini -c mini_textbased.yaml를 사용하거나 자체 파일에서 model_class: litellm_textbased를 설정하세요.

mini-SWE-agent의 로컬 모델 가이드에서 확인했습니다(2026년 9월 21일 기준). 서드파티 설정은 변경될 수 있으므로, 여기의 필드 이름이 실제 화면과 다르면 이 문서가 아니라 해당 페이지를 기준으로 삼으세요.

이것이 요약본입니다. 전체 안내—모델 선택, 실제 세션 비용, 실패 유형—는 mini-SWE-agent와 Claude Code 비교에 있습니다.

클라이언트를 디버깅하기 전에 확인할 사항

한 번의 요청으로 문제가 엔드포인트, 키 또는 구성 파일 중 어디에 있는지 판단할 수 있습니다. 이 요청에서 JSON이 반환되면 동일한 base URL과 키가 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-..."

필드에 입력할 model id

모든 텍스트 모델은 model id로 접근할 수 있습니다. 현재 목록은 GET /v1/models이며, 가격이 포함된 카탈로그는 모델 페이지에서 확인할 수 있습니다. 요금은 토큰 100만 개당 USD 기준이며 입력 / 출력 순서입니다.

모델 IDKunavo 입력/출력mini-SWE-agent에서의 위치
claude-sonnet-5$1.40 / $7.00정상 작동하는 세션에서 기본으로 사용할 ID — mini는 각 단계마다 컨텍스트를 다시 보내므로 비용이 여기서 발생합니다
claude-opus-5$3.50 / $17.50잘못된 계획을 선택하면 비용이 많이 드는 실행입니다. 더 높은 cost_limit이 아니라 더 낮은 cost_limit과 함께 사용하세요.
claude-haiku-4-5$0.70 / $3.50여러 작업을 처리하는 배치 실행과 yolo 모드로 남겨 둔 모든 루프
gpt-5-6-sol$2.00 / $12.00같은 api_base 뒤에 두 번째 모델군 추가 — model_name을 바꾸고 레지스트리 항목을 하나 추가하세요
월정액 없이 선불 잔액에서 토큰별로 청구됩니다. billing을 참고하세요. 반복되는 컨텍스트(에디터나 채팅 클라이언트가 보내는 데이터의 대부분)에서는 모델 선택보다 프롬프트 캐싱이 청구액에 더 큰 영향을 줍니다.

여기서는 비용 추적이 필수입니다

배포된 mini에는 mini.yaml가 포함되어 있으며, 이는 실행당 달러 기준 상한인 cost_limit: 3.을 설정합니다. 이 상한은 litellm 비용 계산기가 적용하며, 모델 ID를 레지스트리에서 조회해 실행 비용을 산정합니다. Kunavo의 ID는 해당 레지스트리에 없으므로, 대부분의 사용자는 잘못된 답변이 아니라 오류를 먼저 보게 됩니다. mini의 문제 해결 페이지에는 이 오류가 Exception: This model isn't mapped yet. model=…, custom_llm_provider=…로 나와 있습니다.

해결 방법은 두 가지지만 서로 같은 것은 아닙니다. 전역 스위치 MSWEA_COST_TRACKING="ignore_errors"(또는 파일의 cost_tracking: "ignore_errors")를 사용하면 문제를 해결하는 대신 보호 기능을 제거합니다. mini는 이를 “주의: 관리되지 않는 지출로 이어질 수 있습니다!”라고 표시합니다. 다른 방법은 litellm에 요금을 알려주는 것으로, 설정 블록의 litellm_model_registry가 이를 참조합니다. 아래 요금은 이 사이트의 실시간 카탈로그 요금을 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. 모델 이름은 대소문자를 구분해 정확히 일치시켜야 합니다. mini의 예시는 공급자 접두사를 제외한 이름을 키로 사용하므로, 설정에 openai/claude-sonnet-5라고 되어 있어도 여기서는 claude-sonnet-5를 사용합니다.
  2. litellm_provider는 접두사 및 custom_llm_provider와 일치해야 합니다. mini는 다음과 같이 명시적으로 경고합니다. “custom_llm_provider를 사용하거나 모델 이름 앞에 공급자 접두사를 붙이는 경우(예: openai/…), 구성의 litellm_provider도 이에 맞춰야 합니다!”
  3. 구성 키 대신 LITELLM_MODEL_REGISTRY_PATH에서 경로를 지정할 수도 있습니다. 예를 들어 배치 실행기에 유용합니다. LITELLM_MODEL_REGISTRY_PATH=kunavo-registry.json mini-extra swebench …
  4. 이 요금은 예산을 입력하기 위한 값이지 청구 금액이 아닙니다. 실제 청구액은 Kunavo 잔액에 기록된 금액입니다. 카탈로그가 변경되면 요금을 다시 복사하거나 GET /v1/models에서 확인하세요.

자주 묻는 질문

mini-SWE-agent에서 사용자 지정 API 엔드포인트를 사용하려면 어떻게 하나요?

환경 변수가 아니라 구성 파일을 사용합니다. mini에는 기본 URL 변수가 없습니다. 에이전트 구성 파일에서 model.model_name을 사용할 ID로 설정하고, 필요하면 앞에 openai/를 붙이세요. 그런 다음 model.model_kwargs 아래에 custom_llm_provider: "openai"와 엔드포인트의 기본 URL인 api_base를 설정합니다. mini 문서에서는 model_kwargs가 “litellm.completion에 직접 전달”된다고 설명합니다. `mini -c kunavo.yaml`로 파일을 선택하거나 MSWEA_MINI_CONFIG_PATH를 사용해 기본 파일로 지정하세요. Kunavo의 기본 URL은 https://api.kunavo.com/v1입니다.

mini-SWE-agent는 API 키를 어디서 읽나요?

선택한 공급자에 해당하는 litellm 키 변수에서 읽습니다. custom_llm_provider: "openai"를 사용하면 OPENAI_API_KEY가 해당 변수입니다. 셸에서 내보내거나 `mini-extra config set OPENAI_API_KEY <key>`로 저장할 수 있습니다. 이 명령은 mini의 .env 파일에 기록합니다. mini는 환경 변수가 파일에 있는 값보다 우선한다고 안내합니다. 키는 에이전트 구성의 필드가 아닙니다. 오래된 튜토리얼을 참고하고 있다면 v2 마이그레이션 가이드에서 MSWEA_MODEL_API_KEY를 “API 키 재정의에 더 이상 사용하지 않음”으로 표시한 점에 유의하세요.

mini-SWE-agent의 api_base 끝에 /v1이 필요한가요?

OpenAI 호환 엔드포인트라면 필요합니다. 예를 들어 https://api.kunavo.com/v1입니다. 다만 mini는 규칙으로 명시하지 않고 예시로 보여줍니다. mini는 model_kwargs를 litellm.completion에 그대로 전달하므로 이 규칙은 litellm의 규칙입니다. mini 문서에 나온 구체적인 api_base 예시는 vLLM 예시의 http://localhost:8000/v1뿐입니다. litellm 자체 OpenAI 호환 페이지에서는 이 점을 명확히 설명합니다. 요청에 Not Found가 반환되면 api_base에 /v1 접미사가 있는지 확인하세요. 따라서 /v1이 빠지면 인증 오류가 아니라 404가 발생합니다.

mini-SWE-agent에서 "This model isn't mapped yet" 오류가 발생하는 이유는 무엇인가요?

litellm이 모델 ID의 요금을 산정할 수 없기 때문입니다. mini에 기본 제공되는 mini.yaml의 실행당 cost_limit은 3달러이며, litellm 비용 계산기가 이를 적용합니다. mini가 권장하는 해결책은 모델 레지스트리입니다. litellm의 모델 가격 형식에 맞춘 JSON 파일로, 공급자 접두사를 제외한 모델 이름을 키로 사용하고 litellm_provider를 custom_llm_provider 설정값 또는 이름 접두사와 일치시켜야 합니다. 구성의 litellm_model_registry 또는 환경 변수의 LITELLM_MODEL_REGISTRY_PATH가 이 파일을 가리키도록 설정하세요. MSWEA_COST_TRACKING="ignore_errors"를 설정해 오류를 표시하지 않을 수도 있지만, 지출 제한을 해결하는 대신 제거하게 됩니다.

mini-SWE-agent에서 OpenAI 호환 엔드포인트를 통해 Claude 모델을 사용할 수 있나요?

네. openai/ 접두사와 custom_llm_provider는 공급자가 아니라 통신 프로토콜을 나타냅니다. litellm은 구성한 api_base로 OpenAI 형식의 채팅 완료 요청을 보내고 모델 ID를 그대로 전달하므로, Claude ID는 litellm의 공급자 테이블이 아니라 해당 엔드포인트에서 확인됩니다. mini 관련 부수 효과로 알아둘 점이 하나 있습니다. 확인된 모델 이름에 "anthropic", "claude", "sonnet" 또는 "opus"가 포함되면 mini가 자체적으로 캐시 제어 설정을 추가하며, openai/claude-… 형식의 ID도 이에 해당합니다.

Kunavo는 mini-SWE-agent를 자사 엔드포인트에 연결해 테스트했나요?

아니요. 2026년 9월 21일에 확인한 것은 mini 자체 문서입니다. 키, 순서, api_base 형식은 해당 문서에서 인용했습니다. Kunavo는 mini 세션을 엔드포인트에 연결해 실행한 적이 없으며, 이 클라이언트의 스트리밍, 도구 왕복 실행 또는 비용 보고에 관해 어떠한 주장도 하지 않습니다. 아직 확인되지 않은 사항은 두 가지입니다. litellm의 openai/ 경로가 mini v2.0부터 기본값인 네이티브 도구 호출을 채팅 완료 엔드포인트와 협상하는지, 그리고 해당 엔드포인트가 mini가 Claude 이름의 ID에 추가하는 cache_control 마커를 처리하는지 여부입니다. 이 페이지의 curl 명령으로 엔드포인트와 키를 확인할 수 있으며, confirm 모드에서 간단히 첫 실행을 해 나머지를 확인할 수 있습니다.