로컬 모델
로컬 실행은 가능하지만, OpenClaw는 큰 컨텍스트와 프롬프트 인젝션에 대한 강한 방어를 전제로 합니다. 작은 카드급 모델은 컨텍스트를 잘라내고 안전성을 약화시킵니다. 목표를 높게 잡으세요: 최대 사양의 Mac Studio 2대 이상 또는 이에 준하는 GPU 장비(약 $30k+). 단일 24 GB GPU는 더 가벼운 프롬프트에서만, 더 높은 지연 시간으로 동작합니다. 실행 가능한 범위에서 가장 큰 / 풀사이즈 모델 변형을 사용하세요. 과도하게 양자화된 체크포인트나 “small” 체크포인트는 프롬프트 인젝션 위험을 높입니다(보안 참조). 가장 마찰이 적은 로컬 설정을 원한다면 Ollama와openclaw onboard부터 시작하세요. 이 페이지는 고급 로컬 스택과 사용자 지정 OpenAI 호환 로컬 서버를 위한 의견이 반영된 가이드입니다.
권장: LM Studio + 대형 로컬 모델(Responses API)
현재 가장 좋은 로컬 스택입니다. LM Studio에 대형 모델(예: 풀사이즈 Qwen, DeepSeek, Llama 빌드)을 로드하고, 로컬 서버(기본값http://127.0.0.1:1234)를 활성화한 뒤, Responses API를 사용해 추론과 최종 텍스트를 분리하세요.
- LM Studio 설치: https://lmstudio.ai
- LM Studio에서 가장 큰 모델 빌드를 다운로드하고(“small”/과도한 양자화 변형은 피함), 서버를 시작한 뒤
http://127.0.0.1:1234/v1/models에 해당 모델이 표시되는지 확인하세요. my-local-model을 LM Studio에 표시되는 실제 모델 ID로 바꾸세요.- 모델을 계속 로드된 상태로 유지하세요. 콜드 로드는 시작 지연 시간을 늘립니다.
- LM Studio 빌드에 맞게
contextWindow/maxTokens를 조정하세요. - WhatsApp에서는 최종 텍스트만 전송되도록 Responses API를 유지하세요.
models.mode: "merge"를 사용하세요.
하이브리드 구성: 호스팅 기본 모델, 로컬 폴백
로컬 우선, 호스팅 안전망 포함
기본 모델과 폴백 순서를 바꾸고, 동일한 provider 블록과models.mode: "merge"를 유지하세요. 그러면 로컬 머신이 내려갔을 때 Sonnet 또는 Opus로 폴백할 수 있습니다.
리전 호스팅 / 데이터 라우팅
- 호스팅된 MiniMax/Kimi/GLM 변형도 OpenRouter에서 리전 고정 엔드포인트(예: US 호스팅)로 제공됩니다. 원하는 관할 구역 내에서 트래픽을 유지하려면 해당 리전 변형을 선택하고, 동시에 Anthropic/OpenAI 폴백을 유지하려면
models.mode: "merge"를 계속 사용하세요. - 완전 로컬 전용이 가장 강한 개인정보 보호 경로입니다. 호스팅 리전 라우팅은 provider 기능이 필요하지만 데이터 흐름도 통제하고 싶을 때의 중간 지점입니다.
기타 OpenAI 호환 로컬 프록시
vLLM, LiteLLM, OAI-proxy, 또는 사용자 지정 gateway도 OpenAI 스타일/v1 엔드포인트를 노출하면 사용할 수 있습니다. 위의 provider 블록을 해당 엔드포인트와 모델 ID로 교체하세요.
models.mode: "merge"를 유지하세요.
로컬/프록시 /v1 백엔드의 동작 참고:
- OpenClaw는 이를 네이티브 OpenAI 엔드포인트가 아니라 프록시 스타일의 OpenAI 호환 경로로 취급합니다
- 네이티브 OpenAI 전용 요청 형태 조정은 여기에 적용되지 않습니다:
service_tier없음, Responsesstore없음, OpenAI reasoning 호환 payload 형태 조정 없음, 프롬프트 캐시 힌트 없음 - 숨겨진 OpenClaw attribution 헤더(
originator,version,User-Agent)도 이러한 사용자 지정 프록시 URL에는 주입되지 않습니다
문제 해결
- Gateway가 프록시에 도달할 수 있나요?
curl http://127.0.0.1:1234/v1/models - LM Studio 모델이 언로드되었나요? 다시 로드하세요. 콜드 시작은 흔한 “멈춤” 원인입니다.
- 컨텍스트 오류가 있나요?
contextWindow를 낮추거나 서버 제한을 높이세요. - 보안: 로컬 모델은 provider 측 필터를 건너뜁니다. 프롬프트 인젝션 영향 범위를 제한하려면 에이전트 범위를 좁게 유지하고 압축을 활성화하세요.