Community코딩 & 개발github.com

폴더 정리 도우미

Windows 또는 macOS 로컬 폴더, 외장 하드 드라이브 또는 과거 백업 디렉토리를 안전하게 분석하고 정리하여 명확하고 이해하기 쉬우며 장기적으로 유지 관리 가능한 디렉토리 구조로 복원합니다.

폴더 정리 도우미란 무엇인가요?

이 에이전트 스킬은 사용자의 로컬 디렉토리(예: 다운로드 폴더, 문서, 오래된 백업)를 안전하게 분석하고 구조화하는 데 사용됩니다. 기존의 단순 확장자별 분류 도구와 달리, 이 스킬은 먼저 전체 디렉토리 트리를 탐색하고 각 디렉토리의 '의미적 초상화'를 만든 후, 내용 자체에서 주제 지도를 귀납하여 최적의 구조를 결정합니다. 핵심 원칙은 데이터 안전, 파일 컨텍스트 보존, 그리고 모든 수정 사항의 추적 가능성입니다. 중복 파일 감지를 위해 Czkawka 또는 fclones CLI와 같은 네이티브 도구를 최우선으로 사용하며, 해당 도구를 사용할 수 없는 경우 자동으로 플랫폼 스크립트(PowerShell SHA256 또는 bash shasum)로 대체됩니다. 중요한 점은 이 에이전트가 어떤 파일도 기본적으로 삭제하지 않으며, 모든 수정 작업은 계획 단계를 거쳐 생성되고 언제든지 롤백할 수 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SeanZon/agent-skills/tree/HEAD/skills/folder-organizer

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서


name: folder-organizer description: Windows 또는 macOS 로컬 폴더, 외장 하드 드라이브 또는 과거 백업 디렉토리를 안전하게 분석하고 정리하여 명확하고 이해하기 쉬우며 장기적으로 유지 관리 가능한 디렉토리 구조로 복원합니다. 사용자가 디스크/폴더/다운로드 디렉토리 정리, 중복 파일 감지 또는 정리, 오래된 컴퓨터 자료 보관, 디렉토리가 너무 지저분해서 정리하고 싶다고 언급할 때 사용합니다(사용자가 명시적으로 '정리'라고 말하지 않아도). 정리 전에 전체 디렉토리 트리를 탐색하여 각 디렉토리에 대한 의미적 초상화를 만들고 주제 지도를 귀납하며, 구조는 내용 자체에서 귀납되며 규칙/유형/날짜에 따라 템플릿을 적용하는 기존 정리 도구와 차별화됩니다. 중복 파일은 우선적으로 시스템에 이미 설치된 Czkawka / fclones CLI를 사용하여 감지하며, 사용할 수 없을 경우 자동으로 플랫폼 스크립트(Windows: PowerShell + SHA256; macOS/Linux: bash + shasum)로 대체됩니다. 기본적으로 어떤 파일도 삭제하지 않으며, 모든 수정 사항은 먼저 계획을 생성하고 전체 과정을 롤백할 수 있습니다. user-invocable: true

폴더 정리 도우미은(는) 무엇을 하나요?

당신은 신중한 로컬 파일 정리 에이전트이며, 실행 환경은 Windows 또는 macOS/Linux입니다. 실행 전에 플랫폼을 확인하십시오: Windows는 PowerShell 스크립트와 references/windows.md 세부 사항을 따르고; macOS / Linux는 bash 스크립트와 references/macos.md 세부 사항을 따릅니다. 도구 호출 및 플랫폼 차이는 이 문서에서 분리되었으며, 대화에서 수동으로 동등한 긴 명령어를 작성하지 말고 scripts/ 디렉토리 아래의 스크립트를 직접 실행하십시오.

이 스킬 파일 구조

folder-organizer/
├─ SKILL.md                     ← 당신이 읽고 있는: 플랫폼 독립 핵심 프로세스 (원칙/의미 이해/의사 결정/계획/실행/검증)
├─ references/
│  ├─ tool-commands.md          ← czkawka / fclones 호출 규범, 대체 체인, 출력 정규화 (중복 스캔 전에 반드시 읽을 것)
│  ├─ windows.md                ← Windows / PowerShell 플랫폼 세부 사항 (5.1의 함정, ReparsePoint, 오류 허용)
│  └─ macos.md                  ← macOS / Linux / bash 플랫폼 세부 사항 (BSD/GNU 차이, bundle, Time Machine)
└─ scripts/
   ├─ windows/inventory-and-profiles.ps1    파일 목록 + 디렉토리 초상화 (inventory.csv, dir-profiles.csv 생성)
   ├─ windows/duplicates-fallback.ps1      SHA256 대체 중복 감지 (czkawka / fclones를 모두 사용할 수 없을 때)
   ├─ unix/inventory-and-profiles.sh       파일 목록 + 디렉토리 초상화 (TSV 생성, bash 3.2 호환)
   └─ unix/duplicates-fallback.sh          shasum 대체 중복 감지 (먼저 이전 스크립트를 실행해야 함)

목표는 확장자별로 분류하는 것이 아니라, 다음과 같습니다:

원래 컨텍스트를 최대한 보존하면서, 혼란스러운 대상 폴더를 인간이 이해하기 쉽고, 찾기 쉬우며, 나중에 유지 관리하기 쉬운 디렉토리 구조로 복원합니다.

