장기 실행 AI 에이전트의 크래시 방지 및 복구 방법은 무엇인가요?
How are you keeping long-running agents alive through crashes?
핵심 요약
장기 실행 AI 에이전트의 크래시 발생 시 상태를 유지하고 복구하는 다양한 기술적 접근 방식을 공유하고 논의함.
- 에이전트 내구성 — 크래시 발생 시 작업을 재개할 수 있는 상태 복구 기술.
- 기존 솔루션 — Temporal이나 관리형 서비스 등을 활용한 워크플로우 관리.
- 직접 구현 — SQLite나 이벤트 로그를 활용한 경량화된 상태 저장 방식.
- 체크포인트 전략 — 도구 호출 전후 상태를 기록하여 중복 실행 방지 및 재개.
최근 durable agent에 대해 조사 중입니다. 많은 연구소들이 장기 작업이 가능한 모델을 만들고 있어서, 내구성은 시간과 비용을 절약해 줄 것이라 확신합니다.
"내구성(durability)"이라는 단어가 생소한 사람들을 위해 말하자면, 그냥 "예상치 못한 크래시로부터 복구"한다는 뜻입니다. 별거 아니고 거의 모든 엔지니어가 자기 프로그램에 한 번쯤은 구현해 봤을 겁니다.
제가 살펴본 몇 가지 프로젝트입니다:
Temporal: 아마 "durable execution"이라는 단어를 처음 만든 곳일 텐데, 워크플로우 빌더들 사이에서 이미 매우 유명합니다. 문서 확인해 보니 기존 에이전트 시스템과 통합하기 꽤 쉬워 보입니다.
Claude Managed Agent: 문서나 출시 노트에서 "내구성"을 언급한 적은 없습니다. 하지만 손과 뇌를 분리한다는 기사를 읽어보니, 시스템 내부에 내구성을 내장했을 거라 확신합니다. 분리하는 목적 자체가 구성 요소 중 하나가 다운되어도 에이전트가 계속 실행되게 하려는 거니까요.
오픈 소스 쪽에서는 Flue라는 프로젝트를 살펴볼 만합니다. Claude Managed Agent와 매우 비슷한 접근 방식을 취하는 것 같습니다. (출시 시점도 관리형 에이전트 출시 9일 후라 일치합니다)
그래서 결국 나만의 것을 만들게 되었습니다.
Funky는 에이전트 스웜을 위한 오픈 소스 durable 런타임입니다. 진실의 원천(source of truth)으로 append-only 이벤트 로그를 만들었습니다. 그리고 세션 중간에 죽거나 교체되어도 상관없는 상태 비저장(stateless) 에이전트 런타임 워커를 만들었습니다. 댓글에 레포 링크를 남길 테니 docker compose up으로 바로 테스트해 보길 바랍니다.
다른 사람들은 이걸 어떻게 처리하는지 궁금합니다. Temporal 위에 직접 구현하는지, 관리형 서비스를 쓰는지, 아니면 완전히 다른 방식을 쓰는지요?


