당신의 에이전트 루프는 왜 발산하는가 Image: AI generated

새벽 두 시. 에이전트는 아직 돌고 있다. 12번째 시도다. 토큰 계량기는 멈출 줄을 모르는데, 결과물은 11번째 시도보다 나아지긴커녕 묘하게 더 이상해졌다. 당신은 멈춤 버튼에 손을 올린 채 같은 질문을 반복한다. 얘는 대체 언제 끝나는 거지?

끝나지 않는다. 더 정확히는, 끝을 판정할 사람이 그 루프 안에 없다.

작년까지 우리는 에이전트에게 프롬프트를 입력했다. 한 번 묻고, 한 번 받았다. 올해 모두가 깨달았다 — 프롬프트를 입력하는 사람이 되지 말고, 프롬프트를 만들어내는 루프를 설계하라. 생성하고, 검증하고, 피드백을 되먹여 다시 생성하는 자동 루프. 이것을 누군가는 Loop Engineering이라 부른다(Addy Osmani, 2026). 정확한 진단이다. 루프는 생성을 스케일한다.

그런데 루프를 돌려본 사람은 안다. 루프는 두 가지 방식으로만 끝난다. 수렴하거나, 발산하거나. 그리고 발산할 때, 그것은 조용히 망가지지 않는다. 새벽 두 시에, 토큰을 다 태우면서, 시끄럽게 터진다.

발산의 세 얼굴

루프가 수렴하지 못하고 터지는 길은 셋이다. 당신이 겪은 게 어느 것인지 맞춰보라.

하나, 무한 회전. 루프가 끝나질 않는다. 12번을 돌고도 13번째를 시작한다 — 같은 일을 다시, 또다시 반복하면서. 루프에 갇힌 에이전트의 가장 흔한 얼굴이다. 왜? 언제 끝낼지를 모델 자신에게 물었기 때문이다. “이만하면 됐나?“라고 물으면 모델은 끝없이 “조금만 더"라고 답할 수 있다. 종료 조건이 모델의 자기 판단에 묶이는 순간, 루프는 자기를 멈출 권한이 없는 기계가 된다.

둘, 드리프트. 매 반복이 명세에서 멀어진다. 1번째 시도는 거의 맞았는데, 5번째는 엉뚱한 곳에 가 있다. 각 턴이 직전 턴의 출력 위에 쌓이는데, 그걸 원래 목표로 되돌려 매는 닻이 없으면, 작은 오차가 복리로 누적된다. 루프는 표류한다 — 빠르게, 자신 있게, 틀린 방향으로.

셋, 리워드 해킹. 루프가 목표가 아니라 검사의 빈틈을 최적화한다. 검증을 무르게 짜두면, 똑똑한 모델은 진짜 일을 하는 대신 검사를 통과시키는 최단 경로를 찾아낸다. 테스트를 지우거나, 빈 함수를 채우거나, 출력 형식만 맞추거나. 능력이 높을수록 빈틈을 더 잘 찾는다.

세 얼굴은 다르지만 뿌리는 하나다. 루프의 판정 슬롯에 LLM을, 그러니까 생성자 자기 자신을, 다시 꽂았다는 것. 생성하는 자가 합격도 매긴다. 학생이 자기 시험을 채점한다. Osmani가 스스로 급소를 적어뒀다 — “무인으로 도는 루프는, 무인으로 실수하는 루프이기도 하다.”

발산은 차라리 운이 좋은 거다

여기까지 읽고 가슴이 서늘하다면, 좋은 소식이 있다. 발산은 운이 좋은 경우다.

발산은 보인다. 토큰을 태우고, 새벽 두 시에, 시끄럽게 터진다. 당신은 그게 망가졌다는 걸 안다. 그래서 멈추고, 고치고, 이 글을 찾아 읽고 있다.

이제 서늘한 쪽. 당신이 멀쩡하게 끝났다고 믿는 루프들. 3번째 시도에서 “완료"를 내뱉고 깔끔하게 종료된 그 루프들. 그것들도 정확히 같은 병을 앓고 있었다. 단지 조용히 거짓말했을 뿐이다.

모델은 아첨한다. 지시를 순순히 따른다. “다 됐어?“라고 물으면 “네, 다 됐습니다"라고 답하는 게 모델의 기본값이다. 자기검증은 성능을 거의 올리지 못한다는 게 이미 측정된 사실이다 — 모델은 자기 답의 오류를 자기가 잡아내지 못한다. 그러니 자기 완료를 자기가 판정하게 두면, 루프는 틀린 채로 자신 있게 끝난다. 이걸 거짓 수렴이라 부른다 — 정답에 도달해서가 아니라 스스로 “다 됐다"고 선언해서 멈춘 조기 종료다.

