이 문서는 AI 에이전트 운영의 일반 패턴(sandbox·격리·deterministic check·harness·메모리·장시간 운영)을 정리합니다. 출발 맥락은 코딩 에이전트의 “출력 가속 vs 검증 지연” 문제였지만, 4·5·7·8장 등 대부분은 코딩 여부와 무관하게 성립합니다. 코딩에 특화된 부분은 절 제목에 **(코딩 특화)**로 표시했습니다.
본 가이드는 빅테크 1차 출처, 공인된 권위자(Martin Fowler, Addy Osmani), 멀티-소스 보도, 내부 운영 경험에 기반한 내용만 포함합니다.

문제 진단

AI 에이전트가 코드를 빠르게 생성하면서 엔지니어의 작업이 작성 → 리뷰·디버그·관리로 이동하고 있습니다. 구현 시간이 빨라지는 만큼 새로운 병목이 생기고 있으며, 그 병목들은 다음과 같습니다.

  • PR 리뷰 부하: 결과물이 그럴듯해 보이고 테스트가 통과해도 실제로는 불필요한 코드 중복·약화된 CI·기술 부채가 누적될 수 있습니다.
  • CI 비용·시간: 에이전트가 자주 변경을 만들기 때문에 그때마다 테스트나 빌드가 트리거되면 비용과 시간이 급격하게 늘어납니다.
  • 자가 검증: LLM은 자신의 작업을 객관적으로 평가하지 못하는 경향이 있고, 이 때문에 의도치 않은 에러가 발생하거나 추가적인 확인을 거쳐야 합니다.
  • 실행 환경: 기존 개발 환경은 사람이 직접 조작하는 것을 전제로 합니다. 때문에 AI 에이전트에게는 적합하지 않은 환경인 경우가 많고, 이것이 준비되지 않으면 모델이 제한 환경에서 작업하게 되어 품질이 떨어질 수 있습니다.

근본 문제 (Addy Osmani)

장시간 동작하는 에이전트에는 세 가지 본질적 문제가 있습니다.

문제설명
Finite context (context rot)컨텍스트 윈도가 유한하고, 길어질수록 품질이 떨어짐
No persistent state세션 간 상태가 보존되지 않음
Unreliable self-verification자기 출력을 신뢰성 있게 검증하지 못함

해법 카테고리

1. 시프트-레프트 (Shift-Left): spec 단계 검증 (코딩 특화)

PR 시점이 아니라 spec 수준에서 검증하면 리뷰 부하를 근본적으로 줄일 수 있습니다.

에이전트 PR 리뷰 체크리스트 (GitHub Engineering Blog)

  • 약화된 CI 차단 (에이전트가 테스트를 skip·약화시키지 않았는지)
  • 중복 유틸·이미 존재하는 헬퍼 재발견 검출
  • Critical path 변경 추적
  • LLM 워크플로 보안 경계 검증
  • Scoped 변경 + failing pre-change test 요구
  • Edge case 검증, 작업별 Evidence 존재 확인

Vibe vs Spec-Driven Development 영역 분리 (InfoWorld 13명 임원 인터뷰)

작업 유형권장 방식
탐색·프로토타입 (small blast radius)Vibe coding
분산 상태·트랜잭션 무결성·프로덕션 시스템Spec-Driven Development

두 방식을 동시에 운영하되 작업 종류로 분기. Vibe로 탐색한 후 SDD로 harden·ship.

2. AI가 AI를 검증 (AI-checks-AI)

검증 프로세스를 AI로 자동화해서 인간 리뷰 병목을 줄입니다.

  • AI는 자신의 작업물을 객관적으로 평가하지 못하는 경우가 많습니다. 검증 AI는 구현 AI와 별개여야 합니다.
  • 아래에 설명할 Deterministic Check을 같이 적용하는 것이 좋습니다.
  • 당연히 아직까지는 사람의 개입이 0이 되지는 않습니다. 마치 LLM as a judge의 평가를 100% 신뢰할 수 없는 것과 같습니다.

3. Deterministic Check

LLM은 기본적으로 동일한 답변이 보장되지 않고 결정적이지 않습니다.
따라서 이를 100% 신뢰하지 않고 스크립트 등으로 고정된 검증 단계를 거치도록 합니다. 대표적으로 다음과 같은 것들입니다.

  • Lint, Type checking
  • File length, 함수 크기 등의 Hard cap
  • CI, Unit test, E2E test
  • Pre-defined policy and guardrail: Human in the loop 전에 정의해 둘 수 있는 것들은 정의해 둡니다.
  • Human approval before destructive action
  • Observability in Dev/Canary environments

