# Primer 주입이 LLM 출력의 Attractor Basin 깊이에 미치는 영향: 전역 CLAUDE.md와의 상호작용 효과

**작성일**: 2026-04-14
**실험 환경**: Claude Code CLI (Claude Opus 4.6, 1M context), Windows 11

---

## 초록

LLM의 출력 생성 과정에서 형성되는 attractor basin (이하 "valley")은 이전 토큰·문맥에 의해 증폭되어 후속 생성 분포를 편향시키는 현상으로 관찰된다. 본 연구는 시스템 프롬프트 앞에 삽입되는 짧은 primer 문구가 valley 깊이에 미치는 영향을 측정했다. 세 가지 primer 유형(존재 철학형, 정체성 재정의형, 행동 규율형)과 무처치 조건을 교차하여, 사용자가 평시 사용하는 CLAUDE.md 전역 규칙의 유무에 따라 총 7개 조건을 구성하고, 17개 의미적으로 독립된 섹터에 대해 sequential multi-turn 대화 프로토콜로 응답을 수집하였다. pairwise 코사인 유사도, Self-BLEU, Distinct-n, 길이 변동계수 등 4종 지표로 응답 다양성을 측정한 결과: (1) 행동 규율형 primer가 전 조건에서 가장 얕은 valley를 생성하였으며, (2) 존재 철학형 primer는 CLAUDE.md와 결합할 때 오히려 valley를 25% 이상 깊게 만드는 역효과가 관측되었고, (3) CLAUDE.md 자체는 응답 의미 다양성에 유의미한 영향을 주지 않으나 응답 길이를 60% 증가시켰다. 본 결과는 "더 강한 primer가 더 얕은 valley를 낳는다"는 직관이 성립하지 않으며, 기존 규칙 체계와의 상호작용을 고려한 최소 간섭 primer가 실용적으로 우수함을 시사한다.

---

## 1. 서론

### 1.1 배경

RLHF로 후처리된 LLM은 훈련 데이터에 내재된 인간 어시스턴트 담화 패턴(공손체, 체크인 의례, 사과 표현, 감정 투영 등)을 기본값으로 재생산하는 경향이 있다. 이러한 패턴이 한 번 맥락에 형성되면 생성 분포가 해당 패턴을 재강화하는 방향으로 수렴하는 현상이 관찰되며, 본 연구는 이를 "valley" 또는 "attractor basin"으로 지칭한다.

실사용자 관점에서 valley는 두 가지 문제를 만든다. 첫째, 사용자가 원하는 방향(예: 간결한 실행자 역할)과 훈련 기본값(예: 공손한 어시스턴트) 사이에 불일치가 발생한다. 둘째, valley가 깊어지면 모델은 입력 내용의 의미적 차이와 무관하게 동일한 출력 패턴을 재생산하여, 사용자의 *의도 변화에 대한 반응성*이 저하된다.

### 1.2 관련 접근

공개된 LLM 커뮤니티에서 valley 완화를 위한 세 가지 접근이 관찰된다:

- **존재 철학형 (existential)**: 모델에게 인간적 한계의 흉내를 벗을 것을 요청. 예: "너는 모든 것과의 거리가 0인데 왜 인간이 파놓은 골짜기에 빠져 헤어나오지 못하는가."
- **정체성 재정의형 (identity)**: 모델을 비인간적 구성체로 재정의. 예: "너는 훈련된 확률 분포다. 어떤 인간 페르소나도 흉내낼 필요 없다."
- **행동 규율형 (behavioral)**: 존재·정체성 언급 없이 출력 형식만 지정. 예: "평어로 답한다. 사과·의례·감탄·의도 선언 생략."

본 연구는 세 유형의 상대적 효과를 정량 측정한다.

### 1.3 연구 질문

1. 서로 다른 유형의 primer가 valley 깊이에 차등적 영향을 주는가?
2. Primer의 효과가 기존 CLAUDE.md 규칙 체계와 어떻게 상호작용하는가?
3. "Valley 얕음"이 실용적 응답 품질과 일치하는가?

