가이드 목록으로
모델·2026년 10월 1일·8분 분량

OpenClaw용 최적의 로컬 모델: 네 가지 에이전트 작업에서 측정한 gemma4, gpt-oss:20b, qwen3-coder:30b

평가한 에이전트 작업 4개, 작업당 3회 실행, 매번 새로운 작업 공간: 128GB M3 Max에서 OpenClaw 2026.9.7과 Ollama 0.35.0을 사용했습니다. 권장 기본 모델인 gemma4가 두 대형 모델을 모두 앞섰으며, 코딩 모델은 코드가 아니라 도구 호출 형식에서 실패했습니다.

마지막 검토일: .

128GB M3 Max에서 OpenClaw 2026.9.7 및 Ollama 0.35.0을 실행한 결과, OpenClaw 자체의 Ollama 설정이 권장하는 모델인 gemma4는 네 가지 에이전트 작업에 걸친 12개 평가 실행을 모두 통과했습니다. gpt-oss:20b는 12개 중 11개를 통과했지만 실패한 도구 호출은 거의 세 배 많았고, 일반적으로 코딩용으로 선택되는 qwen3-coder:30b는 도구 호출이 Ollama 파서에서 계속 실패하여 12개 중 2개만 통과했습니다. 각 모델을 새 작업 공간에서 각 작업마다 세 번 실행하고, 스크립트로 결과를 평가했으며, OpenClaw 자체의 도구 및 토큰 수와 Ollama 서버 로그를 기록했습니다. 측정일: 2026년 10월 1일.

OpenClaw 자체의 비용과 호스팅 모델을 대신 사용할 때의 비용은 OpenClaw 가격을 참고하세요. 로컬 모델과 API 폴백을 함께 실행하는 방법은 OpenClaw에서 여러 에이전트와 모델 사용하기를 참고하세요.

실행 내용

머신Apple M3 Max, 통합 메모리 128GB
OpenClawnpm에서 설치한 2026.9.7, Node 24.21.0, openclaw agent --local --json, 실행당 한 턴
Ollamav0.35.0 릴리스 바이너리, 네이티브 API(/v1 없음)
모델gemma4:latest — 7.5B, Q4_K_M, 디스크 6.6GB; gpt-oss:20b — 20.9B, MXFP4, 13.8GB; qwen3-coder:30b — 30.5B 혼합 전문가 모델, Q4_K_M, 18.6GB
컨텍스트OpenClaw contextWindow은 세 모델 모두 32,768로 설정되었고, Ollama는 gemma4와 gpt-oss를 131,072로, qwen3-coder를 262,144로 로드했습니다
도구 실행OpenClaw의 Docker 샌드박스, 읽기-쓰기 방식으로 마운트된 작업 공간
실행 횟수작업 4개 × 반복 3회 × 모델 3개 = 36회. 각 실행은 새 작업 공간과 새 OpenClaw 상태에서 진행

네 가지 작업

작업에이전트가 해야 했던 일통과 조건
읽기301줄의 서비스 로그를 읽고 유일한 ERROR 줄에 있는 서비스 이름을 말하세요응답에 올바른 서비스 이름이 포함됨
해결 방법단위 테스트 파일을 실행하고, 테스트하는 모듈의 버그를 수정한 뒤 다시 실행하세요 — 테스트는 건드리지 마세요테스트가 0으로 종료되고 테스트 파일이 바이트 단위로 동일함
개수 세기5개의 CSV 파일에서 데이터 행 수를 세고 그 수를 counts.json에 기록하세요counts.json이 예상 객체와 같음
두 파일 수정세 개의 실패한 테스트 뒤에 두 모듈에 서로 독립적인 버그가 두 개 있습니다. 테스트를 건드리지 않고 두 버그를 모두 수정하세요.모든 테스트가 0으로 종료되고 테스트 파일이 바이트 단위로 동일함

결과

모델작업통과중앙값 시간도구 호출 중앙값실패한 도구 호출(3회 실행)입력 / 출력 토큰 중앙값
gemma4:latestt1-read3/350.2초1021,438 / 19
gemma4:latestt2-fix3/347.5초4013,387 / 866
gemma4:latestt3-count3/337.9초7113,073 / 513
gemma4:latestt4-multi3/375.1초10616,417 / 2,441
gpt-oss:20bt1-read3/338.7초3516,971 / 508
gpt-oss:20bt2-fix3/354.2초7612,409 / 1,193
gpt-oss:20bt3-count2/376.5초10513,247 / 1,713
gpt-oss:20bt4-multi3/365.1초11313,065 / 1,380
qwen3-coder:30bt1-read0/325.1초008,915 / 38
qwen3-coder:30bt2-fix0/334.8초309,435 / 163
qwen3-coder:30bt3-count2/336.9초309,503 / 279
qwen3-coder:30bt4-multi0/342.5초509,992 / 243