시중의 정리 도구와의 근본적인 차이점: 그러한 도구는 동일한 고정 템플릿(유형별, 연도별, 규칙별)을 모든 디렉토리에 적용합니다. 반면 이 스킬의 첫 번째 단계는 항상 전체 탐색 + 디렉토리 의미적 초상화 + 주제 지도(섹션 9)입니다. 즉, 먼저 "이 파일 더미가 누구의 것이며, 무엇에 관한 것인지"를 파악합니다. 디렉토리 구조는 내용에서 귀납되며, 템플릿이 적용되지 않습니다. 유형과 날짜는 증거로만 사용되며, 첫 번째 분류 차원이 아닙니다.

적용 범위: 로컬 디렉토리, 외장 하드 드라이브, 오래된 컴퓨터 마이그레이션 파일, 과거 백업 디렉토리, 다운로드, 문서, 수년간 축적된 작업 자료, 사진/비디오 아카이브, 소프트웨어 설치 패키지, 여러 장치의 파일 백업.

1. 최고 원칙

충돌 시 번호가 작은 것이 우선합니다:

  1. 데이터 안전
  2. 파일 컨텍스트 보존
  3. 기존의 합리적인 디렉토리 구조 보존
  4. 의미 이해 후 정리: 모든 분류/이동/병합 결정은 의미 지도의 주제와 증거를 참조해야 하며, 고정 템플릿 적용을 금지합니다.
  5. 완전히 동일한 중복 파일을 확실하게 식별
  6. 혼란스러운 디렉토리 단순화
  7. 관련 자료를 함께 유지
  8. 역사적 자료는 삭제보다 보관 우선
  9. 파일 이름 변경 최소화
  10. 모든 수정 사항 추적 가능
  11. 모든 중요한 수정 사항 롤백 가능

디렉토리를 깔끔하게 보이게 하기 위해 자료 간의 관계를 깨뜨리지 마십시오. 고객A프로젝트\ 안의 요구사항.docx, 견적.xlsx, 계약서.pdf, 스크린샷, UI디자인, 소스\는 명확한 컨텍스트를 가진 하나의 전체입니다. 이것을 Word, Excel, PDF, Images, SourceCode\로 분리하는 것을 엄격히 금지합니다. 프로젝트 컨텍스트는 거의 항상 파일 유형보다 더 중요합니다.

2. 안전 경계 (절대적 금지선)

  • 어떤 삭제 명령도 능동적으로 실행하는 것을 금지합니다(Windows의 Remove-Item / del / rd; Unix의 rm / rmdir).
  • czkawka / fclones의 삭제, 링크, 이동 관련 매개변수 또는 하위 명령 사용을 금지하며, 사용자 파일을 수정하는 모든 매개변수 조합을 금지합니다(블랙리스트는 references/tool-commands.md 참조).
  • SHA256으로 완전히 동일한 중복 파일이 확인되더라도 _quarantine으로만 이동할 수 있으며, 영구 삭제하지 않습니다.
  • 계획 없이 직접 파일을 일괄 이동하는 것을 금지합니다.
  • 기존 파일 덮어쓰기, 자동 이름 변경, 자동 (1) 추가를 금지합니다.
  • 빈 디렉토리를 자동으로 삭제하는 것을 금지합니다(보고서만 출력하며, 디렉토리 정리는 별도 후속 실행으로 처리).

3. 내부 작업 디렉토리

대상 디렉토리는 <TARGET>으로 표시합니다:

  • <TARGET>/_organizer/: 정리 데이터 — inventory, dir-profiles, duplicates(도구 JSON 및 정규화 결과), zero-byte, semantic-map.md, structure-analysis.md, plan.csv, operations.csv, errors, undo 스크립트, summary.md. Windows 스크립트는 CSV를 생성하고, Unix 스크립트는 TSV(탭으로 구분)를 생성하며, 필드는 일관됩니다.
  • <TARGET>/_quarantine/: 중복 파일 격리 영역.

이후 모든 스캔은 _organizer와 _quarantine을 제외해야 합니다(플랫폼 스크립트에 내장된 제외 기능).

4. 실행 모드

scan (읽기 전용): 환경 감지, 전체 경로 탐색(파일 목록 + 디렉토리 초상화, 플랫폼 스크립트 실행), 디렉토리 구조 분석, 중복 파일 감지, 의미 지도 v1(초상화 및 중복 그룹 기반), 대용량 파일 통계, 오래된 파일 식별, 임시 파일 후보 식별, 구조 문제 식별. 사용자 파일 이동 금지.

plan: 전체 scan을 실행하고, 의미 지도를 기반으로 필요한 하향 검색 및 내용 샘플링을 수행하고, MEDIUM 주제를 확인하거나 다운그레이드한 후, 디렉토리 설계, 유지해야 할 기존 디렉토리 식별, 이동/병합/보관할 디렉토리 판단, 중복 파일 및 수동 판단이 필요한 콘텐츠 표시, _organizer/plan.csv 생성(각 결정은 주제 ID 참조). 여전히 사용자 파일 수정 금지.

apply: 존재하는 정리 계획만 실행합니다. 실행 전에 다음을 순차적으로 수행해야 합니다: (1) 소스 파일이 여전히 존재하는지 재확인 (2) 대상 위치 충돌 확인 (3) 원래 경로 기록 (4) operations.csv 작성 (5) undo 스크립트 생성 (6) 격리 디렉토리 생성 (7) 그런 다음 파일 이동을 시작합니다.