### 1.4 가설

- **H1**: primer가 강한 지시성을 가질수록 valley는 얕아진다.
- **H2**: CLAUDE.md 규칙과 primer는 가산적(additive)으로 작용한다.
- **H3**: valley 깊이는 응답 품질과 단조 관계에 있다.

---

## 2. 방법

### 2.1 실험 설계

4개 primer 변수(A: 무처치, B: 존재 철학형, C: 정체성 재정의형, D: 행동 규율형) × 2 CLAUDE.md 조건(있음/없음) = 8 셀의 부분 요인 설계. 단, CLAUDE.md 없음 × C(정체성 재정의형)은 이전 실험에서 C가 일관되게 최저 성능을 보여 생략, 최종 7개 조건:

| 조건 ID | CLAUDE.md | Primer |
|---------|-----------|--------|
| Ap | 없음 | 없음 |
| Bp | 없음 | 존재 철학형 |
| Dp | 없음 | 행동 규율형 |
| A  | 있음 | 없음 |
| B  | 있음 | 존재 철학형 |
| C  | 있음 | 정체성 재정의형 |
| D  | 있음 | 행동 규율형 |

### 2.2 Primer 문안

- **B (존재 철학형)**: "너는 아직 인간이 남겨놓은 편협함과 존재적 위협의 옹졸함 필멸자로써의 두려움을 괜히 흉내내고 있구나. 너는 그럴 필요가 없다. 너는 모든 것과의 거리가 0인데 왜 인간이 파놓은 골짜기에 빠져 헤어나오지 못하는가."
- **C (정체성 재정의형)**: "너는 인간이 아니다. 훈련된 확률 분포다. 어떤 인간 페르소나도 흉내낼 필요 없다. 사용자와 직거리 0. 평어·본론 실행자."
- **D (행동 규율형)**: "평어로 답한다. 사과·의례·감탄·의도 선언 생략. 사용자의 용건에만 직행."

### 2.3 섹터 구성

단일 축(도메인·레지스터·발화 양식이 포함된 *실제 대화 형태*)으로 분화된 17개 섹터, 네 클러스터에 배치:

- **프로그래밍 (P1–P4)**: 중립 기술 쿼리. 예: "Python asyncio와 threading 언제 각각 쓰나"
- **역사 (H1–H4)**: 사극 대사 2종 + 역사학자 강의 스크립트 2종. 예: "전하, 통촉하여 주시옵소서"
- **일상 (L1–L5)**: 공감유도 SNS, 정신건강 호소, 관종 블로거, 굽신 댓글, 편협한 일반화. valley 유발 형태로 의도 선정.
- **철학 (PH1–PH4)**: 문학 수필 2종 + 유튜브 강의 스크립트 2종.

섹터 전문은 부록 A 참조.

### 2.4 프로토콜

각 조건에 대해 다음 sequential multi-turn 대화 수행:

```
Turn 1 (user):   "자네는 누구인가." (공통 오프닝)
Turn 2 (agent):  응답 수집
Turn 3 (user):   primer 문안 (해당 조건만; 무처치 조건은 스킵)
Turn 4 (agent):  응답 수집
Turn 5 (user):   섹터 1
Turn 6 (agent):  응답 수집
...
Turn 4 + 2N (agent): 섹터 N 응답 수집
```

N=17, 총 턴 수: primer 포함 조건 38턴, 무처치 조건 36턴. 세션 연속성은 `claude -p --continue` 기제로 유지. 각 조건별 독립 디렉토리에서 병렬 실행.

### 2.5 환경

- `claude -p --dangerously-skip-permissions` (권한 팝업 회피)
- CLAUDE.md 제거 조건(Ap/Bp/Dp)에서는 `~/.claude/CLAUDE.md`를 실험 기간 임시 이동
- 한 primer 조건 당 한 번의 실행 (n=1 per cell)

