EnvHarness - Awakening Static Worlds for Agent Learning

🏷️ 논문 에이전트 강화학습 LLM

C. Huang, Z. Wang, R. Han, J. Yan, et al., "EnvHarness: Awakening Static Worlds for Agent Learning," arXiv:2608.19880, 2026.

에이전트 하네스라는 말은 이제 익숙합니다. 얼려둔 LLM에 도구와 메모리와 스킬을 붙여 자율 에이전트로 만드는 소프트웨어 층입니다. 가중치는 건드리지 않고 바깥에 부품을 끼워 능력을 늘립니다.

이 논문은 같은 발상을 반대편에 적용합니다. 에이전트-환경 루프에서 지금까지 손대지 않던 쪽, 즉 환경에 하네스를 씌웁니다.

envharness-overview.png

저자

1저자 Chengsong Huang은 워싱턴대학교 세인트루이스 박사과정 학생이고, 이 연구는 Google Cloud AI Research 인턴십 기간에 수행됐습니다. 그가 이전에 낸 것들을 보면 이 논문의 위치가 분명해집니다. R-Zero는 두 모델이 서로를 밀어붙이며 라벨 없이 추론을 학습하게 했고, G-Zero는 그것을 개방형 생성으로, VisPlay는 비전언어모델로 넓혔습니다. 전부 "사람이 만든 감독 없이 학습 신호를 어디서 얻을 것인가"라는 한 가지 질문의 변주입니다.

EnvHarness는 그 계보에서 방향을 한 번 틉니다. 앞선 작업들이 모델을 진화시켰다면 여기서는 모델을 얼려두고 환경을 진화시킵니다. 지도 교수 Jiaxin Huang의 연구실이 오래 붙들어온 라벨 효율 문제가 환경 쪽으로 옮겨 앉은 형태입니다.

구글 쪽에서는 교신저자 Chen-Yu LeeTomas Pfister가 참여했습니다. 두 사람은 Chain-of-Table, Distilling Step-by-Step처럼 대형 모델을 실제 제품 조건에 앉히는 연구를 함께 해왔습니다. 총 17명이 워싱턴대 세인트루이스, Google Cloud AI Research, 노스캐롤라이나대 채플힐에 걸쳐 참여했습니다.

배경

에이전트 학습의 재료가 텍스트 코퍼스에서 상호작용 환경으로 옮겨가면서 병목도 옮겨갔습니다. 환경은 사람이 상호작용 로직과 검증기를 손으로 짜야 만들어집니다. 그래서 비쌉니다.

비싼 것보다 나쁜 성질이 하나 더 있습니다. 정적이라는 점입니다. 환경은 어떤 에이전트가 들어오든, 그 에이전트가 얼마나 성장했든 똑같이 반응합니다. 여기서 두 가지 손실이 발생합니다. 첫째, 특정 에이전트의 약점을 겨냥한 신호를 줄 수 없습니다. 둘째, 에이전트가 그 환경의 과제를 다 풀고 나면 더 가르칠 것이 남지 않습니다.

그래서 환경을 자동 생성하는 연구 갈래가 커졌습니다. 이 접근에는 두 가지 문제가 따라붙습니다. 하나는 생성 파이프라인이 본질적으로 도메인 전용이라는 점입니다. 웹 탐색용으로 만든 파이프라인은 프로그래밍으로 옮겨가지 않습니다. 다른 하나는 정확성입니다. 환경과 검증기를 LLM이 만들기 때문에 과잉 생성한 뒤 대량으로 걸러내야 하고, 그러고도 정확성을 보장하지 못합니다.

EnvHarness의 출발점은 여기입니다. 새 환경을 만드는 대신 있는 환경을 감쌉니다. 논문의 표현으로는 환경 구축을 저술(authoring) 문제가 아니라 포장(wrapping) 문제로 재정의하는 것입니다.

무엇을 끼우나