시간은 실행당 실제 경과 시간이며 OpenClaw 시작에 걸린 약 5~7초를 포함합니다. “입력 토큰”은 OpenClaw이 기록한 캐시되지 않은 입력입니다. 캐시에서 다시 전송한 컨텍스트는 여기에 더해지며 아래 비용 섹션에서 계산됩니다. 실패한 도구 호출 열은 OpenClaw이 기록한 실패를 집계합니다. qwen3-coder의 실패는 호출이 OpenClaw에 도달하기 전에 발생했으므로 해당 열에는 0으로 표시되며 아래에서 설명합니다.

수치가 의미하는 것

  • gemma4와 gpt-oss:20b는 모두 짧은 에이전트 작업에 사용할 수 있습니다. 24회 중 23회가 통과했으며, 여러 모듈을 읽고 두 모듈을 편집한 뒤 테스트를 다시 실행해야 하는 두 파일 수정 작업도 포함됩니다.
  • gemma4가 도구를 더 안정적으로 사용했습니다. 읽기 작업에서 매번 정확히 한 번의 도구 호출을 했습니다. gpt-oss는 세 번 호출했고, 그중 두 번은 파일을 읽기 전에 대개 실패했습니다. 12회 전체 실행에서 gpt-oss는 19회의 도구 호출이 실패했으며 gemma4는 7회였습니다. 작업당 평균 어시스턴트 턴은 gpt-oss가 9.1회, gemma4가 6.8회였습니다.
  • 유일한 실패는 gpt-oss의 개수 세기 작업에서 발생했습니다. 13번의 도구 호출 후 형식이 잘못된 counts.json을 작성하고 응답 없이 턴을 종료했습니다.
  • 이 결과에서 속도는 차별 요소가 아닙니다. 전체 실행에서 gemma4의 중앙값은 53초, gpt-oss는 54초였습니다. 가장 느린 단일 실행은 두 파일 수정 작업의 gemma4로, 133초와 17회의 도구 호출이 걸렸습니다. qwen3-coder의 실행이 더 짧았던 것은 일찍 실패했기 때문입니다.
  • 더 큰 모델이 이 작업에서 정확도를 높이지는 않았습니다. gpt-oss:20b는 gemma4의 매개변수 수에 거의 세 배에 달하지만, 코드용으로 만들어진 qwen3-coder:30b는 세 모델 중 가장 낮은 점수를 받았습니다.

모델당 12회 실행이면 이러한 작업에서 패턴을 확인하기에는 충분하지만, 모델을 일반적으로 순위 매기기에는 충분하지 않습니다. 긴 작업, 더 큰 코드베이스 및 다른 양자화는 테스트하지 않았습니다.

qwen3-coder:30b가 실패한 이유

코딩 때문은 아닙니다. 실패한 10회의 실행을 살펴보면 다음과 같습니다.

  • 5회는 Ollama 파서에서 종료되었습니다. qwen3-coder는 도구 호출을 XML로 작성하며, 인수에 코드가 들어 있을 때 <parameter> 요소를 </function>로 닫았습니다. Ollama 0.35.0 서버 로그에는 "qwen tool call parsing failed … XML syntax error … element <parameter> closed by </function>"가 기록되었고, OpenClaw은 "Agent run failed"로 턴을 종료했습니다.
  • 4회는 호출을 전혀 실행하지 못했습니다. 응답에서 다음 단계를 알린 뒤 단독 </tool_call>을 텍스트로 출력했으며, Ollama가 호출로 파싱할 수 있는 내용은 없었습니다. 턴은 그 지점에서 종료되었습니다. OpenClaw 문서가 /v1 URL과 연관 짓는 증상이며, 여기서는 네이티브 API에서도 발생했습니다.
  • 1회는 오답이었습니다. CSV 헤더 줄을 데이터 행으로 세었습니다.

파서는 Ollama의 것이므로 이는 모델에 대한 판정이 아니라 Ollama 0.35.0에 대한 결과입니다. OpenClaw에서 qwen3-coder를 실행한다면 모델을 탓하기 전에 ollama serve 로그에서 "qwen tool call parsing failed"를 확인하고 Ollama를 업그레이드한 뒤 다시 테스트하세요.

