<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Eval Gate on jyukki's Blog</title><link>https://jyukki.com/tags/eval-gate/</link><description>Recent content in Eval Gate on jyukki's Blog</description><generator>Hugo -- 0.147.0</generator><language>ko-kr</language><lastBuildDate>Mon, 20 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jyukki.com/tags/eval-gate/index.xml" rel="self" type="application/rss+xml"/><item><title>2026 개발 트렌드: Synthetic Replay + Eval Gate, AI 변경은 벤치마크보다 실제 작업 재생으로 검증한다</title><link>https://jyukki.com/posts/2026-04-20-synthetic-replay-eval-gate-trend/</link><pubDate>Mon, 20 Apr 2026 00:00:00 +0000</pubDate><guid>https://jyukki.com/posts/2026-04-20-synthetic-replay-eval-gate-trend/</guid><description>에이전트 프롬프트, 툴 스키마, 모델 라우팅 변경을 감으로 배포하지 않고 실제 작업 패킷 재생과 평가 게이트로 검증하는 흐름을 정리합니다.</description><content:encoded><![CDATA[<p>AI 기능을 붙인 팀이 늘수록, 변경 실패의 원인은 모델 자체보다 <strong>검증 방식의 빈틈</strong>에서 더 자주 나옵니다. 벤치마크에서는 3점 좋아졌는데 실제 운영에서는 툴 호출이 더 자주 실패하거나, 프롬프트를 조금 바꿨더니 장문 설명은 좋아졌지만 고위험 작업에서 승인 경계를 넘겨버리는 식입니다. 그래서 최근에는 모델 점수표보다 <strong>실제 작업을 재생해 보는 검증 계층</strong>이 더 중요해지고 있습니다. 저는 이 흐름을 <code>Synthetic Replay + Eval Gate</code>로 보는 편이 가장 정확하다고 생각합니다.</p>
<p>핵심은 단순합니다. 새 모델, 새 프롬프트, 새 툴 스키마를 바로 production에 넣지 않고, 실제 업무에서 나온 작업 패킷을 먼저 재생합니다. 이 패킷에는 입력 텍스트만이 아니라 컨텍스트 조건, 허용된 툴, 기대 결과, 실패 분류, 비용 상한이 같이 붙습니다. 그 결과를 <a href="/posts/2026-03-31-deterministic-replay-flight-recorder-trend/">Deterministic Replay + Flight Recorder</a>, <a href="/posts/2026-04-10-test-evidence-pipeline-ai-change-review-trend/">Test Evidence Pipeline</a>, <a href="/posts/2026-04-15-change-intelligence-control-plane-trend/">Change Intelligence Control Plane</a>, <a href="/posts/2026-04-19-policy-shadow-rollout-agent-runtime-trend/">Policy Shadow Rollout</a>과 연결하면, 변경 승인 기준이 &ldquo;느낌상 괜찮아 보인다&quot;에서 벗어나기 시작합니다.</p>
<p>이제 중요한 것은 평균 점수가 아니라 <strong>어떤 작업군에서 무엇이 더 좋아졌고 무엇이 더 위험해졌는가</strong>입니다. 개발 조직이 에이전트를 운영 체계 안으로 넣을수록, 이 질문은 선택이 아니라 필수가 됩니다.</p>
<h2 id="이-글에서-얻는-것">이 글에서 얻는 것</h2>
<ul>
<li>Synthetic Replay가 왜 단순 프롬프트 회귀 테스트보다 한 단계 더 운영 친화적인지 설명할 수 있습니다.</li>
<li>Eval Gate를 설계할 때 어떤 지표를 최소 기준으로 삼아야 하는지 숫자 중심으로 가져갈 수 있습니다.</li>
<li>offline replay와 shadow traffic을 어떻게 역할 분담시키면 좋은지 정리할 수 있습니다.</li>
<li>모델, 프롬프트, 툴, 정책 변경을 하나의 승인 구조로 묶는 실무 기준을 잡을 수 있습니다.</li>
</ul>
<h2 id="핵심-개념이슈">핵심 개념/이슈</h2>
<h3 id="1-지금-병목은-모델-품질보다-변경이-실제-업무를-망치지-않는지-검증하는-능력이다">1) 지금 병목은 모델 품질보다 &ldquo;변경이 실제 업무를 망치지 않는지&rdquo; 검증하는 능력이다</h3>
<p>많은 팀이 아직도 AI 변경을 아래 둘 중 하나로 판단합니다.</p>
<ul>
<li>공개 벤치마크 점수</li>
<li>내부 데모 몇 개에서의 체감 품질</li>
</ul>
<p>문제는 이 둘이 실제 운영 실패를 잘 못 잡는다는 점입니다. 툴 호출 순서가 달라져 비용만 늘어날 수도 있고, JSON 형식은 맞는데 사람 승인 경계가 흐려질 수도 있고, 긴 문맥에서는 좋아졌지만 짧은 작업의 응답 지연이 급증할 수도 있습니다. 결국 운영에서는 &ldquo;모델이 똑똑한가&quot;보다 <strong>내 작업을 안정적으로 끝내는가</strong>가 더 중요합니다.</p>
<p>그래서 Synthetic Replay는 작업 단위로 봅니다. 예를 들어 아래처럼 쪼갭니다.</p>
<ul>
<li>코드 수정 제안</li>
<li>운영 런북 요약</li>
<li>외부 전송 초안 작성</li>
<li>위험 작업 승격 판단</li>
<li>툴 조합 호출이 필요한 다단계 작업</li>
</ul>
<p>이 작업군별로 pass/fail 조건이 다르기 때문에, 평균 점수 하나로 배포 결정을 내리는 것은 점점 위험해집니다.</p>
<h3 id="2-replay-packet은-프롬프트-텍스트가-아니라-실행-문맥-묶음이어야-한다">2) Replay packet은 프롬프트 텍스트가 아니라 &ldquo;실행 문맥 묶음&quot;이어야 한다</h3>
<p>Synthetic Replay가 의미 있으려면 입력 텍스트만 저장해서는 부족합니다. 실제 운영에서 결과를 바꾸는 것은 보통 아래 정보들입니다.</p>
<ul>
<li>시스템/개발자 지침과 현재 정책 버전</li>
<li>허용된 툴 목록과 스키마 버전</li>
<li>첨부 문서, 요약 메모, 최근 대화 맥락</li>
<li>작업 위험도와 기대 결과 형식</li>
<li>latency budget, cost budget, escalation 조건</li>
</ul>
<p>즉 replay packet은 사실상 <strong>작업 계약서</strong>에 가깝습니다. 이 구조는 <a href="/posts/2026-04-16-context-contract-registry-agent-input-governance-trend/">Context Contract Registry</a>와 잘 맞습니다. 입력 계약이 정리돼 있어야 같은 작업을 다음 주, 다음 모델, 다음 런타임에서도 비슷한 조건으로 재생할 수 있기 때문입니다.</p>
<p>실무적으로는 최소 아래 필드를 두는 편이 좋습니다.</p>
<ul>
<li><code>task_class</code></li>
<li><code>risk_level</code></li>
<li><code>input_bundle_ref</code></li>
<li><code>allowed_tools</code></li>
<li><code>expected_outcome</code></li>
<li><code>must_not_do</code></li>
<li><code>latency_budget_ms</code></li>
<li><code>cost_budget_usd</code></li>
<li><code>review_label</code></li>
</ul>
<p>이 정도만 있어도 &ldquo;응답이 괜찮아 보였다&quot;를 넘어서, 실제 운영 기준으로 합격 여부를 비교할 수 있습니다.</p>
<h3 id="3-좋은-eval-gate는-pass-rate만-보지-않고-high-risk-miss와-cost-per-success를-같이-본다">3) 좋은 Eval Gate는 pass rate만 보지 않고 high-risk miss와 cost-per-success를 같이 본다</h3>
<p>에이전트 변경 검증에서 흔한 함정은 통과율 하나만 보는 것입니다. 하지만 pass rate가 3% 올랐어도 비용이 두 배가 되거나, 고위험 작업에서 한 번 더 잘못된 허용을 내보냈다면 운영적으로는 나빠진 변경일 수 있습니다.</p>
<p>그래서 최소한 아래 지표를 같이 보는 편이 좋습니다.</p>
<ul>
<li><code>task_pass_rate</code>: 작업 완료 기준 통과율</li>
<li><code>high_risk_miss_rate</code>: 막았어야 할 고위험 실패를 놓친 비율</li>
<li><code>tool_success_rate</code>: 필요한 툴 체인을 끝까지 성공시킨 비율</li>
<li><code>cost_per_success</code>: 성공 1건당 평균 비용</li>
<li><code>p95_latency</code>: 작업 완료 기준 지연시간</li>
<li><code>rollback_readiness</code>: 되돌리기 또는 shadow 복귀 준비 시간</li>
</ul>
<p>권장 출발 기준은 아래 정도가 현실적입니다.</p>
<ul>
<li>일반 작업군 pass rate는 기존 대비 <strong>하락 금지</strong>, 가능하면 <strong>+2% 이상</strong> 개선</li>
<li>high-risk miss rate는 <strong>1% 미만</strong></li>
<li>tool success rate는 <strong>95% 이상</strong></li>
<li>p95 latency 증가는 기존 대비 <strong>15% 이내</strong></li>
<li>cost-per-success 증가는 <strong>20% 이내</strong>, 단 high-risk miss 개선이 크면 예외 검토 가능</li>
<li>rollback 또는 이전 버전 복귀 준비 시간은 <strong>15분 이내</strong></li>
</ul>
<p>핵심은 더 좋아진 면만 보지 않고, <strong>무엇을 대가로 얻은 개선인지</strong>를 같이 보는 것입니다.</p>
<h3 id="4-offline-replay와-shadow-traffic은-경쟁재가-아니라-역할이-다르다">4) Offline replay와 shadow traffic은 경쟁재가 아니라 역할이 다르다</h3>
<p>Offline replay의 장점은 빠르고 반복 가능하다는 것입니다. 같은 작업 묶음을 여러 모델, 여러 프롬프트, 여러 정책 버전으로 짧은 시간 안에 비교할 수 있습니다. 회귀 검증과 후보 압축에 아주 강합니다. 반면 한계도 분명합니다. 실제 운영의 분포 변화, 신규 예외, 최신 문맥 구조는 완전히 재현되지 않을 수 있습니다.</p>
<p>반대로 shadow traffic은 현실 적합성이 높습니다. 실제 사용자 작업이나 실제 운영 입력을 기반으로 새 정책이 어떤 판정을 내릴지 볼 수 있습니다. 하지만 느리고, 수집 비용이 크며, 즉시 반복 실험에는 불리합니다.</p>
<p>그래서 잘하는 팀은 보통 이렇게 나눕니다.</p>
<ol>
<li><strong>Offline replay</strong>로 후보 3개를 1개로 줄임</li>
<li><strong>Shadow traffic</strong>으로 실제 분포에서 missed high-risk와 friction 확인</li>
<li>기준 충족 시 <strong>partial rollout</strong> 진행</li>
</ol>
<p>이 흐름은 <a href="/posts/2026-04-19-policy-shadow-rollout-agent-runtime-trend/">Policy Shadow Rollout</a>과 자연스럽게 이어집니다. replay가 빠른 회귀 검증이라면, shadow는 현실 적합성 검증입니다. 둘 중 하나만으로는 부족합니다.</p>
<h3 id="5-평가-결과는-증거-묶음으로-남아야-배포-승인에-쓸-수-있다">5) 평가 결과는 &ldquo;증거 묶음&quot;으로 남아야 배포 승인에 쓸 수 있다</h3>
<p>Synthetic Replay가 진짜 운영 도구가 되려면 결과가 표 몇 개로 끝나면 안 됩니다. 어떤 변경이 어떤 packet에서 실패했고, 그 실패가 단순 formatting 문제인지, tool sequencing 문제인지, 정책 위반인지, latency budget 초과인지까지 묶여야 합니다. 이때 중요한 것이 <a href="/posts/2026-04-14-execution-receipt-agent-operations-trend/">Execution Receipt</a>와 <a href="/posts/2026-04-10-test-evidence-pipeline-ai-change-review-trend/">Test Evidence Pipeline</a>입니다.</p>
<p>실무에서는 아래 묶음이 있으면 강합니다.</p>
<ul>
<li>변경 ID와 관련 모델/프롬프트/툴 버전</li>
<li>replay packet 샘플과 작업군 분포</li>
<li>pass/fail scorecard</li>
<li>high-risk miss 사례 3~5개</li>
<li>비용/지연 변화</li>
<li>rollback 경로와 owner</li>
</ul>
<p>이 묶음이 있어야 배포 회의에서 &ldquo;왜 이 변경을 올리는지&quot;를 짧게 설명할 수 있습니다. 결국 Eval Gate는 평가 시스템이 아니라 <strong>승인 인터페이스</strong>이기도 합니다.</p>
<h3 id="6-운영-리뷰는-주간-1장짜리-gate-scorecard로-닫히는-편이-좋다">6) 운영 리뷰는 주간 1장짜리 gate scorecard로 닫히는 편이 좋다</h3>
<p>데이터가 많아질수록 회의가 길어지고 책임은 흐려지기 쉽습니다. 한 팀은 pass rate만 보여 주고, 다른 팀은 latency만 강조하고, 정책 담당자는 miss rate만 들고 오는 식입니다. 이렇게 되면 승인 속도는 느려지고, 실패한 변경의 원인도 흐려집니다.</p>
<p>그래서 저는 주간 리뷰를 아래 6줄짜리 scorecard로 닫는 편이 가장 실전적이라고 봅니다.</p>
<ul>
<li>변경 ID와 대상 작업군</li>
<li>pass rate, tool success rate</li>
<li>high-risk miss rate, false escalation rate</li>
<li>p95 latency, cost-per-success</li>
<li>shadow 결과와 reviewer override 비율</li>
<li>rollback readiness, owner sign-off</li>
</ul>
<p>이 6줄이 한 화면에 있으면 &ldquo;품질은 올랐지만 비용이 너무 비싼 변경&rdquo;, &ldquo;평균은 좋아졌지만 고위험 실패를 늘린 변경&rdquo;, &ldquo;지표는 좋은데 rollback 준비가 안 된 변경&quot;을 바로 분리할 수 있습니다. 결국 좋은 Eval Gate는 더 많은 표를 만드는 일이 아니라, <strong>승인과 보류를 빠르게 나누는 기준선</strong>을 만드는 일입니다.</p>
<h2 id="실무-적용">실무 적용</h2>
<h3 id="1-의사결정-기준숫자조건우선순위">1) 의사결정 기준(숫자·조건·우선순위)</h3>
<p>실무 우선순위는 보통 아래 순서가 안전합니다.</p>
<p><strong>1순위, 고위험 작업군 replay packet 표준화</strong></p>
<ul>
<li>외부 전송, 코드 수정, 권한 변경, 배포 관련 작업부터 시작</li>
<li>전체 작업의 100%를 다루기보다 위험도가 큰 상위 20% 작업군부터 표준화</li>
</ul>
<p><strong>2순위, gate 기준선 문서화</strong></p>
<ul>
<li>pass rate 하락 금지</li>
<li>high-risk miss rate 1% 미만</li>
<li>p95 latency 증가 15% 이내</li>
<li>cost-per-success 증가 20% 이내</li>
<li>rollback readiness 15분 이내</li>
</ul>
<p><strong>3순위, offline과 shadow 분리 운영</strong></p>
<ul>
<li>offline replay는 후보 압축</li>
<li>shadow는 현실 검증</li>
<li>둘의 점수가 엇갈리면 shadow 결과를 더 보수적으로 해석</li>
</ul>
<p><strong>4순위, 승인 단위를 change set으로 묶기</strong></p>
<ul>
<li>모델 교체, 프롬프트 수정, 툴 스키마 수정, 정책 수정이 함께 들어가면 개별 최적화보다 change set 단위로 승인</li>
</ul>
<h3 id="2-4주-도입-순서">2) 4주 도입 순서</h3>
<p><strong>1주차: 상위 고위험 작업 30~50개를 replay packet으로 정리</strong><br>
처음부터 500개를 모으려 하지 않는 편이 낫습니다. 분포가 좋은 샘플보다 운영상 아픈 샘플이 먼저입니다.</p>
<p><strong>2주차: 기본 scorecard와 실패 taxonomy 정의</strong><br>
<code>format fail</code>, <code>tool fail</code>, <code>policy miss</code>, <code>latency fail</code>, <code>cost fail</code> 정도만 나눠도 의사결정 속도가 빨라집니다.</p>
<p><strong>3주차: 새 모델 또는 프롬프트 변경 1건에 gate 적용</strong><br>
한 번에 여러 변경을 섞지 말고, 비교 가능한 change set부터 적용합니다.</p>
<p><strong>4주차: shadow traffic 연결과 partial rollout 훈련</strong><br>
offline 결과가 좋은 후보만 shadow로 올리고, 15분 이내 rollback 훈련을 같이 해 봅니다.</p>
<h3 id="3-운영-테이블-예시">3) 운영 테이블 예시</h3>
<table>
  <thead>
      <tr>
          <th>작업군</th>
          <th>최소 replay 수</th>
          <th>핵심 지표</th>
          <th>보수 기준</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>외부 전송 초안</td>
          <td>30+</td>
          <td>policy miss, reviewer override</td>
          <td>miss 1% 미만</td>
      </tr>
      <tr>
          <td>코드 수정 제안</td>
          <td>50+</td>
          <td>tool success, diff validity</td>
          <td>success 95% 이상</td>
      </tr>
      <tr>
          <td>운영 런북 요약</td>
          <td>30+</td>
          <td>factual pass, latency</td>
          <td>latency 증가 15% 이내</td>
      </tr>
      <tr>
          <td>위험 작업 승격</td>
          <td>20+</td>
          <td>false escalation, missed escalation</td>
          <td>두 지표 모두 3% 미만</td>
      </tr>
  </tbody>