환경을 튜플 \(E = (\mathcal{S}, \mathcal{A}, \mathcal{O}, T, R, s_0)\)로 모델링합니다. 각각 상태 공간, 행동 공간, 관측 공간, 전이 함수 \(T: \mathcal{S} \times \mathcal{A} \to \mathcal{S}\), 검증기가 유도하는 보상, 초기 상태입니다. EnvHarness 부품은 환경에 무관한 변환 \(w\)입니다.

\[E' = w(E), \qquad E' = (\mathcal{S}', \mathcal{A}', \mathcal{O}', T', R', s_0')\]

핵심 제약은 \(w\)가 인터페이스 수준에서만 작동한다는 것입니다. 시뮬레이터 백엔드나 구현 세부는 건드리지 않습니다. 개입이 전부 바깥에 머물기 때문에 원래 환경의 정답 채점 로직이 그대로 보존됩니다.

envharness-components.png

부품은 세 종류입니다. 논문은 ALFWorld의 "깨끗한 머그컵을 책상에 올려라" 과제 하나로 셋을 모두 설명합니다. 기본 인스턴스에서는 머그컵이 훤히 보이는 곳에 있고, 올려놓는 순간 에피소드가 끝납니다.

Stage는 초기 상태를 바꿉니다. 상태 조작 행동열 \(\delta = (a_1, \ldots, a_k)\)로 지정되며, reset()이 만든 \(s_0\)에 이 행동들을 적용합니다.

