상태와 복구는 애플리케이션이 소유한다
대화가 여러 요청과 작업자에 걸치면 현재 단계, 승인 여부, 외부 작업 ID를 자체 데이터베이스에 저장하는 편이 안전합니다. 모델 문맥만 상태로 사용하면 재시작, 중복 요청, 부분 실패를 정확히 복구하기 어렵습니다. 도구 호출 전후를 기록하고 같은 작업이 다시 와도 한 번만 반영되도록 해야 합니다.
상태 record에는 run version과 optimistic lock을 두어 동시에 온 두 요청이 같은 승인을 소비하거나 단계를 덮어쓰지 않게 합니다. process가 tool 실행 직후 죽는 상황을 일부러 만들고, 재시작한 worker가 외부 작업을 조회해 완료, 실패, 불확실 중 하나로 복구하는지 시험합니다.
model context는 database 상태에서 필요한 부분만 재구성합니다. 전체 대화가 길어질 때 요약본을 쓰더라도 중요한 승인, transaction ID와 사용자 제약은 구조화된 field로 유지합니다. prompt summary와 실제 상태가 충돌하면 database를 진실의 원천으로 삼습니다.
첫 도입에서는 조회 도구 하나와 쓰기 도구 하나, handoff 한 번만 포함한 작은 흐름을 만듭니다. 정상 완료뿐 아니라 도구 시간 초과, handoff 반복, guardrail 거부, 재시작 뒤 복구를 시험하세요. 그 결과가 단순한 함수 호출과 상태 머신보다 명확할 때 SDK의 추상화가 실제 이득입니다.
대표 요청을 정상, 권한 없음, 중복, tool timeout, prompt injection으로 나눠 회귀 set을 만듭니다. 각 run의 정답뿐 아니라 실행하지 말아야 할 tool이 호출되지 않았는지, 최대 비용과 p95 latency를 확인합니다. SDK나 model version을 바꿀 때 같은 set이 통과해야 합니다.
이 글의 API 정보는 2025년 snapshot에 한정됩니다. 실제 구현에서는 선택한 release의 공식 문서, examples와 migration note를 확인하고 dependency를 고정해야 합니다. abstraction이 바뀌어도 application의 상태, 권한, audit contract가 유지되도록 SDK type을 business domain 바깥 경계에 감싸는 방법을 고려합니다.