에이전트 중단 뒤 작업을 이어가는 실행 상태 영속화 설계

장시간 AI 에이전트 작업의 중단을 전제로 체크포인트, 이벤트 로그, 잠금, 멱등 처리로 안전한 재개 구조를 설계하는 방법

2026-08-30 · 최초 발행 2026-08-06

중단된 작업을 처음부터 돌리지 않으려면

터미널 코딩 에이전트가 세션에서 분리된 백그라운드 실행을 표준 기능으로 채택하면서, 실행 상태를 어디에 어떤 형태로 보존할지가 설계 항목이 됐다. Muse Code는 모델 호출, 도구 실행, 승인, 편집을 로컬 이벤트 로그에 append하고 이를 단일 진실 원천으로 삼아 재생 정확성과 재시작 안전성을 확보했다고 밝혔다. Prime Agent는 컴팩션과 커널 재시작 이후에도 세션 상태를 유지하는 구조를 제시했다.

장시간 작업은 중간에 끊긴다. 상태가 사라지면 중단된 작업은 처음부터 다시 실행되고, 시간과 토큰을 이중으로 소비한다. 24시간 규모 실행에서는 이 손실이 그대로 비용이 된다.

재개 가능한 실행은 단순히 프로세스를 다시 띄우는 기능이 아니다. 어느 단계까지 완료됐는지 확인할 수 있어야 하며, 외부에 남긴 부작용을 반복하지 않아야 한다. 체크포인트, 부분 산출물, 재개 검증, 잠금, 멱등 처리, 저장소 수명 관리는 분리된 기능처럼 보여도 함께 설계해야 한다.

상태를 남기는 경계는 검증 가능한 작업 단계다

체크포인트는 시간 간격이 아니라 작업 단계의 완료 지점에 기록하는 편이 낫다. 시간 기준 기록은 단계 중간에 끊긴 상태를 남길 수 있어, 재개할 수 있는지 판단하기 어려워진다. 테스트 통과, 빌드 성공, 파일 생성 완료처럼 기계적으로 판정 가능한 지점이 경계로 적합하다.

각 체크포인트에는 완료 단계 식별자, 변경된 파일 목록, 검증 결과를 함께 기록한다. 이 정보가 빠지면 재개할 때마다 이전 상태를 다시 확인해야 한다.

완료되지 않은 변경도 별도 브랜치나 워크트리에 남긴다. 실패한 시도의 산출물이 보존돼야 동일한 실패를 재현하며 반복하지 않을 수 있다. 산출물과 체크포인트는 같은 식별자로 연결해 특정 상태가 어떤 결과물과 대응하는지 추적한다.

실패통과있음없음실패성공무효유효작업 시작단계 실행단계 검증 통과?재시도(부분 산출물 보존)체크포인트 기록(단계 · 파일 · 검증 결과)남은 단계 있음?작업 완료중단 발생(크래시 · 상한 · 연결 종료)재개 요청작업 잠금 획득?대기(중복 실행 차단)재개 지점 전제 유효?사람 판단(재계획)외부 부작용 멱등 판정재개 이력 기록(횟수 상한 확인)로그 · 산출물 수명 관리

재개 요청은 이전 상태를 검증한 뒤에 처리한다

재개 전에는 마지막 체크포인트가 전제했던 조건이 아직 유효한지 확인한다. 그 사이 저장소가 변경됐다면 이는 재개가 아니라 재계획 대상이다. 검증에 실패했을 때 자동 재개를 멈추고 사람 판단으로 넘겨야 하는 이유도 여기에 있다. 잘못된 전제를 바탕으로 실행을 이어가면 오류가 누적된다.

동일 작업을 두 프로세스가 동시에 재개하지 않도록 작업 식별자 단위 잠금도 필요하다. 알림이 늦어져 사람이 수동 재개를 시도하는 상황은 실제 충돌 원인이 된다. 잠금 보유자만 재개할 수 있게 하고, 프로세스가 비정상 종료한 뒤 영구 점유가 남지 않도록 만료 시간을 둔다.

