Statewright: AI 에이전트에 결정론적 가드레일 도입하기
AI 에이전트는 종종 강력하지만 취약하다고 묘사됩니다. 방대한 도구 세트와 개방형 목표가 주어지면, 가장 진보된 모델조차도 같은 파일을 반복적으로 분석하며 아무런 조치도 취하지 못하는 "read-loop death spirals"에 빠지는 등 어려움을 겪을 수 있습니다. 업계의 기본 대응은 대개 더 큰 모델을 배포하거나 더 긴 시스템 프롬프트를 작성하는 것이었지만, 이는 프로덕션 수준의 신뢰성을 보장하기에는 종종 불충분합니다.
Statewright는 다른 철학을 도입합니다: "에이전트는 제안일 뿐이며, 상태는 법이다." 모델을 더 똑똑하게 만들려고 시도하는 대신, Statewright는 워크플로우의 특정 단계에서 에이전트가 어떤 도구에 접근할 수 있는지를 엄격하게 제어하는 상태 머신 가드레일을 구현함으로써 문제를 더 작게 만듭니다.
핵심 접근 방식: 솔루션 공간의 제약
Statewright의 핵심은 상태 머신 정의를 평가하는 결정론적인 Rust 엔진입니다. 상태를 관리하기 위해 LLM을 사용하지 않고, 대신 프로토콜 계층의 게이트키퍼 역할을 합니다. 도구 및 솔루션 공간을 제약함으로써, 모델은 각 단계에서 집중된 컨텍스트 내에서 추론하도록 강제됩니다.
예를 들어, 일반적인 버그 수정 워크플로우는 다음과 같이 몇 가지 별개의 상태로 나눌 수 있습니다:
- Planning: 에이전트에게 읽기 전용 도구(예:
Read,Grep,Glob)가 부여됩니다. 코드를 수정할 수 없으므로, 수정을 시도하기 전에 문제를 완전히 이해했는지 확인할 수 있습니다. - Implementing: 에이전트가 이 상태로 전환되면 편집 도구가 잠금 해제됩니다. 그러나 Statewright는 파괴적인 셸 명령(예:
rm또는shred)을 차단하거나 상태당 편집할 수 있는 라인 수를 제한하는 등의 추가 제약을 적용할 수 있습니다. - Testing: 지정된 테스트 명령(예:
pytest또는npm test)만 허용됩니다. 에이전트가 현재 단계에서 허용되지 않은 도구를 사용하려고 시도하면, 요청은 사용 가능한 도구와 전환 방법에에 대한 설명이 담긴 메시지와 함께 거부됩니다.
모델 성능의 측정 가능한 이득
Statewright의 가장 매력적인 측면 중 하나는 소규모 로컬 모델에 미치는 영향입니다. 개발자들이 수행한 연구에에 따라, 제약 조건은 복잡한 작업을 완료하는 데 필요한 "intelligence floor"를 크게 낮춥니다.
SWE-bench 벤치마크의 5개 작업 하위 집합에서, 두 모델(13.8GB에서 19.9GB 범위)은 Statewright 제약 조건을 사용할 때 성공률이 2/10에서 10/10으로 급증했습니다. 13GB 미만의 모델은 여전히 파일 내용 유지 능력의 한계(상태 머신 제약이 아닌 하드웨어/모델의 한계)로 인해 어려움을 겪지만, 결과는 구조적 제약이 중간 크기의 로컬 모델을 특정 워크플로우에 대해 프론티어 모델처럼 작동하게 만들 수 있음을 시사합니다.
프론티어 모델의 경우, 이점은 기본적인 능력보다는 효율성에 있습니다. 사용 가능한 도구를 30개 이상에서 소수의 도구로 줄임으로써, Statewright는 토큰 사용량을 줄이고 모델이 "flailing"하거나 반복적인 루프에 빠지는 것을 방지합니다.
기술적 구현 및 가드레일
Statewright는 Model Context Protocol (MCP) 또는 특정 플러그인 훅을 통해 에이전트와 통합됩니다. 강제 적용 수준은 에이전트마다 다릅니다:
- Hard Enforcement: Claude Code와 같은 에이전트에서는 도구 호출이 모델이 확인하기 전에 프로토콜 계층에서 차단됩니다.
- Advisory Enforcement: Cursor와 같은 에이전트에서는 규칙이 컨텍스트에 주입되지만, 아키텍처상 프로토콜 계층의 강력한 게이트잉을 허용하지 않습니다.
주요 가드레일 기능
| Guardrail | Function |
|---|---|
| Per-state tool enforcement | 도구가 allowed_tools 목록에 있지 않으면 에이전트에게 보이지 않습니다. |
| Bash discernment | 읽기 전용 상태에서 리다이렉션(>>) 및 파괴적인 작업을 차단합니다. |
| Edit guards | max_edit_lines 및 상태당 편집할 수 있는 파일 수를 제한합니다. |
| Conditional transitions | 프로그래밍 방식의 서술어(예: eq, gt)를 사용하여 상태 변화를 트리거합니다. |
| Approval gates | 고위험 전환 전에 인간의 검토를를 위해 실행을 일시 중지합니다. |
사용자 정의 워크플로우 정의
워크플로우는 JSON schema를 사용하여 정의되며, 개발자는 단순한 Directed Acyclic Graphs (DAGs) 대신 루프가 포함된 반복 프로세스를 생성할 수 있습니다. 이는 에이전트의 작업이 선형적이지 않기 때문입니다 매우 중요합니다. 에이전트의 작업은 종종 실패한 테스트를 재시도하거나 구현이 실패한 후 계획 단계로 돌아가는 것을 요구합니다.
개발자는 이러한 워크플로우를 직접 작성하거나, 시각적 에디터를 사용하거나, 심지어 에이전트가 statewright_create_workflow 도구를 통해 워크플로우 정의를 생성하도록 할 수 있습니다.
트레이드오프 및 고려 사항
Statewright는 상당한 신뢰성 향상을 제공하지만, 트레이드오프가 없는 것은 아닙니다. 시스템이 작동하려면 MCP 지원(또는 특정 훅)이 필요합니다. 또한, 워크플로우가 너무 제한적으로 정의되면 에이전트가 갇힐 수 있으므로, unconstrained 상태로 돌아가기 위한 statewright_deactivate 탈출구를 사용해야 할 수 있습니다.
모델 크기에 집중하는 대신 구조적 제약에 집중함으로써, Statewright는 AI 에이전트를 예측 가능하고, 검증 가능하며, 무엇보다도 자율적인 소프트웨어 엔지니어링 작업을 수행하기에 충분히 신뢰할 수 있게 만드는 프레임워크를를 제공합니다.