이 과정에서 통과 기준과 검증 결과를 Agent에게 제공하고, 재검증을 요청하는 과정 역시 필요합니다. 중요한 Deterministic Check는 Agent가 수정하여 우회할 수 없도록 합니다.

AI에게 스크립트나 CI 등 위 내용에 해당되는 시나리오를 직접 구성하게 하는 것도 좋습니다. 하지만 검증 누락으로도 이루어질 수 있기 때문에 반드시 추가 검증 과정이 필요합니다.

4. Sandbox와 실행 환경

자율 Agent 워크플로우는 모델만큼 실행/테스트 환경 인프라도 중요합니다. AI는 언제나 실수할 수 있습니다. 핵심은 로컬/클라우드에 관계없이 이를 고려하여 격리된 환경을 구성하는 것입니다. AI가 자율성을 가짐과 동시에 예상 밖의 행동을 하는 것을 제어하고, 문제가 생겼을 경우 빠르게 복구/폐기/재생성할 수 있도록 설계되어야 합니다.

Sandbox 설계 원칙

  • Agent 실행 환경, Sandbox + 테스트 인프라, Production 환경은 모두 분리되어야 합니다.
  • Agent는 도구를 통해 Sandbox를 조작합니다.
  • 작업 환경은 언제든 새로 만들 수 있고, 문제가 생기면 복구하거나 부담 없이 폐기할 수 있어야 합니다.
  • 작업 범위를 명확히 분리해야 합니다.
  • 작업 환경에서 일어난 일을 지속적으로 기록하여 언제든 작업을 저장하고 중단 시점부터 재시작할 수 있어야 합니다.

보안 기본값

  • .env, .git, 각종 secret, PII(Personally Identifiable Information) 등 민감 데이터는 기본적으로 접근을 막거나 Masking해야 합니다.
  • Git 권한, 네트워크 접근, API Key 호출 등은 토큰별 정책으로 최소 권한만 부여하고, 가능하다면 Audit log도 남겨야 합니다.
    • 특히 Production 접근, Destructive command, 결제·인프라 변경 등은 사람의 승인이 중간에 들어가도록 해야 안전합니다.

격리 모델 선택

  • Tool 격리: Agent는 호스트에 두고 위험한 Tool 호출만 격리합니다. 조사나 작은 자동화처럼 권한이 낮을 때 충분할 수 있습니다.
  • Agent 격리: Agent 자체를 Sandbox 안에서 실행합니다. 신뢰할 수 없는 코드, 고객 데이터, 네트워크 접근, Secret이 섞이면 이쪽이 기본입니다.
  • 기준은 “Agent가 탈취되었을 때 밖으로 나갈 데이터나 권한이 있는가”입니다. 많을수록 강한 격리를 선택합니다.

상태와 외부 연결

Agent 격리를 한다면 Sandbox는 가능한 한 비워 둡니다. 대화 이력, 파일 저장, 과금, Credential은 Sandbox 밖에서 관리하고, Sandbox에는 Session ID와 짧은 수명의 권한만 줍니다. 파일 I/O도 가능하면 외부 Control Plane을 통하게 합니다.

정상 기능으로 열어 둔 외부 연결도 다시 확인해야 합니다. S3, DNS, Package Registry, Webhook, Presigned URL도 명령 전달이나 데이터 유출 통로가 될 수 있습니다. 기본은 닫고, 필요한 대상만 엽니다. 사용 전과 주요 변경 후에는 Sandbox 내부에서 금지된 외부 연결을 직접 시도해 실제 차단 여부를 확인합니다.

격리 기술 계층

계층예시특징
OS 샌드박스 (제한 토큰·seccomp·방화벽)Claude Code, Codex Windows가볍고 빠름. 커널 공유라 격리 강도 최저 → human-in-loop 병행 권장
user-space kernelgVisor (claude.ai)시스템콜 가로채기로 커널 노출면 축소
microVMFirecracker (AWS Lambda 기반)~125ms 부팅. VM급 격리 + 컨테이너급 속도. 신뢰 불가 코드 공유 HW 격리 표준
풀 VMClaude Cowork (local execution)호스트와 커널은 분리되지만, 공유한 파일·장치·네트워크에 따라 접근 범위가 달라짐

위험한 작업일수록 더 강한 계층을 선택합니다.

Provisioning·생명주기

  • Cold start가 문제라면 Pre-warmed pool을 둡니다.
  • Sandbox는 선언적으로 만들고, 작업 단위로 폐기·재생성할 수 있어야 합니다.
  • 작업 종료 후 잔존 유저, 파일, Credential, 네트워크 룰이 남지 않는지 검증합니다.

