콘텐츠로 이동

OpenClaw 로컬 모델 연동: LM Studio와 MiniMax M2.5 설정

클라우드 기반 LLM을 쓰다 보면 개인정보 유출이 걱정되거나 매달 나가는 비용이 부담스러울 때가 있죠. 내 컴퓨터에서 직접 모델을 돌리는 ‘로컬 환경’은 모든 개발자의 꿈이지만, 성능과 보안을 모두 잡는 건 생각보다 까다로운 일이에요.

제대로 된 로컬 스택을 구축해서 호스팅 모델 못지않은 성능을 내는 방법을 바로 알아볼게요.

로컬 모델 사용은 가능하지만, OpenClaw는 큰 컨텍스트와 프롬프트 인젝션에 대한 강력한 방어책을 요구해요. 작은 모델은 컨텍스트를 자르고 보안이 취약해질 수 있죠. 목표를 높게 잡으세요: **풀옵션 Mac Studio 2대 이상 또는 그에 상응하는 GPU 리그(약 3천만 원 이상)**를 추천해요. 24 GB GPU 한 장으로는 가벼운 프롬프트만 높은 지연 시간으로 처리할 수 있어요. 실행 가능한 가장 크고 완전한 모델 버전을 사용하세요. 과하게 양자화되거나 “작은” 체크포인트는 프롬프트 인젝션 위험을 높여요 (Security 참고).

가장 간편한 로컬 설정을 원한다면 Ollama와 openclaw onboard로 시작해 보세요. 이 페이지는 고사양 로컬 스택과 커스텀 OpenAI 호환 로컬 서버를 위한 가이드예요.

추천: LM Studio + 대형 로컬 모델 (Responses API)

섹션 제목: “추천: LM Studio + 대형 로컬 모델 (Responses API)”

현재 가장 좋은 로컬 스택이에요. LM Studio에서 대형 모델(예: 전체 사이즈 Qwen, DeepSeek, Llama 빌드)을 로드하고, 로컬 서버(기본값 http://127.0.0.1:1234)를 활성화한 뒤, Responses API를 사용해 추론 과정과 최종 텍스트를 분리하세요.

{
agents: {
defaults: {
model: { primary: “lmstudio/my-local-model” },
models: {
“anthropic/claude-opus-4-6”: { alias: “Opus” },
“lmstudio/my-local-model”: { alias: “Local” },
},
},
},
models: {
mode: “merge”,
providers: {
lmstudio: {
baseUrl: “http://127.0.0.1:1234/v1”,
apiKey: “lmstudio”,
api: “openai-responses”,
models: [
{
id: “my-local-model”,
name: “Local Model”,
reasoning: false,
input: [“text”],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 196608,
maxTokens: 8192,
},
],
},
},
},
}

설정 체크리스트

  • LM Studio 설치: https://lmstudio.ai
  • LM Studio에서 사용 가능한 가장 큰 모델 빌드를 다운로드하고(작거나 과하게 양자화된 버전은 피하세요), 서버를 시작한 뒤 http://127.0.0.1:1234/v1/models에 모델이 표시되는지 확인하세요.
  • my-local-model을 LM Studio에 표시된 실제 모델 ID로 바꾸세요.
  • 모델을 로드된 상태로 유지하세요. 새로 로드하는 방식(cold-load)은 시작 지연 시간을 유발해요.
  • 사용하는 LM Studio 빌드에 따라 contextWindow와 maxTokens를 조정하세요.
  • WhatsApp을 사용한다면 최종 텍스트만 전송되도록 Responses API를 고수하세요.

로컬 모델을 실행할 때도 호스팅 모델 설정을 유지하는 것이 좋아요. models.mode: "merge"를 사용하면 폴백(fallback) 기능을 계속 사용할 수 있어요.

하이브리드 설정: 호스팅 모델을 기본으로, 로컬을 폴백으로

섹션 제목: “하이브리드 설정: 호스팅 모델을 기본으로, 로컬을 폴백으로”
{
agents: {
defaults: {
model: {
primary: "anthropic/claude-sonnet-4-6",
fallbacks: ["lmstudio/my-local-model", "anthropic/claude-opus-4-6"],
},
models: {
"anthropic/claude-sonnet-4-6": { alias: "Sonnet" },
"lmstudio/my-local-model": { alias: "Local" },
"anthropic/claude-opus-4-6": { alias: "Opus" },
},
},
},
models: {
mode: "merge",
providers: {
lmstudio: {
baseUrl: "http://127.0.0.1:1234/v1",
apiKey: "lmstudio",
api: "openai-responses",
models: [
{
id: "my-local-model",
name: "Local Model",
reasoning: false,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 196608,
maxTokens: 8192,
},
],
},
},
},
}

호스팅 안전망을 갖춘 로컬 우선 설정

섹션 제목: “호스팅 안전망을 갖춘 로컬 우선 설정”

기본(primary)과 폴백(fallback) 순서를 바꾸세요. 로컬 서버가 다운되었을 때 Sonnet이나 Opus로 전환할 수 있도록 동일한 providers 블록과 models.mode: "merge" 설정을 유지하면 돼요.

  • OpenRouter에는 지역 고정 엔드포인트(예: 미국 호스팅)를 가진 MiniMax, Kimi, GLM 변체들이 있어요. 특정 관할권 내에서 트래픽을 유지하고 싶다면 해당 지역 변체를 선택하고, Anthropic이나 OpenAI를 폴백으로 쓰기 위해 models.mode: "merge"를 활용하세요.
  • 로컬 전용 방식이 개인정보 보호 측면에서 가장 강력해요. 지역별 호스팅 라우팅은 공급자의 기능을 활용하면서도 데이터 흐름을 제어하고 싶을 때 선택할 수 있는 중간 지점이에요.

vLLM, LiteLLM, OAI-proxy 또는 커스텀 Gateway가 OpenAI 스타일의 /v1 엔드포인트를 제공한다면 모두 사용할 수 있어요. 위의 provider 블록을 여러분의 엔드포인트와 모델 ID로 교체하세요.

{
models: {
mode: "merge",
providers: {
local: {
baseUrl: "http://127.0.0.1:8000/v1",
apiKey: "sk-local",
api: "openai-responses",
models: [
{
id: "my-local-model",
name: "Local Model",
reasoning: false,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 120000,
maxTokens: 8192,
},
],
},
},
},
}

호스팅 모델을 폴백으로 계속 쓸 수 있도록 models.mode: "merge" 설정을 유지하세요.

  • Gateway가 프록시에 접속할 수 있나요? curl http://127.0.0.1:1234/v1/models 명령어로 확인해 보세요.
  • LM Studio 모델이 언로드되었나요? 다시 로드하세요. 콜드 스타트(Cold start)는 응답이 멈추는 흔한 원인이에요.
  • 컨텍스트 오류가 발생하나요? contextWindow 값을 낮추거나 서버의 제한 수치를 높이세요.
  • 보안: 로컬 모델은 공급자 측의 필터를 건너뛰어요. 프롬프트 인젝션의 피해 범위를 제한하려면 에이전트의 역할을 좁게 유지하고 압축(compaction) 기능을 켜두세요.

AI Setup Assistant

OpenClaw

OpenClaw Expert

아직 막혀 있나요?

이 문서에서 답을 못 찾았다면 OpenClaw Expert에게 바로 물어보세요.