상태 관리와 지속화: 긴 작업이 중단을 견디게 만들기
이 코스는 에이전트의 실행 상태를 다룹니다. 모델이 '기억'하는 것이 아니라(그건 메모리이고, 이 시리즈 코스5와 코스8의 영역입니다) 하네스 자신이 들고 있는 실행 장면, 즉 messages 배열, 턴과 사용량 카운터, 아직 원장에 기록되지 않은 도구 호출입니다. 프로세스가 죽으면 디스크의 파일은 모두 살아남지만 그 장면은 사라지고, 작업은 처음부터 다시 시작됩니다. 이 코스는 그 장면을 디스크에 쓰고 되살릴 수 있는 것으로 바꾸는 법을 가르칩니다. 단계마다 체크포인트를 남기고, 크래시 뒤에 끊긴 자리에서 루프를 다시 일으키고, 재개할 때 어떤 도구가 다시 실행해도 안전하고 어떤 도구가 그렇지 않은지 가려내고(멱등성), 그다음 체크포인트의 두 번째 쓰임인 이전 장면으로 되감기와 대안 시도 분기까지 나아간 뒤, 마지막에는 코스7에서 쓴 하네스에 체크포인팅과 재개를 온전히 배선합니다. 이 시리즈의 앞 여덟 개 코스를 마친 독자를 위한 코스입니다. 메모리나 컨텍스트 관리는 다시 가르치지 않고(코스5는 모델이 세션을 넘어 무엇을 기억하는지를, 코스8은 매 턴 모델에 무엇을 보여 주는지를 다룹니다. 이 코스는 하네스 자신이 무엇을 기록하는지를 다룹니다), Temporal 같은 외부 워크플로 엔진 API도 가르치지 않으며, 멀티 프로세스 동시성이나 분산 일관성도 다루지 않습니다. Claude Code의 체크포인팅은 제품 참조로만 등장하고, 여기서 만드는 것은 여러분 자신의 하네스를 위한 것입니다.
코스 구성
- 메모리 너머에 있는 상태
- 체크포인트: 실행 장면을 디스크에 쓰기
- 체크포인트에서 재개하기: 루프를 다시 일으키기
- 부수 효과와 멱등성: 재개 시 다시 실행해도 안전한 도구는 무엇인가
- 되감기와 분기: 체크포인트의 두 번째 값어치
- 실습: 하네스에 체크포인팅과 재개를 배선하기
학습 목표
이 코스를 마치면 다음을 할 수 있습니다:
- 에이전트의 메모리(모델에 건네는 컨텍스트)와 실행 상태(하네스가 들고 있는 실행 장면)를 갈라놓고, '에이전트는 상태를 가지며 오류가 누적된다'는 점이 왜 긴 작업에서 크래시를 유독 치명적으로 만드는지 설명하기
- 하네스 루프를 위한 체크포인트를 설계하기: 어떤 필드가 스냅샷에 들어가야 하는지, 언제 쓸지, 체크포인트 파일 자체를 망가뜨리지 않고 쓰는 방법
- 재개를 구현하기: 체크포인트에서
messages와 카운터를 다시 세우고, 루프에 다시 들어가고, 도구 실행과 원장 기록 사이에서 크래시가 났을 때 남는 허공에 뜬 호출을 올바르게 처리하기 - 멱등성으로 복구를 뒷받침하기: 어떤 도구가 다시 실행해도 무해하고 어떤 도구를 이중 실행에서 지켜야 하는지 판단하고, 영향이 큰 도구에 멱등성 키를 달기
- 체크포인트를 재해 복구 너머로 쓰기: 이전 장면으로 되감아 다시 시도하고, 대안 시도로 분기하고, 체크포인트와 버전 관리의 역할 분담을 말하기
- 코스7의 하네스에 전체 메커니즘(턴마다의 지속화, --resume 복구, 허공에 뜬 호출 정리, 멱등한 재실행 보호)을 배선하고, 실행 도중 끊긴 긴 작업을 끝까지 끌고 가 보이기
사전 지식
- 이 시리즈의 앞 여덟 개 코스를 마쳤거나 그에 준하는 지식이 있다
stop_reason이 이끄는 하네스 루프를 직접 손으로 쓸 수 있고,tool_use/tool_result가 일대일로 짝지어야 한다는 점을 이해한다(코스7)- 컨텍스트 윈도우 관리와 컴팩션을 안다(코스8. 이 코스의 체크포인트는 그
tokensUsed카운터와 함께 움직입니다) - 기본적인 JavaScript / Node.js 코드를 읽고 쓸 수 있다(레슨6에서는 함께 써 나갑니다)
예상 학습 시간
각 레슨의 실습 연습을 포함해 약 3~4시간.