AI 에이전트에게 복잡한 프로젝트를 맡겼더니, 첫날은 열정적으로 시작했지만 다음 세션에서는 어제 뭘 했는지 전혀 기억하지 못했습니다. 혹시 이런 경험 있으신가요?
이것은 AI 에이전트의 근본적인 한계입니다. 컨텍스트 윈도우라는 물리적 제약 때문에, 각 세션은 이전에 일어난 일에 대한 기억 없이 시작됩니다.
❝마치 매일 다른 엔지니어가 출근하는 것과 같습니다. 어제 무슨 일이 있었는지, 어디까지 진행됐는지 아무도 모르는 상황이죠.
❞
Anthropic 엔지니어링 팀은 이 문제를 해결하기 위해 "하네스(Harness)"라는 구조화된 시스템을 개발했습니다.
이 글은 Anthropic Engineering Blog의 "Effective Harnesses for Long-Running Agents"를 참고하여 작성했습니다. 원문의 핵심 전략을 살펴보고, Claude Code 등 실제 환경에서 적용하는 방법을 알아보겠습니다.
하네스란 무엇인가?
하네스(Harness)는 AI 에이전트가 여러 컨텍스트 윈도우에 걸쳐 작업을 수행할 수 있도록 하는 구조화된 시스템입니다.
| 구분 | 하네스 없이 | 하네스 있을 때 |
|---|---|---|
| 세션 시작 | "이 프로젝트가 뭐였죠?" | "어제 로그인 UI를 완성했고, 오늘은 API 연동이군" |
| 작업 범위 | "전체 인증 시스템을 만들겠습니다" | "오늘은 로그인 폼 UI만 완성합니다" |
| 세션 종료 | 그냥 끝남 | 진행 상황 기록 + 다음 세션 노트 |
왜 하네스가 필요한가?
✦컨텍스트 윈도우의 한계
AI 에이전트와 작업할 때 가장 큰 문제는 세션 간 기억 단절입니다.
Session 1 (Day 1)
"프로젝트를 시작합니다..."
[컨텍스트 가득 참] → 세션 종료
⬇️ 기억 단절 ⬇️
Session 2 (Day 2)
"이 프로젝트가 뭐였죠...?"
[처음부터 다시 파악]✦교대근무 엔지니어 비유
❝매일 다른 엔지니어가 출근하는 상황을 상상해보세요. 어제 무슨 일이 있었는지, 어디까지 진행됐는지 아무도 모릅니다. 이것이 바로 AI 에이전트가 직면하는 현실입니다.
❞
효과적인 팀이라면 어떻게 할까요?
- ❧인수인계 문서를 작성합니다
- ❧진행 상황을 기록합니다
- ❧표준화된 프로세스를 따릅니다
AI 에이전트도 마찬가지입니다. 이런 "인수인계 시스템"이 바로 하네스입니다.
✦에이전트가 실패하는 패턴
Anthropic 팀이 발견한 주요 실패 패턴들입니다:
| 패턴 | 증상 | 원인 |
|---|---|---|
| 과도한 야망 | 한 세션에 모든 것을 완료하려 함 | 작업 범위 미정의 |
| 기억상실 | 이전 작업 반복 또는 무시 | 상태 기록 부재 |
| 조기 완료 | "다 됐습니다" 선언 후 버그 발견 | 검증 프로세스 부재 |
| 방향 상실 | 무엇을 해야 할지 모름 | 명확한 기능 목록 부재 |
하네스의 구성 요소
Anthropic이 제안하는 하네스는 크게 두 가지 에이전트 패턴과 세 가지 핵심 도구로 구성됩니다.
✦두 가지 에이전트 패턴
1. 초기화 에이전트 (Initialization Agent)
프로젝트의 "Day 0"을 담당합니다. 첫 실행 시 한 번만 수행됩니다.
초기화 에이전트가 하는 일:
1. init.sh 스크립트 생성 (환경 설정 자동화)
2. claude-progress.txt 생성 (진행 상황 추적)
3. 초기 git 커밋 생성 (버전 관리 시작점)
4. 기본 프로젝트 구조 설정2. 코딩 에이전트 (Coding Agent)
모든 후속 세션에서 점진적으로 작업을 진행합니다.
코딩 에이전트의 세션 프로토콜:
1. pwd 실행 (현재 위치 확인)
2. 진행 파일 읽기 (어디까지 했는지)
3. git log 확인 (최근 변경사항)
4. 기능 목록 검토 (다음 할 일)
5. 개발 서버 시작
6. 한 가지 기능만 구현
7. 테스트 및 검증
8. 커밋 및 진행 파일 업데이트✦핵심 도구 1: 기능 목록 (Feature List)
에이전트는 종종 "다 했다"고 착각합니다. 명확한 기능 목록이 있으면 이를 방지할 수 있습니다.
{
"features": [
{
"id": "auth-001",
"name": "이메일 로그인",
"priority": "high",
"status": "pending",
"acceptance_criteria": [
"이메일/비밀번호 입력 폼",
"유효성 검사",
"에러 메시지 표시",
"성공 시 대시보드 리다이렉트"
]
}
]
}💡 핵심 원칙:
- ❧세분화: 200개 이상의 작은 기능으로 분해
- ❧명확성: 각 기능마다 완료 기준(acceptance criteria) 명시
- ❧추적 가능: 상태(pending/in-progress/done) 관리
✦핵심 도구 2: 진행 문서 (Progress Document)
매 세션의 "인수인계 문서" 역할을 합니다.
# Project: E-commerce Dashboard
# Last Updated: 2026-02-05
## Completed
- [x] 프로젝트 초기 설정
- [x] 인증 모듈 기본 구조
- [x] 로그인 페이지 UI
## In Progress
- [ ] 로그인 API 연동 (80% 완료)
## Next Up
- [ ] 회원가입 페이지
- [ ] 비밀번호 재설정
## Known Issues
- 로그인 폼 모바일 반응형 깨짐 (낮은 우선순위)
## Notes for Next Session
- API 엔드포인트: /api/auth/login
- 테스트 계정: test@example.com / password123✦핵심 도구 3: Git 활용
커밋 단위:
- 기능 단위로 커밋 (한 세션 = 한 기능 = 한 커밋)
- 의미 있는 커밋 메시지
브랜치 전략:
main
└── feature/auth
├── "feat: 로그인 폼 UI 구현"
├── "feat: 로그인 API 연동"
└── "test: 로그인 통합 테스트"✦자동화 테스트의 중요성
Anthropic의 핵심 인사이트 중 하나는 실제 테스트의 중요성입니다.
❝단순한 코드 검토가 아닌, 인간 사용자처럼 실제 테스트를 수행해야 합니다.
❞
- ❧Puppeteer/Playwright 등 브라우저 자동화 도구 활용
- ❧실제 사용자 시나리오 시뮬레이션
- ❧시각적 검증 (스크린샷 비교)
세션 프로토콜
✦세션 시작 체크리스트
매 세션 시작 시 에이전트가 수행해야 할 표준 프로토콜입니다.
| 순서 | 명령어 | 목적 |
|---|---|---|
| 1 | pwd | 위치 확인 |
| 2 | cat claude-progress.txt | 진행 상황 |
| 3 | git log --oneline -10 | 최근 커밋 |
| 4 | cat features.json | 할 일 목록 |
| 5 | npm run dev | 서버 시작 |
| 6 | 기본 기능 테스트 | 현재 상태 확인 |
✦"한 번에 한 가지" 원칙
에이전트는 야심이 너무 큽니다. 한 세션에 너무 많이 하려다 실패하는 경우가 많습니다.
❌ 나쁜 예: "오늘 인증 시스템 전체를 완성하겠습니다"
✅ 좋은 예: "오늘은 로그인 폼 UI만 완성하겠습니다"💡 작은 성공을 쌓아가는 것이 효과적입니다.
✦세션 종료 체크리스트
세션 종료 전 체크리스트:
1. 현재 작업 상태 진행 파일에 기록
2. git commit (의미 있는 단위라면)
3. 다음 세션을 위한 노트 작성
4. 알려진 이슈 문서화실전 적용 가이드
✦Claude Code에서의 적용
CLAUDE.md에 세션 프로토콜을 정의할 수 있습니다:
# CLAUDE.md
## 세션 시작 시
1. docs/progress.md 읽기
2. git log --oneline -5 확인
3. docs/features.json에서 다음 작업 선택
## 작업 완료 시
1. docs/progress.md 업데이트
2. git commit -m "feat: [기능명]"
3. 다음 세션 노트 작성✦점진적 하네스 구축
처음부터 완벽한 하네스를 만들 필요는 없습니다. 단계적으로 발전시켜 나가세요.
Level 1: 최소 하네스프로젝트/
├── CLAUDE.md # 기본 규칙
└── docs/
└── progress.md # 진행 상황프로젝트/
├── CLAUDE.md
├── init.sh # 환경 설정 스크립트
└── docs/
├── progress.md
└── features.json # 기능 목록프로젝트/
├── CLAUDE.md
├── init.sh
├── .claude/
│ ├── hooks/ # 자동화 훅
│ └── skills/ # 재사용 워크플로우
└── docs/
├── progress.md
├── features.json
└── session-logs/ # 세션별 로그✦흔한 실수와 해결책
| 실수 | 증상 | 해결책 |
|---|---|---|
| 진행 파일 미업데이트 | 다음 세션에서 같은 작업 반복 | 세션 종료 체크리스트 의무화 |
| 기능 목록 너무 추상적 | "인증 구현" 같은 모호한 항목 | acceptance criteria 명시 |
| 테스트 없이 완료 선언 | 버그 누적 | 자동화 테스트 필수화 |
| 커밋 단위 너무 큼 | 롤백 어려움 | 기능 단위 커밋 |
마치며
✦핵심 요약
| 개념 | 설명 |
|---|---|
| 하네스 | 세션 간 연속성을 유지하는 구조화된 시스템 |
| 핵심 비유 | 교대근무 엔지니어 - 인수인계 문서가 필요 |
| 핵심 삼각형 | 기능 목록 + 진행 문서 + Git |
| 황금 원칙 | 한 번에 한 가지 |
✦지금 시작하세요
효과적인 하네스는 효과적인 엔지니어의 일상 관행에서 영감을 받았습니다 — 진행 문서 작성, 버전 관리, 명확한 작업 정의.
하네스 도입 체크리스트:
[ ] 프로젝트에 progress.md를 생성했는가?
- 세션 간 상태를 전달할 진행 문서 작성
[ ] 기능을 20개 이상으로 세분화했는가?
- 에이전트가 한 세션에 처리할 수 있는 크기로 분할
[ ] 세션 시작/종료 프로토콜을 CLAUDE.md에 정의했는가?
- 인수인계 절차를 표준화하여 연속성 확보AI 에이전트는 매우 유능하지만, 기억력에는 한계가 있습니다. 좋은 하네스는 이 한계를 극복하게 해주는 외부 기억 장치입니다. 작게 시작해서, 필요에 따라 점진적으로 발전시켜 나가세요.