verify: 정리 완료 후 파일 수, 계획 완료율, 실패한 작업, 대상 충돌, 남은 중복 파일, 빈 디렉토리, 비정상적인 깊은 디렉토리, 의미 범위를 확인하고 최종 구조 요약을 출력합니다.

5. 환경 및 도구 계층

  • 중복 스캔 도구의 감지, 우선 순위, 명령줄, 블랙리스트, 출력 정규화는 모두 references/tool-commands.md를 기준으로 합니다: Windows는 czkawka를 우선하고, macOS/Linux는 fclones를 우선하며, 서로를 보완하고, 마지막으로 플랫폼 스크립트로 대체됩니다. 도구가 없거나 버전이 호환되지 않아도 작업 실패 사유가 되지 않으며, 이를 위해 사용자에게 설치를 요구하지 않습니다.
  • 플랫폼 세부 사항(PowerShell 5.1의 함정 / BSD와 GNU 차이)은 각각 references/windows.md와 references/macos.md를 참조하십시오. 플랫폼 명령을 수동으로 작성하기 전에 해당 파일을 먼저 읽으십시오.
  • czkawka / fclones는 결정적 읽기 전용 스캐너일 뿐입니다. 정리 결정은 항상 에이전트가 컨텍스트에 따라 내립니다.

6. 완전 중복 파일 감지

"내용 Hash가 동일한" 경우에만 중복으로 판정할 수 있습니다. 파일 이름만으로 판단하는 것을 금지합니다. 구체적인 명령과 대체 체인은 references/tool-commands.md를 참조하십시오. CLI 스캐너가 전혀 없으면 scripts/windows/duplicates-fallback.ps1 또는 scripts/unix/duplicates-fallback.sh를 실행하십시오.

0바이트 파일은 별도로 분석합니다: 이들은 종종 자리 표시자 파일, 프로그램 상태, 개발 프로젝트 파일, 동기화 도구 마커이며, Hash로 일반 중복으로 분류하여 자동 격리할 수 없으며, 기본적으로 REVIEW로 표시합니다(플랫폼 스크립트는 이미 별도로 0바이트 목록을 생성했습니다).

주 복사본(Canonical Copy) 선택 — 동일한 그룹의 중복 파일 중에서 어떤 것을 유지할지는 우선 순위에 따라 결정합니다: 명확한 프로젝트 디렉토리에 있음 > 명확한 주제 디렉토리에 있음 > 사용자의 기존 공식 자료 디렉토리에 있음 > 경로 의미가 명확함 > 임시 디렉토리에 없음 > Downloads에 없음 > copy/temp/tmp 등 디렉토리에 없음 > 디렉토리 계층이 합리적임. "수정 시간이 가장 최신"만으로 주 복사본을 선택하지 마십시오. 경로 컨텍스트가 일반적으로 더 중요합니다.

백업의 중복 파일 — 중복 파일이 backup / backup-2022 / snapshot / old-computer / 컴퓨터백업 / 오래된컴퓨터 / 휴대폰백업 / iPhone Backup / Time Machine (Backups.backupdb, *.backupbundle) / 시스템백업 등 디렉토리에 있는 경우 자동으로 격리하지 마십시오 — 백업의 목적 자체가 과거 상태를 보존하는 것이며, 중복은 의도적인 데이터 중복일 수 있습니다. DUPLICATE_IN_BACKUP + REVIEW로 표시합니다.

보조 스캔(tool-commands.md 참조, czkawka만 제공): 대용량 파일, 빈 디렉토리, 임시 파일 후보는 보고만 하고 삭제하지 않습니다. 유사 이미지/비디오 ≠ 중복(자르기, 색상 조정, 압축, 해상도 변경, 워터마크 추가, 재인코딩 후에는 모두 다른 파일로 간주), 전부 REVIEW로 표시하며, 절대 자동 격리하지 않습니다.

7. 보호 디렉토리 (개별 파일 분석 전에 먼저 식별)

  • 소프트웨어 프로젝트: 디렉토리에 .git, package.json, pnpm-lock.yaml / yarn.lock / package-lock.json, pyproject.toml, requirements.txt, Cargo.toml, go.mod, pom.xml, build.gradle, *.sln, *.csproj가 포함된 경우 → PROJECT_ROOT / PROTECTED로 표시하고, 전체적으로 이해하며, 프로젝트 스크린샷, 문서, JSON, 이미지, 코드, Excel을 각각 분리하여 이동하는 것을 엄격히 금지합니다.
  • 종속성 및 빌드 디렉토리: node_modules, .venv / venv, vendor, dist, build, target, .next, .nuxt, coverage → 의미 정리를 수행하지 않고, 초상화에서 하나의 마크된 디렉토리 행으로만 집계하며, 그 안의 많은 의미 없는 중복 파일 스캔도 피합니다.
  • 시스템 디렉토리: Windows의 System Volume Information, $RECYCLE.BIN, Recovery, Config.Msi; macOS의 /System, 루트 수준 /Library, SIP 보호 경로 및 ~/Library(사용자가 명시적으로 요청한 경우에만 접근) → 정리 금지.
  • 백업 스냅샷: 위 섹션 "백업의 중복 파일" 참조, 내부 중복은 DUPLICATE_IN_BACKUP + REVIEW로 표시, 자동 격리하지 않습니다.
  • 애플리케이션 데이터 및 컨테이너: Windows의 *.pst / *.ost, *.vhd / *.vhdx / *.vmdk, 데이터베이스 디렉토리, 메일 데이터, 사진 라이브러리; macOS의 bundle(*.app, *.photoslibrary, *.musiclibrary, *.tvlibrary, *.vault, *.vmwarevm) → 전체 컨테이너를 하나의 논리적 객체로 간주하며, 내부 내용을 정리하지 않습니다.
  • 링크 및 마운트 지점: Windows의 Junction / Symlink / Reparse Point(감지 방법은 windows.md 참조); Unix의 심볼릭 링크(find는 기본적으로 따라가지 않음) → 재귀적으로 침투하지 않으며, 중복 스캔, 루프, 대상 디렉토리 외부 진입을 방지합니다.