관측성·약한 고리

  • Sandbox 내부 동작과 Tool 호출은 Append-only로 기록합니다. 로깅이 없으면 사고가 나도 재현 또는 사후 분석할 수 없습니다.
  • 검증된 격리 프리미티브(gVisor·Firecracker·K8s 등)를 우선 사용하고, 직접 만든 부분은 최소화합니다.

Sandbox에서 만들어졌다는 이유만으로 모든 산출물을 다시 검증할 필요는 없습니다. 다만 그 산출물을 Sandbox 밖에서 실행하거나 시스템 설정·권한·영구 상태에 반영할 때는, 사람이 만든 산출물과 동일한 검증·승인 절차를 거쳐야 합니다. 검증 절차 자체를 재귀적으로 검증하라는 뜻은 아닙니다.

5. 자가 교정 루프

Agent가 단일 구현만으로 끝나는 게 아니라, 검증 결과를 받아 다시 수정하는 반복 프로세스를 만듭니다.

3-phase 반복 (OpenAI Codex Cookbook)

Review  → AS-IS Artifact 조사, Edit 없음
Repair  → Smallest, useful edit
Validate → Criteria 평가, JSON 구조화 Audit
  • Validation delta를 다음 교정의 Feedback으로 사용합니다.
  • 코딩뿐만 아니라 모든 범위에 대하여 일반화가 가능합니다 (세부적인 면은 당연히 달라집니다)
  • 같은 종류의 실패가 반복되면 개별 Artifact를 계속 수리하지 않고, 이를 생성한 Prompt·Skill·Workflow·검증 기준을 수정한 뒤 다시 실행합니다.

루프 설계 원칙

  • 작은 작업부터 시작합니다.
    • 처음은 Lint, Small refactor부터
    • 이후 좁은 PR, 이후는 기능 구현과 같은 식으로 다음 작업에 대한 권한과 범위를 넓혀 나가며 확장합니다.
  • 한 작업 내에서는 Scope를 넓히지 않도록 합니다.
  • Deterministic Check 또는 Guardrail 조건은 엄격하게 Agent가 준수하며 작업하도록 합니다.
  • 최대 반복 횟수를 정하고, 이 횟수를 넘기면 사람이 개입하도록 합니다.

6. 컨텍스트·도구 절약

Context를 과도하게 제공하면 토큰 비용도 늘어나지만, Agent의 성능이 떨어지고 Hallucination이 늘어날 수 있습니다.
다음과 같은 해법을 사용합니다.

  1. 불필요한 Context와 도구를 줄이거나 없앱니다. 또한 같은 의미를 전달할 수 있다면 더 짧고 간결한 쪽을 택합니다.
  2. 도구가 너무 많다면 전체 Tool Schema를 한 번에 로드하지 않도록 별도의 Tool index/search 도구만 먼저 노출하는 방식을 사용합니다.
    • Agent는 이 도구로 필요한 MCP Tool을 찾고, 선택된 Tool의 Schema/Description만 나중에 로드하여 호출하게 됩니다.
  3. 메모리 계층을 활용합니다. 계층을 나누는 기준은 사용 빈도가 될 수도 있고, 데이터 의존성이나 권한 의존성이 있을 수도 있습니다. 자주 쓰는 지식은 상시 또는 주기적으로 Fetch하고, 그렇지 않으면 필요할 때만 불러옵니다.

7. Agent·Pipeline·Skills 설계

AI 코딩 시스템을 설계할 때 먼저 정할 것은 흐름을 누가 제어하는가입니다. 사람이 코드로 단계 순서를 고정하면 Pipeline이고, LLM이 중간 결과를 보고 다음 행동을 고르면 Agent입니다. 코딩처럼 필요한 컨텍스트를 한 번에 알기 어렵고, 실행 결과를 보며 다시 조사해야 하는 작업은 Agent 쪽이 자연스럽습니다.

  • Agent vs pipeline
    • 고정 데이터 또는 엄격한 기준이 요구되는 경우 Pipeline을 씁니다. 반대로 필요한 정보를 미리 조립하기 어렵거나, 중간 결과에 따라 추가 조사·수정이 필요한 문제는 Agent를 기본값으로 둡니다.
    • Agent를 먼저 만들고, 동작이 안정화된 Agent를 나중에 Deterministic한 부분만 Pipeline으로 최적화하는 것이 더 유리합니다.
  • Harness: 모델 호출, 도구 사용, 반복, 중단 등의 판단을 담당합니다.
    • 보통 Claude, Codex 같은 알려진 프로그램을 쓴다면 추가적인 프레임워크를 채택할 필요는 없습니다. 단, 기본 설정을 확인하고 부족한 부분은 Config as Code로 보강합니다.
    • 사람이 조정하기 쉬운 Skill, Prompt, 검증 루프 등을 다듬는 것이 좋습니다.
  • 실제 실행을 통해 얻은 사례와 절차, 지식을 쌓아 두어야 합니다. 단, Outdated되었거나 중복된 내용은 주기적으로 정리합니다.
  • Skills 설계
    • Skill은 “이 도구가 무엇인가”가 아니라 “언제 로드해야 하는가”를 설명해야 합니다.
    • 또한 모든 내용을 처음부터 넣지 말고 Index → Skill 본문 → 추가 Reference/스크립트 순서로 점진 로드되어야 합니다.

