
2026년 AI 개발의 핵심 패러다임 전환: 프롬프트 → 컨텍스트 → 하네스
1. 들어가며 - 왜 지금 하네스 엔지니어링인가?
2022년에는 프롬프트 엔지니어링이 화제였습니다. "어떻게 질문하느냐"가 AI 품질을 결정한다고 했죠. 2025년에는 컨텍스트 엔지니어링으로 무게중심이 이동했습니다. Andrej Karpathy가 이 개념을 체계화하고, Shopify CEO 토비 루트케가 "LLM에게 작업을 풀 수 있도록 모든 맥락을 제공하는 기술"이라고 정의하면서 주목받기 시작했습니다.
그리고 2026년 초, 하네스 엔지니어링(Harness Engineering) 이라는 개념이 등장했습니다. Terraform과 Ghostty의 창시자 Mitchell Hashimoto가 명명하고, OpenAI 엔지니어링팀의 실제 사례가 공개되면서 빠르게 확산됐습니다.
이 글은 다음 분들을 위해 씁니다.
- AI 코딩 에이전트(Claude Code, Copilot Workspace 등)를 실무에 활용 중인 개발자
- 프롬프트를 열심히 다듬었는데 결과가 들쭉날쭉한 경험을 하신 분
- "컨텍스트 엔지니어링"과 "하네스 엔지니어링"의 차이가 헷갈리는 분
2. 컨텍스트 엔지니어링이란?
한 줄 정의
AI 모델이 추론하는 시점에 컨텍스트 창(Context Window)에 무엇을 담을지 설계하는 기술
등장 배경
프롬프트 엔지니어링의 한계는 명확했습니다. "지시문을 잘 쓰는 것"만으로는 복잡한 작업을 안정적으로 수행할 수 없었죠. 모델이 할루시네이션을 일으키는 가장 큰 이유는 모델이 멍청해서가 아니라, 잘못된 정보 위에서 올바르게 추론하기 때문입니다.
컨텍스트 엔지니어링은 이 문제를 "모델에게 무엇을 보여주느냐"로 해결합니다.
핵심 구성요소
| 요소 | 설명 | 예시 |
|---|---|---|
| 시스템 프롬프트 | 역할, 규칙, 제약 | "너는 시니어 Spring Boot 개발자야" |
| RAG | 관련 문서 주입 | 코드베이스 일부, API 문서 |
| 메모리 관리 | 대화 이력 선택적 유지 | 요약, 슬라이딩 윈도우 |
| Few-shot 예시 | 패턴 제공 | 원하는 출력 형태 예시 |
| 도구 결과 주입 | 외부 조회 결과 포함 | DB 조회 결과, API 응답 |
컨텍스트 엔지니어링의 범위
[단일 세션 / 단일 에이전트]
사용자 요청
↓
[컨텍스트 조립]
- 시스템 프롬프트
- RAG 검색 결과
- 이전 대화 요약
- 도구 결과
↓
모델 추론
↓
응답
핵심은 "모델이 보는 것"에 집중한다는 점입니다. 단일 추론, 단일 세션의 품질을 높이는 데 강력하지만, 에이전트가 여러 세션에 걸쳐 장시간 작업할 때의 신뢰성은 별개 문제입니다.
3. AI 하네스 엔지니어링이란?
한 줄 정의
AI 에이전트를 감싸는 제어 시스템(환경) 전체를 설계하고 운영하는 공학 분야
핵심 공식
Agent = Model + Harness
모델이 CPU라면, 컨텍스트는 RAM, 하네스는 운영체제(OS) 입니다.
왜 등장했나?
OpenAI 엔지니어링팀은 2025년 하반기에 충격적인 실험을 시작했습니다. 인간이 코드를 한 줄도 쓰지 않고, Codex 에이전트만으로 프로덕션 제품을 만드는 것이었죠.
5개월 후 결과: 약 100만 줄의 코드, 1,500개 이상의 PR이 머지됐습니다.
이 팀이 배운 가장 중요한 교훈은 모델 성능이 아니었습니다. "에이전트가 실수할 때, 더 잘하라고 말하지 말고, 그 실수가 구조적으로 불가능하게 만들어라" 는 것이었습니다. 이것이 하네스 엔지니어링의 본질입니다.
하네스의 두 가지 핵심 컴포넌트
Guides (가이드) - 사전 제어
- 에이전트가 행동하기 전에 작동
- 허용된 행동 범위 정의
- 예: CLAUDE.md 규칙, 아키텍처 제약, 커스텀 린터
Sensors (센서) - 사후 관찰
- 에이전트가 실제로 한 일을 검증
- 예: 테스트, CI/CD 파이프라인, 정적 분석, 로그
[다중 세션 / 다중 에이전트 환경]
┌─────────────────────────────────┐
│ HARNESS (하네스) │
│ │
│ ┌──────────┐ ┌─────────────┐ │
│ │ Guides │ │ Sensors │ │
│ │(사전 제어)│ │ (사후 관찰) │ │
│ │- CLAUDE.md│ │- 테스트 │ │
│ │- 린터 │ │- CI 파이프 │ │
│ │- MCP 서버 │ │- 로그 수집 │ │
│ └────┬─────┘ └──────┬──────┘ │
│ │ │ │
│ ┌────▼───────────────▼──────┐ │
│ │ Context Engineering │ │
│ │ (컨텍스트 엔지니어링) │ │
│ └────────────┬──────────────┘ │
│ │ │
│ ┌────────────▼──────────────┐ │
│ │ Model (LLM) │ │
│ └───────────────────────────┘ │
└─────────────────────────────────┘
AI 팩토리(AI Factory)의 7개 레이어
하네스 엔지니어링이 성숙해지면 조직 단위의 AI 팩토리로 발전합니다.
| 레이어 | 내용 |
|---|---|
| 1. 인텐트 캡처 | 제품 요청, 버그 리포트, 로드맵 항목 |
| 2. 스펙 프레이밍 | 수락 기준·제약이 있는 구조화된 지시 |
| 3. 컨텍스트 레이어 | 레포 가이드, 규칙, 문서, API (← 컨텍스트 엔지니어링) |
| 4. 실행 레이어 | 에이전트가 코드 편집·도구 호출 |
| 5. 검증 레이어 | 테스트, 정적 분석, CI, 사람 검토 |
| 6. 격리·권한 레이어 | 샌드박스, 비밀 경계, 승인 흐름 |
| 7. 피드백 레이어 | 프로덕션 텔레메트리 → 규칙 개선 |
4. 핵심 비교 분석
한눈에 보는 비교표
| 항목 | 컨텍스트 엔지니어링 | 하네스 엔지니어링 |
|---|---|---|
| 핵심 질문 | "무엇을 보여줄까?" | "어떻게 안정적으로 작동시킬까?" |
| 범위 | 컨텍스트 창(단일 추론) | 에이전트 환경 전체 |
| 작동 시점 | 추론 시점 | 추론 전·중·후 모두 |
| 대상 | 단일 에이전트 | 단일 + 다중 에이전트 |
| 주요 수단 | RAG, 프롬프트, 메모리 | 린터, CI, MCP, 피드백 루프 |
| 등장 시기 | 2025년 | 2026년 초 |
| 해결하는 문제 | 할루시네이션, 맥락 부족 | 비신뢰성, 아키텍처 위반, 상태 저하 |
세 개념의 진화 흐름
2022~2024 2025 2026
─────────────────────────────────────────────→
프롬프트 엔지니어링 컨텍스트 엔지니어링 하네스 엔지니어링
"무엇을 물어볼까?" "무엇을 보여줄까?" "어떤 환경을 만들까?"
단일 턴 최적화 단일 세션 최적화 시스템 레벨 최적화
신입사원 비유
| 개념 | 비유 |
|---|---|
| 프롬프트 엔지니어링 | 신입사원에게 오늘 할 일 지시 |
| 컨텍스트 엔지니어링 | 완벽한 온보딩 문서 제공 |
| 하네스 엔지니어링 | 코드베이스 구조 + CI 파이프라인 + 아키텍처 규칙 + 리뷰 프로세스 설계 |
온보딩 문서(컨텍스트)는 유용하고 필요하지만, 그것만으로는 부족합니다.
신입사원에게는 실수해도 시스템이 잡아주는 구조가 필요합니다.
자동차 비유 (가장 명쾌한 설명)
모델(LLM) = 엔진
컨텍스트 = 연료 + 계기판 정보
하네스 = 핸들 + 브레이크 + 차선 + 경고등 + 정비 일정
엔진과 연료에만 집중해도 자동차는 굴러갑니다.
하지만 브레이크 없이 고속도로를 달리면 어떻게 될까요?
5. 두 개념의 관계 - 포함인가, 교집합인가?
커뮤니티 내에서도 의견이 갈립니다. 양쪽 시각을 모두 정리합니다.
시각 ①: 하네스 ⊃ 컨텍스트 (주류 관점)
컨텍스트 엔지니어링은 하네스의 레이어 3에 해당합니다. 하네스가 컨텍스트 엔지니어링을 포함하고 조율합니다.
HARNESS
└── Context Engineering ← 여기가 컨텍스트 엔지니어링의 위치
└── Tool Management
└── Memory & State
└── Safety Enforcement
└── Feedback Loops
시각 ②: 컨텍스트 ⊃ 하네스 (일부 실무자 관점)
"하네스 설정 자체도 결국 컨텍스트를 어떻게 관리할지에 관한 것"이라는 시각. 하네스 엔지니어링을 컨텍스트 엔지니어링의 코딩 에이전트 특화 부분집합으로 봅니다.
📌 결론: 어떻게 보든 함께 씁니다
두 개념은 분리해서 쓸 수 없습니다. 하네스 안의 각 에이전트는 여전히 좋은 컨텍스트를 필요로 하고, 컨텍스트 엔지니어링이 아무리 잘 돼 있어도 피드백 루프·제약·검증이 없으면 다중 세션에서 무너집니다.
6. 실전 적용 - Claude Code / CLAUDE.md 예시
실제 Claude Code를 사용하는 개발 환경에서 두 개념이 어떻게 적용되는지 정리합니다.
컨텍스트 엔지니어링에 해당하는 것들
# CLAUDE.md (컨텍스트 엔지니어링 부분)
## 프로젝트 개요
Spring Boot 3.x + MariaDB + React 기반 대학 LMS 시스템
## 코드 스타일
- Java: 카멜케이스, 탭 대신 스페이스 4칸
- 패키지 구조: com.sdu.lms.{domain}.{layer}
## 자주 쓰는 패턴
- Repository: JPA + QueryDSL 병행
- DTO 변환: MapStruct 사용
## 현재 작업 컨텍스트
- 2026년 2학기 모집 사이트 UI 개선 중
- 외부 업체 낫에그와 협업 중
// 컨텍스트 엔지니어링: Few-shot 예시로 패턴 제공
// 에이전트에게 "우리 팀이 선호하는 응답 형태"를 직접 보여주기
// 좋은 예 (우리 팀 스타일)
public ApiResponse<CourseDto> getCourse(Long id) {
return courseService.findById(id)
.map(ApiResponse::success)
.orElseThrow(() -> new ResourceNotFoundException("Course", id));
}
하네스 엔지니어링에 해당하는 것들
# CLAUDE.md (하네스 엔지니어링 부분)
## 절대 하지 말 것 (Guides - 제약)
- application.yml의 DB 비밀번호 직접 수정 금지
- /api/admin/** 엔드포인트 인증 로직 임의 변경 금지
- 마이그레이션 파일(V*.sql) 수정 금지 (새 파일 추가만 가능)
## 완료 기준 (Sensors - 검증)
- 모든 변경 후 반드시 ./gradlew test 실행
- 빌드 실패 시 수정 후 재시도
- 컨트롤러 추가 시 통합테스트 파일도 함께 생성
## 아키텍처 규칙 (구조적 제약)
- Controller → Service → Repository 방향만 허용
- Service가 Controller를 import하는 것 절대 금지
# 하네스 엔지니어링: 구조적 제약을 코드로 강제
# (커스텀 린터 예시 - 레이어 의존성 검사)
#!/bin/bash
# check-layer-dependency.sh
# CI에서 실행 - Service가 Controller를 import하면 빌드 실패
if grep -r "import.*controller" src/main/java/**/*Service.java; then
echo "❌ 레이어 위반: Service가 Controller를 import하고 있습니다."
exit 1
fi
echo "✅ 레이어 의존성 검사 통과"
# GitHub Actions - 하네스의 Sensor 역할
name: Agent Code Validation
on: [pull_request]
jobs:
validate:
steps:
- name: 레이어 의존성 검사
run: bash scripts/check-layer-dependency.sh
- name: 테스트 실행
run: ./gradlew test
- name: 아키텍처 테스트 (ArchUnit)
run: ./gradlew archTest
두 개념을 함께 적용한 CLAUDE.md 전체 구조
# CLAUDE.md
## [컨텍스트 영역] 프로젝트 이해
- 기술 스택, 도메인 지식, 코딩 컨벤션
- 현재 스프린트 목표, 알려진 이슈
## [컨텍스트 영역] 참고 문서 위치
- 설계 문서: docs/architecture/
- API 명세: docs/api/
- DB 스키마: docs/schema/
## [하네스 영역] 행동 제약 (Guides)
- 금지 행동 명시
- 승인 없이 변경 불가한 파일 목록
- 의존성 방향 규칙
## [하네스 영역] 완료 검증 (Sensors)
- 필수 실행 명령어
- 성공 기준
- 실패 시 대응 방법
7. 어떤 것부터 시작해야 할까?
단계별 도입 순서
Phase 1: 컨텍스트 엔지니어링부터 (즉시 효과)
✅ CLAUDE.md 작성 - 프로젝트 개요, 코딩 스타일
✅ 자주 쓰는 패턴 예시 추가
✅ 현재 작업 컨텍스트 항상 업데이트
Phase 2: 하네스 기초 (1~2주)
✅ "절대 하지 말 것" 섹션 추가 (Guides)
✅ 완료 기준 명시 (Sensors)
✅ 에이전트가 같은 실수를 반복하면 → CLAUDE.md에 규칙 추가
Phase 3: 하네스 심화 (1개월)
✅ 커스텀 린터 작성 (아키텍처 규칙 강제)
✅ CI에서 에이전트 출력 자동 검증
✅ MCP 서버 연결 (도구 접근 관리)
✅ 서브에이전트로 컨텍스트 격리
핵심 원칙 하나
"에이전트가 같은 실수를 두 번 하면, 세 번째는 구조적으로 불가능하게 만들어라."
— Mitchell Hashimoto (하네스 엔지니어링 명명자)
8. 마무리
핵심 요약
| 개념 | 한 줄 요약 |
|---|---|
| 프롬프트 엔지니어링 | 무엇을 물어볼지 최적화 |
| 컨텍스트 엔지니어링 | 무엇을 보여줄지 최적화 |
| 하네스 엔지니어링 | 어떤 환경에서 작동할지 최적화 |
세 개념은 경쟁 관계가 아닙니다. 중첩된 레이어입니다. 좋은 AI 개발 워크플로우는 세 가지를 모두 포함합니다.
특히 Claude Code 같은 코딩 에이전트를 실무에 활용할수록, 컨텍스트를 아무리 잘 짜도 하네스 없이는 신뢰성을 담보할 수 없다는 것을 경험하게 됩니다. CLAUDE.md에 규칙을 쌓고, CI로 검증하고, 실패에서 구조적 제약을 도출하는 것—이것이 2026년 AI 시대의 핵심 엔지니어링 역량입니다.