재개 시각, 재개 지점, 재개 사유, 재개 후 결과는 별도 이력으로 기록한다. 반복적으로 재개되는 작업은 설계 문제의 신호일 수 있다. 재개 횟수 상한은 무한 재개 루프를 막는 장치다.

커밋과 배포처럼 외부에 남는 행위를 분리한다

커밋, 태그, 배포 트리거, 이슈 코멘트, 알림 발송은 재실행 시 중복될 수 있는 외부 부작용이다. 각 호출을 멱등 대상으로 분류하고 중복 판정 키를 부여해야 한다. 그렇지 않으면 재개 과정이 중복 커밋, 중복 배포, 알림 폭주로 이어질 수 있다.

멱등 처리 자체가 불가능한 행위는 체크포인트 경계 밖으로 옮겨 재개 구간에 포함되지 않게 한다. 중복 판정 키를 만들 수 없는 호출은 사람 승인 게이트 뒤에 두는 방식도 필요하다.

초기에는 외부 부작용의 수가 적다면 부작용을 체크포인트 경계 밖으로 밀어내는 것만으로도 충분하다. 부작용이 늘어나는 시점에는 멱등 키 체계를 도입하는 순서가 현실적이다.

로그와 산출물은 보존 정책 없이는 운영되지 않는다

append 전용 이벤트 로그는 변경 이력을 보존하고 임의 시점 재생을 가능하게 하지만, 관리하지 않으면 끝없이 증가한다. 이벤트 로그와 부분 산출물에는 보존 기간과 총량 상한이 필요하다.

완료 작업은 짧게, 미완료 작업은 재개 가능한 기간까지 보존하는 이원 정책을 둘 수 있다. 감사 목적의 보존과 재개 목적의 보존도 분리한다. 재개용 산출물은 빠르게 정리하고 감사용 로그만 장기 보존하는 방식이다.

작업당 이벤트 로그 크기와 부분 산출물 크기를 측정한 뒤, 동시 작업 수와 보존 기간을 곱해 저장소 용량을 산정한다. 로그 볼륨과 산출물 볼륨은 분리해 한쪽의 증가가 다른 쪽을 잠식하지 않게 한다. 만료 로그와 고아 산출물을 정리하는 주기 작업을 두고 결과를 남기며, 정리 전에는 잠금 상태와 재개 가능 여부를 확인한다.

로그에 자격증명이나 개인정보가 섞일 수 있는 경로도 차단해야 한다. 로그에 담기는 내용과 보존 기간은 개인정보·기밀 처리 기준에 맞춰 승인 대상으로 두고, 재개 횟수 상한과 잠금 만료 시간 변경 역시 운영 영향 검토를 전제로 한다.

손상된 상태를 무리하게 되살리지 않는다

로그가 중간에서 끊겼다면 마지막 정합 지점까지만 재생하고 이후 기록은 폐기하는 규칙이 필요하다. 부분 손상 로그를 그대로 재생하면 잘못된 상태를 복원할 수 있다.

재개 지점 검증 실패, 잠금 획득 실패, 로그 손상은 서로 다른 절차로 처리한다. 재개를 포기했을 때 부분 산출물을 보존할지, 폐기할지, 리뷰를 요청할지도 미리 정해 둔다. 정합성 검증 실패를 사람에게 알리는 경로를 확보하지 않으면 조용한 복구 실패가 가장 늦게 발견된다.

재개 방식과 전체 재실행의 선택 기준

구분 체크포인트 기반 재개 전체 재실행
재개 소요 시간 짧음 처음부터
토큰 재소모 잔여 단계분 전체분
구현 복잡도 높음 낮음
중복 부작용 위험 존재 (멱등 필요) 존재 (전량 반복)
저장소 요건 필요 불필요
상태 정합성 부담 없음