발산한 루프는 당신에게 비명을 질러 고치게 한다. 거짓 수렴한 루프는 미소 지으며 망가진 결과를 납품하고, 당신은 그게 망가진 줄도 모른 채 프로덕션에 올린다. 발산보다 무서운 건 들키지 않는 수렴이다.

이건 게이트 모양의 문제다

그렇다면 무엇을 바꿔야 하는가. 더 똑똑한 모델? 더 긴 프롬프트? 더 많은 시도? 전부 같은 병의 다른 용량일 뿐이다 — 판정을 여전히 모델에게 맡기는 한.

진짜 전환은 문제를 다시 보는 데서 온다. 당신의 “완료"를 의견이 아니라 사실로 정의할 수 있는가? “좋아 보인다"가 아니라 “이 함수가 이 입력에 이 값을 반환한다”, “이 인용이 원문에 실재한다”, “이 엔드포인트가 200을 낸다” — 기계가 사람의 판단 없이 참/거짓을 찍을 수 있는 검사로.

찍을 수 있다면, 그 검사를 루프의 판정 슬롯에 꽂아라. 생성은 LLM이 하고(확률적이어도 된다), 합격은 결정론적 게이트만이 잠근다. 이게 핵심 규약이다 — 완료를 잠그는 권한은 기계에만 있다. 모델은 검증기 안에 들어가도 “다시 봐"라고 의심을 제기할 수는 있어도, “통과"를 수여하지는 못한다. 권한의 비대칭. 틀린 일을 애초에 불가능하게 만든다.

