세션과 메모리
q가 워크스페이스 실행 사이에 무엇을 저장하고 압축하고 학습하고 복원하는지 이해합니다.
영구 세션
각 워크스페이스는 .q/sessions/ 아래에 여러 UUID 기반 세션을 가질 수 있습니다. Studio는 루트 세션과 워크스페이스 위치를 등록하고 서로 다른 저장소의 루트를 한 목록에 표시합니다. 저장소를 추가한 뒤 기존 루트 세션을 고르거나 새 세션을 만들 수 있습니다. 사용 중이 아닌 루트를 삭제하면 전체 위임 자식 트리가 제거되지만 Workspace Memory의 장기 아카이브 기록은 유지됩니다.
프로세스 하나가 선택된 세션을 소유합니다. 다른 q 프로세스는 같은 워크스페이스의 다른 세션을 열 수 있지만 세션 잠금은 저장소 파일 편집을 직렬화하지 않습니다.
대화와 컨텍스트
q는 보이는 전체 대화와 모델에 보내는 압축된 요청 컨텍스트를 따로 저장합니다. 컨텍스트 메타데이터가 있으면 모델 입력을 줄이면서 사용자에게 보이는 기록은 그대로 유지합니다.
기본 세션 레코드는 다음 위치에 있습니다.
.q/sessions/<uuid>/session.json
세션 v2는 Chat Completions와 Responses에 공통 메시지 형식을 사용합니다. 기존 v1 Chat Completions 세션은 불러올 때 변환되고 다음 저장 시 새 형식으로 기록됩니다. 적용 가능한 Responses 재생 상태도 저장합니다. 이전 파일의 loop_mode 값은 읽을 수 있지만 다음 저장에서 제외됩니다.
위임 복구
위임된 각 자식 호출의 북마크를 delegations.json에 기록하고, 자식 세션을 delegates/<invocation-id>/ 아래에 저장합니다. 자식도 다시 위임할 수 있습니다. 재시작하면 가장 깊은 자식을 먼저 복구하고 저장된 결과를 부모의 호출에 반환합니다.
Studio는 이 레코드를 탐색 가능한 트리로 보여줍니다. 자식을 선택하면 해당 대화가 열립니다. 완료된 자식은 삭제할 수 있으며, 이때 해당 자식과 모든 하위 자식이 제거되고 부모 대화의 완료된 도구 교환 기록은 유지됩니다. 실행 중이거나 blocked 또는 unknown 상태인 자식은 이 작업으로 삭제할 수 없습니다.
결과가 기록되지 않은 일반 도구 호출은 unknown으로 에이전트에 전달하며 자동 재실행하지 않습니다. 중단된 외부 ACP 자식도 내부 턴을 재개할 수 없어 unknown으로 반환합니다.
Workspace Memory
Workspace Memory는 영구 메시지, 도구 활동, 실패, 생명주기 이벤트, 검색 인덱스를 저장합니다. 하나의 채팅 컨텍스트에 모든 과거 이벤트를 넣지 않고도 검색할 수 있습니다.
큰 도구 결과는 불변 Loom 아티팩트로 저장됩니다. 프롬프트에는 제한된 영수증이 전달되고 모델은 나중에 필요한 범위만 읽을 수 있습니다.
학습
성공한 턴 이후 Thinker는 확립된 워크플로, 영구 프로젝트 사실, 재사용 가능한 해결책, 향후 작업에 영향을 줄 증거 기반 발견을 proposition으로 추출할 수 있습니다.
Librarian은 각 proposition을 생성, 병합, 폐기할지 결정합니다. /learn off는 수집과 큐 처리를 중지하지만 이미 큐에 들어간 데이터는 삭제하지 않습니다.
빌드, 테스트, 포맷, 감사 같은 실행별 스냅샷은 영구 프로젝트 사실이 아니라 작업 기록에 남습니다.