--- name: strategic-compact description: 임의의 자동 컴팩션 대신 논리적 간격에서 수동 컨텍스트 압축을 제안하여 작업 단계를 통해 컨텍스트를 보존합니다. origin: ECC --- # 전략적 컴팩트 스킬 임의의 자동 컴팩션에 의존하지 않고 워크플로우의 전략적 지점에서 수동 `/compact`를 제안합니다. ## 활성화 시점 - 컨텍스트 제한에 근접하는 긴 세션을 실행할 때 (200K+ 토큰) - 다단계 작업을 수행할 때 (조사 -> 계획 -> 구현 -> 테스트) - 같은 세션 내에서 관련 없는 작업 간 전환할 때 - 주요 마일스톤을 완료하고 새 작업을 시작할 때 - 응답이 느려지거나 일관성이 떨어질 때 (컨텍스트 압박) ## 전략적 컴팩션이 필요한 이유 자동 컴팩션은 임의의 지점에서 실행됩니다: - 종종 작업 중간에 실행되어 중요한 컨텍스트를 잃음 - 논리적 작업 경계를 인식하지 못함 - 복잡한 다단계 작업을 중단할 수 있음 논리적 경계에서의 전략적 컴팩션: - **탐색 후, 실행 전** -- 조사 컨텍스트를 압축하고 구현 계획은 유지 - **마일스톤 완료 후** -- 다음 단계를 위한 새로운 시작 - **주요 컨텍스트 전환 전** -- 다른 작업 시작 전에 탐색 컨텍스트 정리 ## 작동 방식 `suggest-compact.js` 스크립트는 PreToolUse (Edit/Write)에서 실행되며 다음을 수행합니다: 1. **도구 호출 추적** -- 세션 내 도구 호출 횟수를 카운트 2. **임계값 감지** -- 설정 가능한 임계값에서 제안 (기본값: 50회) 3. **주기적 알림** -- 임계값 이후 25회마다 알림 ## Hook 설정 `~/.claude/settings.json`에 추가합니다: ```json { "hooks": { "PreToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/run-with-flags.js\" \"pre:edit-write:suggest-compact\" \"scripts/hooks/suggest-compact.js\" \"standard,strict\"" } ], "description": "Suggest manual compaction at logical intervals" } ] } } ``` ## 구성 환경 변수: - `COMPACT_THRESHOLD` -- 첫 번째 제안까지의 도구 호출 횟수 (기본값: 50) ## 컴팩션 결정 가이드 컴팩션 시기를 결정하기 위해 이 표를 사용하세요: | 단계 전환 | 컴팩션? | 이유 | |-----------------|----------|-----| | 조사 -> 계획 | 예 | 조사 컨텍스트는 부피가 크고, 계획이 증류된 결과물 | | 계획 -> 구현 | 예 | 계획은 TodoWrite 또는 파일에 있으므로 코드를 위한 컨텍스트 확보 | | 구현 -> 테스트 | 경우에 따라 | 테스트가 최근 코드를 참조하면 유지; 포커스 전환 시 컴팩션 | | 디버깅 -> 다음 기능 | 예 | 디버그 추적이 관련 없는 작업의 컨텍스트를 오염시킴 | | 구현 중간 | 아니오 | 변수명, 파일 경로, 부분 상태를 잃는 비용이 큼 | | 실패한 접근 후 | 예 | 새 접근을 시도하기 전에 막다른 길의 추론을 정리 | ## 컴팩션에서 유지되는 것 무엇이 유지되는지 이해하면 자신 있게 컴팩션할 수 있습니다: | 유지됨 | 손실됨 | |----------|------| | CLAUDE.md 지침 | 중간 추론 및 분석 | | TodoWrite 작업 목록 | 이전에 읽은 파일 내용 | | 메모리 파일 (`~/.claude/memory/`) | 다단계 대화 컨텍스트 | | Git 상태 (커밋, 브랜치) | 도구 호출 기록 및 횟수 | | 디스크의 파일 | 구두로 언급된 세밀한 사용자 선호도 | ## 모범 사례 1. **계획 후 컴팩션** -- TodoWrite에서 계획이 확정되면 새로 시작하기 위해 컴팩션 2. **디버깅 후 컴팩션** -- 계속하기 전에 에러 해결 컨텍스트 정리 3. **구현 중간에는 컴팩션하지 않기** -- 관련 변경 사항의 컨텍스트 보존 4. **제안을 읽기** -- Hook이 *언제*를 알려주고, *할지* 여부는 당신이 결정 5. **컴팩션 전에 기록** -- 컴팩션 전에 중요한 컨텍스트를 파일이나 메모리에 저장 6. **요약과 함께 `/compact` 사용** -- 커스텀 메시지 추가: `/compact Focus on implementing auth middleware next` ## 관련 항목 - [The Longform Guide](https://x.com/affaanmustafa/status/2014040193557471352) -- 토큰 최적화 섹션 - 메모리 영속성 Hook -- 컴팩션에서 살아남는 상태를 위해 - `continuous-learning` 스킬 -- 세션 종료 전 패턴 추출