AI 에이전트가 장기 작업을 맡기 시작하면서 프롬프트만 잘 쓰는 것으로는 안정적인 결과를 얻기 어려워졌다. 에이전트가 어떤 정보를 보고, 어떤 도구를 사용하며, 언제 반복하고, 어느 경로로 이동하고, 어디에서 사람의 승인을 받아야 하는지까지 설계해야 하기 때문이다.
이 문제를 설명할 때 자주 등장하는 표현이 하네스 엔지니어링, 루프 엔지니어링, 그래프 엔지니어링이다. 이들은 국제 표준이나 엄격히 합의된 학술 분류가 아니다. 서로 겹치는 부분이 있으며 제품과 개발팀에 따라 뜻도 달라질 수 있다. 따라서 연도별 유행어로 외우기보다 각각이 답하려는 제어 질문으로 구분하는 편이 유용하다.
세 개념을 한눈에 비교하기
| 개념 | 핵심 질문 | 주된 설계 대상 | 대표적인 실패 방지 장치 |
|---|---|---|---|
| 하네스 엔지니어링 | 에이전트는 어떤 환경과 규칙 안에서 일하는가? | 컨텍스트, 도구, 권한, 샌드박스, 훅, 로그, 승인, 평가 | 최소 권한, 위험 명령 승인, 테스트 실행, 컨텍스트 선별 |
| 루프 엔지니어링 | 무엇을 반복하고 언제 멈추는가? | 계획·실행·검증 주기, 이벤트 처리, 재시도, 예산, 종료 조건 | 최대 반복 횟수, 시간·토큰 한도, 진전 판정, 실패 시 이관 |
| 그래프 엔지니어링 | 어떤 상태와 경로를 허용하는가? | 노드, 상태, 전이, 분기, 병렬 처리, 체크포인트 | 금지 전이, 상태 검증, 승인 노드, 복구 경로 |
짧게 표현하면 하네스는 환경과 경계, 루프는 반복 규칙, 그래프는 가능한 경로의 구조다. 실제 시스템에서는 그래프의 한 노드 안에 루프가 들어가고, 전체 그래프가 하나의 하네스 안에서 실행될 수 있다.
에이전트 제어 방식은 어떻게 변해 왔나
초기 에이전트: 정해진 워크플로우가 자율성을 보완했다
초기 생성형 AI 에이전트는 긴 작업에서 목표를 잊거나, 잘못된 도구 호출을 반복하거나, 근거 없는 결과를 만드는 경우가 많았다. 이에 개발자는 큰 작업을 작은 단계로 나누고 각 단계의 입력과 출력을 고정했다.
이 방식에서는 사람이 전체 절차를 체인, 플로차트 또는 상태 머신으로 작성하고 LLM은 분류, 추출, 요약, 초안 작성처럼 제한된 작업을 맡는다. LangGraph와 같은 프레임워크는 상태를 유지하면서 분기, 순환, 체크포인트, 사람의 개입을 표현하는 데 사용된다.
다만 그래프 기반 오케스트레이션이 특정 연도에 끝난 구식 방식은 아니다. 현재도 감사 가능성, 재현성, 규제 준수 또는 정확한 복구 절차가 중요한 업무에서는 명시적 그래프가 적합하다.
모델 성능 향상: 고정 경로에서 동적 도구 사용으로
도구 사용과 추론 능력이 개선되면서 하나의 에이전트가 상황에 따라 검색, 코드 편집, 테스트, 파일 읽기 같은 행동을 선택할 수 있게 됐다. ReAct 계열 접근은 추론과 행동, 관찰을 번갈아 수행하는 대표적 구조다.
이 변화는 사람이 모든 분기를 미리 작성해야 하는 부담을 줄였다. 반면 에이전트가 읽는 정보, 보유한 권한, 실행 비용, 오류 복구 방식을 관리하는 문제가 더 중요해졌다. 이때 컨텍스트 엔지니어링과 하네스 엔지니어링이 실무의 중심으로 들어온다.
장기 작업과 멀티 에이전트: 루프와 그래프의 재결합
장기 작업에서는 한 번의 모델 호출보다 반복적인 계획·실행·검증이 중요하다. 여러 에이전트가 참여하면 역할, 산출물 형식, 권한, 종료 조건도 명시해야 한다. 동시에 자율 루프를 완전히 방치하면 비용 폭증, 무한 재시도, 보상 해킹, 잘못된 목표 최적화가 발생할 수 있다.
그래서 현대적인 에이전트 시스템은 자율성을 없애기보다 자율성을 허용할 구간과 결정론적으로 통제할 구간을 결합하는 방향으로 설계된다. 이는 과거의 고정 체인으로 단순 회귀하는 것이 아니라, 유연한 실행을 상태·전이·정책으로 둘러싸는 방식이다.
이러한 변화는 정확한 연대표라기보다 설계상의 강조점 변화다. 그래프, 루프, 하네스는 처음부터 공존해 왔으며 현재도 함께 사용된다.
하네스 엔지니어링이 다루는 것
하네스는 기반 모델 자체가 아니라 모델이 실제 업무를 수행하도록 둘러싼 실행 체계다. 같은 모델을 사용해도 하네스에 따라 성공률, 비용, 보안성과 재현성이 크게 달라질 수 있다.
하네스의 주요 구성 요소
- 지시 체계: 시스템 지침, 저장소 규칙, 코딩 표준, 우선순위와 금지 행동
- 컨텍스트 공급: 검색, 파일 선택, 요약, 메모리, 필요한 시점의 문서 주입
- 도구 인터페이스: 파일 편집, 터미널, 브라우저, 데이터베이스, 외부 API
- 권한과 격리: 읽기·쓰기 범위, 비밀정보 접근, 네트워크 제한, 샌드박스
- 검증 장치: 테스트, 린터, 타입 검사, 스키마 검증, 사실 확인
- 사람의 승인: 배포, 결제, 삭제, 외부 전송 등 되돌리기 어려운 행동의 승인
- 관찰 가능성: 호출 기록, 비용, 지연 시간, 오류, 변경 내역, 결정 근거
- 복구 정책: 재시도, 이전 상태 복원, 작업 중단, 담당자 이관
Claude Code의 프로젝트 지침 파일이나 훅은 하네스 구성 요소의 사례로 볼 수 있다. 그러나 특정 제품 기능 하나가 하네스 전체를 뜻하지는 않는다.
컨텍스트 엔지니어링과의 차이
컨텍스트 엔지니어링은 현재 모델 호출에 어떤 정보와 지침을 넣을지 최적화한다. 검색으로 관련 문서만 가져오기, 오래된 대화를 요약하기, 작업 상태를 외부 파일에 저장하기, 하위 작업별로 컨텍스트를 분리하기 등이 포함된다.
하네스 엔지니어링은 이보다 넓다. 컨텍스트뿐 아니라 도구 권한, 실행 환경, 승인, 검증, 로깅과 비용 제한까지 다룬다. 따라서 컨텍스트 엔지니어링은 하네스의 핵심 부분이지만 둘을 완전히 같은 뜻으로 쓰는 것은 부정확하다.
루프 엔지니어링의 핵심은 종료 조건이다
루프는 에이전트가 결과를 만든 뒤 검사하고 부족하면 다시 시도하도록 만든다. 중요한 것은 반복 자체가 아니라 진전의 정의와 중단 조건이다.
대표적인 루프 유형
- 검증 루프: 초안을 만든 뒤 테스트나 평가 기준으로 검사하고 실패한 항목을 수정한다.
- 이벤트 기반 루프: 이메일, 알림, 코드 변경, 센서 데이터 같은 외부 사건이 발생할 때 작업을 시작한다.
- 탐색 루프: 여러 가설이나 자료원을 조사하고 증거가 충분해질 때까지 탐색 범위를 조정한다.
- 개선 루프: 이전 결과와 평가값을 바탕으로 다음 전략을 선택한다. 단일 점수만 최적화하면 보상 해킹이 발생할 수 있으므로 여러 평가 기준과 사람의 검토가 필요하다.
- 복구 루프: 오류 원인을 분류하고 허용된 범위에서 재시도한 뒤 해결되지 않으면 사람에게 넘긴다.
안전한 루프에 필요한 계약
에이전트 사이의 계약은 법적 계약이 아니라 입출력과 책임을 명시한 실행 명세다. 다음 항목을 포함하는 것이 좋다.
| 계약 항목 | 명시할 내용 |
|---|---|
| 목표 | 완료해야 하는 결과와 제외 범위 |
| 입력 | 사용할 수 있는 데이터, 최신성, 신뢰 수준 |
| 출력 | JSON 스키마, 문서 형식, 필수 근거와 테스트 결과 |
| 권한 | 허용 도구, 파일 범위, 외부 전송과 변경 권한 |
| 검증 | 통과해야 할 테스트와 평가 기준 |
| 예산 | 토큰, 시간, 호출 횟수, 병렬 작업 수 |
| 종료 | 성공, 진전 없음, 예산 소진, 위험 감지 조건 |
| 이관 | 실패 시 어느 사람 또는 에이전트가 이어받는지 |
완료 조건이 모호하면 에이전트는 문장을 바꾸거나 같은 검색을 반복하면서도 작업이 진전되고 있다고 판단할 수 있다. 최대 반복 횟수만 두는 것보다 결과 품질, 새 정보의 증가량, 오류 변화와 비용을 함께 보는 편이 낫다.
그래프 엔지니어링은 자율성의 경계를 구조화한다
그래프는 작업을 노드와 연결선으로 표현한다. 노드는 모델 호출, 도구 실행, 사람의 승인 또는 검증 과정이 될 수 있고, 연결선은 상태에 따른 다음 행동을 나타낸다.
체인과 그래프의 차이
- 체인은 A에서 B, B에서 C로 이어지는 선형 절차에 적합하다.
- 그래프는 조건 분기, 반복, 병렬 실행, 실패 복구, 중간 저장이 필요한 작업에 적합하다.
- 동적 그래프는 실행 중 모델이 다음 하위 작업이나 경로를 제안한다.
- 제약된 그래프는 모델이 선택하더라도 허용된 노드와 전이 안에서만 움직이게 한다.
현대적인 그래프 설계의 목적은 모든 행동을 사람이 미리 결정하는 데 있지 않다. 데이터 삭제 전 승인 노드를 반드시 거치게 하거나, 테스트 실패 상태에서는 배포 상태로 이동하지 못하게 하는 식으로 지켜야 할 불변 조건을 구조에 넣는 데 있다.
그래프가 필요한 신호
다음 조건 중 여러 개가 해당하면 명시적인 그래프를 검토할 가치가 있다.
- 실패 후 돌아가야 할 복구 지점이 분명하다.
- 사람의 승인이 반드시 필요한 단계가 있다.
- 여러 작업을 병렬 실행한 뒤 결과를 합쳐야 한다.
- 상태에 따라 사용 가능한 도구나 권한이 달라진다.
- 전체 실행 경로를 감사하거나 재현해야 한다.
- 단일 에이전트 루프가 같은 실패를 반복한다.
단순한 문서 요약이나 한 번의 데이터 변환까지 그래프로 만들면 복잡성만 늘어날 수 있다.