Delta Channels: How We’re Evolving our Runtime for Long-Running Agents
Quick Summary
DeltaChannel은 장기 실행 에이전트의 누적 메시지와 파일 상태를 매번 전체 저장하지 않고 단계별 변경분과 주기적 스냅샷으로 저장해 체크포인트 비용을 크게 줄이는 LangGraph의 새 런타임 원시 기능입니다.
💡 한 줄 요약
DeltaChannel은 장기 실행 에이전트의 누적 메시지와 파일 상태를 매번 전체 저장하지 않고 단계별 변경분과 주기적 스냅샷으로 저장해 체크포인트 비용을 크게 줄이는 LangGraph의 새 런타임 원시 기능입니다.
📌 핵심 요약
- LangGraph 기반 Deep Agents는 관측성, 사람 개입, 장애 복구를 위해 매 단계 에이전트 상태를 체크포인트하지만, 기본 전체 스냅샷 방식은 메시지 기록과 파일 기반 컨텍스트가 길어질수록 저장량이 O(N²)로 증가한다.
- DeltaChannel은 누적 상태 필드에 대해 매 단계 새로 추가된 변경분만 저장하고, 일정 주기마다 전체 스냅샷을 남겨 복구 시 재생해야 하는 델타 수를 제한한다.
- Deep Agents의 코딩 에이전트 벤치마크에서 기존 방식은 200턴에 5.3GB를 체크포인터에 직렬화했지만, DeltaChannel 적용 시 129MB로 줄어 40배 이상 저장량을 절감했다.
- Deep Agents v0.6에서는 메시지와 파일이 기본적으로 delta-backed 상태가 되며, 기존 스레드는 별도 마이그레이션 없이 계속 동작하고 도구, 인터럽트, 타임트래블 등 기존 LangGraph API도 유지된다.
- 사용자가 직접 DeltaChannel을 정의할 때는 reducer가 누적 쓰기들을 어떤 배치로 접더라도 동일한 결과를 내는 batching-invariance 조건을 만족해야 하며, 이를 어기면 스냅샷 경계 이후 상태가 조용히 달라질 수 있다.
🧩 주요 포인트
- LangGraph 기반 Deep Agents는 관측성, 사람 개입, 장애 복구를 위해 매 단계 에이전트 상태를 체크포인트하지만, 기본 전체 스냅샷 방식은 메시지 기록과 파일 기반 컨텍스트가 길어질수록 저장량이 O(N²)로 증가한다.
- DeltaChannel은 누적 상태 필드에 대해 매 단계 새로 추가된 변경분만 저장하고, 일정 주기마다 전체 스냅샷을 남겨 복구 시 재생해야 하는 델타 수를 제한한다.
- Deep Agents의 코딩 에이전트 벤치마크에서 기존 방식은 200턴에 5.3GB를 체크포인터에 직렬화했지만, DeltaChannel 적용 시 129MB로 줄어 40배 이상 저장량을 절감했다.
- Deep Agents v0.6에서는 메시지와 파일이 기본적으로 delta-backed 상태가 되며, 기존 스레드는 별도 마이그레이션 없이 계속 동작하고 도구, 인터럽트, 타임트래블 등 기존 LangGraph API도 유지된다.
- 사용자가 직접 DeltaChannel을 정의할 때는 reducer가 누적 쓰기들을 어떤 배치로 접더라도 동일한 결과를 내는 batching-invariance 조건을 만족해야 하며, 이를 어기면 스냅샷 경계 이후 상태가 조용히 달라질 수 있다.
🧠 상세 정리
1. 장기 실행 에이전트에서 드러난 체크포인트 비용 문제
글은 Deep Agents가 LangGraph 런타임 위에서 동작하며, 매 단계마다 에이전트 진행 상태를 체크포인트한다는 점에서 출발한다. 이 구조 덕분에 에이전트가 어디까지 진행했는지 관측할 수 있고, 사람 개입이나 장애 복구, 특정 시점 재개가 가능해진다. 그러나 에이전트가 더 오래 실행되고 수십·수백 단계의 메시지 기록을 쌓으며 파일시스템 기반 컨텍스트까지 활용하면, 상태 자체가 계속 커진다. 기본 전체 스냅샷 모델에서는 매 체크포인트가 1단계부터 N단계까지의 누적 상태를 모두 포함하므로 저장량이 O(N²)로 증가한다. 특히 메시지와 파일이 Deep Agents의 상태에 포함되는 구조에서는 이 증가가 빠르게 실제 운영 비용으로 전환된다.
2. 전체 스냅샷 방식이 만드는 중복 저장과 증폭
기존 LangGraph 체크포인트 방식은 작은 에이전트나 짧은 세션에서는 큰 문제가 되지 않는다. 하지만 메시지와 파일처럼 append-only 성격의 필드는 시간이 지날수록 계속 커지고, 전체 스냅샷 방식은 매 단계 더 큰 덩어리를 직렬화해 체크포인터에 기록한다. 그 결과 각 단계는 이전 단계보다 더 많은 데이터를 저장하고, 체크포인트 레이어 전체에서는 같은 정보가 여러 번 중복 기록된다. 글은 이 비용을 직렬화 시간, write amplification, 중복 저장, 메모리 사용 증가로 설명한다. 예시로 코딩 에이전트가 200턴을 실행하면 현재 방식에서 5.3GB가 체크포인터에 직렬화되며, 이는 장기 세션에서는 단순 구현 세부사항이 아니라 운영상의 병목이 될 수 있음을 보여준다.
3. DeltaChannel의 핵심 아이디어: 변경분 저장과 주기적 스냅샷
DeltaChannel은 LangGraph 1.2에서 도입된 새 채널 타입으로, 그래프 상태의 특정 필드를 체크포인트에 표현하는 방식을 바꾼다. 일반 단계에서는 전체 상태를 다시 저장하지 않고 그 단계에서 추가된 업데이트, 즉 작은 델타만 기록한다. 대신 snapshot_frequency=K 단계마다 전체 스냅샷을 써서 복구 비용이 무한히 커지지 않도록 제한한다. Deep Agents에서는 기본값으로 50단계마다 스냅샷을 남기며, 따라서 재개 시 처음부터 모든 델타를 재생할 필요 없이 가장 가까운 스냅샷까지만 거슬러 올라가면 된다. 글은 이 방식이 이론적으로는 주기적 스냅샷 때문에 여전히 이차 성분을 갖지만, 계수가 약 1/K로 줄어 실제 세션 길이에서는 O(N) 델타 항이 지배적이라고 설명한다.
4. 벤치마크: 저장량 절감과 워크로드별 차이
글은 DeltaChannel이 LangGraph의 일반 원시 기능이지만, 이를 도입하게 만든 주요 워크로드는 Deep Agents의 코딩 세션이라고 밝힌다. 벤치마크는 실제 LLM 호출 없이 InMemorySaver, 결정적 mock model, 완전히 mock된 작업으로 구성되어 재현 가능하게 설계되었다. 두 가지 시나리오가 사용되었는데, 하나는 가벼운 코딩·검색 에이전트이고 다른 하나는 여러 파일을 다루는 기능 구현 세션이다. 주기적으로 큰 검색 결과가 들어오며, 이 결과들은 FilesystemMiddleware의 20k-token eviction threshold를 넘어 메시지에서 파일로 오프로드된다. 가벼운 워크로드에서는 500턴에서 기존 방식이 4GB까지 증가한 반면 DeltaChannel은 110MB 미만으로 유지되었고, 무거운 워크로드에서는 200턴만에 기존 방식이 5.3GB에 도달했지만 DeltaChannel은 129MB 수준으로 줄었다.
5. Deep Agents와 LangGraph에서의 API 변화
Deep Agents v0.6에서는 DeltaChannel이 기본적으로 활성화되어 메시지와 파일이 모두 delta-channel-backed 상태가 된다. 사용자는 별도 설정을 하지 않아도 저장량 절감 효과를 얻으며, 기존 도구 사용, 인터럽트 처리, 타임트래블 같은 LangGraph API 표면은 그대로 유지된다. LangGraph에서는 DeltaChannel을 임의의 상태 필드에 사용할 수 있는 first-class primitive로 제공한다. 사용자는 DeltaChannel에 reducer와 snapshot_frequency를 지정해 누적 필드의 새 상태를 계산하고, 전체 스냅샷을 얼마나 자주 쓸지 조정할 수 있다. snapshot_frequency 값을 높이면 세션당 전체 쓰기 횟수가 줄어 저장량 절감은 커지지만, 재개 시 더 많은 델타를 재생해야 하므로 복구 지연과 저장 비용 사이의 균형을 워크로드에 맞춰 선택해야 한다.
6. Reducer 계약과 기존 스레드 마이그레이션
DeltaChannel을 직접 정의할 때 가장 중요한 조건은 reducer가 기존 BinaryOperatorAggregate보다 더 엄격한 계약을 만족해야 한다는 점이다. 기존 reducer는 기존 상태와 하나의 업데이트를 받아 새 상태를 만들었다면, DeltaChannel의 reducer는 상태와 누적된 쓰기 목록을 받아 한 번에 접는 방식으로 동작한다. 따라서 reducer는 쓰기들이 어떤 배치로 묶여 처리되더라도 같은 결과를 내야 하며, 글은 이를 batching-invariance라고 부른다. 이 조건을 위반하면 delta channel 상태가 전체 스냅샷과 다르게 재구성될 수 있고, 특히 스냅샷 경계를 넘는 세션에서 조용히 상태가 어긋날 수 있다. 한편 기존 pre-delta 스레드는 별도 데이터 마이그레이션이 필요 없으며, DeltaChannel.from_checkpoint가 일반 상태 값을 만나면 이를 base state로 사용하고 이후 새 체크포인트부터 델타를 쌓기 시작한다.
🧾 핵심 주장 / 시사점
- 핵심 병목은 에이전트 추론 자체가 아니라 장기 세션의 상태 누적과 체크포인트 표현 방식에서 발생할 수 있으며, 런타임 저장 모델의 개선만으로도 운영 비용을 크게 낮출 수 있다.
- DeltaChannel의 설계는 저장량 절감과 복구 지연 사이의 균형을 snapshot_frequency로 조정하게 해, 장기 실행 에이전트에서 비용 최적화와 안정성을 동시에 고려하는 방향을 보여준다.
- 사용자 입장에서는 기본 활성화와 무마이그레이션이 장점이지만, 커스텀 상태 필드에 적용할 때는 reducer의 batching-invariance를 검증하지 않으면 장기 세션에서 발견하기 어려운 상태 불일치가 생길 수 있다.
✅ 액션 아이템
- 원문에서 강조한 핵심 변화와 이해관계자를 기준으로 Delta Channels: How We’re Evolving our Runtime for Long-Running Agents의 영향을 정리한다.
- 다음 의사결정이나 제품/정책 판단에 연결될 수 있는 근거를 원문 문장과 함께 기록한다.
- 기사에서 제시한 수치·사례·제약 조건을 분리해 과장 없이 검토한다.
- 후속 모니터링이 필요한 발표·제품·정책 변화가 있는지 출처 링크를 기준으로 추적한다.
❓ 열린 질문
- The best open source frameworks for building AI agents in 2026]]" "192. 이 변화가 실제 사용자나 조직의 선택 기준을 어떻게 바꿀까?
- Interpreter Skills Building Workflows for Agents" "191. 이 근거가 다른 산업이나 지역에서도 동일하게 적용될 수 있을까?
- Give your agent its own computer" "198. 기사에서 아직 검증되지 않은 전제나 리스크는 무엇일까?
- The Missing Link Between Agents and Applications" "[[172. 후속 발표나 데이터가 나오면 어떤 지표를 먼저 비교해야 할까?