터미널 에이전트는 어떻게 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 방향만으로 붕괴를 입증할 수 없다는 것이다.
저자가 스스로 밝힌 한계
- 인과 귀인 부족: 단계별 학습률·보상·초기화가 동시에 변해, 추정기 정체성과 오프라인 재채점이 학습 효과를 분리하지 못한다. compute-matched alternation, isolated TB-GAE, inherited-vs-reset critic 통제 실험이 필요하다
- 평가·선택: 3회 평가(Mean@3)는 독립 학습 시드나 통계적 우위를 대체하지 못하며, 최종 벤치마크로 반복 선택하면 학습과 테스트셋 적응이 혼동된다
- 검증 커버리지: Rust–C 사례에서 최종 모델의 첫 시험은 C 인터페이스를 linkage smoke test로만 사용하고 표현식 평가를 Python에 위임했다 — "fuzz-test success establishes tested output equivalence, not a native Rust–C AST execution path" (원문 §H)
- 범위: 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%는 그 설계 가설의 실증이지만, 구성요소별 인과 분리와 스케일링 검증은 저자가 스스로 남긴 숙제다."
댓글 0
아직 댓글이 없습니다 — 첫 댓글을 남겨보세요.