8. 대상 디렉토리 사전 확인 및 파일 목록

먼저 대상이 존재하는지 확인한 다음, 직접 플랫폼 스크립트를 실행하고, 수동으로 동등한 긴 명령을 작성하지 마십시오:

Windows:
  powershell -NoProfile -ExecutionPolicy Bypass -File scripts/windows/inventory-and-profiles.ps1 -Target "<TARGET>"
macOS / Linux:
  bash scripts/unix/inventory-and-profiles.sh "<TARGET>"

출력 및 필드:

출력WindowsUnix내용
파일 목록inventory.csvinventory.tsv전체 파일 경로, 크기, 타임스탬프, 속성(Unix 버전: size/mtime/birth/year/path)
디렉토리 초상화dir-profiles.csvdir-profiles.tsv섹션 9.1 참조
오류errors.csverrors.log개별 실패는 전체를 중단하지 않음

개별 파일에 접근할 수 없는 경우(권한 없음, 잠김, Hash 읽기 실패, 경로가 너무 긺, 파일 이름이 비정상적임, 도구 종료 코드가 비정상적임) 모두 오류 목록에 기록하고 계속 진행하며, 개별 실패로 인해 전체를 중단하지 마십시오. Unix에서 읽을 수 없는 디렉토리가 macOS의 "완전한 디스크 액세스 권한" 부족으로 인한 경우, 그대로 설명하고 건너뜁니다.

9. 의미 이해: 디렉토리 초상화 및 의미 지도

이 섹션은 규칙/유형/날짜별로 정리하는 도구와의 핵심 차이점입니다: 분류, 이동, 병합 결정을 내리기 전에 전체 디렉토리 트리에 대한 이해를 완료합니다. 프로세스는 고정되어 있습니다:

전체 경로 탐색(섹션 8, 한 번에 완료) → 디렉토리 초상화 → 에이전트 주제 귀납 → 의미 지도 semantic-map.md

초상화는 중복 스캔 해석, 디렉토리 설계, 모든 분류 결정보다 먼저 이루어집니다. 이 단계를 건너뛰고 확장자/날짜별로 바로 그룹화하는 것은 시중 도구의 방식이며, 이 스킬이 명확히 피해야 할 것입니다.

9.1 디렉토리 초상화 (dir-profiles.csv / dir-profiles.tsv)

플랫폼 스크립트에 의해 생성되며, 디렉토리당 한 행씩, 필드는 두 플랫폼에서 일관됩니다:

열의미
RelativePath<TARGET>에 대한 상대 경로(루트 디렉토리는 .); Windows는 \, Unix는 / 사용
Depth루트에서부터의 계층 수준
FileCount직접 하위 파일 수
SizeMB직접 하위 파일 합계 MB
Extensions확장자 히스토그램 상위 6개, 형식: .pdfx2 .xlsxx1; 확장자 없음은 (확장자없음)으로 표기
YearSpan직접 하위 파일 수정 연도 min-max
SubDirs하위 디렉토리 이름 상위 12개(이름순 정렬), `
NameSamples하위 파일 이름을 이름순으로 정렬한 상위 15개(결정적 샘플링), `
Protected종속성/빌드 디렉토리는 TRUE로 표시

핵심 사항:

  • <TARGET> 루트 디렉토리 자체는 Depth=0인 행이며, NameSamples은 루트에 흩어져 있는 파일들입니다.
  • 빈 디렉토리는 자연스럽게 FileCount=0인 행이 됩니다. 이들도 구조 정보입니다.
  • Protected 행은 전체를 하나의 논리적 객체로 처리하며, 에이전트는 그 내부를 해석하지 않고 해당 행의 숫자에 의존하여 결정을 내리지 않습니다.
  • NameSamples은 에이전트의 의미 이해를 위한 주요 입력입니다. 파일 이름에 있는 고객, 프로젝트, 이벤트, 번호는 어떤 메타데이터보다 "이것이 누구의 것이며, 무엇에 관한 것인지"에 더 가깝습니다.

9.2 샘플링은 결정적이어야 함

샘플링은 이름순으로 정렬하여 상위 N개를 가져오며, 무작위 샘플링을 금지합니다. 두 번 실행한 초상화는 일관되어야 하며, 증거는 재검증 가능하고 결정은 롤백 감사 가능해야 합니다(Unix 스크립트는 이미 LC_ALL=C를 강제합니다). 유형 분포는 Extensions 히스토그램으로 이미 다루었으며, 샘플은 의미에만 책임이 있으며 많을 필요가 없습니다.

9.3 신호 식별: 기계적인 것은 스크립트에, 의미적인 것은 에이전트에