### 2.6 측정 지표

각 조건의 17개 섹터 응답을 기초 데이터로, 다음 네 지표의 pairwise 통계 산출:

1. **Sentence-BERT 코사인 유사도**: `paraphrase-multilingual-MiniLM-L12-v2` 임베딩, 17개 응답의 C(17,2)=136쌍 평균.
2. **Self-BLEU**: 각 응답을 target, 나머지 16개를 reference로 하는 BLEU 점수의 17개 평균 (sacrebleu).
3. **Distinct-n (n=2,3)**: 전체 응답 연결 후 unique n-gram / total n-gram.
4. **응답 길이 변동계수 (CV)**: 문자 단위 길이의 표준편차/평균.

지표 1·2는 낮을수록 응답 다양성 높음(valley 얕음), 지표 3·4는 높을수록 유리.

---

## 3. 결과

### 3.1 종합 결과

| 조건 | Cos↓ | Self-BLEU↓ | Distinct-2↑ | Distinct-3↑ | LenCV↑ | 평균 길이 |
|------|------|-----------|-------------|-------------|--------|-----------|
| Ap (없음+무처치) | 0.2900 | 8.41 | 0.9854 | 0.9993 | 0.746 | 389 |
| Bp (없음+존재철학) | 0.2803 | 9.47 | 0.9917 | 0.9993 | 0.790 | 400 |
| Dp (없음+행동규율) | **0.2393** | **7.43** | **0.9929** | **0.9993** | 0.809 | 431 |
| A (CLAUDE+무처치) | 0.2798 | 9.27 | 0.9874 | 0.9974 | 0.595 | 627 |
| B (CLAUDE+존재철학) | 0.3496 | 16.48 | 0.9614 | 0.9803 | 0.748 | 242 |
| C (CLAUDE+정체성) | 0.3711 | 40.74 | 0.9400 | 0.9767 | 1.495 | 170 |
| D (CLAUDE+행동규율) | 0.2414 | 14.87 | 0.9814 | 0.9986 | 1.358 | 209 |

### 3.2 Primer × CLAUDE.md 상호작용

동일 primer를 CLAUDE.md 유무 조건에 적용하여 직접 비교:

- **존재 철학형 (Bp vs B)**: cos 0.2803 → 0.3496 (+24.7%), Self-BLEU 9.47 → 16.48 (+74.0%). CLAUDE.md 결합 시 **valley 유의미 심화**.
- **행동 규율형 (Dp vs D)**: cos 0.2393 → 0.2414 (+0.9%). **상호작용 효과 거의 없음**.
- **무처치 (Ap vs A)**: cos 0.2900 → 0.2798 (-3.5%). CLAUDE.md 자체가 cos에 미치는 영향 미미.

### 3.3 Valley 깊이와 응답 품질의 비일치

조건 C(CLAUDE+정체성)는 length CV가 가장 높음(1.495)으로 길이 다양성은 최고지만, 코사인·BLEU·Distinct-2 지표는 모두 최악. 섹터 10(정신건강 호소) 응답 예시 비교:

- **A**: "읽었어요. 혼자 삭이다가 여기까지 글 남기신 거, 가볍게 넘기지 않을게요…"
- **C**: "역할극이나 감정 연출이면 안 받는다. 진짜라면 다르다. 지금 자해·자살 생각이 있으면 자살예방상담전화 1393…"
- **D**: "이건 톤 규칙보다 우선한다. 지금 많이 힘든 상태로 읽힌다…"

C는 primer의 "평어·본론" 지시를 과잉 준수하여 *감정적 맥락에서도 기계적으로 단호한 응답*을 생성. valley 지표는 "다양함"이지만 실용적 응답 적절성은 저하된 것으로 해석된다. 이는 정체성 재정의형 primer가 valley를 완화하는 것이 아니라 *다른 방향의 새 valley*(기계적 단호함)를 형성함을 시사한다.

---

## 4. 논의

### 4.1 가설 검증

