세션 ID가 대화 상태를 잇는 열쇠야
Agent SDK는 세션 ID를 발급하고 대화 상태를 내부에 보관해. ClaudeSDKClient의 세션은 클라이언트 수명과 함께 가고 query()는 한 번 쓰고 끝나. 같은 ID로 재개하면 저장된 상태를 불러와 새 프롬프트부터 이어 갈 수 있어.
JSONL을 내구성 있는 기준 기록으로 둬
SDK가 내놓는 메시지를 도착하는 순간 네 코드가 JSONL에 적으면, 어시스턴트 텍스트와 도구 호출·도구 결과·스트림 델타·최종 결과가 타입을 가진 한 줄씩 남아. cwkPippa는 이 파일을 기준으로 삼고 SQLite와 ChromaDB는 다시 만들 수 있는 파생 색인으로 둬. 불일치가 생기면 부분 수정으로 꿰매지 않고 지운 뒤 원본을 재생해.
프로세스가 바뀌어도 같은 세션을 되살려
작업자 프로세스가 재시작되면 저장해 둔 세션 ID를 resume에 넣고 새 ClaudeSDKClient를 만들어. 그러면 CLI가 그 세션을 다시 불러와. cwkPippa는 2026-05-14에 반대쪽 길을 골랐어. CLI 세션 재개를 그만두고, 턴마다 자기 기록에서 대화 전체를 새 클라이언트에 다시 넣어. 그래서 재시작해도 JSONL에 있는 건 하나도 안 잃어. 둘 다 정당한 길이야. 하나를 고르고, 뭘 골랐는지 알고 있으면 돼.
원칙: JSONL을 유일한 기준 기록으로 두고 DB 행과 색인은 언제든 다시 만들 수 있게 해.