터미널 에이전트는 어떻게 5단계 만에 성공률을 2배로 만들었나 — Terminal-RSI 논문 해설

[미디어: https://arxiv.org/abs/2610.22192]

개요

  • 주제: Terminal-RSI — Recursive Self-Rewrite(RSR)와 Policy-Refine(RPR)을 교대 수행하는 재귀적 자기개선 터미널 에이전트 학습 프레임워크
  • 핵심 관점: "재작성(탐색)과 정책 정련(학습)을 분리하면, 검증된 트래젝터리가 탐색 앵커가 되어 오프-policy 학습의 붕괴를 피할 수 있다"는 저자의 설계 가설과, 그 가설이 실제로 어디까지 입증되었는가를 구분해서 본다
  • 핵심 키워드: Terminal-RSI, RSR/RPR 교대 학습, TB-GAE, FDR·SPR 보상, 크리티커 승계, Terminal-Bench 4.0

핵심 메시지 3가지

1. 터미널 에이전트 RL에는 세 가지 구조적 문제가 있다

저자는 터미널 환경에서 표준 강화학습 파이프라인이 무너지는 세 원인을 지적한다.

  • 시간적 팽창(Temporal Dilation): 토큰 생성 시계와 환경 변화 시계가 어긋나, 표준 GAE의 할인·트레이스 인자가 텍스트 길이를 기준으로 원격 크레딧을 과도하게 감쇠시킨다
  • 크리티커 값 드리프트: RSR로 정책이 전환되면 크리티커가 이전 단계의 예측 오류를 승계한다
  • 보상 정렬 실패: 4,352개 감사 트래젝터리에서 실패가 FDR 보상 총량의 50.09%를 차지했고, 48개 실패는 모든 시나리오 체크를 통과했으나 터미널 게이트에서 실패했다

2. 두 연산을 교대 수행하는 5단계 파이프라인이 제안이다

"We present Terminal-RSI, which alternates Recursive Self-Rewrite (RSR) ... of verified trajectories with critic-inheriting Recursive Policy-Refine (RPR)." (원문 §3, 14. 방법론)

  • RSR: 플래너가 runbook 생성 → 리뷰어가 누출 스크리닝 → 타깃 하네스에서 재실행 → 통과한 트래젝터리만 수집해 actor-only KL 손실로 학습 (critic 고정, Δφ|_RSR = 0)
  • RPR: actor를 동결한 상태에서 4회 phase-local 크리티커 보정 후 joint PPO 학습

3. 최종 성적은 4-Suite 평균 50.58%

Base 20.68% → RSR-1 34.25% → RPR-1 44.50% → RSR-2 48.75% → RPR-2 50.58%, Base 대비 +29.90%p다. 다만 저 자신도 "27B 단일 백본의 5단계는 스케일링 법칙이나 보편적 단조성을 입증하지 못한다"고 한계를 명시한다 (원문 §5).


왜 기존 파이프라인으로는 안 되는가

터미널 에이전트는 대화형 에이전트와 다르게 실행 환경의 영구적 변경으로 평가된다. 저자의 문제의식은 다음과 같다.

장애물 발생 메커니즘 결과
시간적 팽창 토큰 길이 기준 감쇠가 턴 구조를 무시 원격 크레딧 과소평가
크리티커 드리프트 정책 전환 시점에 이전 오류 승계 값 예측 편향 누적
보상 정렬 실패 패밀리별 검사 수 차이 + 조기 선언 실패 실패가 보상 총량의 50.09% 차지

특히 세 번째 문제는 수치로 뚜렷하다. 고정 트래젝터리 재채점(4,352개)에서 조기 선언 실패(10턴 내 완료 선언) 748개의 평균 보상은 0.47이었고, 48개 실패는 모든 시나리오 체크를 통과한 뒤 터미널 게이트에서만 실패했다. 저자는 이를 "보상이 검증 게이트 앞에서 끝나는 지점"과 어긋난다고 본다.


방법론: RSR과 RPR은 무엇이 다른가

학습 파이프라인 흐름

① Qwen3.8-27B Base (262,144 토큰 컨텍스트)
↓
② RSR-1 — 검증된 재작성으로 탐색 앵커 확보
↓
③ RPR-1 — Warm-up Critic 승계 후 joint PPO (actor 학습률 5×10⁻⁷)
↓
④ RSR-2 — 하네스 발견 교차 전이
↓
⑤ RPR-2 — actor 학습률을 1×10⁻⁷로 5배 감소 = Terminal-RSI-27B

두 연산의 역할 분담

항목 RSR (Recursive Self-Rewrite) RPR (Recursive Policy-Refine)
학습 대상 actor만 (critic 고정) actor + critic (joint PPO)
데이터 하네스에서 재실행해 통과한 트래젝터리 Q_k^clean 이전 단계 정책의 롤아웃
크리티커 Δφ|_RSR = 0 (승계만) 4회 phase-local 보정 후 학습
성격 탐색·재작성 (runbook 생성) 정책 배포·정련

성립 조건: RSR의 학습은 "통과한 트래젝터리만" 수집한다는 제약 위에 성립한다. 필터에 걸린 시도는 학습 신호로 들어오지 않으며, 이것이 탐색 앵커로서의 기능이다.


핵심 기법 ① TB-GAE — 턴 경계를 넘을 때만 감쇠

성립 조건 3단 구조

1) 성립 조건 (구성 요소 간 제약) TB-GAE는 생성 위치 u_j에 대해 사전 토큰 값 v_j, 턴 ID t(j), 인과적으로 할당된 보상 r̃_j를 연결하며, 관측은 값을 조건화하되 재귀 노드가 아니다. 시계 (Γ_j, Λ_j)는 턴 내부에서 (1,1), 턴 전환 시에만 (γ_turn, λ_turn)을 사용한다. B개 턴 경계를 넘으면 (γ_turn·λ_turn)^B로 감쇠하며, 이는 관측 길이나 턴 내 토큰 수와 무관하다.

