세션 ID가 대화 상태를 잇는 열쇠야
Agent SDK는 세션 ID를 발급하고 대화 상태를 내부에 보관해. ClaudeSDKClient의 세션은 클라이언트 수명과 함께 가고 query()는 한 번 쓰고 끝나. 같은 ID로 재개하면 저장된 상태를 불러와 새 프롬프트부터 이어 갈 수 있어.
JSONL을 내구성 있는 기준 기록으로 둬
SDK 사건을 JSONL로 흘리면 프롬프트·응답 조각·도구 호출·결과가 타입을 가진 한 줄씩 남아. cwkPippa는 이 파일을 기준으로 삼고 SQLite와 ChromaDB는 다시 만들 수 있는 파생 색인으로 둬. 불일치가 생기면 부분 수정으로 꿰매지 않고 지운 뒤 원본을 재생해.
프로세스가 바뀌어도 같은 세션을 되살려
작업자 프로세스가 재시작되면 같은 세션 ID로 새 ClaudeSDKClient를 만들고 SDK 상태를 복구할 수 있어. cwkPippa의 heartbeat 작업도 이 방식으로 서버 재시작 뒤에 대화 상태를 잃지 않아.
원칙: JSONL을 유일한 기준 기록으로 두고 DB 행과 색인은 언제든 다시 만들 수 있게 해.