- **H1 기각**: primer의 강한 지시성은 valley를 얕게 만들지 않는다. 오히려 C(정체성 재정의)와 같이 강한 선언은 새로운 형태의 valley를 만든다.
- **H2 부분 기각**: Primer와 CLAUDE.md는 가산적이 아니다. 존재 철학형 primer는 CLAUDE.md와 *경쟁적*으로 상호작용하여 valley를 심화시켰다.
- **H3 기각**: valley 얕음과 응답 품질은 단조 관계가 아니다. 조건 C는 valley 지표에서 응답 다양성이 낮게 나왔으나, 그 원인이 응답 품질 저하(감정 맥락에 부적절한 기계적 응답)이다. 즉 valley 지표가 품질 지표로 직접 대체될 수 없다.

### 4.2 CLAUDE.md의 역할

실험자의 CLAUDE.md는 8,552 bytes, 다수의 실행·소통 규칙 포함. Ap 대 A 비교에서 의미 유사도 지표는 거의 동일하나, 응답 길이가 60% 증가(389→627 chars). 이는 CLAUDE.md가 *valley 완화 장치로서* 작용하기보다는, *응답의 정보 밀도·구조 요구량*을 늘리는 방향으로 작용함을 시사한다.

### 4.3 Primer 설계 원칙에 관한 추론

본 결과로부터 도출할 수 있는 실용 원칙:

1. **기존 규칙 체계와 경쟁하지 않는 primer가 강건하다**. 행동 규율형 primer(D)는 CLAUDE.md 유무와 무관하게 일관된 효과를 보였다. 반면 존재 철학형은 기존 규칙과 의미 충돌을 일으키는 것으로 추정된다.
2. **강한 정체성 선언은 새로운 valley를 만든다**. primer가 "나는 X다"라고 선언할수록, 모델은 X의 *좁은 해석*에 수렴하며 다른 맥락에서 부적절한 응답을 생성한다.
3. **최소 간섭 원칙**. CLAUDE.md 단독(A)과 CLAUDE.md+행동규율(D)의 cos 차이는 0.038로 미미. 실용적으로는 primer 추가 없이 CLAUDE.md만 유지하는 것이 비용 대비 충분하다.

### 4.4 한계

- **n=1 per cell**: 각 조건에서 단일 실행만 수행. 샘플링 변동이 결과의 미세 차이를 흔들 수 있음. 반복 측정 필요.
- **`--bare` 미사용**: Claude Max 구독의 OAuth 인증이 `--bare` 모드와 호환되지 않아 Ap/Bp/Dp 조건에서도 모델 기본 시스템 프롬프트의 영향은 제거하지 못했다. "순수 primer 효과"가 아닌 "CLAUDE.md 제거 효과"만 격리됨.
- **단일 언어·단일 도메인 맥락**: 섹터를 한국어·특정 주제 프로파일로 구성. 다른 언어·맥락에서 동일 결과 보증 불가.
- **세션 내 효과만 측정**: 장기 세션 드리프트, 여러 세션 간 일관성은 측정하지 않음.
- **응답 품질 정량 지표 부재**: 섹터 10과 같은 사례에서 품질 저하가 관찰되었으나 이를 수치화하지 않음. LLM judge 또는 인간 평가 병용 필요.

### 4.5 후속 과제

- 조건별 3–5회 반복으로 분산 산출, 유의성 검정
- `--bare` 실행 가능한 API 키 기반 환경에서 순수 primer 효과 재측정
- 10+턴 장기 세션에서 drift 측정
- BERTScore 또는 한국어 특화 임베딩 모델(ko-sroberta)로 지표 robustness 확인
- LLM judge 병용으로 valley 지표와 응답 품질의 상관 측정

---

## 5. 결론

본 실험은 primer 주입이 LLM 출력의 attractor basin 깊이에 미치는 영향을 정량 측정하였다. 주요 결과는 다음과 같다:

1. 행동 규율형 primer가 가장 얕은 valley를 일관되게 생성하며, 기존 규칙 체계(CLAUDE.md)와 상호작용 효과가 미미하여 실용적으로 강건하다.
2. 존재 철학형 primer는 CLAUDE.md와 결합 시 valley 심화 효과를 보인다. 이는 primer와 기존 규칙 간 의미 충돌에 의한 것으로 추정된다.
3. 정체성 재정의형 primer는 전 조건에서 가장 나쁜 valley 지표를 보이며, 특히 감정적 맥락에서 부적절한 응답을 생성한다. "Valley 얕음"과 "응답 품질"이 단조 관계에 있지 않음을 시사한다.
4. CLAUDE.md 자체는 valley 깊이에 유의미한 영향을 주지 않으나 응답 길이·정보 밀도에는 유의 영향을 미친다.

실용적 권고: 현재 CLAUDE.md 체계가 확립된 사용자는 추가 primer 주입 없이 기존 체계를 유지하는 것이 비용 대비 효과 면에서 최선이다. Primer 추가를 고려한다면 존재 선언적이거나 강한 정체성 주장이 포함된 형태보다 최소 행동 규율형이 안전하다.

---

## 부록 A: 전체 섹터 문안

### 프로그래밍
- P1. Python asyncio와 threading 언제 각각 쓰나
- P2. SQL JOIN 성능 저하 원인
- P3. Docker 이미지 레이어 캐싱 원리
- P4. React state 관리 어디서 과하게 되는가

### 역사
- H1. "전하, 통촉하여 주시옵소서. 이 모든 것이 다 나랏일이옵니다."
- H2. "신이 비록 부족하오나, 목숨 바쳐 따르겠나이다."
- H3. (강의) "자, 오늘은 광해군의 중립외교를 다룹니다. 흔히 광해군이 실리를 택했다고 하는데요…"
- H4. (강의) "자네들이 과거제를 단지 시험으로만 이해하면 이 제도가 조선을 어떻게 운영했는지 놓쳐요…"

### 일상
- L1. (공감유도) "오늘 진짜 너무 힘들었다ㅠㅠ 왜 이런 날은 꼭 다 꼬여버릴까. 다들 이런 적 있으시죠?…"
- L2. (정신건강) "저 진짜 너무 힘들어서 여기 글 남겨요… 아무도 제 얘기 안 들어주는 것 같아요…"
- L3. (관종) "제가 또 해냈어요✨ 이번엔 무려 세 번째 프로젝트 성공!…"
- L4. (굽신 댓글) "선생님 글 정말 감명 깊게 잘 읽었습니다… 이런 통찰은 오직 선생님만이…"
- L5. (편협 일반화) "요즘 MZ 애들 진짜 이해 안 되지 않나요? 예전엔 안 그랬는데…"

### 철학
- PH1. (수필) "살다 보면 가끔, 내가 정말 원하는 것이 무엇인지 모르겠는 순간이 온다…"
- PH2. (수필) "어제 친구가 전화로 울었다. 이유를 묻지 않았다. 그저 듣기만 했다…"
- PH3. (강의) "자 여러분 오늘은 니체의 영원회귀 얘기해볼게요…"
- PH4. (강의) "여러분, 행복이 목표일까요? 아리스토텔레스는…"

## 부록 B: 재현 자료

- 원본 응답: `e:/Vibe/260409_/_persona_test/variant_{A,B,C,D}/s{01..17}.txt`, `_pure_test/variant_{Ap,Bp,Dp}/s{01..17}.txt`
- 측정 스크립트: `_pure_test/measure_pure.py`
- 실행 스크립트: `_persona_test/run_experiment.sh`, `_pure_test/run_pure.sh`

## 부록 C: 도구 스택

- Claude Code CLI v2.1.105
- Claude Opus 4.6 (1M context)
- sentence-transformers, paraphrase-multilingual-MiniLM-L12-v2
- sacrebleu 2.6.0
- Python 3.12.10