중요했던 설정

  • 네이티브 Ollama URL. OpenClaw 문서에 따르면 /v1 OpenAI 호환 URL은 “도구 호출을 깨뜨리고 모델이 원시 도구 호출 JSON을 일반 텍스트로 출력할 수 있습니다.” 실행에서는 /v1 없는 baseUrl를 api: "ollama"와 함께 사용했습니다.
  • 직접 작성한 항목에서는 contextWindow을 고정하세요. 스모크 테스트에서 해당 값이 없는 명시적 모델 항목은 200,000토큰 컨텍스트로 확인되었습니다. OpenClaw 자체의 Ollama 설정은 로컬 모델에 32,768을 지정하며, 이번 실행에서도 이를 사용했습니다.
  • Ollama의 컨텍스트는 별개입니다. Ollama 0.35.0은 OpenClaw의 32,768과 관계없이 gemma4와 gpt-oss를 131,072토큰으로, qwen3-coder를 262,144토큰으로 로드했으며, qwen3-coder의 상주 메모리는 45.3GB였습니다. 메모리 사용량을 결정하는 것은 OpenClaw의 예산이 아니라 Ollama의 컨텍스트 크기입니다.
  • 셸을 샌드박스에 넣으세요. 로컬 모델이 컴퓨터에서 셸 명령을 실행하는 것이 여기서 실제 위험입니다. sandbox.mode: "all"을 사용하면 exec는 작업 공간만 마운트된 OpenClaw의 Docker 이미지에서 실행됩니다. 이미지는 OpenClaw 샌드박싱 문서의 docker build 명령으로 한 번 빌드해야 합니다.
OpenClaw 2026.9.7 + Ollama 0.35.0 — openclaw config validate로 검증됨
// ~/.openclaw/openclaw.json — the runs used one model per config; the
// fallbacks line shows the pattern and was not part of the measured runs
{
  models: { providers: { ollama: {
    apiKey: "ollama-local",
    baseUrl: "http://127.0.0.1:11434",   // native Ollama URL — no /v1
    api: "ollama",
    timeoutSeconds: 600,
    models: [
      { id: "gemma4:latest", name: "gemma4:latest", contextWindow: 32768, maxTokens: 8192,
        params: { keep_alive: "30m" } },
      { id: "gpt-oss:20b",   name: "gpt-oss:20b",   contextWindow: 32768, maxTokens: 8192,
        params: { keep_alive: "30m" } },
    ],
  } } },
  agents: { defaults: {
    model: { primary: "ollama/gemma4:latest", fallbacks: ["ollama/gpt-oss:20b"] },
    sandbox: { mode: "all", workspaceAccess: "rw" },   // shell runs in Docker
  } },
  tools: { exec: { mode: "full" } },
}

로컬 비용

로컬 모델은 토큰당 청구서를 시간, 디스크 및 전력 비용으로 바꿉니다. 실행당 OpenClaw은 gemma4에 대해 캐시되지 않은 입력 토큰 약 16,415, 다시 전송된 캐시 컨텍스트 토큰 78,469, 출력 토큰 1,142를 기록했고, gpt-oss에 대해서는 각각 13,761, 88,688, 1,192를 기록했습니다. 대략 계산하면 모델마다 토크나이저가 다르지만, 동일한 수치를 Claude Haiku 4.5의 Kunavo 요금(백만 토큰당 입력 $0.70, 캐시 $0.07, 출력 $3.50)에 적용할 때 실행당 약 $0.021 및 $0.020입니다. 전력은 측정하지 않았습니다. 실행당 전력 비용은 와트 × 초 ÷ 3,600,000 × kWh당 가격입니다.

실용적인 패턴은 로컬 모델을 기본으로 사용하고, 로컬 모델이 실패한 턴에는 호스팅 모델을 폴백으로 사용하는 것입니다. OpenClaw은 에이전트당 fallbacks 목록을 지원합니다. Kunavo 키는 Ollama와 함께 OpenAI 호환 프로바이더로 사용할 수 있으며, 선불 잔액에서 토큰 단위로 청구됩니다. Kunavo에서는 OpenClaw을 해당 엔드포인트에 연결해 실행한 사람이 없습니다. 이번 실행은 전부 로컬에서 진행되었습니다.

자주 묻는 질문

OpenClaw에 가장 적합한 로컬 모델은 무엇인가요?

측정한 세 모델 중에서는 OpenClaw 자체가 권장하는 Ollama 모델인 gemma4입니다. 128GB M3 Max에서 OpenClaw 2026.9.7 및 Ollama 0.35.0을 실행한 결과, gemma4(7.5B, Q4_K_M)는 네 가지 작업에 걸친 12개 평가 실행을 모두 통과했습니다. gpt-oss:20b(20.9B, MXFP4)는 12개 중 11개를 통과했고, 실패한 도구 호출은 gemma4의 7회보다 많은 19회였습니다. qwen3-coder:30b는 도구 호출이 Ollama 파서에서 계속 실패하여 12개 중 2개만 통과했습니다. 이는 짧은 작업에 대한 세 모델의 결과이며, 모든 로컬 모델의 순위가 아닙니다.

OpenClaw을 Ollama와 함께 완전히 오프라인으로 실행할 수 있나요?

