Loop Engineering · 개발자용 정리

루프 엔지니어링

시키지 않아도 목표까지 돌고, 정해 둔 기준에서 스스로 멈추는 업무 구조를 설계하는 일입니다.

프롬프트를 잘 쓰는 기술에서 한 단계 올라가, 에이전트가 언제 시작하고 무엇으로 완료를 판정하며 언제 멈출지를 코드로 정합니다. 모델 안쪽에서 도는 루프는 이미 있으므로, 우리가 만드는 것은 그 바깥 루프입니다.

완료 기준 tests/ 행동 agent.run() 결과 diff CI 테스트 = 검증자 초록불이면 멈춤 · 빨간불이면 다시 수정
CI 파이프라인은 테스트가 초록불이 되면 머지하고, 빨간불이면 다시 고칩니다. AI 루프에는 그 테스트가 기본으로 없습니다. "됐다"를 판정하는 테스트를 직접 쓰지 않으면 루프는 멈추지 않거나, 엉뚱한 곳에서 멈춥니다.
1 · 위치 잡기

AI를 다루는 기술의 4단계

앞의 세 단계는 사람이 시킬 때 AI가 잘 움직이게 하는 기술입니다. 루프는 사람이 시키지 않아도 돌아가게 하는 기술입니다. 각 단계는 앞 단계를 대체하지 않고 그 위에 쌓입니다.

단계핵심 질문시작하는 주체개발자가 만드는 것사람의 역할
프롬프트무엇을 어떻게 요청할까"10년 차 마케터처럼 써 줘"사람, 매번지시문, 출력 형식, 예시매 요청 작성과 결과 확인
컨텍스트AI가 무엇을 알고 있어야 할까사람, 매번검색(RAG), 문서 주입, 대화 요약, 메모리필요한 자료 선별
하네스AI가 어디서 무엇으로 일할까사람, 매번툴 정의, MCP 연결, 규칙 파일, 샌드박스, 권한작업 환경 세팅
루프언제 시작하고, 무엇으로 판정하고, 언제 멈출까트리거, 자동오케스트레이터, 검증자, 상태 저장, 종료 가드목표와 판정 기준 정의, 예외 처리
2 · 경계 긋기

이너 루프와 아우터 루프

모델이 한 번의 실행 안에서 도는 순환은 에이전트 프레임워크가 이미 제공합니다. 루프 엔지니어링의 대상은 그 실행을 감싸는 바깥 순환입니다.

이너 루프 · 이미 있음

생각 → 도구 호출 → 관찰 → 다시 생각

ReAct 형태의 에이전트 실행 한 번입니다. LangGraph의 agent 노드, Claude Agent SDK의 query 한 번이 여기에 해당합니다. 다시 만들 필요가 없습니다.

# 프레임워크 안쪽
while msg.tool_calls:
    obs = run_tools(msg.tool_calls)
    msg = model(history + obs)
아우터 루프 · 우리가 설계

시작 → 위임 → 판정 → 기록 → 멈춤 또는 반복

언제 시작할지, 무엇을 시킬지, 누가 완료를 판정할지, 언제 멈출지를 코드로 정합니다. 이 페이지의 나머지는 모두 이쪽 이야기입니다.

def outer_loop(job):                     # 트리거가 호출
    state = State.load(job.id)              # 어디까지 했나
    while True:
        result  = agent.run(job.goal, state)  # 이너 루프
        verdict = verifier.check(result, job.criteria)
        state.record(result, verdict)
        if verdict.passed: return done(state)
        if (why := guard.tripped(state)):
            return escalate(state, why)
3 · 부품

아우터 루프를 이루는 6가지 구성 요소

루프 위의 부품을 눌러 보면 역할, 빠졌을 때 생기는 일, 구현 예시가 나옵니다. 점선 테두리 두 개(스킬, 상태 파일)는 "매번 첫날인 에이전트"에게 경험을 대신 주는 기억 장치입니다.

스킬 · how일하는 방식을 기억합니다절차, 규칙, 양식, 금지 사항. job이 바뀌어도 같습니다.
상태 파일 · where어디까지 했는지 기억합니다완료 단계, 산출물 위치, 마지막 오류, 다음 할 일. job마다 다릅니다.

스킬만 있고 상태가 없으면, 새로 뜬 에이전트는 스킬의 1단계부터 성실하게 다시 시작합니다. 분석을 반복하고 파일을 다시 내려받는 현상은 대개 스킬이 잘못된 게 아니라 스킬이 진행 위치를 모르기 때문입니다. 스킬의 0단계를 "상태 읽기"로 두고, 각 단계에 진입 조건과 산출물을 적어 두면 해결됩니다.

