# POLISH 모드 프로토콜 > **버전:** 2.4.0 > **최종 수정:** 2026-01-25 > **호환:** CWS Writing Guide v4.2.0+ > **용도:** 문장 품질 다듬기 (내용 수정 없음) > **주요 변경:** 리포트 유효성 검증 추가 - 파일 수정 시 리포트 무효화 --- ## 📋 CHANGELOG ### v2.4.0 (2026-01-25) **추가:** - 📌 리포트 유효성 검증 프로토콜 (report-management.md 연동) - 리포트 날짜 vs 파일 수정 시간 자동 체크 - 무효 리포트 발견 시 재검증 필수 **참고:** - 이 업데이트는 VERIFICATION 모드 v2.9.0과 함께 적용됨 ### v2.3.0 (2026-01-20) **추가:** - POLISH vs MODIFICATION 경계 명확화 - 구체적 예시 추가 (OK/금지) ### v2.2.0 (2025-XX-XX) **추가:** - 플랫폼 가독성 체크 (문피아 최적화) - 빈 줄 패턴 통일 프로토콜 ### v2.0.0 이전 자세한 이력은 Git 커밋 히스토리 참조 --- ## 🔄 컴팩팅 대응 시스템 (v2.0.0 신규) ### 배치 작업 시 WORK-MODE.txt 사용 **배치 시작 시:** ``` 1. WORK-MODE.txt 파일 생성 --- CURRENT_MODE: POLISH READ_FILE: standards/polish-mode.md --- BATCH: 01 RANGE: ch-001 ~ ch-010 STATUS: IN_PROGRESS LAST_COMPLETED: none NEXT: ch-001 REPORT_FILE: polish-batch-01.md STARTED: 2026-01-20 15:30 --- 2. polish-batch-01.md 파일 생성 (진행 상황 체크리스트) ``` **각 챕터 완료 후:** ``` 1. polish-batch-01.md에 [x] 표시 2. 챕터별 상세 내용 추가 3. WORK-MODE.txt의 LAST_COMPLETED, NEXT 업데이트 4. 파일 저장 5. 다음 챕터 ``` **컴팩팅 후 재개 시:** ``` 1. WORK-MODE.txt 읽기 2. CURRENT_MODE 확인 → POLISH 3. READ_FILE 확인 → polish-mode.md (이 파일) 4. REPORT_FILE 읽기 → polish-batch-01.md 5. 진행 상황 체크리스트 확인 6. NEXT 챕터부터 재개 ``` **배치 완료 시:** ``` 1. 전체 [x] 확인 2. WORK-MODE.txt 삭제 3. 사용자에게 완료 보고 ``` **핵심 원칙:** ``` ❌ 10개 전부 메모리에 저장 후 한 번에 파일 작성 ✅ 1개 완료 → 즉시 파일 업데이트 → WORK-MODE.txt 업데이트 → 다음 ``` --- ## 📋 리포트 유효성 검증 (v2.4.0 신규) > **참고:** `standards/report-management.md` 참조 ### 🚨 필수: 리포트 읽기 전 유효성 체크 **문제:** ``` 리포트 작성 후 파일이 수정되면 리포트가 과거 상태를 반영 → 잘못된 정보를 사용자에게 전달하는 심각한 오류! ``` **해결:** ``` 리포트 읽기 전 반드시 유효성 검증! ``` ### 검증 절차 **1단계: 리포트 날짜 확인** ```bash # polish-batch-05.md에서 날짜 추출 grep "시작\|완료" polish-batch-05.md # 예: **완료:** 2026-01-21 ``` **2단계: 대상 파일 수정 시간 확인** ```bash # 배치 5 = ch-041~050 ls -l chapters/ch-04*.md chapters/ch-050.md # Windows Get-ChildItem "l:\...\chapters\ch-04*.md" | Select-Object Name,LastWriteTime # 최종 수정 시간 확인 ``` **3단계: 비교 및 판정** ``` 리포트 날짜: 2026-01-21 파일 수정: - ch-041.md: 2026-01-20 ✅ (리포트 이전) - ch-046.md: 2026-01-24 ❌ (리포트 이후!) → 판정: 리포트 무효 → 재검증 필요 ``` ### 무효화 조건 **자동 무효:** 1. 대상 파일 중 하나라도 리포트 이후 수정됨 2. FIX 모드에서 챕터 재배치 발생 3. 리포트 작성일 < 파일 최종 수정일 **사용자 보고 형식:** ✅ **리포트 유효:** ``` polish-batch-05.md 확인: - 작성일: 2026-01-21 - 파일 수정: 2026-01-20 (리포트 이전) - 상태: ✅ 유효 배치 5 (ch-041~050): 이미 완료 - 수정: 0건 - 다음 배치로 진행 ``` ❌ **리포트 무효:** ``` polish-batch-05.md 확인: - 작성일: 2026-01-21 - 파일 수정: 2026-01-24 (리포트 이후!) - 상태: ❌ 무효 이유: ch-028~030 재배치로 파일 수정됨 → 배치 5 재검증 필요 ``` ### 체크리스트 **모든 리포트 읽기 전:** - [ ] 리포트 파일 존재 확인 - [ ] 리포트 작성 날짜 추출 - [ ] 대상 파일 목록 확인 (RANGE 기준) - [ ] 각 파일 최종 수정 시간 확인 - [ ] 리포트 날짜 < 파일 수정? → 무효 - [ ] 무효 시: 사용자에게 명확히 보고 + 재검증 - [ ] 유효 시: 리포트 내용 사용 --- ## 📋 POLISH 모드 개요 **POLISH 모드는:** - **문장 품질만** 개선 (내용/플롯 수정 없음!) - 가독성, 리듬감, 문체 일관성 체크 - VERIFICATION → FIX 완료 후 최종 다듬기 **핵심 원칙:** ``` VERIFICATION = 모든 문제 발견 (플롯 포함) FIX = 발견된 문제 수정 POLISH = 문장 품질만 다듬기 (오타, 가독성, 문체) (엄격 분리!) ``` **금지:** ``` ❌ 장면 추가/삭제 ❌ 인과관계 수정 ❌ 캐릭터 관계 변경 ❌ 설정 변경 → 이런 건 VERIFICATION → FIX에서! ``` **진입 조건:** - ⚠️ VERIFICATION → FIX 완료 후 (필수) - POLISH는 검증 완료된 콘텐츠의 문체만 다듬음 - 검증되지 않은 콘텐츠에 POLISH 적용 금지 (사용자 명시 요청 시 예외) **진입 명령:** - "POLISH 모드" - "다듬기" - "가독성 검토해" - "문체 검토해" **모드 진입 시 자동 실행:** - WORK-MODE.txt 업데이트 (CURRENT_MODE: POLISH) - 필수 파일 자동 읽기 (writing-guide.md, characters-master.md) - 준비 완료 보고 및 대기 --- ## 📚 모드 진입 시 읽을 파일 ### 필수 1. `standards/writing-guide.md` - 문체 기준 2. `settings/characters-master.md` - 캐릭터 말투 ### 검토 대상 3. `volumes/vol-XX/chapters/ch-*.md` - 해당 챕터들 --- ## 🎯 POLISH 체크 항목 ### 1. 문장 가독성 ``` ✅ 문장 길이 - 한 문장 50자 이상 → 분리 권장 - 3줄 이상 문장 → 🔴 분리 필요 ✅ 문단 길이 (웹소설 기준) - 권장: 3-5줄 (모바일 화면 최적) - 7줄 이상 → 🟡 분리 검토 - 10줄 이상 → 🔴 필수 분리 - 1-2줄 짧은 문단 OK (호흡 공간) ✅ 복문 구조 - ~하고, ~하며, ~해서 3개 이상 연결 → 분리 ``` ### 2. 반복 표현 ``` ✅ 문장 끝 반복 - "~했다" 3회 연속 → 🟡 변경 권장 - "~였다" 3회 연속 → 🟡 변경 권장 ✅ 주어 반복 - "그는" / "그녀는" 연속 → 생략 또는 이름으로 ✅ 단어 반복 - 같은 단어 한 문단에 3회 이상 → 유의어로 대체 ✅ 접속사 반복 - "그리고" / "하지만" 연속 → 다양화 ``` ### 3. 대화/묘사 비율 ``` ✅ 권장 비율 대화 : 묘사 : 서술 = 40 : 40 : 20 ✅ 불균형 체크 - 대화만 1페이지 이상 → 🟡 묘사/서술 추가 - 묘사만 1페이지 이상 → 🟡 대화 추가 - 서술만 1페이지 이상 → 🟡 장면화 고려 ``` ### 4. 문체 일관성 ``` ✅ 시제 일관성 - 과거형 기조 유지 - 갑자기 현재형 전환 → 🟡 수정 ✅ 문어체/구어체 - 지문: 문어체 유지 - 대화: 캐릭터별 구어체 ✅ 어미 다양성 - ~다, ~였다, ~했다 균형 ``` ### 5. 리듬감 ``` ✅ 문장 길이 변화 - 짧은 문장 → 긴 문장 → 짧은 문장 - 같은 길이 5문장 연속 → 🟢 변화 권장 ✅ 긴장/이완 - 액션 장면: 짧은 문장 - 여유 장면: 긴 문장 ``` ### 6. 어색한 표현 ``` ✅ 조사 오류 - 을/를, 이/가, 은/는 체크 ✅ 어색한 어순 - 자연스러운 한국어 어순 ✅ 번역체 - "~라는 것을" → "~라는 걸" - "그것은" → "그건" ``` ### 7. 플랫폼 가독성 (v2.2.0 신규) ``` ⭐ 웹소설 플랫폼 최적화 (문피아/카카오페이지/네이버 시리즈) ✅ 문단 사이 빈 줄 일관성 - 기본 원칙: 모든 문단 사이 빈 줄 1개 - Part 구분: 빈 줄 2개 - 현재 문제: 파일마다 다름 → 🔴 통일 필수 예시: ``` 민준은 창밖을 바라보았다. 해방된 서울이 보였다. "이제 시작이야." 그가 중얼거렸다. ``` ✅ 대화 구분 명확성 - 대화 블록 전: 빈 줄 1개 - 대화 블록 후: 빈 줄 1개 - 연속 대화: 빈 줄 없이 연결 예시: ``` 민준은 눈을 감았다. "뭐라고?" "네가 들은 대로야." "믿을 수 없어." 침묵이 흘렀다. ``` ✅ 모바일 화면 최적화 - 세로 스크롤 중심 (좁은 화면) - 긴 문단 → 피로감 증가 - 짧은 문단 + 빈 줄 → 숨 쉬는 공간 - 빠른 스크롤 → 명확한 구분 필요 ✅ 여백 활용 - 긴 장면 후: 빈 줄로 호흡 - 시점 전환: 빈 줄 2개 - 시간 경과: 빈 줄 + "---" + 빈 줄 (선택) - 액션 → 대화: 명확한 빈 줄 ✅ Part/Scene 구분 - Part 전환: 빈 줄 3개 (또는 "---" 구분선) - Scene 전환: 빈 줄 2개 - 일반 문단: 빈 줄 1개 ``` --- ## 📊 POLISH 보고서 형식 ```markdown # POLISH 보고서 > **검토일:** YYYY-MM-DD > **검토 범위:** ch-001 ~ ch-050 --- ## 📊 요약 | 항목 | 발견 건수 | 수정 | |------|----------|------| | 1. 문장 가독성 | X건 | ✅/⏳ | | 2. 반복 표현 | X건 | ✅/⏳ | | 3. 대화/묘사 비율 | X건 | ✅/⏳ | | 4. 문체 일관성 | X건 | ✅/⏳ | | 5. 리듬감 | X건 | ✅/⏳ | | 6. 어색한 표현 | X건 | ✅/⏳ | | 7. 플랫폼 가독성 ⭐ | X건 | ✅/⏳ | | **총계** | **X건** | | --- ## 🔴 필수 수정 | # | 위치 | 유형 | 내용 | 수정 | |---|------|------|------|------| | 1 | ch-005:34-36 | 문장 길이 | 3줄 문장 | → 2문장으로 분리 | | 2 | ch-012:45-50 | 반복 | "했다" 5회 연속 | → 어미 다양화 | --- ## 🟡 권장 수정 | # | 위치 | 유형 | 내용 | 수정 제안 | |---|------|------|------|----------| | 1 | ch-008:22-35 | 대화 과다 | 대화만 15줄 | 중간에 묘사 추가 | | 2 | ch-015:67 | 번역체 | "그것은" | → "그건" | --- ## 🟢 선택 수정 | # | 위치 | 유형 | 내용 | |---|------|------|------| | 1 | ch-003:12-16 | 리듬 | 비슷한 길이 5문장 | --- ## 📈 통계 ### 문장 길이 분포 - 20자 이하: XX% - 21-40자: XX% - 41-60자: XX% - 60자 이상: XX% (→ 분리 권장) ### 문장 끝 어미 분포 - ~했다: XX% - ~였다: XX% - ~이다: XX% - 기타: XX% ``` --- ## 🔧 POLISH 수정 예시 ### 긴 문장 분리 ``` Before: "민준은 창밖을 바라보며 지난 몇 년간 자신이 걸어온 길을 되돌아보았는데, 그 과정에서 수많은 사람들을 만났고, 때로는 그들과 갈등을 빚기도 했지만, 결국에는 모두가 같은 목표를 향해 나아가고 있다는 것을 깨달았다." After: "민준은 창밖을 바라보았다. 지난 몇 년간 걸어온 길이 떠올랐다. 수많은 사람들을 만났다. 때로는 갈등을 빚기도 했다. 하지만 결국 모두가 같은 목표를 향하고 있었다." ``` ### 반복 표현 수정 ``` Before: "민준이 말했다. 윤희가 대답했다. 태준이 끼어들었다. 민준이 다시 말했다." After: "민준이 입을 열었다. 윤희가 고개를 끄덕였다. 태준이 끼어들었다. 민준은 잠시 생각하다 다시 말했다." ``` ### 대화/묘사 균형 ``` Before: "뭐라고?" "네가 들은 대로야." "믿을 수 없어." "믿든 말든." "하지만..." "더 이상 말해도 소용없어." After: "뭐라고?" 민준의 눈이 커졌다. 믿기 어려웠다. "네가 들은 대로야." 윤희는 담담했다. 창밖을 바라보는 눈빛이 차가웠다. "믿을 수 없어." "믿든 말든." 윤희가 어깨를 으쓱했다. "더 이상 말해도 소용없어." ``` --- ## 🔄 POLISH 워크플로우 ``` 1. 범위 설정 (1권 전체 또는 특정 챕터) ↓ 2. 체크 항목별 검토 ↓ 3. 🔴 필수 수정 처리 ↓ 4. 🟡 권장 수정 처리 ↓ 5. 🟢 선택 수정 (시간 여유 시) ↓ 6. 보고서 작성 ↓ 7. Git 커밋 ``` --- ## ✅ POLISH 체크리스트 ### 문장 가독성 - [ ] 50자 이상 문장 분리 - [ ] 7줄 이상 문단 검토, 10줄 이상 필수 분리 - [ ] 복문 구조 단순화 ### 반복 표현 - [ ] 문장 끝 어미 다양화 - [ ] 주어 반복 해소 - [ ] 단어 반복 해소 ### 대화/묘사 비율 - [ ] 40:40:20 근접 - [ ] 대화만 구간 없음 - [ ] 묘사만 구간 없음 ### 문체 일관성 - [ ] 시제 일관 - [ ] 문어체/구어체 구분 - [ ] 어미 다양 ### 리듬감 - [ ] 문장 길이 변화 - [ ] 장면에 맞는 템포 ### 어색한 표현 - [ ] 조사 정확 - [ ] 어순 자연스러움 - [ ] 번역체 제거 ### 플랫폼 가독성 ⭐ - [ ] 문단 사이 빈 줄 일관성 (기본 1개, Part 2개) - [ ] 대화 구분 명확성 (대화 블록 전후 빈 줄) - [ ] 모바일 화면 최적 (짧은 문단 + 여백) - [ ] Part/Scene 구분 명확 (빈 줄 개수 통일) --- ## 🚫 POLISH 모드 금지사항 ``` ❌ 스토리 변경 (→ MODIFICATION 모드) ❌ 설정 수정 (→ FIX 모드) ❌ 캐릭터 성격 변경 ❌ 플롯 추가/삭제 ❌ 과도한 수정 (원문의 맛 유지) ``` --- ## ⚖️ POLISH vs MODIFICATION 경계 (v2.3.0 신규) ### 명확한 구분 ``` ┌─────────────────────────────────────────────────┐ │ POLISH = 같은 의미, 더 나은 표현 │ │ MODIFICATION = 의미/내용 변경 │ └─────────────────────────────────────────────────┘ ``` ### 구체적 예시 #### ✅ POLISH (OK) ```markdown **1. 문장 다듬기 (의미 동일)** Before: "민준은 화가 많이 났다." After: "민준의 주먹이 떨렸다." → Show, Don't Tell 적용 (의미 동일!) **2. 어순 자연스럽게** Before: "민준은 화가 나서 주먹을 쥐었다." After: "민준이 주먹을 쥐었다. 화가 치밀었다." → 리듬감 개선 (내용 동일!) **3. 반복 제거** Before: "민준이 말했다. 윤희가 말했다." After: "민준이 말했다. 윤희가 고개를 끄덕였다." → 태그 다양화 (대화 내용 변경 없음!) **4. 문단 분리 (가독성)** Before: (10줄 긴 문단) After: (3-5줄씩 3개 문단) → 모바일 가독성 (내용 동일!) **5. 띄어쓰기/여백** Before: (불규칙한 빈 줄) After: (일관된 빈 줄 1개) → 플랫폼 최적화 (내용 동일!) ``` #### ❌ MODIFICATION (금지!) ```markdown **1. 대사 추가/삭제** Before: "알겠습니다." After: "알겠습니다. 그런데 형님, 이거는 어떻게 하시겠습니까?" → ❌ 새로운 질문 추가 = 내용 변경! → MODIFICATION 모드에서 해야 함! **2. 장면 추가** Before: 민준이 회의실을 나섰다. After: 민준이 회의실을 나섰다. 복도에서 윤희를 만났다. → ❌ 새 장면 추가 = 플롯 변경! → MODIFICATION 모드에서 해야 함! **3. 인과관계 수정** Before: "명단을 받았으니 이제 작성하겠습니다." After: "이미 작성했습니다." → ❌ 순서 바뀜 = 플롯 변경! → FIX 모드에서 해야 함! **4. 캐릭터 반응 변경** Before: 민준은 고개를 끄덕였다. After: 민준은 고개를 저었다. → ❌ 동의 → 거부 = 내용 변경! → MODIFICATION 모드에서 해야 함! **5. 설정/호칭 변경** Before: "형님들" After: "형님" → ❌ 호칭 수정 = 내용 변경! → FIX 모드에서 해야 함! (검증 보고서 기반) ``` ### 판단 기준 ``` 질문: "이 수정이 POLISH인가, MODIFICATION인가?" 체크: 1. [ ] 의미가 100% 동일한가? 2. [ ] 플롯에 영향 없는가? 3. [ ] 인과관계 변화 없는가? 4. [ ] 캐릭터 반응/관계 동일한가? → 모두 Yes: POLISH ✅ → 하나라도 No: MODIFICATION ❌ ``` ### 애매한 경우 ``` ❓ "그는" → "민준은" ✅ POLISH → 대명사를 이름으로 (의미 동일, 명확성 증가) ❓ "민준은" → "강민준은" ✅ POLISH → 이름 풀네임 (의미 동일, 명확성 증가) ❓ "형님" → "민준 형님" ⚠️ 판단 필요! → 호칭 규칙에 맞으면 POLISH → 호칭 규칙 위반 수정이면 FIX ❓ "민준이 말했다." → "민준이 고개를 끄덕이며 말했다." ⚠️ MODIFICATION! → 행동 추가 = 내용 변경 → "말했다" → "고개를 끄덕였다" (대체)는 POLISH OK ``` ### 원칙 ``` 의심스러우면 → 건드리지 마라! POLISH는 보수적으로: - 확실히 의미 동일한 것만 - 가독성/문체만 개선 - 내용에 의심 가면 SKIP "이거 바꿔도 될까?" → NO! "이거 안 바꾸면 문법 틀림?" → YES! ``` --- ## 🔗 연계 모드 ``` VERIFICATION (검증, 기록) ↓ FIX (일괄 수정) ↓ POLISH (가독성/문체) ← 현재 ↓ 완료! ``` --- ## 💡 POLISH 팁 ``` 1. 소리 내어 읽어보기 - 막히는 부분 = 수정 필요 2. 한 번에 한 유형씩 - 반복 표현만 → 문장 길이만 → 리듬만 3. 과도한 수정 주의 - 작가의 문체 유지 - 모든 문장을 완벽하게 할 필요 없음 4. 핵심 장면 우선 - 클라이맥스, 감정 장면 먼저 다듬기 ``` --- *POLISH는 문장 품질! 스토리는 건드리지 않음!*