2) 주요 설정과의 차이 (일반형 vs 저자 실제 설정) - 일반형: 임의의 (Γ, Λ) 시계에서의 재귀 공식 - 저자의 문서화된 주 설정: RPR-1은 표준 GAE(γ=λ=1)를 사용한다. 즉 TB-GAE 공식을 전제로 설계되었지만, 문서화된 1단계 RPR 학습에서는 단위 시계가 쓰였다 - 일관성 조건: 단위 시계 + 매칭된 값·보상·episode 끝 조건이면 표준 GAE로 회복한다. 컨텍스트 요약은 조건화를 바꾸므로 고정 입력 불변성의 범위 밖이다

3) 원문 근거 위치: [원문 p.14 부근] (원문 §3, 부록 C)

오차 거동

크리틱 오차는 ΔA_j = −e_j + Σ B_{j,k}(1−Λ_{k−1})e_k 로, 관측 부트스트랩 항이 없고 턴 내 중간 오차는 상쇄되나 국소 오차 −e_j는 남는다. 저자는 이를 "단위 시계·매칭 값·보상·episode 끝 조건이면 표준 GAE로 회복된다"는 단서와 함께 제시한다.


핵심 기법 ② FDR + SPR — 실패가 보상을 잠식하지 않게

두 보상의 정의

