# 에이전트가 실행하는 모델을 고정하세요 — 계획은 하나, 실행은 다른 하나

> 에이전트 실행에 특정 모델을 강제하고 계획 모드와 실행을 분리합니다: 인그레스 허용 목록 + 포괄 모델 매핑 + 계획 모드 스크립트 전환으로 개발자가 단순 작업을 Opus로 라우팅하지 못하게 합니다.

표준 링크: https://www.gatellm.io/ko/use-cases/enforce-model-policy/

클라이언트 측 모델 선택을 무력화한 뒤 계획 모드와 실행을 분리해, 강한 모델이 계획하고 저렴한 모델이 실행하게 합니다.

## 커뮤니티가 실제로 불평하는 것
"우리 개발자들이 변경 로그를 요약하려고 Claude Code를 Opus로 바꾼다", "모두가 설정에 다른 모델을 넣어 누가 얼마를 썼는지 볼 수 없다", "클라이언트 측 정책을 시도했지만 누구나 되돌릴 수 있다".
모델 선택은 개발자 취향이 아니라 비용 결정입니다 — 요청이 실제로 도착하는 게이트웨이에서 강제해야 합니다.

## GateLLM은 이렇게 합니다
건너뛸 수 없는 세 계층: 키 그룹의 models 허용 목록(인그레스 게이트)이 승인되지 않은 모델 이름을 403으로 거부하고, "*"에서 시작하는 포괄 모델 매핑이 클라이언트가 요청한 이름을 승인된 모델로 재작성하며, before 슬롯 스크립트가 계획 모드에서는 강한 모델을 유지하고 종료 시 실행 모델로 전환합니다.
Claude Code의 대화 제목 생성 같은 우회 요청은 계획 마커가 없으므로 저렴한 실행 모델로 떨어집니다. 그것이 바로 "요약에 Opus를 돌리지 말라"는 원하던 동작입니다.

## 실제로 효과가 있는 5가지 레버
- 인그레스 게이트: 키 그룹의 models 허용 목록이 라우팅 전에 승인되지 않은 모델 이름을 거부
- 포괄 매핑: "*" → 승인된 모델로 모든 요청 이름을 하나의 모델로 정규화
- 계획/실행 분리: before 슬롯 스크립트가 계획 모드 마커를 읽고 계획 종료 후에만 라우팅 전환
- 관찰 가능: 전환된 요청은 로그에 SW 태그가 붙어 모든 요청의 실제 도착 모델을 감사 가능
- 핫 리로드: 매핑과 규칙이 즉시 적용 — 재시작도, 개발자별 배포도 없음

## FAQ
### 계획 모드에 선언적 switch-route 규칙을 쓰면 안 되나요?
switch-route 술어는 구조적 존재와 작은 값의 동등 비교만 수행합니다 — 문자열 값의 내용은 읽지 않으며, 그것이 큰 본문을 디스크에 두는 이유입니다. 계획 모드 마커는 메시지 텍스트에 있으므로 before 슬롯 스크립트가 필요합니다. 구조적 검사(이미지 → 비전 모델)가 switch-route의 강점입니다.

### 클라이언트가 자기 설정을 바꿔 여전히 Opus를 고를 수 있나요?
아니요. 인그레스 게이트가 허용 목록 밖의 모델 이름을 403으로 거부하고, 포괄 매핑이 남은 이름을 승인된 모델로 정규화합니다. 요청이 게이트웨이에 도달하는 순간 모델 선택은 더 이상 클라이언트 결정이 아닙니다.

### 스크립트가 효과가 없고 로그에도 오류가 없나요?
각 스크립트는 64MB 힙 상한(SCRIPT_MEMORY_LIMIT_MB)이 있는 자체 QuickJS 샌드박스에서 실행됩니다. 메모리 부족 시 기본 log-and-continue 모드가 useModel을 포함한 모든 부수 효과를 조용히 버리므로 라우팅이 전환되지 않습니다. Claude Code의 도구 정의가 메모리를 먼저 소비하니 한도를 높이세요(재시작 필요).

