RL 환경 구축을 위한 오픈 소스 프레임워크 'Seahaven' 공개
요약
본 글은 장시간 구동되는 AI 에이전트를 평가하고 최적화하기 위한 오픈 소스 프레임워크 'Seahaven'을 소개합니다. Seahaven은 실행별 데이터베이스, 고정된 시작 상태, 병렬 인스턴스 등 복잡한 환경 구축 문제를 해결하여 현실적인 평가 환경을 제공합니다. 이는 특히 강화학습(RL)과 에이전트 평가에 필수적이며, 사용자가 자신의 세계 로직만 작성하면 나머지 기반 시설은 프레임워크가 처리하도록 설계되었습니다.
핵심 포인트
- Seahaven은 장시간 구동되는 에이전트의 현실적인 평가 환경을 제공합니다.
- 실행별 데이터베이스와 고정된 시작 상태를 통해 높은 재현성과 격리성을 보장합니다.
- 에이전트가 변경한 모든 '상태 차이(State diffs)'를 기록하여 결과 기반 평가가 가능합니다.
- OpenEnv 호환 및 MCP 지원으로 다양한 도구와 API 통합이 용이합니다.
저는 장시간 구동되는 에이전트를 최적화해 왔습니다. 즉, 프롬프트, 도구(tools), 스킬(skills), 서브에이전트 등을 재작성하고 성능이 더 좋은 변경 사항만 유지하는 작업입니다. 저는 10년 넘게 이 문제에 대해 작업해 왔습니다 (Apple, 저의 스타트업, 그리고 현재 Kiln에서). 가장 어려운 부분은 평가 환경(eval environment)입니다. 현실적인 데이터, 상태를 유지하는 쓰기(stateful writes), 그리고 모든 실행마다 동일한 시작 지점에서 재시작할 수 있어야 합니다. 그래서 저는 Seahaven 프레임워크를 구축했습니다.
프로덕션이나 스테이징 환경으로는 안 됩니다. 공유되기 때문에 초기화가 불가능합니다. 직접 작성한 모의 객체(mocks)는 잘 초기화되지만, 상태를 유지하지 못하고 에이전트를 속일 만큼 현실적이지 않습니다. 그리고 장기적인 작업의 경우, 50턴 분량의 대본을 읽는 것보다 에이전트가 실제로 세상에서 무엇을 변경했는지 평가하는 것이 중요합니다.
저는 몇 가지 일회성 환경을 구축했습니다. 가능하지만 어렵고, 모든 환경은 동일한 계층을 재구축해야 했습니다: 실행별 데이터베이스(database per run), 고정된 시작 상태(frozen starting states), 병렬 인스턴스(parallel instances), 클럭 제어(clock control), 그리고 모든 변경 사항에 대한 로그입니다. 그래서 저는 이 계층 전체를 오픈 소스 프레임워크로 가져왔습니다. 사용자는 자신의 세계에 특화된 로직만 작성하면 되고, Seahaven이 나머지 부분을 처리합니다.
왜냐고요? 평가(evals)와 강화학습 (RL) 모두 같은 것을 필요로 하기 때문입니다: 알려진 시작 상태에서 출발하는 수천 개의 격리된 에이전트 실행, 그리고 그 에이전트가 변경한 것에 대한 평가 말입니다. 저는 주로 Seahaven을 평가를 위한 하네스 최적화에 사용해 왔습니다. 이제 RL 쪽으로 실험을 시작하고 있는데, GRPO로 시도해 본 경험이 있는 분들의 의견을 듣고 싶습니다.
예시 세계: 가짜 Stripe를 가정해 봅시다. Stripe World는 24개의 테이블과 155개의 API 작업을 가지고 있으며, Stripe 자체의 MCP 서버와 동일한 도구를 사용합니다. 또한 Stripe의 REST API도 제공하기 때문에 공식 Stripe SDK가 변경 없이 작동합니다.
Seahaven이 처리하는 것: 실행별 사설 세계(A private world per run): 각 연결은 자신만의 인스턴스를 얻고, 각 인스턴스는 수 밀리초 만에 피처 파일(fixture)에서 복사된 자체 SQLite DB를 갖습니다. 에이전트는 무엇이든 망가뜨릴 수 있습니다. 피처 파일: small_startup이나 big_co와 같이 시작 상태를 고정하고 모든 실행에서 재사용할 수 있게 합니다. 병렬 처리: 프로세스당 수백 개의 인스턴스를 지원합니다.
상태 차이(State diffs): 에이전트가 변경한 모든 행이 기록되므로, 단순히 실행 과정(trace)만 평가하는 것이 아니라 결과를 평가할 수 있습니다. 재현 가능(Reproducible): 동일한 테스트 환경(fixture), 동일한 시계(clock), 동일한 난수 시드(random seed), 동일한 실행으로 같은 결과를 얻을 수 있습니다. 조합 가능(Composable): 사용자의 월드에 Stripe World (또는 다른 모든 월드)를 포함하여 해당 도구와 API를 추가할 수 있습니다. 에이전트 최적화: 코딩 에이전트가 월드를 구축하는 데 필요한 문서, 린터(linter), 테스트를 포함합니다. 루프는 다음과 같이 간단할 수 있습니다: for rollout in range(100): with world.instance("big_co", seed=rollout) as inst: run_agent(inst) # 사용자 에이전트, 사용자 하네스 reward = grade(inst.state()) # 에이전트가 변경한 모든 행 OpenEnv 호환 + MCP + 웹 콘솔: 모든 월드는 OpenEnv 환경이므로 Kiln 자동 최적화, TRL의 OpenEnv 지원 또는 다른 모든 OpenEnv 호환 도구와 작동합니다. 월드를 Hugging Face에 게시할 수 있습니다. seahaven mcp는 모든 MCP 클라이언트에게 월드를 제공하므로, 로컬 모델을 그곳으로 지정할 수 있습니다. seahaven serve에는 웹 콘솔이 있어 브라우저에서 인스턴스를 열고, 도구를 호출하고, 상태를 검사할 수 있습니다. 모든 것은 로컬에서 실행됩니다: Python 3.14+ 및 SQLite, 외부 서비스 불필요. 저는 Kiln에서 이것을 만들었으며, Kiln은 에이전트 하네스를 평가하고 최적화하는 데 이를 사용합니다. 하지만 Seahaven은 독립적으로 작동하며, 사용하기 위해 Kiln이 필요하지 않습니다. Seahaven은 오픈 소스(MIT)입니다. 링크 GitHub의 Seahaven Stripe World 문서 최적화를 위한 Kiln 어떤 월드를 다음에 구축해야 할까요? 질문에 기꺼이 답변해 드리겠습니다. 참고: 저는 videowright라는 저의 또 다른 오픈 소스 프로젝트로 비디오를 제작했습니다. 제출자 /u/davernow [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기