에이전트한테 도구를 많이 줄수록 더 잘할 것 같잖아요. 근데 현실은 정반대였어요. 단계마다 쓸 수 있는 도구를 물리적으로 제한했더니, 13B짜리 작은 모델이 자유로운 대형 모델을 이겼어요.

3초 요약
에이전트 실수 원인 파악 단계(State) 정의 도구 접근 물리적 제한 소형 모델로 대형 모델 성능 비용 최대 80% 절감

에이전트는 왜 자꾸 실수하는 건데?

코딩 에이전트를 써봤다면 아실 거예요. 잘 될 때는 진짜 잘 되는데, 한번 삐끗하면 완전히 딴 방향으로 가버리거든요. 이게 단순히 모델이 덜 똑똑해서 생기는 문제일까요?

AI 연구자 Chip Huyen이 이 문제를 수학적으로 분석했는데요. 에이전트가 각 단계에서 95% 정확도를 유지한다고 해도, 10단계가 쌓이면 전체 성공률은 60%로 떨어지고, 100단계면 0.6%까지 곤두박질쳐요. 단계가 늘어날수록 오류가 기하급수적으로 쌓이는 구조인 거예요.

Anthropic도 이 문제를 직접 인정했어요. "에이전트의 자율적 특성은 더 높은 비용과 오류 누적의 위험성을 만든다"고요. 그래서 대부분의 솔루션은 이렇게 반응해요 — 더 큰 모델을 써라, 컨텍스트 창을 늘려라. Statewright는 정반대 방향으로 걷고 있어요. 더 작은 문제 공간을 만들어라.

핵심 아이디어는 단순해요. 에이전트가 어떤 단계(State)에 있는지에 따라, 접근할 수 있는 도구를 물리적으로 제한하는 거예요. 계획 단계에서는 읽기 전용 도구만, 구현 단계에서는 편집 도구만, 테스트 단계에서는 bash 명령만. 프롬프트로 "이렇게 해줘"라고 부탁하는 게 아니라, 프로토콜 레벨에서 물리적으로 차단하는 거예요.

핵심 개념: "에이전트는 제안이고, 상태는 법이다"

Statewright 창시자 Ben Cochran의 말이에요. 모델이 상태 규칙을 무시하고 엉뚱한 도구를 쓰려 하면, 프롬프트로 막는 게 아니라 프로토콜 자체가 거부해요. 권고가 아닌 구조적 강제예요.

뭐가 얼마나 달라지는 건데?

이미 비슷한 걸 하는 도구들이 있잖아요 — LangGraph, XState, Claude Code. 어떻게 다른지 봐볼게요.

기존 프레임워크Statewright
도구 접근 제어프롬프트 기반 권고상태 머신 물리적 강제
규칙 위반 시모델이 무시 가능프로토콜 레벨 차단
모델 라우팅수동 설정단계별 자동 라우팅
입력 토큰 최적화전체 도구 목록 노출현재 상태 도구만
비용 절감 가능성멀티페이즈 기준 최대 80%

LangGraph는 에이전트를 그래프 노드로 연결해서 전문화된 역할을 맡기는 방식이에요. 전문화가 성능을 높인다는 철학은 비슷한데, LangGraph는 "어떤 도구를 써야 한다"는 걸 프롬프트로 안내할 뿐 물리적으로 막지는 않아요. Claude Code와 비교하면 더 재밌는데요 — Claude Code는 작업 시작 시 35,000토큰 이상의 컨텍스트로 출발해요. Statewright는 현재 상태에서 필요한 도구만 노출하니까, 입력 토큰이 대폭 줄어들고 캐시 효율도 올라가요.

그리고 가장 반직관적인 결과가 이거예요. 13B 파라미터 이상 모델이라면, 자유롭게 돌리는 대형 모델보다 Statewright로 제약된 작은 모델이 일관되게 더 좋은 성과를 냈어요. Qwen-coder, GPT-OSS, Gemma4는 물론 Haiku, Sonnet, Opus까지 여러 모델 패밀리에서 동일한 패턴이 확인됐다고 해요. 같은 시기에 유사한 접근을 한 Forge라는 프로젝트도 공개됐는데, 두 프로젝트가 독립적으로 같은 결론에 도달했다는 게 이 방향이 틀리지 않았다는 신호 같아요.

핵심만 정리: 시작하는 법

  1. 설치 — MCP 통합으로 에디터에 연결
    Claude Code, Codex, Oh-My-Codex 등 MCP 지원 에디터에서 Statewright 플러그인을 설치해요. 핵심 엔진과 에이전트 크레이트는 Apache 2.0 오픈소스라 무료로 사용할 수 있어요.
  2. 워크플로우 상태 정의
    YAML이나 JSON으로 상태(state)와 전환(transition) 조건을 정의해요. "planning → implementation → testing"처럼 단계를 명시하고, 각 단계의 가드(guard) 조건을 설정해요.
  3. 도구 접근 권한 할당
    각 상태에 허용할 도구를 지정해요. planning 상태에는 파일 읽기만, implementation에는 편집 도구까지, testing에는 bash 실행만. 이 제약은 프로토콜 레벨에서 강제돼요 — 프롬프트 부탁이 아니에요.
  4. 단계별 모델 라우팅 설정 (선택)
    비용을 줄이고 싶다면, 계획 단계는 Haiku, 구현 단계는 Sonnet, 검토 단계는 Opus로 자동 라우팅하도록 설정해요. 멀티페이즈 워크플로우에서 최대 80% 비용 절감이 가능해요.
  5. 실행 및 감사 로그 확인
    Statewright는 모든 상태 전환과 도구 접근 시도를 로그로 남겨요. 어떤 단계에서 어떤 시도가 차단됐는지 완전히 추적 가능해서 SOC 2 같은 감사 요구사항에도 대응할 수 있어요.
~80%
멀티페이즈 워크플로우 비용 절감 (단계별 모델 라우팅 적용 시)
13B+
이 파라미터 이상이면 대형 모델 대비 일관된 성능 개선 확인
Apache 2.0
핵심 엔진 + 에이전트 크레이트 라이선스 (완전 오픈소스)