- [전체 방법: 계획 모드 모델 전환(문서)](https://docs.gatellm.io/en/howto/script-switch-model-by-plan-mode)

## 관련 활용 사례
- [클라이언트에서 모델 선택 없음: 게이트웨이가 자동으로 계층화](https://www.gatellm.io/ko/use-cases/automatic-model-tiering.md)

## 관련 페이지
- [홈](https://www.gatellm.io/ko/index.md)
- [요금](https://www.gatellm.io/ko/pricing.md)
- [비용 계산기](https://www.gatellm.io/ko/calculator.md)
- [소개](https://www.gatellm.io/ko/about.md)
- [데모 예약](https://www.gatellm.io/ko/demo.md)
- [FAQ](https://www.gatellm.io/ko/faq.md)
- [AI 게이트웨이 비교](https://www.gatellm.io/ko/compare.md)
- [LiteLLM 비교](https://www.gatellm.io/ko/compare/litellm.md)
- [OpenRouter 비교](https://www.gatellm.io/ko/compare/openrouter.md)
- [Alibaba Cloud AI Gateway 비교](https://www.gatellm.io/ko/compare/alibaba-cloud.md)
- [Azure API Management 비교](https://www.gatellm.io/ko/compare/azure-apim.md)
- [Apigee 비교](https://www.gatellm.io/ko/compare/apigee.md)
- [Cloudflare AI Gateway 비교](https://www.gatellm.io/ko/compare/cloudflare.md)
- [Kong AI Gateway 비교](https://www.gatellm.io/ko/compare/kong.md)
- [Portkey 비교](https://www.gatellm.io/ko/compare/portkey.md)
- [LiteLLM vs Kong AI Gateway](https://www.gatellm.io/ko/compare/litellm-vs-kong.md)
- [LiteLLM vs OpenRouter](https://www.gatellm.io/ko/compare/litellm-vs-openrouter.md)
- [LiteLLM vs Portkey](https://www.gatellm.io/ko/compare/litellm-vs-portkey.md)
- [사용 사례](https://www.gatellm.io/ko/use-cases.md)
- [LLM 비용 절감](https://www.gatellm.io/ko/use-cases/reduce-cost.md)
- [고가용성](https://www.gatellm.io/ko/use-cases/high-availability.md)
- [멀티테넌트 격리](https://www.gatellm.io/ko/use-cases/multi-tenant.md)
- [컴플라이언스 및 감사](https://www.gatellm.io/ko/use-cases/compliance-audit.md)
- [증상별 트러블슈팅](https://www.gatellm.io/ko/use-cases/troubleshooting.md)
- [다중 벤더 혼합 모델 스택](https://www.gatellm.io/ko/use-cases/mixed-model-stack.md)
- [Office 내 AI 셀프 호스팅](https://www.gatellm.io/ko/use-cases/self-hosted-office-ai.md)
- [Token 사용량 가시성 및 귀속](https://www.gatellm.io/ko/use-cases/token-ops.md)
- [Token FinOps: AI 비용 배분 및 통제](https://www.gatellm.io/ko/use-cases/token-finops.md)
- [MCP 도구 거버넌스](https://www.gatellm.io/ko/use-cases/mcp-tool-governance.md)
- [모든 모델에 웹 검색 추가](https://www.gatellm.io/ko/use-cases/web-search-grounding.md)
- [다중 키 로테이션 및 대기](https://www.gatellm.io/ko/use-cases/multi-key-pooling.md)
- [연결 클라이언트 접근 제어](https://www.gatellm.io/ko/use-cases/client-admission-control.md)
- [클라이언트에 모델 선택 비노출](https://www.gatellm.io/ko/use-cases/automatic-model-tiering.md)
- [하나의 프로토콜, 어떤 모델이든](https://www.gatellm.io/ko/use-cases/one-protocol-any-model.md)
- [Office / Microsoft 365 추가 기능](https://www.gatellm.io/ko/office-addin.md)
- [용어집](https://www.gatellm.io/ko/glossary.md)
- [모델 카탈로그](https://www.gatellm.io/ko/models.md)
- [SDK 및 프레임워크 통합](https://www.gatellm.io/ko/integrations.md)
- [AI 코딩 에이전트 및 하네스](https://www.gatellm.io/ko/coding-agents.md)
- [보안 및 컴플라이언스](https://www.gatellm.io/ko/security.md)