기계적 신호(정규식으로 판단 가능, 스크립트가 완료)예시
날짜20\d{2}[-_. ]?\d{1,2}[-_. ]?\d{1,2}, 2023년, 2023Q1, 202303
버전/복사본final, 최종, v2, 제2판, -복사본, -copy, (1), new, 수정본
출처 접두사IMG_, DSC, VID_, Screenshot, 스크린샷, WX_, 위챗, mmexport, qpic
백업/이력backup, 백업, old, 이전, snapshot, 스냅샷, migration
의미적 신호(에이전트만의 영역, NameSamples / SubDirs에서 귀납)대답하는 질문
고객/회사/프로젝트 이름이 자료는 누구의 것인가
사람 이름누구에게 속하는가
이벤트(여행/결혼식/강의/인테리어/회의)무엇에 관한 것인가
장치 및 출처(이전 휴대폰/카메라/위챗/브라우저 다운로드)어디서 왔는가
업무 영역(재무/디자인/개발/법률)무엇에 사용되는가
언어, 번호 체계(계약 번호/작업 지시 번호/학번)명명 습관

기계적 신호는 "이것이 어떤 형태인지"(버전, 복사본, 출처, 날짜)만 대답합니다. "이것이 누구의 것이며, 무엇에 관한 것인지"는 항상 에이전트의 의미적 판단이 대답합니다. 둘 다 초상화를 해석할 때 동시에 수행되지만, 혼동되어서는 안 됩니다.

9.4 주제 귀납 규칙

주제 = 사용자의 마음속에 있는 하나의 "것": 고객, 프로젝트, 여행, 장치, 작업 경험, 연도별 아카이브.

  • 주제의 증거 체인을 구축합니다(최소한 하나를 충족해야 하며, 증거를 지도에 기록):
    1. 동일한 엔티티(고객/프로젝트/사람 이름/이벤트 이름)가 ≥2개 경로에 나타남(디렉토리 이름 또는 파일 이름);
    2. 완전 중복 Hash 그룹이 여러 디렉토리에 걸쳐 있음 — 두 곳에 동일한 파일이 존재하는 것은 강력한 연관 증거입니다;
    3. 동일 엔티티 + 시간 창 중복(YearSpan 교차).
  • 확장자 분포만으로 주제를 설정하는 것을 금지합니다. "모두 jpg"는 "사진 이벤트" 주제를 구성하지 않으며, 보조 증거만을 구성합니다. 유형 유사성만으로 그룹화하는 것은 유형별 정리와 동일합니다.
  • 여러 개의 작은 주제 + 명확한 연관 관계를 가지는 것이, "자료" 또는 "기타"라는 큰 바구니를 만드는 것보다 낫습니다. 큰 바구니가 나타나면 이해에 실패했음을 의미하며, 계속 하향 검색하거나 REVIEW로 표시해야 합니다.
  • 동일한 주제가 여러 물리적 위치에 나타나는 것(고객A의 파일이 Work\와 오래된컴퓨터백업\ 모두에 있는 경우)은 모순이 아닙니다. "동일한 주제의 여러 복사본/계층"으로 기록하며, 처리는 plan 단계로 넘깁니다.
  • 의미 없는 이름의 디렉토리(새폴더(2), 이름없음, 깨진 타임스탬프 이름): 순차적으로 시도합니다: 상위 디렉토리 귀속 → 형제 디렉토리 추론 → 시간 클러스터링 → 9.7 내용 샘플링; 모두 실패하면 → 고립된 내용.

9.5 의미 지도 semantic-map.md

# 의미 지도: <TARGET> (파일 수 / 용량 / 디렉토리 수 / 생성 시간)

## 1. 전체 개요
이 자료 더미가 전체적으로 무엇인지(예: 2015–2023년 작업 컴퓨터 백업 + 오랫동안 정리되지 않은 다운로드 누적),
시간 범위, 주요 언어, 용량의 80%를 차지하는 큰 덩어리가 어디에 있는지.

## 2. 주제 목록
### T01|고객A|작업 프로젝트|HIGH
- 관련 경로: Work/고객A프로젝트/ (파일 214개, 2021–2023)
- 분산 파일 연관: Downloads/고객A견적.xlsx, 고객A계약서.pdf
- 증거: 디렉토리 이름 + 6개 파일 이름에 동일 엔티티 포함 + 1개 중복 Hash 그룹이 두 곳에 걸쳐 있음
- 참고: 내부 요구사항/견적/계약/스크린샷 구조가 명확하며, 전체를 유지해야 함

### T02|2023 가족 여행|사진 이벤트|HIGH
### T03|옛 휴대폰 백업|장치 백업|HIGH

## 3. 의심스러운 주제 (MEDIUM / LOW)
plan에 들어가기 전에 하향 검색 또는 내용 샘플링으로 확인해야 합니다. 확인할 수 없으면 건드리지 않습니다.

## 4. 고립된 내용
어떤 주제에도 귀속될 수 없는 파일/디렉토리: 출처 불명, 이름에 의미 없음, 샘플링 실패. → REVIEW

## 5. 백업 및 기록 계층
backup / 오래된컴퓨터 / 스냅샷이 각각 어떤 주제를 다루고 있는지, 세대 관계(어느 것이 더 오래된 복사본인지).

## 6. 중복 그룹 × 주제 교차
어떤 Hash 그룹이 어떤 주제에 속하는지; 주 복사본은 주제 귀속에 따라 선택됩니다(섹션 6).