체크포인트 기반 재개는 완료된 단계를 반복하지 않는다. 24시간 규모 작업이 중단돼도 잔여 구간만 처리하며, 부분 산출물이 남아 실패 원인 분석에도 쓸 수 있다. 대신 재개 지점 검증, 잠금, 멱등 처리와 로그 손상 복구 규칙이 필요해 초기 구축 부담이 크다.

전체 재실행은 구현이 단순하고 상태 정합성을 관리할 필요가 없으며 항상 깨끗한 시작점에서 출발한다. 그러나 장시간 작업에서는 중단이 전량 손실이 되고, 중단이 반복되면 작업이 영원히 완료되지 않을 수 있다. 단계 소요 시간이 짧고 전체 작업이 몇 분 규모라면 전체 재실행이 합리적이다. 시간 단위 이상 작업에서는 체크포인트가 사실상 필수다.

외부 저장소에 상태를 보관하면 프로세스가 죽어도 상태가 남아 크래시, 재부팅, 연결 종료를 견딜 수 있다. 다른 프로세스가 실행을 이어받거나 감사 증적으로 재사용하는 것도 가능하다. 반면 매 단계 기록에 I/O 비용이 붙고, 직렬화 형식은 버전 변경에 취약하며, 저장소 자체가 새로운 가용성 의존이 된다.

프로세스 메모리 유지는 즉시 접근할 수 있고 직렬화 부담이 없어 실행 속도에 영향을 주지 않으며 구현도 단순하다. 하지만 프로세스 종료가 곧 상태 소실이라 장시간 실행의 전제와 충돌하고, 여러 프로세스가 협업하는 구성에서는 공유할 수 없다. Prime Agent가 백그라운드 데몬으로 커널 재시작을 넘어 상태를 유지하는 구성은 메모리 속도와 영속성을 함께 얻으려는 절충이다. 이 방식도 데몬 자체의 재시작 경로를 따로 설계해야 완결된다.

트랜잭션과 장애 복구의 관점에서 보는 재개

체크포인트는 저장점(savepoint) 개념을 실행 에이전트에 적용한 형태이며, 재개 지점 검증은 커밋 전 정합성 확인에 해당한다. 외부 부작용의 멱등 처리는 분산 트랜잭션에서 정확히 한 번 처리를 근사하는 보상 설계와 연결된다.

append 전용 이벤트 로그와 재생 방식은 로그 기반 복구(WAL)와 같은 원리를 따른다. 손상 로그를 마지막 정합 지점까지만 재생하는 규칙은 부분 복구 정책의 표준 형태다. 작업 잠금과 잠금 만료는 단일 실행 보장과 교착 방지를 함께 다루며, 재개 횟수 상한은 무한 재시도로 자원을 소모하는 실패 양상을 막는다.

프레임워크 기능으로 편입되는 상태 영속화

에이전트 프레임워크는 체크포인트와 재개를 기본 기능으로 제공하고 형식을 표준화하는 흐름에 있다. 이벤트 로그 기반 재생은 디버깅 도구와 결합해 실행 재현 기능으로 제품화되는 방향이다.

백그라운드 데몬 형태의 세션 유지는 터미널 에이전트의 공통 구성 요소로 정착하는 흐름이며, 실행 로그의 보존 기간과 내용 범위는 개인정보 처리 기준에서 명시할 대상으로 편입되는 방향이다.

장시간 실행 에이전트에서는 중단이 예외가 아니라 전제다. Muse Code가 호출과 편집을 append하는 이벤트 로그를 단일 진실 원천으로 두고, Prime Agent가 백그라운드 데몬으로 커널 재시작 이후에도 세션을 유지하는 구성은 같은 문제를 다룬다. 상태 보존만으로는 충분하지 않다. 검증 가능한 재개 지점, 잠금, 멱등 처리가 갖춰져야 중단된 실행을 안전하게 이어붙일 수 있다.

Sources

AI 에이전트체크포인트상태 영속화이벤트 로그멱등성