4 · 테스트 먼저 쓰기

종료 조건 설계

처음 만든 루프가 가장 많이 놓치는 부분입니다. 멈출 줄 모르는 루프는 토큰 비용을 계속 만들고, 기준이 모호한 루프는 덜 된 결과를 완료로 보고합니다.

판정 불가"좋은 보고서가 될 때까지"누가 봐도 같은 답이 나오지 않습니다. 결국 만든 모델의 자기 평가로 끝납니다.
판정 가능"필수 항목 5개가 채워지고, 모든 수치에 원본 쿼리 링크가 있을 때까지"스크립트로 참/거짓을 낼 수 있습니다.
작업 시나리오
완료 기준
안전장치
10회
400k
같은 오류 3회
# 안전장치는 여러 겹으로, 모델이 아니라 코드가 센다
@dataclass
class Guard:
    max_iters: int = 10
    max_tokens: int = 400_000
    max_seconds: int = 1_800
    stall_window: int = 3            # 같은 오류 시그니처가 연속 N회

    def tripped(self, s: State) -> str | None:
        if s.iters >= self.max_iters:         return "max_iters"
        if s.tokens >= self.max_tokens:       return "budget"
        if s.elapsed >= self.max_seconds:     return "timeout"
        last = s.error_sigs[-self.stall_window:]
        if len(last) == self.stall_window and len(set(last)) == 1:
            return "no_progress"
        return None

가드에 걸려 멈추는 것은 실패가 아닙니다. 상태 파일에 기록을 남기고 사람에게 질문으로 올라오는 것이 정상 경로입니다. 이때 에이전트를 종료시키지 말고 같은 스레드에서 답을 기다리게 해야 재개 시 다시 처음부터 하지 않습니다.

5 · 증상으로 역추적

흔한 실패 패턴

운영 중 보이는 증상에서 빠진 부품을 찾는 표입니다.

6 · 업계에서 본 실패

"에이전트는 실패했다"는 절반만 맞습니다

2025년은 "에이전트의 해"로 예고됐지만, 기업 현장의 평가는 과대 약속과 과소 전달이었습니다. 그런데 같은 시기 같은 모델로 코딩 에이전트는 크게 성공했습니다. 둘을 가른 것은 모델 성능보다 루프의 조건이었습니다.

40%+에이전틱 AI 프로젝트가 2027년 말까지 취소될 비율. 이유는 비용 증가, 불분명한 사업 가치, 부족한 리스크 통제Gartner, 2025.6예측치
17%에이전트를 실제 배포한 조직. 하이프 사이클상 기대 정점에서 환멸의 골짜기로 내려가는 중Gartner Hype Cycle for Agentic AI, 2026.4
~30%사무 업무 시뮬레이션에서 최고 모델의 작업 성공률CMU TheAgentCompany2025 모델 기준
58→35%CRM 업무 정확도가 단일 턴에서 다중 턴으로 가면 하락Salesforce CRMArena-Pro
90%매주 코딩 에이전트를 쓰는 전문 개발자 비율. 매일 사용은 68%JetBrains, 2026

자주 인용되는 "95% 실패"(MIT NANDA, 2025)는 에이전트가 아니라 생성형 AI 파일럿 전반이 6개월 안에 손익 효과를 내지 못했다는 수치입니다. 같은 보고서는 원인을 모델 품질보다 조직의 통합 실패로 봅니다. Gartner는 기존 챗봇이나 RPA에 이름만 바꿔 단 "에이전트 워싱"도 많다고 지적해, 실패 통계 일부는 진짜 에이전트의 실패가 아닐 수 있습니다.

성공한 곳과 실패한 곳의 차이

왼쪽 칸의 부품 이름을 누르면 3번 섹션의 해당 설명으로 이동합니다.

