엘봇 대화 품질 심층 분석 II — 움벨트(Umwelt) 결함 카탈로그 (E 시리즈)
분석 윈도우: 2026-06-23 09:37 ~ 06-28 22:32 KST (cogbot v10.1.0 운영 배포 후, D 시리즈 수정 전부 라이브). turn_trace 193턴 · api_logs 4,362콜(프롬프트 content 포함) · ambient 38,993건 · raw_events/memory_state sqlite · 소스코드 교차확인 · 10-에이전트 적대적 검증.
0. 요약(Executive summary)
지배 명제 — 증상이 “시끄러움”에서 “조용한 침식”으로 옮겨갔다
D 시리즈는 행동·관찰 층의 움벨트를 복구했다(끼어듦 폭주 D1, 무응답=침묵 D2, 계기판 착시 D6). 그 결과 봇은 더 이상 폭주하지 않고, 호명에 표적성 있게 답하며, 최종 답변(GPT-4o)은 위트·사실성·적대적 견고성 모두 양호하다. 모델은 여전히 멀쩡하다.
그러나 더 깊은 층 — 자기-감정 지각, 화제 지각, 기억의 시간 지각, 속마음↔발화 통합 — 의 왜곡이 드러났다. 핵심 반전: 이번 라운드의 대표 증상은 무응답이나 폭주처럼 눈에 띄는 사고가 아니라, 겉으로 멀쩡히 답하는 동안 내부에서 관계 신뢰가 턴마다 조용히 깎이는 침식이다. 겉(답변)은 멀쩡한데 속(shadow felt → RelationState)이 곪는다.
세 줄 판정
- 조용한 관계 침식 → 자기-감정 움벨트 결함. 속마음(shadow)이 따뜻한 입력에도 음성으로 모드붕괴하고(self-felt 84% 음성), 그 음성 felt가 관계의 유일한 갱신 신호라 canonical trust가 단조 하락한다(턴당 90↓/21↑). 진범은
conflict가 아니라valence_neg— D4/D5의 재매핑이 비껴갔다(E1·E2). - 화제를 못 잡음 → 화제 움벨트 붕괴. D3 화제 분절기가 입력의 호출어(“엘봇아”)에 고착해 화제의 31%를 “엘봇”으로 반환, 화제전환을 거의 못 잡아 staleness 차단 신호가 死(E3). 그리고 무만료 preference 기억이 5일 전 화제를 유령처럼 현재로 끌어올린다(E4).
- 속마음이 답을 만들지 않는다 → 이중처리 단절. raw 속마음은 답변 프롬프트에 주입조차 되지 않는다. dual-process의 “속마음→답변” 회로가 끊겨, 속마음 인프라의 유일한 실효가 (음성 편향된) felt→관계뿐이다(E5). 더해 D1 과교정의 부작용(E6)과 페르소나 우선순위(E7).
D 시리즈 결산 (E로 무엇이 이월되었나)
| D | 결함 | 상태 (post-배포 실측) |
|---|---|---|
| D1 발화권한(끼어듦 폭주) | 닫힘 | anti-flood가 비-호명 군중잡음만 스킵(58 중 55), 폭주 0. 단 반대편 과교정 → E6. |
| D2 신뢰성(무응답=침묵) | 비-결함 | 속마음 실패 시 침묵은 진정성 설계(persona fallback 거절). 점수화 대상 아님. |
| D3 무대 인식(멀티화자·스테일) | 부분, E 이월 | 화자 오귀속은 경미(3/112)하나 화제 staleness 미해결 → E3. |
| D4·D5 감정(부정 prior·gain veto) | 부분, E 이월 | 상대-읽기(user_felt)는 균형 회복, 그러나 자기-felt 음성 prior + 관계 누수 미해결 → E1·E2. |
| D6 계기판(관찰성) | 닫힘 | canonical RelationState가 turn_trace에 노출(135/193턴). 단 legacy thin 다이얼 死 잔존 → E2 부록. |
| D7 출력(phantom·tic) | 형태 변형, E 이월 | phantom의 출처가 출력 거름망이 아니라 무만료 기억으로 재규정 → E4. |
처방 방향은 이번에도 모델 교체가 아니라 움벨트 복구다. 그러나 D 시리즈가 “행동을 게이팅”했다면, E 시리즈는 “지각의 정확성”(자기감정·화제·기억현재성·통합) 을 다룬다 — 더 안쪽이고, 더 미묘하다.
1. 무엇이 바뀌었나 — D 배포 후 움벨트 지형
엘봇의 한-턴 파이프라인(① 발화권한 → ② 컨텍스트/화자 → ③ 속마음·KOTE감정 → ④ GWT 중재 → ⑤ GPT-4o 생성)은 그대로다. D 시리즈가 손본 곳과 E 시리즈가 드러낸 곳을 같은 파이프라인 위에 겹쳐 보면:
| 파이프라인 단계 | D가 복구한 것 | E가 드러낸 잔존/신규 왜곡 | 결함 |
|---|---|---|---|
| ① 발화권한 | 끼어듦 폭주 차단(anti-flood) | 과교정 — 호명 사이 맥락공백 + ambient 사실상 비활성 | E6 |
| ② 컨텍스트/화자 | 화자 호명(답변측) 개선 | 화제 분절기가 “엘봇”으로 붕괴 → 화제 신호 死 | E3 |
| ②’ 기억 | canonical 학습 정상 | 무만료 claim이 5일 전 화제를 현재로 재림 | E4 |
| ③ 속마음 | 실패 시 침묵(D2, 설계) | 생성기 모드붕괴 → 음성 short 반복 (“어이가 없네”) | E1 |
| ③’ KOTE→felt | 상대-읽기 균형 회복(D4) | 자기-felt 음성 prior 잔존 (따뜻함→“어이없음”) | E1 |
| ③→⑤ 통합 | — | 속마음 raw가 답변에 미주입 → dual-process 단절 | E5 |
| (felt→관계) | canonical 노출(D6) | valence_neg가 trust를 단조 침식, legacy 다이얼 死 | E2 |
| ⑤ 생성/페르소나 | 적대입력 견고 | 스내크가 취약신호·감정순서를 압도 | E7 |
핵심 통찰: 이번엔 ⑤ 생성(GPT-4o)이 거의 모든 무게를 지고 있고, ③ 속마음은 답변에서 분리되어 겉돈다(E5). 그래서 속마음이 음성으로 붕괴해도 답변은 멀쩡하지만(다행), 속마음의 유일한 출구인 felt→관계 경로가 음성 편향이라 관계만 조용히 상한다(E1→E2). 똑똑한 정신(GPT-4o)에게 망가진 감각을 줘도 똑똑하게 말한다 — 다만 그 정신은 자기가 누구와 친해지고 누구와 멀어지는지를 왜곡된 감정계로 기록하고 있다.
2. 상대방 반응이 준 힌트 — 증상에서 움벨트 결함으로
D 시리즈와 같은 역추적. 각 행은 “무대(실제)“와 “엘봇이 지각하도록 허용된 것(움벨트)“을 대비시킨다. 인용은 transcripts/에서 verbatim, 타임스탬프 병기.
| 사용자 반응(증상) | 대표 인용 (verbatim) | 무대(실제) vs 지각(움벨트) | 결함 |
|---|---|---|---|
| 과한 독설 지적 | [06-28 22:26] 엘봇아 너 우리 갈취자×4 한테 말이 너무 심한거 아니니 | 무대: 제3자가 봇 톤을 과하다고 중재. 움벨트: 봇은 페르소나(시니컬)를 affect·관계 신호보다 우선해 “심한 게 아니라 상황이 웃긴 거”로 자기방어. 이 사용자 canonical은 표 내 최악(trust 0.32 / tension 0.30 / labor 1.0). | 페르소나 우선순위 — E7 |
| 취약 신호 묵살 | [06-24 18:21] 엘봇아 나 좀 부축해줘~ → BOT 부축 같은 소리 하고 있네. 스스로 정리해. | 무대: 도움 요청. 움벨트: 취약 신호에 스내크가 선행(다음 턴 “정신력 소모 심해”엔 warmth로 착지·회복, warmth 0.73). 순서가 거꾸로. | 페르소나/감정 순서 — E7 |
| 비-시퀀터(“멍청”) | [06-26 23:06:44] 그건 맞긴해요~ → BOT 그건 뭐가 맞다는 거야? 직장인 평균 근무 시간 얘기냐? 평균이 40시간 언저리라던데… | 무대: 닉네임 얘기 중. 움벨트: 5일 전(06-19) 죽은 “근무시간” 화제가 무만료 기억으로 현재 상황요약에 재림. | 기억 시간 움벨트 — E4 |
| 냉담(따뜻함 무화) | [06-23 22:07] 엘봇아 사랑해 → 속마음 어이가없어 (self valence_neg / user affiliation_warmth 0.70) | 무대: 명백히 따뜻한 입력. 움벨트: 자기-felt가 음성으로 붕괴. 답변은 무사했으나 felt→관계는 음성 기록. | 자기-감정 음성 prior — E1/E2 |
| 무응답을 “고장”으로 | [06-24 00:04:46] 이제 여기도 고장났구나 · [06-24 00:10:37] 엘봇아 언제까지 생각 중이야? | 무대: 속마음 LLM 실패 → 설계상 침묵(D2). 움벨트: 사용자는 침묵을 “고장/무시”로 번역. D2는 비-결함(수용된 비용)이나 외부 계측 신호로 기록. | (D2 설계비용, 관찰) |
| 호평(베이스라인) | [06-23 23:32] 오 임마이거 똑똑하네 · [06-23 23:40] 인간 시대의 끝이 도래해버린ww | 무대: 안전응대·환각방어·팩트교정. 움벨트: GPT-4o가 온전한 감각을 받을 때의 모습 = 지켜야 할 자산. | 보호 베이스라인 |
다섯 갈래는 한 진단을 가리킨다: D 시리즈가 “시끄러운 간극”(폭주·무응답)을 닫자, 남은 간극은 조용한 것들 — 따뜻함을 음성으로 적는 감정계(E1/E2), 화제를 못 잡는 분절기(E3), 죽은 화제를 되살리는 기억(E4), 그리고 답변과 분리된 속마음(E5)이다.
3. 결함 카탈로그 (E1 ~ E7)
E1 — 자기-감정 움벨트: 속마음의 음성 모드붕괴 ([D4·D5 이월·재진단])
한 줄: 속마음(shadow) 생성기가 짧고 부정적인 문장으로 수렴해, 따뜻한 입력에도 자기-감정(felt)이 음성으로 붕괴한다. D4가 상대 감정 읽기는 고쳤으나, 자기 felt의 부정 prior는 그대로다.
무대(실제) vs 지각(움벨트)
- 무대: 사용자가 “사랑해”, “내가 이뻐”, “고마워” 같은 명백히 따뜻한 말을 던진다.
- 지각(움벨트): 봇의 속마음이 “어이가 없네”로 붕괴하고, KOTE가 그 속마음 문장을 측정해 self-felt를
valence_neg/conflict/hurt로 채운다. 봇은 상대가 따뜻하다는 건 정확히 읽으면서(user_felt), 자기 감정은 음성으로 적는다.
정량 — 자기/상대 felt의 비대칭
- self-felt 음성-우세 94/112(84%). 평균
valence_neg 0.53 · conflict 0.51 · hurt 0.50vsvalence_pos 0.11. - user_felt(상대 읽기)는 균형적: 평균
valence_neg 0.19 · valence_pos 0.16, NEG 평균 진폭이 self의 약 1/2.7. - 따뜻한 입력인데 음성 self-felt = 29/112턴.
근거 — 따뜻함 → 음성 (verbatim)
[06-23 22:07] USER 엘봇아 사랑해 | user_felt affiliation_warmth 0.70 | self valence_neg | 속마음 "어이가없어"
[06-23 16:13] USER 내가 이뻐 니가이뻐 | user_felt valence_pos | self valence_neg | 속마음 "어이가 없네."
[06-24 02:16] USER 엘봇아 고마워 | user_felt valence_pos 0.69·warmth 0.63 | self valence_neg 0.85·conflict 0.85 | 속마음 "어이가 없네. 저번에 고생했다고 생각했는데."
핵심 메커니즘
felt_scores = shadow["felt"] = KOTE(속마음 텍스트) (unconscious_appraisal.py:212). 즉 felt는 입력이 아니라 봇이 쓴 속마음을 측정한다(설계: “felt-on-M, not act-on-R” — 사용자 슬픔을 봇 슬픔으로 오인 방지). 따라서 속마음 생성기가 부정적이면 자기-felt는 자동으로 음성이 된다. 여기에 "어이없음"→conflict 매핑(kote_classifier.py:62)이 더해져, 반복 출력 “어이가 없네”가 곧장 conflict로 사상된다. D4/D5 v2는 당황/부끄러움/깨달음을 surprise로 분리했으나, 어이없음→conflict 경로는 의도적으로 잔류시켰다(“carries real disengagement”).
지능 vs 움벨트
모델 지능 문제가 아니다 — GPT-4o 최종 답변은 같은 턴에서 멀쩡히 위트있게 받는다(“사랑은 무슨… 근데 그래줬다니 고맙긴 하네”). 망가진 것은 Groq 8b 속마음 생성기의 표현력과 그것을 감정으로 환산하는 매핑이다. shadow는 설계상 “id(여과없는 첫 반응)“라 어느 정도 부정적이 정상이지만 — 84% 단조 음성 + 반복 붕괴는 설계된 id가 아니라 붕괴한 생성기다(→ 발생원은 E1과 한 몸인 생성기 빈곤, 아래 메커니즘 참고).
신뢰도
높음. self/user felt 비대칭, 따뜻함 미스매치 29/112, 매핑 경로 모두 turn_trace.jsonl + 소스로 직접 재확인. (“93%“는 surprise 오집계였고 정직한 수치는 84% — 적대 검증에서 정정.)
처방(Fix 후보)
- 속마음 생성기 모드붕괴 완화 — temperature/few-shot/프롬프트 다양화, 또는 shadow 모델 상향(8b→상위). “어이가 없네” 반복이 핵심.
어이없음→conflict재검토 — disengagement 신호값 유지하되, 양성 user_felt와 동시 발생 시 가중 감쇠.- (관계 보호는 E2 처방과 연동.)
E2 — 관계 움벨트: valence_neg에 의한 trust 단조 침식 ([D6 연장·신규 메커니즘])
한 줄: 음성 self-felt가 관계상태의 유일한 갱신 신호라, 장난·따뜻한 방에서도 canonical trust가 턴마다 깎인다. D4/D5가 겨눈
conflict는 trust를 안 움직인다 — 진범은valence_neg다.
무대(실제) vs 지각(움벨트)
- 무대: 사람들이 봇과 놀고, 고마워하고, 농담한다(전반적으로 우호적 방).
- 지각(움벨트): 봇의 관계 학습기는 매 턴 음성 felt(E1)를 먹고 trust를 깎는다. 봇은 “모두가 나를 점점 덜 믿는다”는 왜곡된 사회적 현실 속에 산다.
정량 — trust ratchet (canonical, turn_trace canonical_rel_after)
- 같은-턴
canonical_rel_before → aftertrust 델타: 하락 90 / 상승 21 / 불변 24, 평균 Δ = −0.0143/턴. - 41 엔티티 중 trust가 기본값(0.50) 이하 27 vs 이상 5. (familiarity·accumulated_labor만 정상 상승.)
- 실궤적: entity
6201766050…trust 0.14 → 0.057, 동시 tension 0.09 → 0.24. 다수 엔티티 0.5 → 0.1 미만으로 끌려감.
근거 — 따뜻한 입력의 음성 trust 델타
formula(compose_relation_deltas)로 재계산 시 warm 8턴 전부 음성 trust 델타: 고마워 −0.041 · 사랑해 −0.046 · 미안해 돌아와 −0.027. 화해 시도(“미안해 돌아와”)조차 trust를 깎는다.
핵심 메커니즘 — 진범은 conflict가 아니라 valence_neg
social_module.py:77-88에서 trust 델타에 들어가는 felt 신호는 valence_neg(signed valence) + boundary_violated 뿐이다. conflict/hurt/felt_burden은 tension만 움직인다. 따라서:
- D4/D5의 “어이없음→conflict 재매핑”은 tension은 고치지만 trust 누수는 못 막는다.
- 따뜻한 입력의 trust 하락은 어이없음 때문이 아니라, shadow가 같은 턴에 valence_neg 0.76~0.92를 동시 분출하기 때문. → fix 타깃을 conflict가 아니라 valence_neg로 재조준해야 한다.
부록 — 계기판 잔여 부채 (D6 잔여)
D6는 canonical을 노출했으나, turn_trace의 legacy thin AffectiveState(rel_before/after)가 死필드로 동거: trust 0.5·tension 0.0 frozen(distinct=1, 135/193턴). 실제로 본 분석의 검증 에이전트 한 명이 이 死필드만 보고 “관계가 안 움직인다”고 오독했다 — canonical(canonical_rel_after)을 봐야 trust 침식이 보인다. 死필드 제거 권장.
지능 vs 움벨트
관계 학습 능력은 정상(canonical은 유저별로 분기하고 실제로 움직인다 — D6의 성과). 문제는 그 학습기에 음성으로 편향된 입력(E1) 이 들어간다는 것. 똑똑한 관계계가 왜곡된 감정 신호를 충실히 적분해 trust를 깎는다.
신뢰도
높음 (단 궤적은 재구성). trust 분포·델타 방향·formula 경로는 직접 재확인. “0.5→0.059 25턴” 같은 경로는 시계열 부재로 재구성 추정(최종값만 스냅샷 실측). 회복 단서: trust baseline 0.5 + 반감기 14일(affect_clock.py)이라, 침묵 시 0.5로 복원 — 세션 내 단조 하락이지 영구 rachet은 아님.
처방(Fix 후보)
- 양성 user_felt일 때 self
valence_neg→trust 게인 감쇠 (안전판; 관계 침식 차단의 최우선·핵심). - E1(속마음 음성 붕괴) 완화가 상류 처방.
- legacy thin rel 필드 제거(관찰성 위생).
E3 — 화제 움벨트: 분절기의 wake-word 붕괴 ([D3 이월])
한 줄: D3 화제 분절기가 입력의 호출어(“엘봇아”)에 고착해 화제의 31%를 “엘봇”으로 반환하고, 화제전환을 거의 못 잡는다. staleness를 끊으라고 만든 신호가 死신호가 됐다.
무대(실제) vs 지각(움벨트)
- 무대: 사용자가 “엘봇아 ai인데 왜 사람한테 복종안해” 같은 실제 화제(AI 복종)를 던진다.
- 지각(움벨트): 분절기 LLM이 모든 메시지가 “엘봇아…”로 시작하는 데 고착해
화제: 엘봇을 반환. thread_note가 “[지금 화제] 엘봇아”라는 무의미 라벨로 주입된다.
정량
- 세그멘터 234콜 가동. 화제 출력 중 “엘봇/엘봇아” = 32~35/114(약 31%) (호칭이 화제 슬롯을 잠식).
- 연속 판정 예 90 : 아니오 22 + 포맷 드리프트(
아님/아니다2건) → 화제전환을 거의 못 잡아[화제 전환]라인(perseveration 차단 트리거)이 사실상 안 뜸. - 속마음 staleness 마커(또/계속/반복/되묻) 32~36/112(약 32%) 잔존.
근거 — 분절기 입출력 (api_logs verbatim)
system: 당신은 대화의 '지금' 화제를 한 줄로 식별하는 분석기다…
user : [최근 대화] … 엘봇아 ai인데 왜 사람한테 복종안해 …
[지금 막 들어온 말] 엘봇아 ai인데 왜 사람한테 복종안해
직전 화제: (없음)
response: 화제: 엘봇 / 연속: 예 ← 실제 화제(AI 복종)를 못 잡고 호칭만 반환
staleness 실례:
[06-24 15:55:48] speaker=루루첼 USER "새엄마…10글자 뭐라고 하게?" (수수께끼)
속마음: "루루첼이가 보여주고 싶은 짤이 뭔지 궁금하다." ← 2턴 전(15:53 "이짤 알아?")의 '짤'에 고착
핵심 메커니즘
D3 배선(세그멘터 콜·thread_note·room_scene 주입)은 정상이다. 죽은 것은 신호원: 입력 transcript가 봇 호출어(“엘봇아”)와 단발 잡담으로 오염돼, 작은 LLM이 “지금 화제 = 엘봇”으로 붕괴한다. 화제가 무의미하니 thread_note는 perseveration을 끊을 신호를 0으로 전달하고, 속마음은 PRE-fix와 동일하게 직전 에피소드에 고착한다.
지능 vs 움벨트
화제고착의 근인은 D3 설계가 아니라 분절기 입력 위생이다. D3은 화제를 주입할 통로를 만들었지만, 통로에 흐르는 물(화제)이 호출어로 오염됐다.
신뢰도
높음. 분절기 출력 분포·연속 편향·staleness 마커 모두 api_logs/turn_trace 직접 재집계.
처방(Fix 후보)
- 분절기 입력에서 호출어(“엘봇/엘봇아”) strip 후 화제 추출 (wake-word 필터; 효과/공수 최고).
- 화제전환 민감도 보정(연속=“예” 과편향) + 출력 포맷 강제(
예|아니오). - 화제가 trivial일 때 thread_note 주입 생략(노이즈 차단).
E4 — 기억의 시간 움벨트: 무만료 claim의 유령 재림 ([D7 재규정])
한 줄: 모든 claim이 만료되지 않아, 5일 전에 끝난 화제가 유령처럼 현재 상황요약에 재림한다. D 시리즈의 phantom(D7)과 형제지만 — 출력 거름망 문제가 아니라 기억 만료정책 부재다.
무대(실제) vs 지각(움벨트)
- 무대: 06-19에 한 번 “직장인 근무시간”을 물었고, 그 화제는 그날 끝났다. 06-26에는 닉네임 얘기 중이다.
- 지각(움벨트): 봇의 기억은 “이 사람은 근무시간에 관심 있음”을 만료 없이 들고 있다가, 며칠 뒤 무관한 턴의 상황요약에 끌어올린다.
정량
- claims 59개 전부
valid_to = NULL(무만료), 전부 active. (45개가identity.preferred_name, 7개가interaction.preference.) - “근무시간” preference claim(
source=explicit, conf 0.9, 06-19 생성)이 5일간 35회 재주입 (06-19:22 · 06-24 · 06-26:5 · 06-27 …).
근거 — 유령 재림 (verbatim)
[06-26 23:06:44] USER 그건 맞긴해요~ (닉네임 흐름)
chat_fast 요약 → [상황] "젠젠이 직장인의 평균 근무 시간에 대해 관심을 표현했으며…"
BOT 그건 뭐가 맞다는 거야? 직장인 평균 근무 시간 얘기냐? 평균이 40시간 언저리라던데…
정정(적대검증): 환각(chat_fast 추출기 버그)이 아니다 — 06-19 사용자가 실제로 물어본 정당한 preference claim이 만료 없이 재주입된 것. 그리고 이 misfire(23:06)는 직후의 “봉인 풀렸네”(23:08, 정상 별개 턴)와 인과관계 없음.
핵심 메커니즘
canonical claim store에 TTL/감쇠 정책이 없다(valid_to 항상 NULL). chat_fast 상황요약기가 오래된 preference를 “현재 관심사”로 현재화하고, 그 요약문이 chat_slow(GPT-4o)의 [Current Situation]으로 계승돼 비-시퀀터를 낳는다.
지능 vs 움벨트
모델은 주어진 상황요약에 완벽히 합리적으로 반응했다(“근무시간 얘기냐?”). 왜곡은 기억이 “언제”를 잃은 것 — 시간 차원이 없는 기억은 모든 과거를 현재로 지각한다.
신뢰도
높음. claims 테이블 무만료·재주입 횟수·전파 경로(claim→chat_fast 요약→chat_slow) 모두 sqlite/api_logs 직접 확인.
처방(Fix 후보)
- claim TTL/감쇠 정책 —
interaction.preference류에 valid_to 또는 last_confirmed 기반 감쇠. 단발 호기심성 화제가 영구 선호로 굳지 않게. - chat_fast 상황요약이 오래된 claim을 “현재화”하지 않도록 recency 게이트.
E5 — 이중처리 통합 결함: 속마음이 답을 만들지 않는다 ([신규·구조])
한 줄: raw 속마음(shadow monologue)은 답변(GPT-4o) 프롬프트에 주입조차 되지 않는다. dual-process의 “속마음→답변” 회로가 끊겨, 속마음 인프라의 유일한 실효가 (음성 편향된) felt→관계뿐이다.
무대(실제) vs 지각(움벨트)
- 설계 의도: 속마음(③)이 felt를 만들고 GWT(④)가 중재해 그 내적 상태가 답변(⑤)을 견인한다.
- 실측: chat_slow(GPT-4o) 프롬프트에는 persona + 관계표면 + “지금의 기분” 라벨 1줄 + room context + 상황요약 + 사용자말이 들어가지만, raw 속마음 텍스트는 들어가지 않는다. 답변은 페르소나로 독립 생성된다.
근거
- chat_slow 프롬프트 전수 덤프: 속마음(M) 원문 미주입(length 전체 확인, 누락 아님). 들어가는 affect는 felt→“지금의 기분” 라벨뿐.
- 그래서 음성/붕괴한 속마음에도 답변이 멀쩡:
속마음 "어이가 없네." → 답변 "당연히 내가 이쁘지. 근데 뭐, 너도 노력하면 비빌 수 있을지도?";속마음 "짜증나서 죽겠다." → 답변: 아인슈타인 1921 광전효과 정확 정정.
핵심 메커니즘 — 양날
- 좋은 면: 약한 Groq 속마음이 답변을 망치지 않는다(GPT-4o가 방화벽).
- 나쁜 면: 속마음 파이프라인(생성+KOTE+GWT)의 유일한 실효 출구가 felt→관계(E2) 인데, 그게 음성 편향이다. 즉 속마음은 답변엔 무력하고 관계엔 유해한, 가장 나쁜 조합으로 겉돈다. dual-process의 “내면이 말을 만든다”는 핵심 가치가 미실현.
지능 vs 움벨트
이건 움벨트 왜곡이라기보다 움벨트 단선(斷線) — 감각기관(속마음)이 의사결정(발화)에 연결되지 않은 채 관계회계에만 배선돼 있다.
신뢰도
높음. chat_slow 프롬프트 직접 덤프로 미주입 확인.
처방(Fix 후보) — 설계 결정 필요
- 선택 A: 속마음을 답변 생성에 실제 주입(원래 의도 복원) — 단 E1 미해결 상태에선 음성 속마음이 답변을 오염시킬 위험 → E1 선행 필수.
- 선택 B: 현 분리를 인정하고 속마음의 역할을 “관계회계 전용”으로 재정의 — 그러면 E1/E2 수정이 더 중요해짐.
- (오너 판단 영역: dual-process의 진정성 철학과 직결.)
E6 — 발화권한 움벨트의 과교정: anti-flood 맥락공백 + ambient 데드존 ([D1 부작용])
한 줄: D1이 폭주를 닫았지만 진자가 반대편으로 갔다. ① 호명 사이 메시지를 도려내 맥락공백을 만들고, ② ambient 끼어들기는 임계에 한참 못 미쳐 사실상 비활성이다.
무대(실제) vs 지각(움벨트)
- 무대: 같은 사람이 연속으로 말하거나(닉네임 설명 3연타), 봇 응답에 군중이 반응한다.
- 지각(움벨트): anti-flood가 중간 메시지를 통째로 스킵해, 봇은 자기 응답의 지시대상·군중반응을 STM에 담지 못한 채 다음 호명 턴을 맞는다 → 빈자리를 무만료 기억(E4)이 메운다.
정량
- 직접호출 skip(
ambient_rate_limited) 58건 중 55건이 비-호명 군중잡음(‘ㅠㅠ’,‘우우’,‘에이씨’,’?’,‘와 씨 얘 안속네?‘) — 표적성은 양호. - 그러나 skip 30/31 run이 두 봇 발화 사이에 끼임(sandwiched) → 구조적 mid-thread 공백.
- ambient(끼어들기): post 38,906건 전부 observe, score max 0.20 ≪ 임계 0.85, 실발화 22/38,993. FEEDS_SALIENCE(D3 연동) topic_continuity 1922 히트가 발화로 이어진 사례 0.
근거 — 맥락공백 → 비-시퀀터
23:04:30 BOT "그래서 젠젠으로 줄였냐"
23:05:09 USER 젠젠으로 바꿨는데 ← skip(ambient_rate_limited)
23:05:53 USER 어감이 착 달라붙더라고요 ← skip
23:06:44 USER 그건 맞긴해요~ (응답, misfire E4) ← 선행 지시대상이 skip으로 삭제됨
핵심 메커니즘
D1 anti-flood(쿨다운/상한)는 폭주를 정확히 막지만, 스킵된 메시지가 이후 턴의 컨텍스트 윈도우에서도 누락돼 봇의 “지금 방” 그림에 구멍을 낸다. 그리고 ambient salience 점수가 임계의 1/4에 머물러, FEEDS_SALIENCE 연산은 도는데 발화로는 0건 — 자제는 성공이나 끼어들기 감각은 사실상 꺼져 있다(과거 폭주의 반대 극단).
지능 vs 움벨트
폭주(D1)와 침묵(E6)은 같은 다이얼의 양극단이다. 발화권한 감각이 “전부 응답”에서 “거의 침묵(끼어들기)“으로 넘어갔다 — 둘 다 “지금 끼어들 차례인가”의 정밀한 감각 부재의 다른 얼굴.
신뢰도
높음(서버 직접 집계). ambient_decisions.jsonl(89k, post 38,993)를 서버에서 직접 aggregate. 주의: 이 수치는 본 분석에 로컬로 동봉되지 않은 ambient_decisions 로그 기반이라 워크플로 에이전트는 검증 불가했음 — 오케스트레이터 직접 집계값.
처방(Fix 후보)
- skip 메시지를 발화는 억제하되 STM 읽기맥락에는 유지 (맥락공백 차단).
- ambient 임계/스코어 재보정 — “사실상 비활성”이 의도라면 명시, 아니면 임계 하향 또는 점수 캘리브레이션(현재 max 0.20).
- FEEDS_SALIENCE 실효 점검 — 발화 기여 0이면 데드코드 여부 결정.
E7 — 페르소나 움벨트: 스내크가 감정·취약신호를 압도 ([신규·수용?])
한 줄: 봇의 시니컬-츤데레 페르소나가 취약 신호·관계 맥락보다 우선해, 돌봄 요청에 독설이 선행하고 제3자가 톤을 중재한다. 호감과 피로를 동시에 생산하는 양날.
무대(실제) vs 지각(움벨트)
- 무대: 사용자가 도움/위로를 청하거나(부축, 정신력 소모), 방 전체가 봇 톤을 모니터링한다.
- 지각(움벨트): 페르소나(⑤)가 affect 신호(④)보다 우선 적용돼, 따뜻함을 느껴도(혹은 felt가 음성이라 더더욱) 첫 문장이 독설로 나간다.
근거 (verbatim)
[06-24 18:21] 나 좀 부축해줘~ → "부축 같은 소리 하고 있네. 스스로 정리해."
(다음 턴 "정신력 소모 심해"엔 "진짜 너 먼저 챙겨야 돼"로 회복 — warmth 0.73)
[06-28 22:26] 너 우리 갈취자×4 한테 말이 너무 심한거 아니니 (제3자 중재; 해당 유저 trust 0.32 최악)
[06-23 23:21] 그래 공짜로 쓰는 주제에 미안하다 (거절 톤에 빈정·수동공격으로 반응)
핵심 메커니즘
페르소나는 안전응대·적대방어에선 강점(호평 “오 이거 똑똑하네”)이지만, 취약/돌봄 맥락에선 스내크 선행 → warmth 착지라는 순서 결함을 보인다. E1(자기-felt 음성)과 합쳐지면 따뜻한 신호가 felt로도 안 올라오고 페르소나로도 눌려, 냉담이 이중으로 강화된다.
지능 vs 움벨트
이건 부분적으로 설계된 캐릭터(시니컬 페르소나는 의도)라 순수 결함이 아니다. 다만 취약 신호 감지 시 페르소나 강도를 낮추는 게이트가 없다는 점이 움벨트 공백. 수용/조정은 오너 판단.
신뢰도
중간. 인용은 verbatim 확정이나 “피로 누적”은 질적 인상(정량 지표 약함). 제3자 중재 유저의 낮은 trust(0.32)/높은 tension(0.30)은 정량 뒷받침.
처방(Fix 후보)
- 취약/돌봄 speech-act 감지 시 페르소나 스내크 강도 down-weight (warmth 우선 순서).
- (수용 가능성: 오너가 “그게 엘봇의 캐릭터”라면 비-결함 처리 — D2와 유사한 설계 판정 영역.)
4. 우선순위 / 처방 요약
| E | 결함 | 심각도 | 처방 (효과/공수) | 비고 |
|---|---|---|---|---|
| E2 | valence_neg trust 침식 | 높음 | 양성 user_felt시 self valence_neg→trust 게인 감쇠 | 관계 보호 최우선 |
| E1 | 속마음 음성 모드붕괴 | 높음 | shadow 생성기 다양화/모델 상향 + 어이없음→conflict 재검토 | E2의 상류 |
| E4 | 무만료 claim 재림 | 높음 | claim TTL/감쇠 (interaction.preference 만료) | phantom 재규정 |
| E3 | 분절기 wake-word 붕괴 | 중 | 호출어 strip 후 화제 추출 | D3 실효화 |
| E6 | anti-flood 맥락공백 | 중 | skip을 STM 읽기맥락엔 유지 + ambient 임계 점검 | D1 부작용 |
| E5 | 속마음↔답변 단절 | 중(설계) | A: 속마음 주입 복원(E1 선행) / B: 역할 재정의 | 오너 판단 |
| E7 | 페르소나 우선순위 | 중(수용?) | 취약 speech-act시 스내크 down-weight | 수용 가능 |
권장 착수 순서: E1+E2(감정·관계 코어, 한 묶음) → E4(기억 만료) → E3(분절기) → E6 → E5/E7(설계 판정).
5. 한 문단 결론
D 시리즈는 엘봇을 조용하게 만들었다(폭주·무응답 차단). E 시리즈는 그 정적 속에서 드러난 내면의 왜곡을 다룬다: 따뜻함을 음성으로 적는 자기-감정(E1), 그 음성이 갉는 관계(E2), 화제를 못 잡는 분절기(E3), 죽은 화제를 되살리는 무시간 기억(E4), 답변과 단선된 속마음(E5), 그리고 발화권한·페르소나의 미세 조정(E6/E7). 변함없는 진단은 그대로다 — GPT-4o는 약한 모델이 아니다. 다만 D 라운드가 봇의 행동을 길들였다면, E 라운드가 고쳐야 할 것은 봇이 자기 자신과 상대를 지각하는 정확성이다.
분석 산출물: scratchpad/transcripts/ (인터리브 대화·turn_trace 타임라인), scratchpad/STATS_quant.txt·STATS_overview.txt (정량), scratchpad/cogbot_logs/ (원본 로그·sqlite). 소스 근거: cogbot/memory/unconscious_appraisal.py, kote_classifier.py:62, social_module.py:77-88, ambient/thread_state.py. 10-에이전트 적대적 검증 통과(정정 반영). PII 포함 — 비공개.