Pattern Skills

reopt-cost-control

비용 통제

토큰 예산·모델 선택·호출 빈도를 구조적으로 관리해 비용을 통제한다.

OCLS LAYER

설치

cp skills/patterns/reopt-cost-control/SKILL.md <your-project>/.claude/skills/reopt-cost-control/SKILL.md

이 레포의 파일을 당신의 프로젝트에 복사하면 Claude Code 세션에서 바로 활성화된다.

markdownskills/patterns/reopt-cost-control/SKILL.md
---
name: reopt-cost-control
description: Setting per-agent and per-module cost ceilings, model routing (high-risk = strong model, low-risk = lightweight), token budget management. When cost is unpredictable or spiking.
---

# 비용 통제 (Cost Control)

OCLS 단계: **LAYER** · 토큰 예산·모델 선택·호출 빈도를 구조적으로 관리해 비용 곡선을 통제한다.

## 핵심 규칙

- **경로 기반 모델 선택**: 고위험 판단 경로에는 강한 모델을, 분류·필터 같은 저위험 경로에는 경량 모델을 둔다.
- **에이전트별 예산 할당**: 에이전트와 모듈마다 토큰 예산을 부여하고 사용량을 실시간 추적한다. 예산이 소진되면 경량 모델로 폴백하거나 인간에게 에스컬레이션한다.
- **캐싱·배치 전략**: 반복되는 입력 패턴은 결과를 캐싱하고, 비동기 가능한 작업은 배치 처리한다.
- 비용 데이터는 OCLS SHARPEN 루프의 주요 입력이다. 비용 이상 시 모델 배정과 예산 경계를 재조정한다.

## 판단 질문

**이 추론 단계에 정말 이 모델이 필요한가?**

## 적용 체크

1. 경로별 모델 배정이 선언되어 있는가?
2. 에이전트와 모듈별 토큰 예산이 설정되어 있는가?
3. 캐시 정책(무엇을, 얼마 동안 캐시할지)이 정의되어 있는가?
4. 예산 소진 시의 폴백 경로가 있는가?

## 코드 예시

```typescript
// 경로 기반 모델 라우팅
type Risk = "high" | "medium" | "low";

function selectModel(route: { risk: Risk }): string {
  if (route.risk === "high") return "claude-opus-4-7";     // 법률, 결제, 보안
  if (route.risk === "medium") return "claude-sonnet-4-6"; // 응답 생성
  return "claude-haiku-4-5";                               // 분류, 필터
}

// 에이전트별 예산 + 폴백
class BudgetedAgent {
  private used = 0;
  constructor(private budget: number, private llm: LLMClient) {}

  async call(input: Input): Promise<Output> {
    if (this.used > this.budget * 0.8) {
      return this.fallback(input); // 80% 시점부터 경량 모델로 폴백
    }
    const model = selectModel(input.route);
    const r = await this.llm.call(model, input);
    this.used += r.tokensUsed;
    return r;
  }

  private async fallback(input: Input) {
    return this.llm.call("claude-haiku-4-5", input);
  }
}

// 캐시 — TTL 안에서 동일 입력 패턴을 재사용
const cacheKey = hash(input);
const cached = await cache.get(cacheKey);
if (cached && !cached.expired) return cached.result;
```

## 안티패턴

**고객 응대**: 비용 추적 없이 운영하면 "이번 달 지출이 왜 두 배인지" 답할 수 없다. 모든 에이전트가 같은 모델을 쓰면 단순 분류에도 비싼 추론을 태운다. 예산 상한이 없으면 트래픽 급증이 곧 무한 비용이 된다.

**검색/RAG 시스템**: 매 질의마다 임베딩을 재계산하면 비용이 선형으로 증가한다. 자주 사용되는 질의·문서의 임베딩을 캐시하고 무효화 규칙을 추가해 변경된 문서만 재처리하라.

## 호출 예시

```
"지금 모든 에이전트가 같은 강한 모델을 써서 월간 비용이 예산의 3배다.
reopt-cost-control을 적용해줘: Intake는 경량 모델, Response는 강한 모델을
유지, 에이전트별 토큰 예산과 80% 시점 폴백 경로를 추가해줘."
```

## 관련 패턴

- 모듈 계약 — 모듈별 비용 데이터를 계약에 선언
- 평가와 가드레일 — 품질 손실 없이 비용 최적화

연결된 패턴

Cost Control비용 통제 — 토큰 예산, 모델 선택, 호출 빈도를 구조적으로 관리하여 비용 곡선을 통제한다.