Statewright – AI 에이전트를 안정적으로 만드는 Visual State Machine
Show HN: Statewright – Visual state machines that make AI agents reliable
TL;DR Highlight
AI 에이전트에게 40개 이상의 도구를 주면 오히려 성능이 떨어지는 문제를 State Machine으로 각 단계별 사용 가능한 도구를 제한해 해결하는 오픈소스 프로젝트다. 더 큰 모델 대신 더 작은 문제 공간을 만들어 신뢰성을 높이는 접근이 핵심이다.
Who Should Read
AI 에이전트가 중간에 엉뚱한 도구를 쓰거나 예측 불가능하게 동작해서 골머리를 앓고 있는 백엔드/풀스택 개발자. Claude Code, Cursor 같은 AI 코딩 도구를 워크플로우에 통합하려는 개발자에게 특히 유용하다.
Core Mechanics
- AI 에이전트에 40개 이상의 도구를 한꺼번에 주면 모델이 어디서부터 시작해야 할지 몰라 거의 아무것도 못 하는 문제가 있다. 이 문제의 기존 해결책은 더 큰 모델이나 더 긴 프롬프트였는데, 효과가 제한적이다.
- Statewright의 핵심 아이디어는 '모델을 크게 만드는 대신 문제를 작게 만들자'는 것이다. State Machine(상태 기계)으로 워크플로우를 단계별로 나누고, 각 단계에서 쓸 수 있는 도구를 명시적으로 제한한다.
- 예를 들어 Planning 단계에서는 읽기 전용 도구만 쓸 수 있고, Implementation 단계로 넘어가면 편집 도구가 열리지만 파괴적 명령이나 write-via-redirect는 여전히 차단된다. Testing 단계에서는 지정된 테스트 명령만 허용한다.
- 현재 단계에 없는 도구를 호출하면 거절 메시지와 함께 '지금 사용 가능한 도구가 무엇인지', '다음 단계로 어떻게 전환하는지'를 알려준다. 이게 단순한 차단이 아니라 모델이 맥락을 유지하도록 돕는 역할을 한다.
- 프론티어 모델(GPT, Claude 등)에서는 completion까지 필요한 토큰 수가 줄어드는 효과가 있고, 13B+ 로컬 모델에서는 원래 실패하던 태스크를 성공시키는 효과가 있다고 주장한다.
- 공개된 리서치 결과에 따르면 gemma3(3.3GB)는 버그픽스와 SWE-bench 모두 실패, gemma4:e2b(7.2GB)는 버그픽스는 통과, SWE-bench는 실패였다. 다만 이 실험 코드는 공개되지 않아 재현 검증이 불가능한 상태다.
- Claude Code, Codex, Cursor, opencode, Pi 등 주요 AI 코딩 도구에서 동작하며, Claude Code에서는 `/plugin marketplace add statewright/statewright` 한 줄로 설치 가능하다. Rust로 작성됐고 Apache 2.0 라이선스다.
- 연구 페이지에 특허 출원(#64/054,240, 2026년 4월 30일)이 명시되어 있으며 35개 청구항이 state machine guardrail 관련 내용을 커버한다. 오픈소스 코어 엔진과 특허 대상의 경계가 불명확해 커뮤니티의 우려를 낳고 있다.
Evidence
- 리서치 결과를 로컬에서 재현해보려 했지만 실험 코드가 공개되지 않았다는 지적이 있었다. 연구 페이지에는 특허 언급과 'core engine'이 나오는데, 특허 대상인 'state machine guardrail runtime'과 오픈소스 'core engine'의 차이가 무엇인지 불명확하다는 혼란도 제기됐다.
- 특허 존재 자체가 이 프로젝트를 깊이 살펴보고 싶지 않게 만든다는 의견이 있었다. 아이디어 자체는 흥미롭고 납득이 가는데 특허 때문에 관심을 접게 된다는 반응이 대표적이다.
- 비슷한 접근(티켓팅 시스템 기반 단계별 워크플로우)을 직접 구현해본 개발자가 댓글을 달았는데, Claude Code가 파일 검색에 grep을 쓰는 것이 너무 느리다며 ripgrep 사용을 권고했다. 로컬 도구 속도 문제가 LLM 대기 시간보다 더 체감되는 병목이라는 실사용 경험이었다.
- MCP(Model Context Protocol, 외부 도구를 LLM에 연결하는 프로토콜) 방식으로 API를 제공하는 것이 더 나을 수 있다는 의견이 있었다. MCP 자체가 컨텍스트 사용 최적화에 최선이 아닌데 이를 권장하는 것이 일관성 있냐는 의문이 제기됐다.
- 스마트 모델이 테스트 가능한 단계별 계획을 짜고, 더 저렴한 모델이 구현하고, 또 다른 모델이 각 단계를 리뷰하는 파이프라인을 이미 쓰고 있다는 개발자가 'Rust state engine이 무슨 가치를 추가하냐'고 반문했다. 알고리즘으로 검증 가능한 건 테스트로 충분하고, 애매한 패턴 준수 같은 건 어차피 LLM이 판단해야 하는데 state engine이 그 간극을 메워주는지 모르겠다는 의문이었다.
How to Apply
- Claude Code를 쓰다가 에이전트가 중간에 엉뚱한 파일을 수정하거나 예상 밖의 명령을 실행하는 문제를 겪고 있다면, `/plugin marketplace add statewright/statewright` 후 `/statewright start bugfix`로 bugfix 워크플로우를 실행해 각 단계별 도구 제한이 실제로 에이전트 동작을 얼마나 안정화시키는지 테스트해볼 수 있다.
- 13B 이하 로컬 모델로 코드 수정 태스크를 시도했는데 계속 실패하는 경우, Statewright로 Planning/Implementation/Testing 단계를 분리해 각 단계의 컨텍스트를 줄이면 원래 실패하던 태스크를 성공시킬 수 있다고 주장하므로 시도해볼 가치가 있다.
- 프로덕션 AI 에이전트 파이프라인을 설계 중이라면 Statewright의 state machine 정의 방식을 참고해, 각 단계에서 허용/차단할 도구 목록을 명시적으로 정의하는 아키텍처 패턴을 채택할 수 있다. 특허 이슈가 우려된다면 코드를 직접 참조용으로만 살펴보고 자체 구현하는 방향도 고려할 것.
- Cursor나 Windsurf 같은 AI 코딩 도구를 팀 전체가 사용 중이라면, Statewright가 지원하는 플러그인 방식으로 동일한 워크플로우 정의를 팀 전체에 배포해 에이전트 동작의 일관성을 높이는 용도로 활용할 수 있다.
Code Example
# Claude Code에서 Statewright 설치 및 실행
/plugin marketplace add statewright/statewright
/plugin install statewright
/reload-plugins
# bugfix 워크플로우 시작
/statewright start bugfix
# 각 단계별 동작 예시:
# - Planning 단계: read-only 도구만 허용 (파일 읽기, 검색 등)
# - Implementation 단계: 편집 도구 허용, 단 write-via-redirect 및 파괴적 shell 명령 차단
# - Testing 단계: 지정된 테스트 명령만 허용
#
# 허용되지 않은 도구 호출 시 응답 예시:
# "Tool 'bash' is not available in the current 'planning' state.
# Available tools: [read_file, search_files, list_dir]
# To use bash, transition to 'implementation' state."Terminology
관련 논문
Semble – AI 에이전트용 코드 검색 도구, grep 대비 토큰 98% 절감
AI 에이전트가 코드베이스를 탐색할 때 grep+파일 읽기 대신 자연어로 관련 코드 스니펫만 뽑아주는 검색 라이브러리로, 토큰 사용량을 약 98% 줄여준다.
Zerostack – 순수 Rust로 작성된 Unix 철학 기반 코딩 에이전트
Claude Code나 OpenCode처럼 메모리를 수 GB씩 잡아먹는 코딩 에이전트 대신, Rust로 만든 초경량(~8MB RAM) 코딩 에이전트 Zerostack이 공개됐다. 저사양 환경에서도 쓸 수 있고, 직접 만든 유사 프로젝트들과 비교 토론이 활발하게 이뤄지고 있다.
Δ-Mem: LLM을 위한 효율적인 온라인 메모리 메커니즘
LLM의 컨텍스트 윈도우를 늘리지 않고도 과거 정보를 효율적으로 기억할 수 있는 경량 메모리 모듈 δ-mem을 제안한 논문. 모델 자체를 바꾸거나 파인튜닝 없이 기존 LLM에 붙여서 장기 기억 성능을 높일 수 있어 에이전트 시스템 개발자에게 관심을 끌고 있다.
대규모 코드베이스에서 Claude Code가 동작하는 방식: 모범 사례와 시작점
Anthropic이 수백만 줄짜리 모노레포, 레거시 시스템, 수십 개 마이크로서비스 환경에서 Claude Code를 운영한 패턴을 정리한 글이다. RAG 방식 대신 에이전틱 검색을 쓰는 이유와 실제 현장의 한계를 함께 확인할 수 있다.
Needle: Gemini의 Tool Calling 능력을 26M 파라미터 모델로 증류
Gemini의 함수 호출(tool calling) 능력만 뽑아서 26M(2600만) 파라미터짜리 초경량 모델로 만든 프로젝트로, 폰/워치/스마트글라스 같은 엣지 디바이스에서 직접 실행 가능하다.
메인프레임과 COBOL을 위한 Agentic 개발 환경 'Hopper'
수십 년 된 메인프레임(z/OS) 환경을 AI 에이전트로 조작할 수 있게 해주는 개발 도구로, COBOL 코드 작성부터 JCL 실행, 디버깅까지 자연어로 처리할 수 있어 레거시 시스템 유지보수 비용을 크게 줄일 수 있다.