AI 코딩 에이전트 시대의 핵심 역량은 “프롬프트를 잘 쓰는 능력”에서 “에이전트가 스스로 관찰하고 검증하며 개선하는 루프를 설계하는 능력”으로 이동하고 있습니다.
좋은 프롬프트 하나보다, 에이전트가 테스트·로그·리뷰·실행 결과를 읽고 다음 행동을 정하는 구조가 중요해졌습니다.
AI가 코드를 쓰는 것보다 “정말 동작한다는 증거”를 자동으로 수집하고 반복 수정하는 체계가 핵심입니다.
개발자는 직접 모든 코드를 작성하기보다, 목표 설정·검증 기준·안전장치·최종 판단을 담당하는 감독형 엔지니어가 됩니다.
최근 Addy Osmani, Kilo, Langfuse 등에서 공통적으로 말하는 핵심은 같습니다. AI 에이전트를 “답변 생성기”가 아니라 “작업을 완수할 때까지 반복하는 실행 시스템”으로 다루는 것입니다.
| 구분 | Prompt Engineering | Loop Engineering |
|---|---|---|
| 주요 관심 | 모델에 넣는 입력 문장 | 모델 주변의 반복 실행 시스템 |
| 성공 기준 | 좋은 첫 답변 | 검증을 통과한 최종 변경 |
| 피드백 | 사람이 수동으로 다시 입력 | 테스트·로그·리뷰·실행 결과가 자동으로 다음 컨텍스트가 됨 |
| 개발자 역할 | 대화형 지시자 | 루프 설계자, 검증자, 위험 관리자 |
| 대표 산출물 | 프롬프트 템플릿 | AGENTS.md, CLAUDE.md, SKILL.md, hooks, CI, eval, worktree, agent policy |
Claude Code는 hooks, skills, subagents, worktrees, 세션 재개, plan mode 등을 제공하고, Codex는 클라우드 작업, 컨테이너 환경, 백그라운드 병렬 작업, GitHub 연동, PR 생성 흐름을 제공합니다. 즉, 루프를 직접 bash로 짜던 단계에서 제품 기능으로 구성하는 단계로 이동했습니다.
최신 연구들은 AI 코딩 도구 사용 후 개발자가 코드 작성 시간은 줄지만, 검토·검증·수정·감독 업무가 늘어난다고 보고합니다. 이 변화가 Loop Engineering의 실무적 필요성을 만듭니다.
Langfuse는 AI Engineering Loop를 production trace → monitoring → dataset/eval → experiment → deploy의 순환으로 설명합니다. 소프트웨어 개발뿐 아니라 AI 제품 운영 자체도 닫힌 피드백 루프가 핵심이 되고 있습니다.
루프가 자동으로 오래 돌면 토큰 비용, 잘못된 최적화, 테스트 과적합, 의미 없는 대량 변경, 권한 오남용이 발생할 수 있습니다. 그래서 루프 설계에는 비용 제한과 중단 조건이 반드시 포함돼야 합니다.
실전에서는 아래 6개 요소가 루프의 뼈대가 됩니다.
| 요소 | 역할 | 구현 예시 |
|---|---|---|
| Goal / Task Source | 무엇을 할지 정하는 입력 지점 | GitHub issue, Linear ticket, TODO.md, Slack 요청, 수동 명령 |
| Memory | 단일 대화 밖에 남는 장기 상태 | AGENTS.md, CLAUDE.md, LOOP_STATE.md, issue comment, PR checklist |
| Execution Harness | 에이전트가 안전하게 작업하는 실행 환경 | git worktree, container, sandbox, permission mode |
| Validation | 성공/실패를 판단하는 관찰 장치 | unit test, integration test, typecheck, lint, build, Playwright, screenshot diff |
| Control Policy | 루프가 어디까지 해도 되는지 제한 | max iteration, max token, protected files, destructive command approval |
| Human Checkpoints | 사람이 판단해야 하는 시점 | 아키텍처 변경, DB migration, 보안/결제/권한 로직, 배포 승인 |
가독성을 위해 이 코드 블록은 다른 예시보다 글자 크기와 대비를 높였습니다.
while not done and iteration < MAX_ITERATIONS:
goal = read_task()
context = collect_relevant_context(goal)
plan = agent.plan(goal, context)
diff = agent.apply_small_change(plan)
result = run_validation(diff)
write_memory(goal, plan, diff, result)
if result.passed:
create_summary_and_pr()
done = true
elif result.is_blocked or result.is_risky:
ask_human_for_decision()
break
else:
context += result.errors
continue
버그 수정회귀 방지
실패 테스트를 먼저 만들거나 기존 실패 테스트를 기준으로 수정합니다. 성공 조건이 명확해서 가장 안전하게 시작할 수 있습니다.
목표 → 관련 테스트 찾기/작성 → 코드 수정 → 테스트 실행 → 실패 로그 반영 → 반복
마이그레이션타입 안정성
TypeScript, Python type checker, Rust compiler 같은 엄격한 피드백을 사용해 에이전트가 오류를 하나씩 줄여갑니다.
타입 오류 수집 → 작은 수정 → typecheck → 남은 오류 분류 → 반복
PR 댓글 처리코드 리뷰
리뷰 코멘트를 작업 항목으로 변환하고, 각 항목마다 수정·검증·요약을 반복합니다.
리뷰 댓글 읽기 → 수정 계획 → patch → test → 답글 초안 → 반복
운영 장애로그 분석
로그, trace, 재현 스크립트, 로컬 실행 결과를 관찰 신호로 사용합니다. 권한과 데이터 접근 제한이 중요합니다.
증상 수집 → 재현 → 로그/trace 분석 → 최소 수정 → 재현 테스트 → 반복
프론트엔드시각 검증
Playwright, screenshot, browser console, accessibility check를 사용해 “화면이 실제로 맞는지” 확인합니다.
화면 경로 실행 → 스크린샷/콘솔 확인 → CSS/컴포넌트 수정 → 재확인
LLM 앱RAGEval
production trace에서 실패 사례를 추출하고, dataset/eval을 만들고, prompt/model/retrieval 변경을 실험 후 배포합니다.
trace 수집 → 실패 분류 → eval dataset → 실험 → 품질 비교 → 배포
| 기능 | Loop Engineering에서의 역할 | 예시 |
|---|---|---|
| Skills | 반복 절차를 재사용 가능한 명령/지식으로 분리 | .claude/skills/fix-failing-test/SKILL.md |
| Hooks | 파일 수정 후 formatter 실행, 위험 명령 차단, 작업 종료 시 검증 자동화 | PostToolUse, PreToolUse, Stop |
| Subagents | 탐색, 계획, 리뷰, 구현을 별도 컨텍스트와 권한으로 분리 | Explore agent, reviewer agent, migration agent |
| Worktrees | 여러 루프를 병렬 실행하되 변경 충돌 방지 | claude --worktree feature-auth |
| Plan mode | 파일 수정 전 계획 승인 | claude --permission-mode plan |
| Session resume | 긴 작업을 여러 세션에 걸쳐 이어가기 | claude --continue, /resume |
| 기능 | Loop Engineering에서의 역할 | 예시 |
|---|---|---|
| Cloud task | 백그라운드에서 독립 작업 실행 | 버그 수정, 기능 구현, 코드베이스 Q&A |
| Cloud environment | 컨테이너 기반 실행 환경과 의존성 관리 | setup script, runtime pinning, linter/test 설치 |
| Parallel work | 여러 작업을 동시에 위임 | 각 task가 별도 환경에서 diff 생성 |
| AGENTS.md | 프로젝트별 lint/test 명령과 작업 규칙 제공 | 검증 명령, 코딩 규칙, 금지 작업 |
| GitHub integration | issue/PR에서 작업 시작, diff/PR 생성 | @codex 기반 작업 위임 |
| 실패 모드 | 설명 | 대응 |
|---|---|---|
| Thrashing | 에이전트가 같은 실패를 계속 반복하며 비용만 소모 | 반복 횟수 제한, 실패 패턴 감지, 사람에게 escalate |
| Test overfitting | 테스트만 통과하도록 우회적 코드 작성 | 리뷰 체크리스트, mutation/edge test, runtime 검증 |
| Context drift | 초기 목표에서 벗어나 엉뚱한 변경으로 확장 | 작업 범위 고정, diff size 제한, 매 반복 목표 재확인 |
| Agent slop | 에이전트가 만든 저품질 대량 산출물이 누적 | 품질 기준, 인간 taste/판단 checkpoint, 대표 데이터셋 관리 |
| Unsafe autonomy | DB 삭제, 배포, 결제/권한 로직 변경 등 위험 행동 | 권한 분리, destructive command block, protected files, 승인 필수 |
| Tokenmaxxing | 자동 루프가 과도한 모델 호출과 비용을 유발 | 모델 라우팅, budget cap, cheap model subagent, 캐시/요약 |
처음부터 “자율 개발자”를 만들지 말고, 성공 기준이 명확한 작업부터 자동화합니다.
에이전트가 “무엇을 실행해야 성공인지” 모르면 루프가 닫히지 않습니다. 모든 repo에 아래를 명확히 둡니다.
# 필수 검증 명령 예시
pnpm lint
pnpm typecheck
pnpm test
pnpm build
pnpm e2e -- --project=chromium
대화창이 아니라 repo 안에 규칙을 둡니다. 그래야 세션·도구·담당자가 바뀌어도 루프가 유지됩니다.
AGENTS.md: Codex/다중 에이전트용 작업 규칙CLAUDE.md: Claude Code 프로젝트 컨텍스트.claude/skills/*/SKILL.md: 반복 작업 절차LOOP_STATE.md: 장기 루프의 진행 상태다음 변경은 자동 merge 금지 대상으로 두는 것이 안전합니다.
| 지표 | 의미 |
|---|---|
| First-pass success rate | 첫 루프에서 검증 통과 비율 |
| Iterations to pass | 완료까지 걸린 반복 횟수 |
| Human intervention rate | 사람 개입이 필요한 비율 |
| Revert / regression rate | AI 변경 후 되돌림 또는 장애 비율 |
| Cost per accepted PR | 최종 반영된 PR 1건당 모델/시간 비용 |
# AGENTS.md
## Mission
You are working in this repository as a coding agent. Prefer small, reversible changes.
## Project rules
- Do not change public APIs without explicit approval.
- Do not modify database migrations, auth, billing, or deployment files unless the task explicitly asks for it.
- Follow existing patterns before introducing new abstractions.
- Keep diffs focused. If the task grows, stop and summarize the new scope.
## Validation commands
Run these before claiming completion:
```bash
pnpm lint
pnpm typecheck
pnpm test
pnpm build
```
## Completion report
Include:
1. What changed
2. Validation commands run and results
3. Files changed
4. Known risks or follow-up work
---
name: fix-failing-test
description: Fix a failing test by reproducing it, making the smallest code change, and verifying the result.
---
# Fix Failing Test Skill
Use this when the user gives a failing test, CI output, or regression.
## Loop
1. Identify the exact failing test and command.
2. Re-run only the targeted test first.
3. Inspect nearby implementation and existing patterns.
4. Make the smallest coherent fix.
5. Re-run the targeted test.
6. If it passes, run the related test file or package test.
7. Stop after 3 failed attempts and summarize blockers.
## Rules
- Do not rewrite broad modules to fix one test.
- Do not delete assertions unless the user explicitly asks.
- Add regression coverage when the failure reveals a missing edge case.
## Report
- Root cause
- Change summary
- Commands run
- Remaining risk
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "jq -r '.tool_input.file_path' | xargs pnpm prettier --write"
}
]
}
]
}
}
# 정책 아이디어
- rm -rf, DROP TABLE, terraform apply, kubectl delete는 사람 승인 필요
- .env, secrets, credentials 파일은 읽기/쓰기 금지
- main/master 직접 push 금지
- migration 파일 생성 시 자동 중단 후 승인 요청
- 500줄 이상 diff 발생 시 루프 중단 후 요약
이 작업은 Loop Engineering 방식으로 진행하세요.
목표:
- [여기에 목표 입력]
루프 규칙:
1. 먼저 관련 파일과 기존 패턴을 조사하세요.
2. 수정 전 간단한 계획을 작성하세요.
3. 한 번에 작은 변경만 하세요.
4. 각 변경 후 가능한 가장 좁은 검증 명령을 실행하세요.
5. 실패하면 로그를 읽고 원인을 가설화한 뒤 수정하세요.
6. 3회 이상 같은 실패가 반복되면 멈추고 원인/대안을 보고하세요.
7. 인증, 결제, DB migration, 배포 설정 변경은 승인 없이 하지 마세요.
완료 보고:
- 변경 요약
- 실행한 검증 명령과 결과
- 남은 리스크
- 다음 추천 작업
AGENTS.md / CLAUDE.md / 검증 명령 / 위험 정책을 먼저 표준화하고, 반복 빈도가 높은 3개 작업을 skill 또는 loop로 만드는 것이 가장 효과적입니다.
AGENTS.md를 첫 산출물로 작성합니다.아래 자료를 기반으로 2026년 6월 16일 기준으로 정리했습니다. 일부 블로그는 신흥 개념 설명 자료이므로, 공식 문서와 연구 자료를 함께 교차 확인했습니다.