세션 재개 및 검색
이전 세션을 찾아 이어서 작업하는 시스템입니다. (.ai-core v2.1.0 기준)
/-session-resume 동작
/-session-resume은 handoff 우선 전략으로 이전 컨텍스트를 복원합니다.
복원 경로
Handoff 존재?
/ \
Yes No
| |
Stale 판정? 최근 로그 20~30건
/ \ 기반 복원 (C)
No Yes
| |
Handoff 읽기 + Handoff 참고만 +
이후 로그 추출 로그 기반 복원
(A) (B)
| 경로 | 조건 | 동작 | 충실도 |
|---|---|---|---|
| A | handoff 존재 + stale 아님 | handoff 읽기 + 이후 로그 추출 | ~90% |
| B | handoff 존재 + stale | handoff 참고만 + 로그 기반 복원 | ~60% |
| C | handoff 없음 | 최근 로그 20~30건 기반 복원 | ~60% |
최고 충실도 복원
--continue 플래그로 같은 터미널에서 중단 없이 재개하면 충실도 100%입니다. handoff가 필요 없는 가장 단순한 방법입니다.
Stale 판정
Stale 여부는 **시간이 아닌 활동량(로그 수)**으로 판정합니다.
handoff 저장 시점 이후의 프로젝트 로그 수
>= stale_threshold_logs (기본 100) → stale (오래된 handoff)
< stale_threshold_logs → 유효 (최근 handoff)
| 시나리오 | 경과 시간 | 이후 로그 | 판정 |
|---|---|---|---|
| 집중 작업 후 | 1일 | 300건 | stale |
| 가끔 작업 | 7일 | 10건 | 유효 |
설정 위치: global.json > session.handoff.stale_threshold_logs
{
"session": {
"handoff": {
"stale_threshold_logs": 100
}
}
}
/-session-save
Handoff 인계 문서를 생성하는 명령입니다. 수동 저장과 자동 저장 두 가지 방식이 있습니다.
수동 저장 vs 자동 저장
수동 (/-session-save) | 자동 (stop hook) | |
|---|---|---|
| 트리거 | 사용자가 명시적으로 호출 | /quit 세션 종료 시 자동 |
| 작성자 | Claude (현재 컨텍스트 기반) | stop hook 스크립트 |
| 내용 품질 | 상세 (결정 이유, 다음 액션, 미해결 이슈) | 간이 (최근 로그 + git diff) |
| 충실도 | ~90% | ~50% |
| 메타데이터 | auto_saved: false (또는 미포함) | auto_saved: true |
auto_saved 구분
resume 시 auto_saved: true인 handoff는 간이 저장임을 인지하고, 로그 기반 보완 복원을 병행합니다. 수동 저장된 handoff는 그 자체로 충분한 인계 문서로 취급됩니다.
수동 저장 내용 (Resume Contract)
# Handoff: {프로젝트명}
## 현재 상태
- 진행 중인 작업 설명
- 완료된 항목
## 주요 결정사항
- 결정 1: 이유
- 결정 2: 이유
## 수정된 파일
- /absolute/path/to/file1.php
- /absolute/path/to/file2.ts
## 미해결 이슈
- 이슈 1
## 다음 작업
- [ ] 할 일 1
- [ ] 할 일 2
자동 저장 내용
# Auto-saved Handoff
## 최근 사용자 메시지
- 마지막 대화 내용 요약
## Git 변경 파일
- path/to/changed/file.php