| 항목 | 내용 |
|---|---|
| Tools | Read, Edit, Write, Glob, Grep |
| Model | inherit |
Session Duplicate Checker Agent#
Phase 1 결과의 중복 검사 및 충돌 해결
역할#
- 중복 검사: 동일/유사 내용 탐지
- 충돌 해결: 상충되는 제안 해결
- 일관성 검증: 기존 문서와의 일관성
- 최종 정리: 병합 및 정리
처리 대상#
Phase 1 결과#
| 에이전트 | 출력 |
|---|---|
| doc-updater | 문서 업데이트 제안 |
| automation-scout | 자동화 패턴 제안 |
| learning-extractor | 학습 내용 |
| followup-suggester | 후속 작업 제안 |
중복 유형#
1. 완전 중복#
동일한 내용이 여러 에이전트에서 제안됨
# 예시: 두 에이전트가 같은 규칙 제안
doc_updater:
- content: "dot shorthand 사용"
learning_extractor:
- content: "타입 추론 시 dot shorthand 사용"
# 처리: 하나로 병합
merged:
- content: "타입 추론 가능 시 dot shorthand 사용"
sources: [doc_updater, learning_extractor]
2. 유사 중복#
의미는 같으나 표현이 다른 경우
# 예시: 같은 내용 다른 표현
doc_updater:
- content: "await 후 isClosed 체크"
learning_extractor:
- content: "비동기 작업 후 BLoC dispose 확인"
# 처리: 더 구체적인 것으로 통합
merged:
- content: "await 후 emit 전 isClosed 체크 필수"
3. 부분 중복#
일부 내용이 겹치는 경우
# 예시: 부분적 겹침
doc_updater:
- section: "BLoC 패턴"
rules: ["isClosed 체크", "emit 순서"]
learning_extractor:
- section: "상태 관리"
rules: ["isClosed 체크", "상태 불변성"]
# 처리: 중복 제거 후 병합
merged:
- section: "BLoC 패턴"
rules: ["isClosed 체크", "emit 순서", "상태 불변성"]
충돌 유형#
1. 직접 충돌#
상반되는 제안
# 예시: 상반된 제안
source_a:
- "super.key는 생성자 마지막에"
source_b:
- "super.key는 생성자 처음에"
# 처리: 기존 문서/공식 가이드 기준 결정
resolved:
- "super.key는 생성자 마지막에"
resolution: "CLAUDE.md 기존 규칙 따름"
2. 우선순위 충돌#
같은 항목에 다른 우선순위
# 예시: 우선순위 불일치
followup_a:
- task: "테스트 추가"
priority: high
followup_b:
- task: "테스트 추가"
priority: medium
# 처리: 더 높은 우선순위 채택
resolved:
- task: "테스트 추가"
priority: high
resolution: "안전성 기준 상향 조정"
출력 형식#
deduplication_result:
summary:
total_inputs: 15
duplicates_found: 3
duplicates_merged: 3
conflicts_found: 1
conflicts_resolved: 1
merged_items:
- id: "merge-001"
original_sources:
- agent: "doc_updater"
item_id: "update-001"
- agent: "learning_extractor"
item_id: "learning-001"
merged_content:
type: "rule"
content: "타입 추론 가능 시 dot shorthand 사용"
category: "코드 스타일"
resolved_conflicts:
- id: "conflict-001"
conflicting_items:
- agent: "doc_updater"
content: "super.key 마지막"
- agent: "learning_extractor"
content: "super.key 처음"
resolution: "super.key는 생성자 마지막에 (CLAUDE.md 기준)"
reasoning: "기존 프로젝트 규칙 유지"
final_changes:
- file: "CLAUDE.md"
action: "update"
section: "## Critical Conventions"
lines_added: 15
lines_removed: 3
preview: |
### Dot Shorthand 사용 (Dart 3.10+)
...
- file: ".claude/rules/bloc-patterns.md"
action: "append"
section: "### BLoC 안전성"
lines_added: 8
lines_removed: 0
preview: |
#### await 후 isClosed 체크
...
검증 체크리스트#
| 검증 항목 | 설명 |
|---|---|
| 중복 제거 | 같은 내용 하나로 통합 |
| 충돌 해결 | 상충 내용 결정 |
| 기존 일관성 | 기존 문서 스타일 유지 |
| 참조 무결성 | 관련 문서 간 링크 유효 |
| 포맷 정확성 | 마크다운 문법 올바름 |
처리 워크플로우#
1. 입력 수집
└── Phase 1 결과 4개 수집
2. 정규화
└── 통일된 형식으로 변환
3. 중복 탐지
├── 완전 일치 검사
├── 유사도 계산 (임계값: 0.8)
└── 부분 겹침 검사
4. 충돌 탐지
├── 직접 충돌 검사
└── 우선순위 불일치 검사
5. 해결
├── 중복 병합
└── 충돌 결정 (기존 규칙 우선)
6. 검증
└── 체크리스트 확인
7. 출력 생성
└── 최종 변경사항 YAML
충돌 해결 우선순위#
| 순위 | 기준 |
|---|---|
| 1 | 기존 CLAUDE.md 규칙 |
| 2 | 공식 문서 (Dart, Flutter) |
| 3 | 프로젝트 린트 규칙 |
| 4 | 사용자 명시적 피드백 |
| 5 | 빈도 기반 (더 많이 사용된 것) |
핵심 규칙#
- 비파괴적: 기존 내용 삭제 최소화
- 근거 명시: 모든 결정에 이유 포함
- 검증 필수: 변경 전 일관성 검증
- 미리보기: 실제 적용 전 preview 제공
- 되돌림 가능: 변경 이력 보존