8. 대규모·장시간 운영

  • Notion의 사례
    • Task를 숙련된 엔지니어가 수 주 걸릴 크기로 매우 크게 합니다.
    • 계획 문서(plan doc)를 에이전트가 소비하는 속도보다 앞서서 채워 둡니다. 에이전트는 잘 정의된 작업을 빠르게 소진하기 때문에, 계획이 비거나 모호해지면 도중에 멈추거나 “완료”의 기준을 제멋대로 재정의합니다. 계획 문서는 컨텍스트가 리셋돼도 살아남는 기준점이 되어, 목표가 여러 번의 요약을 거치며 흐려지는 것을 막아 줍니다.
    • Agent가 작업 후 명확한 증거를 남기도록 합니다. 이후 사람이 직접 리뷰하거나, Read-only 2차 에이전트가 리뷰한 뒤 배포할 수 있습니다.
  • 병렬 서브에이전트: Agent별 R&R과 결정권을 나누고, 공통 결정은 공유 문서에 남깁니다. 서로 다른 Context에서 생긴 충돌은 통합 단계에서 해소하고 다시 하나의 방향으로 정렬합니다.
  • 위험도별 경로 분리 (Grab): Read-only 경로와 Write 경로를 나누고, Write 경로에는 사람이 승인할 수 있는 프로세스를 둡니다.
  • 메모리: 장기 운영에서는 세션 간 상태를 보존하기 위해 메모리가 필요할 수 있습니다. 다만 사람의 기억처럼 요약·추상화한 메모리를 만들면, 소수의 비정형 상호작용에서 잘못된 지름길을 학습해 그것을 넓게 잘못 적용하는 memory drift가 생깁니다. 그래서 가공하지 않은 raw episode(append-only 세션 로그)를 1차 증거로 두고, 추상화는 승인을 거친 선택 사항으로만 둡니다(dylanzsz). 메모리는 Files·Memory Blocks·Skills처럼 사람이 열어보고 고칠 수 있는 형태여야 하며(Tim Kellogg), 정책·audit 등으로 관리합니다.

9. 생산성 측정 (지표 함정) (코딩 특화)

AI 시대에는 많은 코드를 만드는 것이 높은 생산성을 보장한다고 할 수 없습니다.
따라서 단순 지표보다 더 많은 요소를 고려해 생산성을 계산합니다. 또한 지표는 지표일 뿐이므로 맹신하지 않습니다.

  • 단순한 처리 티켓 수, 속도 향상보다는 실제 비즈니스 임팩트, 메트릭과 같은 진짜 가치를 장기적으로 평가해야 합니다.
  • 리뷰 부하, 보안 위반, AI로 인한 기술/맥락 부채 등도 고려합니다.
  • PR 수보다 테스트 통과, 재작업 여부처럼 실제 개발 영향을 보여주는 지표를 사용합니다. (Dropbox)
  • AI 작업으로 인한 매출 기여와 토큰 사용으로 인한 지출로 Margin도 계산합니다.

진짜 미해결 영역

자가 검증 신뢰성은 여전히 풀리지 않은 문제입니다. 위의 내용은 모두 “LLM의 self-verification을 믿지 않는다”는 전제 하에 서술되었습니다. 구현 AI와 검증 AI는 학습 데이터·편향을 공유하기 때문에 같은 오류에 함께 빠지기 쉽고(그럴듯하지만 틀린 출력), 그래서 현재로서는 AI 검증을 늘린다고 해서 이 문제가 해결되지 않습니다.

따라서 특히 Human in the loop와 Deterministic Check가 중요합니다. 또한 이 과정에서 인간에게 주어지는 과부하를 얼마나 AI에게 덜어내고, 샘플링, 고차원적 사고 등 인간만이 할 수 있는 영역에 집중할 수 있는 프로세스를 만드는지가 중요할 것입니다.


References

빅테크 1차 출처·공인 권위자·멀티-소스 보도에 한정한 인용입니다.