"장시간 에이전트 운영 (2/4) — 컨텍스트가 끊겨도 일하게 만드는 handoff 설계"
장시간 에이전트 운영을 메모리 문제로만 보면 설계를 그르치기 쉽다. 실제로 먼저 필요한 것은 "무엇을 기억할까"보다 "어디서 멈췄고, 다음 세션이 무엇부터 이어야 하는가"를 외부에 남기는 handoff 구조다.
핵심 요약
- 긴 작업이 무너지는 가장 흔한 이유는 모델이 멍청해서가 아니라, 세션이 끊겼을 때 다시 붙을 구조가 없기 때문이다.
- 그래서 장시간 운영의 첫 설계 단위는 메모리 일반론이 아니라 progress file, handoff 문서, 단계 경계, 재개 규칙이다.
- 좋은 handoff는 과거 대화를 길게 복원하는 대신, 다음 세션이 바로 실행할 수 있는 상태 요약을 남긴다.
- 메모리는 그다음 문제다. 먼저 해야 할 일은 "다시 읽을 기록"과 "다시 시작할 절차"를 만드는 것이다.
- 운영 관점에서 장시간 에이전트의 품질은 영리한 답변보다 중단 후 복구 가능성으로 측정해야 한다.
1. 장시간 작업의 진짜 문제는 기억이 아니라 단절이다
에이전트가 30분, 2시간, 혹은 며칠에 걸쳐 일해야 하는 작업을 맡는 순간 문제가 달라진다. 컨텍스트 창은 유한하고, 세션은 끊기며, 사람도 중간에 판단을 바꾸고, 도구 상태도 바뀐다.
이때 흔히 "장기 메모리"를 먼저 떠올리지만, 실제 현장에서는 그보다 앞선 문제가 있다.
- 어디까지 했는지 모른다
- 무엇이 이미 결정됐는지 흩어져 있다
- 다음 세션이 무엇부터 읽어야 하는지 불명확하다
- 완료 기준이 없어서 같은 곳을 맴돈다
즉, 긴 작업의 첫 병목은 저장 용량이 아니라 인계 구조 부재다.
2. 왜 "handoff before memory"인가
sources/260518_하네스엔지니어링_15장_블로그활용노트.md의 8장·15장 메모를 따라가면, 장시간 에이전트 사례에서 반복해서 나오는 메시지는 분명하다. 새 세션이 오래된 대화 전체를 복원하는 것보다, 구조화된 handoff artifact 하나를 읽고 시작하는 편이 더 안정적이라는 점이다.
이 원칙을 짧게 정리하면 이렇다.
메모리는 과거를 많이 보존하는 기술이고, handoff는 다음 행동을 좁혀 주는 운영 구조다.
장시간 운영 초반에는 후자가 더 중요하다. 왜냐하면 다음 세션이 필요한 것은 모든 과거가 아니라, 바로 이어서 실행할 수 있는 최소 상태이기 때문이다.
3. 좋은 handoff 문서는 대화 요약본이 아니다
handoff를 단순 요약으로 이해하면 금방 쓸모없어진다. 좋은 handoff는 "무슨 이야기를 했는가"보다 "지금 시스템이 어떤 상태인가"를 전달해야 한다.
최소한 아래 항목이 있으면 좋다.
| 항목 | 목적 |
|---|---|
| 현재 목표 | 이번 잡의 최종 산출물이 무엇인지 고정 |
| 완료된 단계 | 어디까지 끝났는지 명확화 |
| 다음 행동 | 다음 세션이 바로 할 일 한두 개 |
| 검증 상태 | 무엇이 아직 확인되지 않았는지 표시 |
| 리스크 / 막힘 | 다시 조사할 쟁점 기록 |
| 참조 경로 | 다음 세션이 먼저 읽어야 할 파일 지정 |
이 여섯 가지가 있으면 새 세션은 대화 200턴을 뒤지지 않고도 다시 일할 수 있다.
4. 단계 경계가 있어야 재개도 가능하다
장시간 작업이 흔들리는 또 다른 이유는 단계가 흐리기 때문이다. 조사, 설계, 구현, 검증이 한 흐름에 섞여 있으면, 끊겼을 때 어디서 다시 시작할지 모르게 된다.
그래서 긴 작업은 보통 아래처럼 잘라 두는 편이 낫다.
- 조사
- 범위 확정
- 초안 또는 구현
- 검증
- handoff 또는 완료
각 단계가 끝날 때마다 외부 기록을 남기면, 중간에 세션이 끊겨도 손실이 크게 줄어든다. 이 구조는 drafts/blog/260429_하네스시리즈06_평가운영_블로그.md에서 말한 runner 패턴과도 자연스럽게 이어진다.
5. progress file은 메모리보다 싸고, 운영에는 더 직접적이다
장시간 에이전트 운영에서 progress file이 중요한 이유는 단순하다. 해석이 거의 필요 없기 때문이다. 메모리 검색은 무엇을 불러올지 판단해야 하지만, progress file은 지금 작업에 대한 명시적 운영 상태를 적는다.
예를 들어 다음 정도만 있어도 재개 품질이 확 달라진다.
- 현재 단계
- 끝난 체크리스트
- 남은 작업
- 확인이 필요한 항목
- 마지막 수정 파일 또는 문서
이 정보는 장기 기억처럼 화려하지 않지만, 실제 운영 복구에는 훨씬 직접적으로 도움이 된다.
6. 우리 저장소에서 이미 쓰는 구조
이 저장소는 장시간 운영을 메모리 시스템 하나로 풀지 않는다. 이미 여러 외부 구조가 역할을 나눠 가진다.
| 역할 | 경로 예시 | 기능 |
|---|---|---|
| 현재 작업 범위 | tasks/plan.md |
지금 무엇을 하는지 고정 |
| 세션 인계 | tasks/handoffs/ |
다음 세션에 넘길 상태 기록 |
| 복구 스냅샷 | tasks/sessions/ |
중간 상태 보존 |
| 문서 지도 | docs/memory-map.md |
어디를 읽어야 하는지 연결 |
| 장기 지식 | docs/ 전반 |
재사용 가능한 정보 축적 |
이 구조를 보면 메시지가 분명해진다. 장기 메모리는 한 층일 뿐이고, 장시간 운영 전체를 책임지지 않는다.
7. 메모리 시스템 글과 무엇이 다른가
drafts/blog/260429_하네스시리즈03_메모리시스템_블로그.md가 다룬 것은 외부 기억의 종류와 저장 전략이다. 그 글이 "무엇을 어떻게 보존할 것인가"에 가깝다면, 이번 C2는 "끊긴 작업을 어떻게 다시 붙일 것인가"에 더 가깝다.
차이는 아래처럼 볼 수 있다.
| 질문 | 메모리 시스템 | 장시간 운영 / handoff |
|---|---|---|
| 핵심 관심사 | 무엇을 저장할까 | 어디서 이어 시작할까 |
| 저장 단위 | 사실, 사건, 절차 | 현재 상태, 다음 행동, 검증 상태 |
| 검색 방식 | 회수·주입 | 직접 읽고 재개 |
| 실패 신호 | stale memory, 노이즈, 충돌 | 재개 실패, 중복 작업, 맥락 재구성 비용 |
즉, C2는 메모리 일반론의 반복이 아니라, 운영 복구 구조에 대한 글이다.
8. 실무 적용: 장시간 작업을 어떻게 설계할까
처음부터 복잡한 orchestration을 만들 필요는 없다. 아래 순서면 충분히 시작할 수 있다.
- 긴 작업을 3~5개 단계로 자른다.
- 각 단계 종료 시 남길 기록 형식을 고정한다.
- 다음 세션이 먼저 읽을 파일을 handoff에 명시한다.
- 완료 기준과 미검증 항목을 분리해서 적는다.
- 실제 중단 상황에서 resume가 되는지 한 번 검증한다.
핵심은 저장량이 아니라 재개 가능성 테스트다. resume가 검증되지 않았다면, 그 구조는 아직 장시간 운영용이 아니다.
9. 흔한 실패
대화 로그를 handoff로 착각한다
대화 기록은 길고 풍부하지만, 다음 행동을 좁혀 주지 못할 때가 많다.
모든 것을 메모리로 해결하려 한다
long-term memory가 있어도 현재 잡 상태가 없으면 바로 이어서 일할 수 없다.
다음 행동이 없다
상태 요약만 있고 "이제 뭘 할지"가 없으면 새 세션은 다시 계획부터 해야 한다.
검증 상태를 안 남긴다
무엇이 끝났고 무엇이 아직 미확인인지 안 쓰면, 재개 시 중복 검토가 생긴다.
10. 운영 관점에서의 완료 기준
장시간 에이전트가 잘 작동한다는 말은 단순히 오래 생각했다는 뜻이 아니다. 아래 질문에 "예"라고 답할 수 있어야 한다.
- 세션이 바뀌어도 다음 행동이 분명한가
- 같은 작업을 중복 수행하지 않는가
- 미검증 상태가 외부 기록에 남는가
- 사람이 중간에 들어와도 현재 상태를 빠르게 파악할 수 있는가
이 기준을 통과해야 비로소 메모리, 자동화, 멀티에이전트 같은 다음 단계를 붙일 수 있다.
참고 자료
docs/blog_series_하네스엔지니어링_총괄_design.mdsources/260518_하네스엔지니어링_15장_블로그활용노트.mddrafts/blog/260429_하네스시리즈03_메모리시스템_블로그.mddrafts/blog/260429_하네스시리즈06_평가운영_블로그.md
이 글은 평가·운영·메모리 시리즈의 2/4 편입니다. 이전 편: 에이전트 평가 하네스. 다음 편: 권한, 승인, 샌드박스, 감사 로그로 보는 운영 안전장치.
시리즈 전체 안내: 하네스 엔지니어링 시리즈 안내
댓글
댓글 쓰기