차분 오라클(Differential Oracle): 에이전트 기반 코드가 스스로의 정확성을 증명하게 만드는 방법
요약
코딩 에이전트의 신뢰성을 확보하기 위해 독립된 두 구현체를 비교하는 '차분 오라클(Differential Oracle)' 기법을 소개합니다. 불변성 검사와 교차 검증을 통해 에이전트가 생성한 코드의 정확성을 자동으로 증명하는 방법론을 다룹니다.
핵심 포인트
- 차분 오라클을 통해 독립된 두 시스템 간의 일치 여부로 코드 정확성 검증
- 로직 불변성(Invariants) 테스트를 결합하여 엣지 케이스 및 버그 탐지
- 전략-실행-비평-평가-운영으로 이어지는 자율 개발 하네스 구조 제안
- 에이전트 시스템 구축 시 평가 레이어(Evaluation Layer)의 중요성 강조
6개월 전 저는 주방을 운영하고 있었습니다. 저는 스스로 에이전트 시스템(agentic systems)을 구축하는 법을 배웠고, 제가 가장 자랑스럽게 생각하는 부분은 아무도 데모하지 않는 부분인 바로 평가 레이어(evaluation layer)입니다.
코딩 에이전트(Coding agents)는 데모하기는 쉽지만 신뢰하기는 어렵습니다. 에이전트가 실제 코드베이스에 손을 대는 순간 — 배포(deploys), 커밋(commits), 사용자 대상 변경 사항(user-facing changes) — 여러분은 모든 프로덕션 시스템에 필요한 것, 즉 리뷰(review), 테스트(tests), 그리고 자체적인 회귀(regressions)를 잡아낼 방법이 필요합니다.
문제점: 수동으로 확인할 수 없는 정확성
저는 매치-3(match-3) 게임을 만듭니다. 매치-3 해결 과정에는 수천 개의 엣지 케이스(edge cases) — 연쇄 반응(cascades), 체인 리액션(chain reactions), 특수 조각 규칙(special-piece rules) — 가 존재하며, 여기서 "정답"은 명확하지 않고 이를 모두 수동으로 확인할 수도 없습니다.
차분 오라클 (The differential oracle)
그래서 저는 하나의 구현체를 신뢰하는 대신, 독립적으로 작성된 두 개의 구현체를 사용합니다. 동일한 게임 로직이 React 빌드와 네이티브 Java 엔진에서 실행되며, 로직 불변 테스트(logic-invariant tests)가 두 엔진 모두 동일한 규칙을 따르도록 유지합니다. 만약 두 시스템이 보드 상태에 대해 서로 다른 의견을 내놓는다면, 둘 중 하나는 틀린 것입니다. 독립적으로 구축된 두 시스템 간의 일치(Agreement)는 어느 한 쪽이 자체 테스트를 통과하는 것보다 훨씬 강력한 신호입니다. 이는 제가 직접 플레이해서는 절대 찾지 못했을 실제 버그들을 잡아냈습니다.
실행 가능한 리포지토리: https://github.com/egnaro9/evals-differential-oracle — 두 개의 구현체 + 불변 테스트(invariant tests), 그리고 두 네트워크 모두가 잡아내는 의도적으로 버그가 포함된 버전이 포함되어 있습니다. pytest가 약 9,000개의 무작위 보드에 대해 테스트를 통과합니다.
두 번째 그물로서의 불변성 (Invariants)
규칙 그 자체도 테스트입니다 — 예를 들어, 특수 보석은 4개 이상의 직접적인 매치에 의해서만 생성되며, 3개 매치로는 절대 생성되지 않는다. 제가 3개 매치 시에도 보석을 지급하도록 버그를 심었을 때, 차분 오라클(differential oracle)은 의견이 불일치했으며 동시에 불변성 검사기(invariant checker)가 이를 감지했습니다.
더 큰 시스템
오라클은 자율 개발 하네스(autonomous dev harness) 내부에 위치합니다. 이는 냉철하고 독립적인 비평가(critic), 역할별 모델 라우팅(per-role model routing), 그리고 실행(launch)은 자동화하되 되돌릴 수 없는 사항에 대한 승인은 절대 자동화하지 않는 인간 참여형(human-in-the-loop) 자율성 사다리를 갖춘 자기 검토 루프(전략(Strategy) → 실행(Execution) → 비평(Critic) → 평가(Evaluation) → 운영(Ops))입니다.
Write-up: https://github.com/egnaro9/agentic-dev-harness · portfolio: https://egnaro9.github.io
핵심 요약 (What I take from it)
- 평가(Evals)와 오라클(Oracles)이 어렵고 가치 있는 부분입니다. 데모를 한 번 작동하게 만드는 것이 목표가 아닙니다.
- 방대한 테스트 스위트(Test suite)를 가진 하나의 구현체보다, 서로 일치해야 하는 두 개의 독립적인 구현체가 더 강력합니다.
- 객관적으로 측정 가능한 것과 인간의 판단(Human judgment)이 필요한 것을 솔직하게 구분하십시오. 후자를 위해 지표(Metric)를 조작하지 마십시오.
저는 에이전트(Agentic) / AI / 평가(Evals) 엔지니어링 분야에서 원격(미국) 근무를 희망하는 독학 엔지니어입니다. 만약 귀하의 팀이 이러한 가치에 집중하고 있다면, 기꺼이 대화 나누고 싶습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기