루프 조건코딩 에이전트 · 성공상담·사무 에이전트 · 고전
(판정 기준)컴파일, 테스트, CI가 참/거짓을 냅니다"고객이 만족했나"는 스크립트로 판정하기 어렵습니다
(분리)테스트와 리뷰어가 만든 쪽과 따로 있습니다자기 응답을 자기가 판단하는 경우가 많습니다
(되돌리기)브랜치, 샌드박스, PR 승인 뒤에만 반영됩니다고객에게 나간 답변은 회수할 수 없습니다
저장소와 커밋 이력이 그대로 상태입니다대화가 끝나면 맥락이 사라지고, 다중 턴에서 무너집니다
(권한)쓰기 범위가 저장소 안으로 제한됩니다여러 시스템을 넘나들며 기밀 정보 경계가 흐려집니다
사람의 위치결과를 검토할 줄 아는 개발자가 루프 안에 있습니다검토할 수 없는 최종 고객이 결과를 바로 받습니다

실패 원인과 빠진 부품

"됐다"의 기준이 없음운영으로 가지 못한 파일럿에서 가장 많이 꼽힌 장애물은 기술이 아니라 "에이전트가 잘 작동한다"의 정의가 없다는 것이었습니다.
빠진 부품 · 검증자, 종료 조건
비용 폭주와 불분명한 ROIGartner가 꼽은 취소 사유 1순위입니다. 측정 없이 시작한 프로젝트는 예산 심사에서 방어할 근거가 없습니다.
빠진 부품 · 안전장치(토큰·시간 한도), 성과 측정
긴 작업에서 맥락 유실여러 도메인과 도구를 넘나들면 맥락을 유지하지 못하고, 다중 턴에서 정확도가 크게 떨어집니다.
빠진 부품 · 상태 파일, job 단위 스레드
완전 자율을 목표로 함결과가 나는 곳은 범위가 좁고 정해진 워크플로우 안에서 사람의 감독을 받는 에이전트라는 평가가 공통적입니다.
빠진 부품 · 승인 게이트, 에스컬레이션 경로
거버넌스와 책임 소재사고가 났을 때 누가 책임지는지 정하지 못해 평가 단계에 머무는 조직이 많습니다.
빠진 부품 · 쓰기 권한 범위, 실행 기록

사례: Klarna. AI 상담이 상담원 700명분의 일을 한다고 발표했지만, 고객 만족도가 떨어지고 미해결 문의가 늘자 2025년에 사람 상담원을 다시 채용했습니다. 판정하기 어려운 목표(공감과 해결)에, 되돌릴 수 없는 출력(고객 응대)을, 사람 검토 없이 맡긴 경우입니다.

실패한 것판정 기준과 되돌리기가 없는 곳에 넣은 완전 자율 에이전트기대가 현실 크기로 줄어드는 단계이지, 기술 자체가 끝난 것은 아니라고 봅니다.
살아남는 것범위가 좁고, 결과를 검증할 수 있고, 사람이 루프 안에 있는 에이전트이 페이지의 6가지 부품과 종료 조건을 갖춘 형태입니다.
출처 보기
7 · 현업 적용

어떤 업무부터, 어떤 순서로

모든 업무가 루프에 맞지는 않습니다. 후보를 고르고, 한 칸씩 올라가고, 같은 틀로 분해해 보는 순서를 권합니다.

후보 업무 진단

도입 단계

한 번에 다 만들지 않고, 각 단계가 안정된 뒤 다음으로 올라갑니다. 트리거 자동화는 가장 마지막입니다.

사례로 분해해 보기

8 · 직접 설계

루프 설계 캔버스

7칸을 채우면 오른쪽에서 흔한 실수를 바로 짚어 줍니다. 작성 내용은 이 브라우저에만 임시 저장되고, Markdown으로 복사해 설계 문서나 이슈에 붙일 수 있습니다.

9 · 마무리

첫 루프를 돌리기 전 체크리스트

  1. 완료 기준을 스크립트로 참/거짓 판정할 수 있습니다.
  2. 완료 판정을 만든 에이전트가 아닌 쪽(테스트, 검증 에이전트)이 합니다.
  3. 최대 반복, 토큰·시간 한도, 무진전 감지가 코드로 걸려 있습니다.
  4. 상태 파일을 프롬프트가 아니라 코드가 매 반복마다 기록합니다.
  5. 스킬의 첫 단계가 상태 읽기이고, 각 단계에 진입 조건과 산출물이 있습니다.
  6. 사람에게 물어볼 때 에이전트를 종료하지 않고 같은 스레드에서 대기합니다.
  7. job마다 파일, 브랜치, 대화 상태가 분리되어 있고, 외부 쓰기에는 멱등 키가 있습니다.

세 줄로 줄이면 이렇습니다. 테스트(판정 기준)를 먼저 쓰고, 검사는 남이 하게 하고, 기억은 파일에 남깁니다.