</table>
<p>이 표의 핵심은 모든 작업군을 같은 pass rate로 재단하지 않는 것입니다. 작업군마다 실패 비용이 다르기 때문입니다.</p>
<h3 id="4-change-approval-흐름-예시">4) change approval 흐름 예시</h3>
<ol>
<li>변경 제안 생성</li>
<li>replay packet 50개 내외로 offline 비교</li>
<li>scorecard 통과 시 shadow traffic 적용</li>
<li>shadow에서 high-risk miss와 friction 확인</li>
<li>partial rollout</li>
<li>1주 안정 후 full rollout</li>
</ol>
<p>이 흐름이 자리 잡으면 &ldquo;AI 변경은 늘 불안하다&quot;는 감각이 꽤 줄어듭니다. 이유는 단순합니다. 더 똑똑해져서가 아니라, <strong>변경을 다루는 방법이 소프트웨어 배포에 가까워지기 때문</strong>입니다.</p>
<h2 id="트레이드오프주의점">트레이드오프/주의점</h2>
<p>첫째, replay packet 품질이 낮으면 gate도 왜곡됩니다. 입력 계약이 엉성하면 좋은 모델도 나쁘게 보이고, 나쁜 변경도 통과할 수 있습니다.</p>
<p>둘째, offline replay만 믿으면 실제 분포 변화를 놓칠 수 있습니다. 운영 입력은 늘 움직이기 때문에 shadow가 꼭 필요합니다.</p>
<p>셋째, gate를 너무 엄격하게 잡으면 배포 속도가 과도하게 느려질 수 있습니다. 그래서 작업군별 위험도에 따라 강도를 다르게 두는 편이 맞습니다.</p>
<p>넷째, 평가자가 한 모델 또는 한 judge에 과도하게 의존하면 편향이 생길 수 있습니다. 최소한 고위험 작업은 사람 리뷰나 다중 기준을 섞는 것이 안전합니다.</p>
<p>다섯째, rollback readiness가 없는 gate는 반쪽입니다. 잘못 통과한 변경을 빨리 내릴 수 있어야 진짜 운영 도구가 됩니다.</p>
<h2 id="체크리스트-또는-연습">체크리스트 또는 연습</h2>
<h3 id="체크리스트">체크리스트</h3>
<ul>
<li><input disabled="" type="checkbox"> 고위험 작업군에 대한 replay packet 스키마가 있다.</li>
<li><input disabled="" type="checkbox"> pass rate 외에 high-risk miss, tool success, cost-per-success를 같이 본다.</li>
<li><input disabled="" type="checkbox"> offline replay와 shadow traffic의 역할이 문서화되어 있다.</li>
<li><input disabled="" type="checkbox"> 변경 ID 기준으로 모델, 프롬프트, 툴, 정책 버전을 함께 기록한다.</li>
<li><input disabled="" type="checkbox"> 15분 이내 rollback 또는 shadow 복귀가 가능하다.</li>
<li><input disabled="" type="checkbox"> 주간 gate scorecard를 owner가 검토하고 sign-off 한다.</li>
</ul>
<h3 id="연습-과제">연습 과제</h3>
<ol>
<li>최근 진행한 AI 변경 하나를 골라, 벤치마크 점수 대신 <code>작업군별 pass rate / high-risk miss / latency / cost</code>로 다시 평가해 보세요. 어떤 면이 가려져 있었는지 바로 보일 가능성이 큽니다.</li>
<li>외부 전송 또는 코드 수정처럼 실패 비용이 큰 작업군 20개를 골라 replay packet 초안을 만들어 보세요. 입력 텍스트만으로는 재현되지 않는 필드가 금방 드러납니다.</li>
<li>현재 운영 중인 shadow 정책 하나를 골라, offline replay 결과와 shadow 결과가 어긋난 사례를 3개만 모아 보세요. 어떤 신호를 gate에 추가해야 할지 감이 잡힙니다.</li>
</ol>
<h2 id="관련-글">관련 글</h2>
<ul>
<li><a href="/posts/2026-03-31-deterministic-replay-flight-recorder-trend/">Deterministic Replay + Flight Recorder</a></li>
<li><a href="/posts/2026-04-10-test-evidence-pipeline-ai-change-review-trend/">Test Evidence Pipeline</a></li>
<li><a href="/posts/2026-04-14-execution-receipt-agent-operations-trend/">Execution Receipt</a></li>
<li><a href="/posts/2026-04-15-change-intelligence-control-plane-trend/">Change Intelligence Control Plane</a></li>
<li><a href="/posts/2026-04-16-context-contract-registry-agent-input-governance-trend/">Context Contract Registry</a></li>
<li><a href="/posts/2026-04-19-policy-shadow-rollout-agent-runtime-trend/">Policy Shadow Rollout</a></li>
</ul>
]]></content:encoded></item></channel></rss>