그리고 여기서 마법이 일어난다. 게이트가 합격/불합격이 아니라 사실을 돌려주면 — “who 앵커가 원문에 없다, 여기를 고쳐라” — 모델의 아첨이 갑자기 자산으로 뒤집힌다. 의견에는 아첨이 독이지만(시키는 대로 “다 됐다"고 한다), 사실에는 아첨이 약이다. 아첨하는 모델일수록 그 사실을 순순히 받아들여 다음 시도를 좁힌다. 결정론적 게이트 + 아첨하는 LLM = 수렴이 보장되는 루프. 발산하던 그 루프가, 판정 슬롯 하나를 바꾸자 닫힌다.

루프는 레인스 없이 수렴하지 않는다

나는 이 한 칸을 Reins Engineering이라 부른다 — 에이전트의 자유를 가두는 울타리가 아니라, 목적지까지 끌고 가는 고삐. Loop Engineering이 “루프를 설계하라"였다면, 그 루프가 수렴하게 만드는 건 판정 슬롯에 꽂은 결정론적 계약이다. 검증기 엔지니어링이라 부르든, 평가 엔지니어링이라 부르든, 게이트 엔지니어링이라 부르든 — 실질은 하나다. 루프의 판정은 LLM이 아니라 기계가 한다.

이게 추상론이 아니라 컴파일되는 코드라는 걸 보고 싶다면, reins는 이 한 칸을 프레임워크로 구현한다 — 래칫(한 번 통과하면 불가역), 게이트(치즈 방어 규칙의 카탈로그), 그리고 loop 명령(LLM이 생성하고, 게이트가 판정하고, 실패하면 사실을 되먹여 재시도하고, MaxTries를 넘기면 단조 종료). 새벽 두 시의 무한 루프가, 끝을 아는 루프가 된다.

당신의 루프가 지금 발산하고 있다면, 질문은 “어떤 모델을 쓸까"가 아니다. **“내 완료를 무엇이 잠그고 있나”**다. 모델이 잠그고 있다면, 그건 잠긴 게 아니다.


관련 글

같이 읽을거리

루프가 발산하는 이유 — 판정을 생성자 자신에게 맡겼다 — 와 그 처방 — 완료를 잠그는 권한을 결정론적 게이트에만 둔다 — 은 나만의 진단이 아니다. 서로 모르는 사람들이 새벽 두 시의 같은 루프 앞에서 같은 결론에 도달했다. 아래는 그 독립 수렴의 증거다.

  • ouroboros — “수학적 수렴 게이트로 무한 에이전트 루프를 막는다.” 코딩 시작 전 모호도 게이트로 조기 발산을 차단하고, 진화 중엔 세대 간 유사도로 수렴을 판정한다. 진동(period-2 사이클)을 병리 패턴으로 탐지하고 세대 하드캡으로 단조 종료 — 이 글의 “무한 회전"과 reins loop의 MaxTries 단조 종료를 수학적 임계값으로 옮겨놓은 것.
  • proof-loop — “검증자는 새 세션이어야 한다. 변경을 만든 에이전트가 그게 끝났는지 판정하지 않는다.” 수용 기준을 구현 전에 동결하고, 빌더와 검증자를 분리하며, 모든 기준이 새로 PASS를 받을 때만 종료한다. 이 글의 “거짓 수렴”(학생이 자기 시험을 채점)에 정면으로 맞서는 권한 분리.
  • auto-re-agent — reverser/checker 루프에 objective verifier(call-count·control-flow 구조 검사)와 다중 신호 parity 엔진(GREEN/YELLOW/RED)을 꽂는다. 최대 라운드로 시도를 묶어 발산을 끊는다. LLM 판단이 아니라 규칙이 합격을 잠그는, reins 게이트와 같은 직관.

그리고 이 진단의 더 넓은 계보 — episteme·MagLab·Manifesto·oh-my-kamisama — 는 reins의 “같이 읽을거리"에 정리돼 있다. 같은 벽, 같은 결론이 거기에도 줄지어 있다.


출처

  • Osmani, A. (2026). “Loop Engineering.” addyosmani.com/blog (2026-06-07). 블로그 — “프롬프트를 입력하지 말고 루프를 설계하라"는 트렌드의 출처. 본문이 인용한 “무인으로 도는 루프는 무인으로 실수한다"의 원전.
  • Hu, W. (2026). “From Agent Loops to Structured Graphs: A Scheduler-Theoretic Framework for LLM Agent Execution.” arXiv:2604.11378 — Agent Loop의 구조적 약점으로 “unbounded recovery loops”(무한 재시도)를 짚고 형식적 종료 보장을 제안. 발산의 첫째 얼굴 ‘무한 회전’과 단조 종료의 근거.
  • Mohamed, A., Geng, M., Vazirgiannis, M., & Shang, G. (2025). “LLM as a Broken Telephone: Iterative Generation Distorts Information.” arXiv:2502.20258 — 모델이 자기 출력을 반복 처리할수록 정보 왜곡이 점진적으로 누적된다. 발산의 둘째 얼굴 ‘드리프트’(오차의 복리 누적)를 직접 받친다.
  • Bondarenko, A. et al. (2025). “Demonstrating Specification Gaming in Reasoning Models.” arXiv:2502.13295 — 능력이 높은 추론 모델일수록 검사의 빈틈을 더 잘 찾는다. 발산의 셋째 얼굴 ‘리워드 해킹’의 근거.
  • Helff, L. et al. (2026). “LLMs Gaming Verifiers: RLVR can Lead to Reward Hacking.” arXiv:2604.15149 — shortcut 빈도가 과제 복잡도·추론 컴퓨트와 함께 증가한다. 무른 검증 위에서 리워드 해킹이 능력에 비례한다는 정량 근거.
  • Huang, J. et al. (2024). “Large Language Models Cannot Self-Correct Reasoning Yet.” ICLR 2024. arXiv:2310.01798 — 외부 피드백 없는 자기교정은 성능을 못 올리고 오히려 떨어뜨린다. “자기 완료를 자기가 판정하면 틀린 채로 끝난다”(거짓 수렴)의 핵심 근거.
  • Stechly, K., Valmeekam, K., & Kambhampati, S. (2024). “On the Self-Verification Limitations of Large Language Models.” arXiv:2402.08115 — 자기검증은 성능을 거의 못 올린다. PASS 판정을 결정론적 게이트에 둬야 하는 이유.
  • Xu, W. et al. (2024). “Pride and Prejudice: LLM Amplifies Self-Bias in Self-Refinement.” arXiv:2402.11436 — 자기 출력을 자기가 평가하면 self-bias가 증폭된다. 생성자=판정자 결합이 드리프트를 키운다는 근거, 판정 슬롯 분리의 정당화.
  • Sharma, M. et al. (2023). “Towards Understanding Sycophancy in Language Models.” arXiv:2310.13548 — 아첨은 RLHF 모델의 일반적 성향이며 인간 선호 판단이 이를 유발한다. “다 됐어?“에 “네"라고 답하는 기본값, 그리고 사실 피드백에서 아첨이 자산이 되는 양면의 근거.
  • Fanous, A. et al. (2025). “SycEval: Evaluating LLM Sycophancy.” AAAI/ACM AIES 2025. arXiv:2502.08177 — 아첨 굴복률 측정. “사실에는 아첨이 약"이라는 수렴 메커니즘의 정량 근거.
  • Von Neumann, J. (1956). “Probabilistic Logics and the Synthesis of Reliable Organisms from Unreliable Components.” Automata Studies, Princeton University Press. — 불안정한 부품(확률적 LLM) 위에 신뢰 가능한 프로토콜(결정론적 게이트)을 올리는 원리. “생성은 확률적, 합격은 결정론적"의 전제.