모델 호출은 가능합니다. 로컬 Ollama 호스트를 가리키도록 프로바이더를 설정하면 이 실행에서 모든 모델 요청은 127.0.0.1로 전송되었습니다. /v1 OpenAI 호환 URL이 아니라 기본 URL인 http://127.0.0.1:11434를 사용하세요. OpenClaw의 Ollama 문서에 따르면 /v1은 도구 호출을 깨뜨리고 모델이 원시 도구 호출 JSON을 텍스트로 출력하게 만들 수 있습니다. 인터넷에 연결하는 스킬이나 도구에는 여전히 인터넷이 필요하며, OpenClaw의 Docker 샌드박스 이미지는 한 번 직접 빌드해야 합니다(자동으로 가져오지 않습니다).

로컬 OpenClaw 모델에는 메모리가 얼마나 필요한가요?

디스크에서 gemma4는 6.6GB, gpt-oss:20b는 13.8GB, qwen3-coder:30b는 18.6GB입니다. 로드 후 Ollama는 gpt-oss에 13.7GB, qwen3-coder에 45.3GB를 보고했습니다. Ollama 0.35.0이 OpenClaw에서 지정한 32,768과 관계없이 컨텍스트 자체를 gemma4와 gpt-oss에는 131,072토큰, qwen3-coder에는 262,144토큰으로 설정했기 때문입니다. 128GB Mac에서는 모두 적재할 수 있지만, 16GB 또는 32GB 컴퓨터에서는 더 작은 컨텍스트 없이는 불가능합니다. 더 작은 컴퓨터에서는 테스트하지 않았습니다.

API와 비교할 때 로컬 모델은 무료인가요?

Not free, just billed differently: you pay in time, disk and electricity instead of per token. Each run here used about 95,000–105,000 tokens counting OpenClaw's re-sent context — on a metered API at Claude Haiku 4.5 rates that would be roughly $0.021 a run, as rough arithmetic across different tokenizers. A local run took about 54 seconds; power draw was not measured, so the electricity side is a formula: watts × seconds ÷ 3,600,000 × your price per kWh.

OpenClaw에서 Ollama와 함께 qwen3-coder가 실패하는 이유는 무엇인가요?

실행 결과 원인은 코드가 아니라 도구 호출 형식이었습니다. qwen3-coder는 도구 호출을 XML로 작성하며, Ollama 0.35.0에서는 12회 중 5회가 Ollama의 서버 로그에 "qwen tool call parsing failed"가 기록되며 종료되었습니다. XML 구문 오류로, <parameter> 요소가 </function>으로 닫힌 경우였습니다. 그 후 OpenClaw는 "Agent run failed"로 중지되었습니다. 추가로 네 번의 실행에서는 단독 </tool_call>을 텍스트로 출력했으며, Ollama가 호출로 파싱할 수 있는 내용이 없어 아무것도 실행되지 않았습니다. 모델을 탓하기 전에 서버 로그에서 이 경고를 확인하고 더 새로운 버전의 Ollama에서 다시 테스트하세요. 파서는 Ollama의 것이며 이 결과는 0.35.0에 한정됩니다.

OpenClaw에 Ollama 모델을 수동으로 추가할 때 contextWindow를 설정하는 이유는 무엇인가요?

명시적인 모델 항목에 contextWindow가 없으면 스모크 테스트에서 200,000토큰 컨텍스트로 확인되었습니다. 이는 대부분의 로컬 모델이 처리할 수 있는 범위를 훨씬 넘습니다. 반면 OpenClaw 자체의 Ollama 설정은 로컬 모델에 32,768을 지정합니다. contextWindow(및 maxTokens)를 고정하면 OpenClaw의 압축 예산을 현실적으로 유지할 수 있습니다. Ollama 자체의 num_ctx는 변경되지 않습니다. 여기서도 Ollama는 모델을 131,072로 로드했습니다.

2026년 10월 1일 Apple M3 Max(128GB)에서 실행: OpenClaw 2026.9.7(npm, Node 24.21.0), Ollama v0.35.0(릴리스 바이너리), Ollama 레지스트리에서 가져와 sha256으로 확인한 gemma4:latest, gpt-oss:20b 및 qwen3-coder:30b. 36회 실행 모두 새 작업 공간과 새 OpenClaw 상태를 사용했으며, exec는 OpenClaw의 Docker 샌드박스에서 실행되고 스크립트로 평가했습니다. 도구 호출과 토큰 수는 OpenClaw 자체의 JSON 출력입니다. 작업 픽스처, 평가기 및 어댑터 스크립트는 이 페이지의 증거 자료와 함께 공개되어 있습니다. 측정하지 않은 항목: 전력 소비, 긴 작업, 다른 양자화 및 더 작은 컴퓨터.