AI 에이전트의 오류 누적: 단계별 정확도 95%가 부족한 이유
AI 에이전트의 오류 누적(compounding error)은 긴 작업의 성공 확률이 각 단계 성공 확률의 곱과 같아지는 현상입니다. 단계당 정확도가 95%이면 10단계 체인은 약 60%, 20단계 체인은 약 36%만 성공합니다. 하네스는 각 단계를 검증하고 검증된 상태를 고정해, 오류가 다음 단계로 넘어가지 못하게 막습니다.
오류 누적이란 무엇인가
에이전트는 작업을 한 번의 행동으로 끝내지 않고 사슬처럼 이어 갑니다. 파일을 읽고, 함수를 고치고, 테스트를 돌리고, import를 바로잡는 식입니다. 각 단계가 맞을 확률을 p라고 하고, 단계들이 서로 독립적이며 한 단계의 오류가 이후 모든 단계를 망가뜨린다고 가정하면, n단계 체인이 성공할 확률은 p의 n제곱입니다. 이것이 AI 에이전트의 오류 누적, 영어로 compounding error입니다.
직관은 속기 쉽습니다. 단계당 95%라는 수치는 믿을 만해 보이지만, 거듭제곱이 여유분을 빠르게 갉아먹습니다.
| 단계 수 | p = 0.95 | p = 0.99 |
|---|---|---|
| 1 | 95% | 99% |
| 10 | 약 60% | 약 90% |
| 20 | 약 36% | 약 82% |
| 50 | 약 8% | 약 61% |
이 모델은 거친 근사입니다. 실제로 단계들은 완전히 독립적이지 않고, 일부 오류는 결과에 영향을 주지 않습니다. 그래도 방향은 정확하게 보여 줍니다. 검증 없이 자율적으로 길게 돌아갈수록 결과가 맞을 가능성은 줄어듭니다.
긴 체인이 무너지는 이유
초기 단계의 오류는 제자리에 머물지 않습니다. 에이전트는 잘못된 기반 위에 다음 변경을 쌓고, 무언가가 눈에 띄게 망가질 무렵에는 버그 위에 코드 층이 열 겹쯤 쌓여 있습니다. 가장 나쁜 경우는 에이전트가 결과를 스스로 평가할 때입니다. 그의 판단은 '전부 괜찮다'로 기울어 있어서, 절반쯤 동작하지 않는 코드에 대해서도 '완료, 테스트 통과'라는 보고가 올라올 수 있습니다.
하네스는 이 문제를 어떻게 다루는가
p를 높이는 데에는 한계가 있습니다. 모델이 아무리 좋아져도 실수가 없어지지는 않습니다. 가장 큰 지렛대는 오류가 다음 단계로 넘어가지 않게 막는 것입니다. 하네스는 피드백 루프를 닫습니다.
- 각 단계 뒤의 센서. 명령 하나(예: 테스트와 린터를 포함한
make verify)가 에이전트의 자체 평가 대신 결과를 객관적으로 측정합니다. - 복구 지점. 검증을 통과한 단계는 커밋으로 고정됩니다. 이후 체인은 검증된 상태에서 시작하므로, 누적된 오류 카운터가 사실상 0으로 돌아갑니다.
- 최소한의 수정. 검증이 실패하면 에이전트는 구체적인 원인만 고치고, 처음부터 다시 쓰지 않습니다. 이렇게 하면 흔들림이 줄어듭니다.
- 짧은 작업. 한 번에 한 작업, 작은 단계, 잦은 검증을 씁니다. 20단계를 눈을 감고 진행하는 대신, 한 단계짜리 체인 20개로 나누는 것입니다.
Claude Code에서는 검증을 훅에 연결해 두면, 모델의 선의에 기대지 않고 자동으로 실행되게 할 수 있습니다.
정리
AI 에이전트의 오류 누적은 단순한 산술입니다. 0.95의 10제곱은 약 0.60, 20제곱은 약 0.36입니다. 이 문제는 '더 똑똑한 모델'이 아니라 하네스로 해결합니다. 매 단계 검증, 검증된 상태의 커밋, 짧은 작업이 그 방법입니다. 이 회로의 수학과 그 뒤의 원리는 강의에서 자세히 다룹니다.
자주 묻는 질문
50단계짜리 작업은 에이전트가 해내지 못한다는 뜻인가요?
중간 검증이 없다면 성공 확률은 실제로 낮습니다. 단계마다 검증과 커밋을 두면 작업은 짧은 체인들의 연속이 되고, 전체 성공은 모든 단계의 곱으로 결정되지 않습니다.
더 강한 모델을 쓰면 도움이 되나요?
도움이 됩니다. 정확도가 95%에서 99%로 오르면 20단계 성공률은 36%에서 82%로 올라갑니다. 하지만 99%라도 50단계에서는 약 61%이므로, 검증은 여전히 필요합니다.
에이전트가 실수했는데도 결과에 확신하는 이유는 무엇인가요?
외부 센서가 없으면 에이전트는 결과를 현실이 아니라 자신의 기대와 비교합니다. 그래서 코드가 맞는지와 무관하게 확신이 커집니다.
에이전트에게 스스로 검증하라고 요청하면 되지 않나요?
프롬프트에 적은 요청은 실행을 보장하지 않습니다. 검증은 별도 명령, 훅, 또는 CI 점검처럼 기계적으로 실행되게 만드는 편이 확실합니다.
이 주제는 “Harness Engineering: инженерия надёжности AI-агентов” 강의에서 실습과 함께 자세히 다룹니다.
강의로 이동