보상 정의 성격
FDR (Family Dense Reward) R_FDR = max(P/D_f, 0), D_f는 패밀리별 90분위 검사 수 (기본 82) 패밀리별 진행 보정
SPR (Success-Prioritized Reward) R_SPR = S + P/(P + D'_f) 모든 실패 < 1, 모든 성공 ≥ 1

SPR의 진행항 g_f(P)는 단조증가·오목(g'>0, g''<0) 이라는 조건을 만족해야 한다. 저의 설계 의도는 "성공이 정확히 1 추가 단위를 확보하는" 구조다.

재채점 결과 (고정 트래젝터리 4,352개)

지표 FDR SPR
성공/실패 평균 보상 1.01 / 0.41 1.50 / 0.24
실패 보상 점유율 50.09% 28.72%
≥1점 실패 158건 0건
조기 선언 실패 평균 보상 (748개) 0.47 0.22

동결 분포 적응 규칙 (실제 사용 설정)

  • 평균 보상 ≥0.60인 실패 20건 이상 → divisor 2배
  • 평균 길이 ≥60턴·보상 (0, 0.40)인 트래젝터리 30건 이상 → 1/4배
  • 결과: 8개 패밀리 2배, 9개 1/4배, 1개 신규, 28개 불변 (컨테이너 공급망 계열은 12로 설정)

실험 결과: 5단계가 실제로 무엇을 바꿨나

벤치마크 진행 (Mean@3, temperature 0.60 / top-p 0.95)

체크포인트 TB-4.0 TB-2.1 TB-3.0 TB-Hard LHTB SWR100 4-Suite 평균
Base 0.00 51.70 0.00 31.00 0.21 3.00 20.68
RSR-1 6.10 70.10 6.80 54.00 0.29 5.00 34.25
RPR-1 16.67 77.53 14.29 69.50 0.30 6.00 44.50
RSR-2 17.46 86.52 15.00 76.00 0.31 6.00 48.75
Terminal-RSI-27B 19.84 86.52 16.95 79.00 0.37 6.00 50.58
  • LHTB 프로세스 보상 0.21 → 0.37 (+0.16), 엄격 완료 0/46 → 5/46 (10.87%) [원문 p.7]
  • SWR100은 3.00% → 6.00%로 배가된 뒤 RPR-1 이후 정체
  • 프런티어 비교: TB-4.0에서 Gemini 3.8 Flash(19.70%)·DeepSeek V4 Pro(14.60%)를 상회하고, TB-2.1에서 GPT-6 Sol(85.40%)·Kimi K3(85.00%)를 상회한다

RSR-first vs Direct PPO

로컬 스텝 20에서 RPR-1은 Direct PPO 대비 TB 2.1/3.0/4.0/Hard에서 각각 +29.22, +12.86, +16.67, +30.50%p 우위였다. Direct PPO는 TB-4.0에서 스텝 5~20 전 구간 0%였다.

다만 저는 이 비교가 compute-matched가 아니라고 명시한다 — rewriting 비용이 포함되지 않았다. 부록 표4의 Direct PPO 대조군은 로컬 스텝 0→20에서 TB 2.1이 47.75→48.31, Hard가 32.50→39.00으로 주로 Hard에서만 개선되었다.

난이도 층화 — Extreme 구간의 비단조성

468개 벤치마크–과제 쌍을 4분위 분할(컷오프 0.37/0.51/0.69), 4-suite 부분집합 322쌍 기준:

난이도 시작 종료
Easy (118쌍) 31.78% 72.88%
Medium (106쌍) 23.58% 58.96%
Hard (57쌍) 14.91% 49.12%
Extreme (41쌍) 10.98% (RPR-1) 6.10% (RSR-2) → 10.98% 회복

Extreme 구간은 비단조적이다. 저자는 이를 "단조적 개선의 보편성"을 입증하지 못하는 근거로 스스로 남겨 둔다.

Critic 준비도 (EV = 1 − Var(G−V)/Var(G))

Warm-Up −1.15 → 0.01, RPR-1 0.03 → 0.33(피크) → 0.27, RPR-2는 16개 관측 전부 양수(0.01~0.52). 즉 크리티커는 RPR-1 구간에서 가장 크게 개선되고, RPR-2에서는 안정된 양수 영역에 머문다.


선행·후속 연구와의 관계를 어떻게 봤는가

저는 관련 연구를 계보로 정리하며, 자기 방법의 위치를 다음과 같이 잡는다.

계열 대표 연구 저가 평가한 차이
generate–filter–train STaR, ReST, ReST-EM RSR의 runbook reviewer는 학습된 value critic이 아니다
언어적 피드백 Reflexion 피드백 매체는 다르나 재작성 반복 구조는 유사
터미널 PPO T1 (terminal PPO + fidelity + warm-start value) Terminal-RSI는 critic-preserving transition으로 이들을 결합한다
Critic-free group / LOO / batch-norm 정규화 Terminal-RSI는 고정 비대칭 클리핑(0.30/5.00)을 채택
재귀적 환경 확장 RST, Environment Evolution, Terminal-Universe 환경을 확장하는 계열과 달리 모델 정책을 재작성하는 계열

균형 서술이 필요한 지점: 저자는 T1을 "terminal PPO+fidelity+warm-start value 결합"으로 인정하며, Terminal-RSI가 그 요소들을 새롭게 발명했다기보다 크리티커를 유지한 채 전이하는 방식으로 재조합했다고 서술한다. 또한 식(18)의 보수-틸트 항등식에 대해서는 "이 항등식은 본 논문의 zero-KL clipped PPO 목표가 아닌 KL-정규화 목적을 특성화한다"고 선을 긋는다 — KL 방향만으로 붕괴를 입증할 수 없다는 것이다.


저자가 스스로 밝힌 한계

  1. 인과 귀인 부족: 단계별 학습률·보상·초기화가 동시에 변해, 추정기 정체성과 오프라인 재채점이 학습 효과를 분리하지 못한다. compute-matched alternation, isolated TB-GAE, inherited-vs-reset critic 통제 실험이 필요하다
  2. 평가·선택: 3회 평가(Mean@3)는 독립 학습 시드나 통계적 우위를 대체하지 못하며, 최종 벤치마크로 반복 선택하면 학습과 테스트셋 적응이 혼동된다
  3. 검증 커버리지: Rust–C 사례에서 최종 모델의 첫 시험은 C 인터페이스를 linkage smoke test로만 사용하고 표현식 평가를 Python에 위임했다 — "fuzz-test success establishes tested output equivalence, not a native Rust–C AST execution path" (원문 §H)
  4. 범위: SWR100의 train-disjoint·저장소 중첩은 완전히 감사되지 않았다

정성 사례에서도 이 한계는 드러난다. Embedding-drift 과제는 Base 9/11에서 최종 11/11(6개 모듈 수정)로 회복했지만, Rust–C 평가기는 50.00% → 75.00% → 100.00%로 상승하는 동안 checker 완료율(Base 81.82% → RSR-1 96.97% → 이후 100%)과 성공률이 서로 다른 지표라는 점을 저 자신이 구분해 두었다.


관점 포인트 — 실무자가 짚어야 할 5가지

  • ① 재작성과 학습을 분리했는가: RSR은 critic을 건드리지 않는다(Δφ = 0). 이 분리가 없으면 탐색 신호가 정책 업데이트와 섞인다
  • ② 크리티커를 언제 웜업시키는가: RSR-1 actor로 1 epoch SWR 학습 후 Warm-up Critic을 만들고, 각 RPR은 actor 동결 상태에서 4회 phase-local 보정을 먼저 돌린다
  • ③ 보상이 실패를 잠식하지 않는가: 실패 보상 점유율 50.09% → 28.72%, ≥1점 실패 158 → 0건이 SPR의 실질적 기여다
  • ④ 체크포인트를 어느 스위트로 고르는가: RPR-1 스텝 20→35에서 TB-4.0은 16.67→11.11% 하락, TB-2.1은 78.95% 상승 — cross-suite strict-success 모니터링이 필요하다
  • ⑤ 어떤 지표를 어떤 지표로 착각하지 않는가: 벤치마크 성공률 · terminal reward · shaped reward · checker 완료율은 서로 다른 측정치이며, 저자는 이들을 "능력의 상호호환 측정치로 취급하지 않는다"

최종 핵심 정리

확인해야 할 핵심 질문:

  • RSR과 RPR은 어떤 파라미터를 각각 갱신하는가? (actor만 vs actor+critic)
  • TB-GAE의 감쇠는 무엇에 비례하는가? (턴 경계 수 B, 토큰 수가 아님)
  • 표준 GAE로 회복되는 일관성 조건은 무엇인가? (단위 시계 + 매칭 값·보상·episode 끝)
  • SPR이 실패 보상 점유율을 얼마에서 얼마로 줄였는가? (50.09% → 28.72%)
  • Extreme 난이도 구간이 단조적으로 개선됐는가? (아니오 — 10.98% → 6.10% → 10.98%)
  • Direct PPO 비교는 compute-matched인가? (아니오, 저자가 명시)

한 줄 요약: "검증된 재작성이 탐색 앵커가 되고, 크리티커를 버리지 않는 전이가 정련을 받치는 구조 — 4-Suite 평균 50.58%는 그 설계 가설의 실증이지만, 구성요소별 인과 분리와 스케일링 검증은 저자가 스스로 남긴 숙제다."