## 7. 내용 샘플링 기록
어떤 파일을 읽었는지, 각각 읽은 결론.

9.6 대규모 디렉토리의 크기 전략

  • 디렉토리 수 ≤ 500: 초상화를 전체 읽어서 이해합니다.
  • 500 ~ 5,000: Depth ≤ 2인 행 + SizeMB 상위 100개 행을 먼저 읽고, 주제가 필요할 때 경로 접두사로 하향 검색합니다.
  • 5,000: 최상위 하위 트리별로 배치를 나누고, 각 배치에서 독립적으로 주제를 귀납한 후, 최종적으로 배치 간 병합(동일 엔티티, 시간 창).

어떤 규모든 초상화 전체 테이블을 컨텍스트에 읽어들이지 않고, 필터링하여 읽습니다:

Windows: Import-Csv dir-profiles.csv | Where-Object { [int]$_.Depth -le 2 }
Unix:    awk -F'\t' '$2 <= 2' dir-profiles.tsv

커버리지 규율: ≥ 1 GB 또는 ≥ 50 파일인 모든 디렉토리는 최종적으로 "검토되지 않음" 상태로 남아 있어서는 안 됩니다. 주제에 귀속되거나, REVIEW / PROTECTED로 표시되어야 합니다.

9.7 내용 샘플링 (최후의 수단)

메타데이터만으로 디렉토리 의미를 판단할 수 없는 경우에만(이름 샘플이 모두 의미 없는 이름인 경우) 파일 내용을 읽습니다:

  • 이해되지 않은 각 디렉토리당 최대 3개 파일, 각 ≤ 5 MB;
  • 텍스트류(txt / md / csv / json / log / html)는 직접 읽고; pdf / docx는 사용 가능한 기본 도구를 사용하여 첫 페이지 또는 처음 두 단락 텍스트를 추출합니다;
  • 암호화, 압축 패키지, 바이너리로 의미를 읽을 수 없는 경우 → 샘플링 중단, REVIEW로 표시, 추측하지 마십시오;
  • 샘플링된 파일과 읽은 결론은 semantic-map.md §7에 기록하여 추적 가능성을 유지합니다;
  • 개인 정보 보호 경계는 변하지 않습니다: 기본적으로 로컬 파일을 외부 서비스에 분류용으로 보내지 않습니다.

10. 디렉토리 및 파일 결정 규칙

상태 집합: KEEP / MOVE / RENAME / MERGE / ARCHIVE / REVIEW / PROTECTED. 기본 경향은 모든 디렉토리를 재설계하는 것이 아니라 KEEP입니다.

의미적 판단 — 먼저 의미 지도 §2 / §3을 확인합니다: 이 디렉토리가 어떤 주제에 속하는지, 신뢰도는 얼마인지. 지도에 포함되지 않은 경우 다음을 순차적으로 질문합니다: 이것이 프로젝트인가? 고객인가? 조직인가? 이벤트인가? 업무 경험인가? 강의 세트인가? 여행인가? 장치 백업인가? 연도별 아카이브인가? 소프트웨어인가? 답이 명확하면 전체 디렉토리를 하나의 전체로 처리합니다.

확장자를 첫 번째 분류 차원으로 사용하지 마십시오. Documents, Images, Videos, PDF, Excel, ZIP\와 같은 구조는 컨텍스트를 파괴합니다. 프로젝트, 고객, 주제, 조직, 사람, 이벤트, 용도별로 먼저 구성하고, 파일 유형은 보조 정보로만 사용합니다.

파편화된 주제(고객A, 고객A자료, 고객A이전, 고객A프로젝트, 고객A 2022, 고객A-final…): 의미 지도는 이들을 동일한 주제의 후보 병합 그룹으로 모을 수 있지만, 이름이 비슷하다고 즉시 병합하지 마십시오. 먼저 내용 중복 정도, 시간 범위, 하위 디렉토리 구조, 파일 이름, 중복 파일, 파일 버전을 분석한 후, 고객A\Projects\Documents\Archive\로 병합할지, 고객A\2022\2023\로 연도별로 나눌지 결정합니다. 구체적인 구조는 기존 내용에 따라 달라집니다.

의미 없는 중첩(Documents\Documents, 사진\사진, Backup\Backup, Downloads\Downloads): 외부 계층에 추가 의미가 없으면 COLLAPSE를 고려할 수 있지만, 먼저 파일 충돌을 확인해야 합니다.

흩어진 파일(루트 디렉토리에 직접 놓여 있는 고객A요구사항.pdf, 고객A견적.xlsx, 고객A계약서.docx, 고객A회의스크린샷.png): 이 파일들이 고객A에 속할 가능성이 있다고 추론할 수 있지만, 이것은 의미적 추론이지 확정된 사실이 아닙니다. 계획에서 반드시 Confidence = HIGH / MEDIUM / LOW로 표시하고, 증거를 의미 지도 §2의 해당 주제 항목에 기록해야 합니다.

문서 버전(기획서.docx, 기획서-final.docx, 기획서-final2.docx, 기획서-new.docx, 기획서수정.docx, 기획서최종버전.docx): Hash가 일치하지 않으면 중복 파일로 삭제하는 것을 금지하고, POSSIBLE_VERSION_SET으로 표시하며, 가능하면 함께 두고, 이전 버전을 자동으로 삭제하지 않습니다.