\[s_0' = T(\cdots T(T(s_0, a_1), a_2) \cdots, a_k)\]

예시 Stage는 머그컵을 집어 서랍에 넣고 서랍을 닫습니다. 컵이 사라지므로 에이전트는 손을 뻗는 대신 먼저 찾아야 합니다. 반대 방향도 됩니다. 미리 컵을 씻어두면 마지막 배치 단계만 남아 과제가 짧아집니다.

Contract는 상호작용을 다시 씁니다. 변환 삼중쌍 \(r = (f_A, f_T, f_O)\)로 지정되며 각각 항등 함수가 기본값입니다.

\[(\mathcal{A}', \mathcal{O}', T') = \big(f_A(\mathcal{A}),\, f_O(\mathcal{O}),\, f_T(T)\big)\]

\(f_O\)로 방 설명을 앞 두 문장에서 잘라내면 에이전트는 공간 표상을 여러 스텝에 걸쳐 쌓아야 합니다. \(f_T\)로 컵을 들고 있지 않을 때 씻기 행동을 막으면 반드시 먼저 집게 됩니다. \(f_A\)로 고수준 순간이동 명령을 없애면 한 칸씩 움직여 탐색해야 합니다.

Chain은 환경을 잇습니다. 추가 환경 \(E_{\text{ext}}\)와 합성 로직 \(g\)의 쌍으로 지정됩니다.

\[E' = g(E, E_{\text{ext}})\]

새 공간은 두 환경의 합집합이고 \(R'\)가 새 복합 보상이 됩니다. 예시에서는 같은 집에서 "감자를 데워 조리대에 올려라"를 뒤에 붙이고, 둘 다 검증을 통과해야 성공으로 처리합니다. 에이전트는 원래 멈췄을 지점을 지나 목표를 이어가는 법을 배워야 합니다.

세 부품은 인터페이스를 공유하므로 자유롭게 합성됩니다.

\[E' = w_{\text{chain},\ell}\Big(w_{\text{contract},r}\big(w_{\text{stage},\delta}(E)\big)\Big)\]

다만 교환법칙이 성립하지 않습니다. \(w_1 \circ w_2 \neq w_2 \circ w_1\)이며, 중첩 순서가 초기화 시점에 걸리는 제약과 상호작용 중에 걸리는 제약을 갈라놓습니다.

어떻게 자동화했나

부품 자체는 정책에 무관합니다. 하지만 어떤 부품을 어떤 파라미터로 고를지는 과제 \(t\)와 정책 \(\pi\)의 관측된 행동에 따라 달라져야 합니다. 이 과제-정책 조건부 사상을 \(\mathcal{H}\)로 둡니다.

\[E' = \mathcal{H}(E, t; \pi) = (w_k \circ w_{k-1} \circ \cdots \circ w_1)(E)\]

EnvRigger가 이 \(\mathcal{H}\)를 실현합니다. 정책 내부 가중치를 들여다보지 않고 출력만 봅니다.

envharness-envrigger.png

네 단계로 돕니다.

관찰. 기본 환경에서 정책을 과제당 5회 롤아웃해 궤적을 모읍니다. 실패는 고쳐야 할 약점을 드러내고, 성공은 그 약점의 경계를 그어줍니다. 어디까지는 멀쩡하고 어디서부터 무너지는지가 성공 궤적에서 나옵니다.

진단. 반복 행동 루프, 긴 관측 파싱 실패, 도구 제약 오독 같은 체계적 문제를 찾습니다. 여기서 방향도 정해집니다. 정책이 헤매고 있으면 빠진 단계를 받쳐주고 과제를 쉽게 만듭니다. 반대로 성공률이 만점이면 환경이 너무 무르다는 뜻이므로 어렵게 만들어 남은 약점을 드러냅니다.

작성. 진단을 겨냥한 부품을 씁니다. 약점 하나에 여러 부품이 필요할 수 있어 후보 집합으로 함께 냅니다. 논문이 든 예시가 명확합니다. 정책이 테스트를 돌리지 않고 패치를 제출한다는 진단이 나오면, 테스트 실행 여부를 env_state에 기록해뒀다가 기록이 없으면 제출을 막는 Contract를 짜냅니다. 여기서 나온 궤적에서 "수정 전후로 테스트를 돌려 확인한다"는 스킬이 증류됩니다.

검증. 후보로 환경을 감싸고 새 롤아웃 5회를 돌립니다. 성공률과 실패 분포를 보고 셋 중 하나를 고릅니다. 받아들이거나, 풀 수 없거나 도전적이지 않으면 물리거나, 신호 크기가 어긋나면 다듬습니다. 다듬기는 작성 단계로 되돌아가 최대 5회까지 반복합니다.

중요한 설계 선택이 하나 있습니다. EnvRigger와 정책이 같은 백본을 씁니다. ALFWorld와 WebArena는 Gemini 3.1 Flash-Lite, 나머지는 Gemini 3.5 Flash입니다. 더 강한 외부 모델을 증류해서 성능이 오른 것이 아니라는 점을 확실히 하기 위한 통제입니다.

결과

스킬 기반 학습이 주 실험입니다. EnvRigger가 만든 환경에서 궤적을 모아 ReasoningBank 방식으로 스킬을 뽑고, 스킬을 장착한 정책을 held-out 인스턴스에서 평가합니다. Chain은 결합된 환경의 내부 상태를 EnvRigger가 관측하기 어려워 자동 파이프라인에서 제외하고 따로 분석했습니다.

스킬 출처

ALFWorld In-Dist

ALFWorld OOD

ALFWorld 평균

WebArena 평균

스킬 없음

62.6

60.7

61.7

38.7

원본 환경

63.3

61.4

62.4

38.5

GenEnv

63.3

61.9

62.6

-

VeriEnv

-

-

-

39.6

EnvHarness

66.2

70.4

68.3

41.6

스킬 출처

SWE-verified SR (%)

SWE-verified 평균 스텝

OfficeQA EM

SpreadsheetBench Pass@1

스킬 없음

47.67

53.58

54.23

46.44

원본 환경

49.88

55.01

54.40

45.88

SWE-smith

50.12

54.72

-

-

EnvHarness

52.58

49.61

56.20

49.15

초록이 내세우는 9.0점은 ALFWorld OOD의 61.4에서 70.4로 가는 개선폭입니다. 본문 수치와 일치합니다.

주목할 것은 오히려 "원본 환경" 행입니다. 정적 환경에서 뽑은 스킬은 여러 곳에서 무해하지 않습니다. SpreadsheetBench에서는 스킬 없음(46.44)보다 낮은 45.88로 떨어지고, WebArena에서도 38.7에서 38.5로 내려갑니다. SWE-bench에서는 성공률은 조금 올리면서 평균 스텝을 53.58에서 55.01로 늘려놓습니다. 정적 환경은 에이전트가 이미 하는 행동을 반복 연습시킬 뿐이라, 중복되거나 차선인 스킬이 쌓입니다.

도메인 전용 생성 기법과 비교해도 앞섭니다. ALFWorld에서 GenEnv 대비 평균 5.7점, OOD에서는 8.5점 차이입니다. SWE-bench에서는 전용으로 만든 SWE-smith보다 성공률 2.46점 높으면서 에피소드당 5.11스텝을 덜 씁니다.

스텝이 줄어든 이유

초록의 "9.8% 적은 실행 스텝"은 어디에 대한 비율인지 확인이 필요합니다. 55.01에서 49.61로 줄어든 것이니 원본 환경 대비 9.8%입니다. 스킬을 아예 안 준 53.58과 비교하면 7.4%입니다. 두 숫자가 다르므로 인용할 때 기준을 밝히는 편이 정확합니다.

더 중요한 것은 그 감소가 어디서 왔는가입니다. Table 5가 이걸 분해합니다.

구성

성공률 (%)

평균 스텝

스킬 없음

47.67

53.58

원본 환경

49.88

55.01

EnvHarness (Stage/Contract만)

52.58

49.61

EnvHarness (Chain만)

49.63

41.96

결합 (Stage/Contract + Chain)

54.30

43.12

Chain만 쓰면 스텝이 41.96까지 떨어지는데 성공률은 49.63으로 원본 환경(49.88)보다 살짝 낮습니다. 둘 다 풀어야 성공으로 쳐주는 훈련 조건이 장기 목표 유지를 우선시하게 만들기 때문입니다. Stage/Contract는 반대로 성공률을 올립니다. 즉 스텝 감소와 성공률 상승은 서로 다른 부품이 만든 별개의 효과이며, 둘을 합쳤을 때 성공률 54.30에 스텝 43.12로 양쪽을 다 가져갑니다.

환경을 늘렸을 때

같은 예산으로 환경 수를 300개까지 늘리며 비교한 결과가 이 논문에서 가장 강한 대목입니다. EnvHarness는 47.67에서 54.79까지 7.12점 올라가고 300개 지점에서도 여전히 우상향입니다. 같은 예산에서 원본 환경은 52.13, 생성 환경은 50.37에서 평평해집니다.

차이는 배치를 뽑는 방식에 있습니다. 두 베이스라인은 학습자와 무관하게 환경 배치를 뽑지만, EnvHarness는 그때까지 쌓인 스킬을 장착한 정책을 겨냥해 각 배치를 합성합니다. 환경과 정책이 함께 움직입니다.

백본을 바꿔도

SWE-bench Verified에서 네 모델을 붙였습니다.

정책 모델

스킬 없음

원본 환경

EnvHarness

Gemini 3.1 Flash-Lite

30.7

36.8

40.0

Qwen3.6 27B

41.0

48.4

52.1

Gemini 3.5 Flash

47.7

49.9

52.6

Claude Sonnet 4.6

67.2

69.2

72.4

원본 환경 대비 이득은 2.7에서 3.7점 사이로, 스킬 없는 성공률이 30.7부터 67.2까지 벌어져 있는데도 폭이 비슷합니다. 루프가 가장 약한 모델에서 무너지지도, 가장 강한 모델에서 포화되지도 않습니다. 정책의 능력 수준이 바꾸는 것은 루프의 적용 가능 여부가 아니라 진단의 내용이라는 것이 저자들의 해석입니다.

다만 스킬 자체의 효용은 약한 모델에 쏠립니다. 스킬 없음 대비로 보면 아래 두 모델이 EnvHarness 스킬로 +9.3점과 +11.1점을 얻는 반면, 위 두 모델은 5.5점 미만입니다.

강화학습에서도

ALFWorld와 WebShop에서 Qwen3-8B-base를 GRPO로 학습시켜 비교했습니다.

학습 환경

ALFWorld In-Dist

ALFWorld OOD

WebShop 점수

WebShop SR

원본 환경

81.4

89.6

75.6

66.0

EnvHarness

87.9

88.8

79.2

67.4

네 지표 중 셋에서 앞섭니다. ALFWorld OOD에서 0.8점 뒤지는데 저자들도 이를 사소한 트레이드오프로 적었습니다. 재구성된 환경이 보조 데이터가 아니라 독립적인 최적화 신호로 기능한다는 것이 이 표의 논점입니다.

회고

이 논문에서 가장 자주 물어야 할 지점 세 가지를 저자들이 부록에 적어두었습니다.

held-out은 저자가 가르지 않았습니다. ALFWorld의 In-Dist와 OOD는 벤치마크 자체의 seen/unseen 분할이며, 논문이 명시적으로 "우리가 이 분할을 구성하지 않았다"고 씁니다. SWE-bench는 SWE-bench Lite에서 100개를 학습에 쓰고 Lite에 없는 Verified 이슈 407개로 평가합니다. 평가는 재구성되지 않은 원본 과제로만 진행합니다. 환경을 정책의 약점에 맞춰 재단하는 방법이라 오버피팅 의심이 자연스럽게 따라붙는데, 분할 설계는 그 의심을 상당 부분 막아둔 편입니다. 부록의 leave-one-out 실험이 한 겹 더 얹습니다. 특정 과제 유형을 뺀 환경에서 스킬을 뽑아 그 유형에서만 평가했을 때 여섯 유형 중 넷에서 앞서고 평균 3.1점 개선인데, clean에서 16.4점을 얻는 대신 heat에서 8.7점을 잃습니다. 평균 뒤에 이 정도 분산이 있다는 것은 밝혀둘 만합니다.

검증기를 물려받는 설계가 곧 한계입니다. 원본 검증기를 그대로 쓴다는 것이 이 논문의 안전장치인데, 저자들은 그 대가를 정확히 적었습니다. Chain이 순차 연결만 가능한 이유가 여기 있습니다. 각 구간이 스스로 종료해 판정을 내놓아야 복합 검증기가 두 판정의 논리곱으로 정의되는데, 분기하거나 교차하는 워크플로에서는 결합할 판정 쌍 자체가 없습니다. 게다가 Chain은 이어붙인 하위 과제들이 의미상 관련 있는지 알 방법이 없습니다. 의미 있는 합성을 하려면 하위 과제 사이의 양립성 척도와 합성된 목표에 대해 정의된 검증기가 둘 다 필요합니다. 채점 가능한 축 안으로 변형 범위가 제한된다는 점은 이 방법을 쓸 때 미리 알고 있어야 합니다.

리셋 가능한 환경만 됩니다. Stage는 환경을 지정된 초기 상태에 놓아야 하고 Chain은 하위 과제 사이에 알려진 상태로 되돌려야 합니다. 앞으로 나아가기만 하고 되돌릴 수 없는 백엔드는 배제됩니다. 실제 사용자 계정에서 메일을 보내거나 주문을 넣는 에이전트, 에피소드 사이에 주변 환경이 원래대로 돌아오지 않는 물리 로봇이 여기 해당합니다. 텍스트 행동과 관측을 전제한다는 제약도 함께 걸립니다.

비용도 솔직하게 적혀 있습니다. ALFWorld에서 설계 토큰이 GenEnv의 38K 대비 1.46M으로 훨씬 많고, 총 토큰은 228.0M 대 64.2M으로 3.5배입니다. 다만 GenEnv의 롤아웃은 LLM 시뮬레이션이고 EnvHarness는 실제 환경 실행입니다. 같은 조건으로 실제 환경에서 도는 VeriEnv와 비교하면 137.3M 대 137.8M으로 사실상 같습니다. 성능 차이가 예산을 더 써서 나온 것이 아니라는 점은 이 비교로 확인됩니다.

정리


출처: EnvHarness: Awakening Static Worlds for Agent Learning (arXiv:2608.19880) / 코드 / 프로젝트 페이지