OpenClaw Gateway가 올라간 뒤 프로덕션은 보통 비용과 지연을 동시에 잡는 방법을 묻습니다. modelRouting은 항상 최상위 모델 가격을 내기 전에, 상위 호출 이전에 예상 컨텍스트 크기로 트래픽을 계층화합니다. 본문은 어떤 문제를 푸는지, openclaw.json 안에서 agents.defaults 및 폴백과 어떻게 나란히 두는지, SLO를 maxTokens 사다리에 어떻게 매핑하는지, 6단계 롤아웃 체크리스트와 오설정 분석을 다루며 이 사이트의 설치·systemd·Docker 글을 보완합니다.
프로덕션에서 OpenClaw 요청에는 시스템 프롬프트, 대화 기록, 도구 출력, RAG 청크가 함께 실립니다. 모든 것을 늘 플래그십 한 종에만 넣으면 청구와 꼬리 지연이 불어나고, 실패 후 폴백만 믿으면 이미 거대한 컨텍스트를 태운 뒤에야 다른 경로였음을 알게 됩니다. modelRouting은 상위 추론 전에 컨텍스트 토큰 규모를 추정해 계층을 고르므로, 기본적으로 “작은 질문에는 작은 모델”을 사후가 아니라 사전에 적용합니다.
팀이 가장 자주 보는 통증 신호 여섯 가지—여러 개가 겹치면 Grafana만 보지 말고 라우팅을 설정 검토 안건에 올리세요.
꼬리 지연: QPS는 같은데 p95/p99가 평균에서 멀어지고 대화 길이와 연동—무거운 컨텍스트 경로 과사용.
비선형 지출: 트래픽 +30%에 청구 +100%—“모든 세션이 최대 모델 기본값”인 경우가 많음.
도구 호출이 컨텍스트를 부풀림: 한 턴에 다단 도구 출력이 토큰을 급증시켜 조용한 잘림이나 예기치 않은 재시도 유발.
폴백 체인이 김: 사용자에게는 안 보이지만 한 요청에 모델을 엮어 지연과 비용이 누적.
라우팅 관측 부재: 최종 모델 이름만 로그하고 왜 그 계층인지 모름—분석이 추측이 됨.
약한 멀티테넌트 격리: 공유 Gateway에서 무거운 세션이 가벼운 세션 SLO를 끌어내림—컨텍스트 형태로 하드 게이트 필요.
이 사이트의 OpenClaw 설치·배포 시리즈를 마쳤다면 “프로세스는 살아 있고 포트·터널은 건강”이라는 전제가 이미 있습니다. 본문은 그 장수 프로세스 안의 모델 선택을 다룹니다. 원격 실행(셀프호스트 러너나 전용 원격 Mac)과는 직교하며, 라우팅은 어떤 두뇌를, 실행 계층은 어떤 머신에서 돌릴지를 고릅니다.
오해 하나: modelRouting은 “또 하나의 로드 밸런서”가 아닙니다. 컨텍스트 형태 라우팅에 가깝습니다—크기를 추정한 뒤 모델을 고릅니다. 라운드로빈을 쓰면 트레이스는 영리해 보여도 청구는 정직합니다.
둘은 상호 배타가 아니지만 역할을 나누세요: 폴백은 실패 의미—모델 사용 불가, 오류, 속도 제한—에 맞고, modelRouting은 비용·지연 의미—이 턴이 얼마나 무거운지—에 맞습니다. 섞으면 “라우트는 큰 모델을 골랐는데 실패로 작은 모델로 떨어졌다”는 이중 과금 드라마가 됩니다.
| 차원 | primary + 폴백(고전) | modelRouting(컨텍스트 계층) |
|---|---|---|
| 트리거 | 오류 코드, 타임아웃, 재시도 가능한 실패 | 예상 컨텍스트 토큰 임계값(예: 컨텍스트 크기 전략) |
| 주요 이점 | 가용성: 나쁜 모델에서 구출 | 효율: 가벼운 채팅이 플래그십 가격을 내지 않음 |
| 전형적 위험 | 긴 체인이 꼬리 지연과 이중 과금을 키움 | 나쁜 임계값이 무겁다/가볍다를 오분류 |
| 관측성 | 실패율, 재시도, 전환 이유 | 라우트 히트 믹스, 임계값 근처 오류, 토큰 백분위수 |
| agents.defaults | 프라이머리와 폴백 목록 선언 | defaults 아래에 라우팅 블록을 추가해 호출 전에 분할 |
“실패 시 교체”와 “실패 전에 선택”을 다른 페이지에 쓰면 온콜이 고마워합니다.
라우팅 결정을 구조적으로 로그하세요(계층 히트, 추정 토큰 대역, 최종 모델 ID). 그렇지 않으면 프로덕션은 최종 모델만 보여 임계값을 검토할 수 없습니다. 아래 여섯 단계가 그 릴리스 게이트입니다.
설정 변경을 이미 배포할 수 있는 엔지니어를 위해—각 단계에 산출물을 두어 modelRouting이 일회성 JSON 낙서가 되지 않게 합니다.
SLO 언어 고정: 목표 p95 지연, 세션당 비용 상한, “무거운” 세션의 가정 비율. SLO 없으면 진지한 임계값도 없습니다.
토큰 분포 샘플: 실제 채팅과 도구 출력—평균뿐 아니라 꼬리까지.
3계층 스케치: 가벼움/중간/무거움 모델 ID와 가벼운 계층에 절대 두면 안 되는 작업(예: 다단 도구).
modelRouting + 텔레메트리 배선: 히트, 추정 토큰, 최종 모델을 구조화 로그와 메트릭 스택으로.
제어 카나리아: 슬라이스에서 구버전·신버전 이중 실행, 비용과 지연 백분위수를 본 뒤 승격.
롤백 스위치: 라우팅이 빗나가면 “defaults + 짧은 폴백 체인”으로 돌아갈 스냅샷 유지.
{
"agents": {
"defaults": {
"model": { "primary": "anthropic/claude-sonnet-4-5" },
"modelRouting": {
"enabled": true,
"strategy": "context-size",
"thresholds": [
{ "maxTokens": 4000, "model": "anthropic/claude-haiku-4-5", "description": "light" },
{ "maxTokens": 100000, "model": "anthropic/claude-sonnet-4-5", "description": "medium" },
{ "maxTokens": null, "model": "anthropic/claude-opus-4-5", "description": "xlarge context" }
],
"fallbackOnOverflow": true
}
}
}
}
참고: 여기서는 형태와 의미를 보여 줍니다. 실제 키와 기본값은 사용 중인 OpenClaw 버전과 맞추세요. 설정을 diff하고 Gateway 업그레이드 전에 통합 픽스처를 실행하세요.
유용한 멘탈 모델: defaults가 프라이머리와 일반 폴백을 선언하고, modelRouting(버전에 따라)이 defaults와 협력해 컨텍스트 기반 분할을 수행하며, 폴백은 여전히 상위 실패를 처리합니다. 스테이징에서 세 가지를 검증하세요: 정상 경로에서 모델이 흔들리지 않을 것(흔들리면 임계값이 너무 빡빡함), 라우팅 뒤 폴백이 여전히 동작할 것, 로그가 라우트 히트와 실패 스왑을 구분할 것.
원격 연산에서는 Gateway를 Linux VPS나 컨테이너에 두고 무거운 툴체인이나 macOS 전용 단계를 전용 원격 Mac 실행기 큐로 보내는 토폴로지가 흔합니다. modelRouting은 Gateway 내부 추론만 계층화하며 머신 간 스케줄링(여전히 큐·러너 문제)을 대체하지 않습니다.
한 Gateway에 멀티테넌트 에이전트가 있으면 테넌트별 라우팅 프로필이나 키를 주지 않으면 무거운 테넌트의 컨텍스트 추정이 모두의 수위를 올립니다.
경고: fallbackOnOverflow는 “컨텍스트가 모델에 맞지 않는다”는 의미로 취급하고 “비용 절감” 노브가 아닙니다. 오용하면 조용한 잘림이나 숨은 재시도를 부릅니다.
온콜 빠른 길로 쓰세요. 추정 토큰과 프로바이더 청구가 크게 어긋나면 도구 출력이 추정에서 빠졌는지 로그가 샘플링됐는지 확인합니다.
fallbackOnOverflow 의미를 재검증.일회용 노트북이나 용량 보장 없는 호스트에서 Gateway를 돌리면 라우팅이 완벽해도 p95는 무너집니다. 독점적이고 상시 가동·계약 가능한 macOS 실행면이 없으면 툴체인과 로컬 빌드는 자동화에 저항합니다. OpenClaw를 iOS/macOS 빌드, CI, 에이전트를 하나의 장수 프로덕션 SLO에 올리려는 팀은 일회성 환경보다 전용 원격 Mac 노드에 무거운 실행을 두는 편이 더 빨리 안정됩니다. 라우팅 정책과 실행기 경제성의 균형으로 NodeMini Mac Mini 클라우드 임대는 기반이 됩니다: Gateway에서는 modelRouting으로 추론을 계층화하고, 무거운 툴체인은 전용 노드에 두며, 키와 용량을 런북에 명시하세요.
modelRouting은 예상 컨텍스트로 상위 호출 전에 계층화해 비용과 지연을 최적화합니다. 폴백은 보통 실패에 반응합니다. 공존 가능—경계를 정의하세요. 다른 OpenClaw 글은 카테고리 필터로 보세요.
스테이징에서 실제 트랜스크립트를 픽스처로 재생하고 라우트 히트를 검증한 뒤 카나리아하며 토큰과 지연 백분위수를 봅니다. 병렬 연산이 필요하면 원격 Mac 실행 노드에 맞춰 요금 페이지로 용량을 맞추세요.
그 가이드는 데몬과 노출을 다루고 본문은 게이트웨이 내부 라우팅을 다룹니다. 먼저 배포를 안정화한 뒤 openclaw.json을 조입니다. 연결과 권한은 헬프 센터를 보세요.