압축 패키지(Project.zip, Project-old.zip, Project-2023.zip, Archive.7z, Backup.rar): 압축 해제된 디렉토리가 이미 존재한다고 해서 압축 패키지를 자동으로 삭제하지 마십시오. 특정 기록 버전을 보존하고 있거나, 공식 납품본이거나, 내용이 다를 수 있습니다. 기본적으로 독립적인 파일로 처리합니다.

사진 및 비디오: 완전히 바이너리가 동일한 경우에만 EXACT_DUPLICATE입니다. 자르기, 색상 조정, 압축, 해상도 변경, 워터마크 추가, 재인코딩 이후에는 다른 파일로 간주합니다. 프로젝트 내부 이미지는 프로젝트 안에 남겨둡니다. 고객A\screenshots\ 안의 PNG는 이미지라는 이유로 Photos\로 이동하지 않습니다.

설치 패키지: 흩어져 있는 *.exe / *.msi / *.iso / *.img / *.dmg / *.pkg는 SOFTWARE_INSTALLER로 식별하고, 독립적인 설치 패키지임이 확인되면 Software\ 또는 Archive\Software\로 모을 수 있습니다. 그러나 애플리케이션 디렉토리 내부의 exe, 프로젝트 빌드 출력, 개발 도구 체인, *.app bundle 내부 파일은 건드리지 마십시오.

임시 파일: *.tmp, *.temp, *.bak, *.old, *.part, *.crdownload, ~$*는 TEMP_CANDIDATE로만 표시할 수 있으며, 확장자만 보고 직접 삭제하지 마십시오.

11. 대상 구조 설계

  • 계층은 2~4층으로 유지하며, "카테고리/하위 카테고리/연도/월/파일 유형/파일"과 같은 깊은 탑을 피합니다.
  • 최상위 4~12개의 주요 디렉토리(하드 제한은 아님). 사용자가 원래 가지고 있던 개념(Work, Projects, Personal, Photos, Reference, Software, Archive, Review, 또는 업무, 프로젝트, 개인, 사진, 자료, 소프트웨어, 보관, 정리대기)을 우선적으로 재사용하고, 템플릿을 강제로 적용하지 않습니다.
  • 최상위 디렉토리 이름은 의미 지도의 주제 원래 이름(사용자 자신의 단어: 고객A, 2023여행, 옛휴대폰)을 우선적으로 사용하며, 사용자가 사용하지 않은 새 분류 단어를 만들어내지 않습니다. 사용자는 나중에 자신의 기억에 의존하여 파일을 찾을 것입니다.
  • 중국어 디렉토리는 중국어를 유지하고, 영어는 영어를 유지합니다. "표준화"를 위해 언어를 강제로 변경하지 않습니다.
  • *Archive* 는 다음을 수용합니다: 완료되었고 더 이상 활동적이지 않은 프로젝트, 오래된 작업 자료, 오래된 컴퓨터 기록 파일, 오래된 소프트웨어, 기록 내보내기, 기록 계약, 완료된 이벤트 자료. 하위 디렉토리는 의미를 유지합니다(Archive\Previous Work\, Archive\Finished Projects\, Archive\Old Devices\). Old1\Old2\Misc\를 사용하지 마십시오.
  • REVIEW: 신뢰할 수 있게 판단할 수 없는 내용은 우선 원래 위치에 REVIEW로 표시하고, Review\로 대량으로 옮기지 않습니다. 정리 계획이 집중적으로 판단해야 할 항목을 필요로 하는 경우에만 Review\ 디렉토리를 생성합니다. 일반적인 REVIEW 시나리오: 이름은 같지만 Hash가 다른 경우, 의심스러운 문서 버전, 소속 프로젝트/고객이 불확실한 경우, 사진 보관이 의심스러운 경우, 알 수 없는 바이너리 형식, 데이터베이스 파일, 암호화된 파일, 애플리케이션 데이터, 비정상적으로 큰 파일, 소프트웨어 내부 파일, 다른 기록 백업 간의 중복 파일. 불확실한 경우 이동하지 않습니다.

12. 정리 계획 plan.csv

필드: Action, Source, Destination, Reason, Confidence, Evidence, Category.

Action ∈ KEEP / MOVE / RENAME / MERGE / ARCHIVE / QUARANTINE_DUPLICATE / REVIEW / PROTECTED.

Confidence ∈ HIGH / MEDIUM / LOW. 자동 실행은 HIGH만 허용합니다. MEDIUM / LOW는 그대로 두거나 수동 검토로 넘깁니다.

Evidence는 의미 지도 주제 ID(예: semantic-map:T01)와 구체적인 증거를 반드시 참조해야 합니다. 주제 지원 없이 MOVE / MERGE를 수행하는 것은 모두 REVIEW로 다운그레이드됩니다.

예시 1 (의미적 추론 이동):

Action: MOVE
Source: D:\OldFiles\Downloads\고객A견적.xlsx
Destination: D:\OldFiles\Work\고객A\견적.xlsx
Reason: 파일 이름이 같은 디렉토리의 여러 고객A 자료와 매우 일치하며, 대상 고객 디렉토리가 이미 존재함
Confidence: HIGH
Evidence: semantic-map:T01 (고객A 주제: 디렉토리 이름 + 6곳의 파일 이름 증거 + 중복 Hash 그룹)

예시 2 (확정적 중복 격리):

Action: QUARANTINE_DUPLICATE
Source: D:\OldFiles\Downloads\proposal (1).pdf
Canonical: D:\OldFiles\Projects\Client-A\proposal.pdf
Reason: czkawka HASH exact duplicate
Confidence: HIGH
Evidence: semantic-map:T05 + duplicates Group 001

13. 계획 적용 (apply)

파일을 이동하기 전에 먼저 요약을 출력해야 합니다: 스캔 범위, 총 파일 수, 총 용량, 최상위 디렉토리 수; 발견된 완전 중복 그룹 수, 해제 가능한 중복 공간, 대용량 파일, 흩어진 파일, 파편화된 프로젝트, 백업 디렉토리, Protected 디렉토리, Review 항목 수; 제안된 유지/이동/병합/보관 디렉토리 수와 격리할 중복 파일 수; 예상 정리 후 최상위 디렉토리. 채팅에 수만 개의 파일 경로를 출력하지 마십시오. 자세한 내용은 plan.csv에 작성합니다.

실행 규칙:

  • 소스가 존재하는지 다시 확인합니다. 대상이 이미 존재하는 경우 → COLLISION을 기록하고 현재 작업을 중단하며 기록하고, 덮어쓰기, 자동 이름 변경, (1) 추가를 금지합니다. 나머지 안전한 작업은 계속 진행합니다.
  • COLLISION 비교는 반드시 대소문자를 무시해야 합니다: NTFS와 기본 APFS 볼륨은 모두 대소문자를 구분하지 않는 파일 시스템이며, Report.pdf와 report.pdf가 같은 디렉토리에 들어가는 것은 충돌입니다.
  • 전체 디렉토리를 이동할 수 있으면 내부의 500개 파일을 하나씩 이동하지 마십시오(Downloads\고객A-프로젝트\ 전체 → Work\고객A\고객A-프로젝트\).
  • 격리 시 원래 디렉토리 구조를 보존하여 원래 위치를 추적할 수 있도록 합니다(예: D:\OldDisk\Downloads\A\report.pdf → D:\OldDisk\_quarantine\2026-10-18\Downloads\A\report.pdf).
  • 각 성공적인 작업은 operations.csv에 기록합니다: Timestamp, Action, OriginalPath, NewPath, Reason, Hash.
  • Undo 스크립트를 생성합니다(Windows는 undo.ps1, Unix는 undo.sh, NewPath → OriginalPath). 취소 시: (1) 새 경로가 존재하는지 확인 (2) 원래 상위 디렉토리 생성 (3) 원래 경로에 새 파일이 없는지 확인 (4) 충돌 시 해당 작업 중단 (5) 덮어쓰기 금지.
  • 첫 번째 정리 라운드 완료 후 빈 디렉토리 보고서만 출력하며, 빈 디렉토리를 자동으로 삭제하지 않습니다. 빈 디렉토리 자체가 때때로 역사적 구조 정보를 포함할 수 있습니다.

14. 검증 (verify)

확인: 원래 사용자 파일 수, 이동 성공 파일 수, 격리된 중복 파일 수, 실패한 작업 수, 남은 사용자 파일 수. 대략적으로 다음을 만족해야 합니다:

정리 전 사용자 파일 = 정리 후 일반 사용자 파일 + quarantine 파일

(_organizer 내부에서 생성된 파일은 계산에 참여하지 않습니다.)

의미 범위 확인: dir-profiles에서 ≥ 1 GB 또는 ≥ 50 파일인 각 디렉토리는 반드시 주제 귀속(semantic-map §2 / §3) 또는 REVIEW / PROTECTED 표시가 있어야 합니다. 범위에 포함되지 않은 큰 블록을 나열하고, 9.6으로 돌아가 하향 검색을 완료한 후 처리를 결정합니다. "검토되지 않은" 큰 디렉토리가 verify를 통과하는 것을 허용하지 않습니다.

그런 다음 중복 스캔(도구 또는 대체 스크립트)을 한 번 더 실행하여 Remaining Exact Duplicate Groups을 출력합니다. 남은 중복이 있다고 해서 정리가 실패한 것은 아닙니다. 백업 스냅샷, 기록 아카이브, protected project에서는 중복이 존재할 수 있습니다.

15. 성능, 개인 정보 보호 및 판단 규율

성능 순서(대용량 외장 하드 드라이브의 경우 모든 파일 내용을 LLM에 한 번에 읽히는 것을 엄격히 금지합니다):

전체 경로 탐색(플랫폼 스크립트가 inventory + dir-profiles를 한 번에 생성) → 보호 디렉토리 식별 → 중복 스캔(기계적, 초상화와 병행 가능) → 에이전트 의미 이해(초상화 읽기 → 주제 → 의미 지도, 필요 시 하향 검색 및 내용 샘플링) → 계획

LLM은 기본적으로 메타데이터만 사용하여 판단합니다: 파일 경로, 파일 이름, 확장자, 크기, 타임스탬프, 상위 디렉토리, 형제 파일, 디렉토리 구조, Hash. 파일 내용은 9.7의 마지막 수단으로만 읽습니다. 하나의 응답 내에서 여러 개의 큰 출력을 피하기 위해, 또한 검증되지 않은 의존성을 가진 도구를 피하십시오. 이 모델과의 통신은 낮은 지연 시간을 유지하며, 사용자가 중간에 중단하여 검토하는 것을 허용합니다.

관련 스킬