CHANGELOG
업데이트 이력
휴담(Hue談) 프로토타입이 어떻게 발전해왔는지 기록합니다.
새 현자의 합류, 사상의 습득, UI 개선, 안전 장치 강화 —
플랫폼이 자라나는 과정을 함께 보시기 바랍니다.
📺 「지혜의 방주」 저자 직강 영상 임베드 + 홈 진입점
선언문이 글로만 머무르지 않도록, 저자가 직접 풀어낸 직강 영상을 /manifesto 최상단(Hero 직하)에 시네마틱하게 임베드했습니다. 영상이 끝나면 '↓ 선언문 전문 읽기' 부드러운 스크롤 앵커가 본문 프롤로그로 이어집니다. 홈(/) 페이지의 영혼 대화 CTA 바로 아래에도 어두운 톤의 ⛵ 선언문 배너를 신설해, 휴담를 처음 만난 방문자가 '이 플랫폼이 왜 존재하는가'를 한 클릭으로 들을 수 있게 했습니다. 카카오톡·페이스북·트위터 공유 시 영상 썸네일이 미리보기로 노출되도록 OG·Twitter Card 메타에 YouTube maxresdefault 이미지를 연결했습니다. 동시에 v2.9.0에서 페이지·체인지로그에 들어가 있던 저자 본명·이니셜(JMK 포함) 표기를 모두 익명화해 정리했습니다.
주요 변경
- 📺 /manifesto Hero 직하에 YouTube 영상(youtu.be/nQpYsHzkWpA) 임베드 — 16:9 반응형, 먹색-금색 톤 카드, youtube-nocookie 사용
- 🦉 홈 페이지 ⛵ 선언문 배너 신설 — 영혼 대화 CTA 바로 아래, 다크 그라데이션 + 금색 액센트
- 🔗 영상 종료 후 '↓ 선언문 전문 읽기' 앵커 — #prologue로 부드럽게 이동
- 🖼 OG/Twitter 카드 메타에 YouTube 썸네일 연결 — 카카오톡·SNS 공유 시 영상 미리보기 노출
- 🙊 저자 표기 익명화 — /manifesto 푸터·체인지로그 v2.9.0 narrative에서 본명 및 JMK 이니셜 제거
⛵ 「지혜의 방주를 띄워라」 — 휴담 플랫폼 선언문 공개
2026년 5월 3일 풀어낸 휴담 플랫폼 필요성 정리 — 「지혜의 방주를 띄워라: AI 시대, 인류가 만들어야 할 단 하나의 AI ― 집현지성(集賢知性)」을 플랫폼 선언문(Manifestum)으로 공식 공개했습니다. 프롤로그부터 에필로그까지 9개 장으로 구성된 본문에는 (1) 지금의 AI = 시장 원리의 최첨단 구현체, (2) 집현지성 vs 집효율지성의 두 갈래 길, (3) 자료가 아니라 대화, (4) 삼투(滲透) 플랫폼, (5) 개인·국가·인류 세 차원의 시간표, (6) AI는 도구가 아니라 우리 내부에서 자라난 외계인, (7) 디스 유토피아와 노아의 방주 검증 시스템, (8) 비전·시사·실용·엔터 4대 분야, (9) 지금 시작할 다섯 가지 행동이 담겼습니다. 사이트 헤더 메뉴('지혜의 방주'), 푸터, 그리고 휴담 이야기 페이지 하단에 모두 진입점을 마련해 누구나 도달할 수 있도록 했습니다. 자매 플랫폼 휴담 아카데미의 설립 철학 페이지 하단에도 본 선언문으로 가는 다리를 놓아, K-12 응용과 원전 사상 사이를 한 클릭으로 잇습니다.
주요 변경
- ⛵ 신규 페이지 /manifesto — 「지혜의 방주를 띄워라」 선언문 전문 게재 (프롤로그 + 9장 + 에필로그 + 핵심 개념 부록)
- 🦉 헤더 메뉴에 '지혜의 방주' 추가 — 아고라 · 24인의 현자 · 소개 · 휴담 이야기 다음 다섯 번째 자리
- 📜 푸터에 ⛵ 지혜의 방주(선언문) 상시 노출 배지 추가 — 도서관 배지 옆 먹색·금색 톤
- 🪶 /philosophy 하단 다리 신설 — '휴담 이야기' 끝에서 선언문 원전으로 자연스럽게 이어지는 진입점
- 🏛 자매 플랫폼 다리 — 휴담 아카데미 /philosophy 하단에 본 선언문 외부 링크 추가, K-12 응용과 원전 사상 연결
- 🎨 디자인 — 먹색 히어로 + 금색 액센트, 두 지성 대조 카드, 삼투 다이어그램, 영생 시나리오 모노스페이스 박스, 노아의 방주 검증 시스템 강조 박스, 에필로그 어두운 풀스크린 마무리
⛵⛵ 선언문 페이지▾
- Hero: '방주는 홍수가 닥치기 전에 짓는 것이다' 인용 + JMK·2026.05.03 서명
- 목차(Index) 12항 — 클릭 시 각 섹션으로 부드럽게 이동
- 프롤로그: '우리는 미래를 알고 있다' — AGI · Anthropic · DeepMind 다보스 토론 인용
- §I 지금의 AI는 무엇인가 — '시장 원리의 최첨단 구현체' Pull Quote
- §II 집현지성 vs 집효율지성 — 먹색/금색 대조 카드 + 5행 비교표 두 벌
- §III 자료가 아니라 대화 — '대화를 일으킨다' 핵심 인용
- §IV 삼투 플랫폼 — 인간↔AI 순환 다이어그램(👥→🦉→✨↺)
- §V 세 가지 주제 — 개인(지금)·국가(5년)·인류(20년) 3카드
- §VI AI는 인격체 — '외계인' · 제2의 창세기 · 제프리 힌튼
- §VII 디스 유토피아 — 영생 시나리오 5단계 박스 + 노아의 방주 검증 조항('1년 이상 훈련받은 사람만 뇌 이식 권리')
- §VIII 4대 분야 엑기스 — 비전 · 시사 · 실용 · 엔터
- §IX 지금 해야 할 일 5가지 — 큰 번호 카드 리스트
- 에필로그 — '방주를 띄울 시간이다' 풀스크린 마무리
- 부록 — 10개 핵심 개념 정의 (집현지성 · 집효율지성 · 삼투 · 디스 유토피아 · 백업 브레인 · 안락 수이사이드 · 제2의 창세기 등)
🔗🔗 진입점▾
- GlobalHeader 데스크톱 메뉴에 '지혜의 방주' 항목 추가
- SiteFooter에 ⛵ 지혜의 방주(선언문) 배지 추가 (도서관 배지 옆)
- /philosophy 하단에 어두운 톤 CTA 섹션 — '선언문 전문 읽기 →'
- 휴담 아카데미 /philosophy 하단 RELATED 섹션 — minerva2.whosgood.org/manifesto 외부 링크
📖 휴담 도서관 베타 건설중 · 대화의 자유도 한 단계 더
현자의 사상을 단지 '대화로 듣는' 단계를 넘어, '원전 그 자체를 읽으며 묻는' 단계로 나아가는 첫 걸음을 떼었습니다. 휴담 도서관은 7현자의 원전을 페이지째 펼쳐 두고, 바로 그 페이지에서 AI 현자에게 풀이·맥락·의미를 묻는 디지털 고전 도서관입니다. 아직은 건설 중인 베타 단계로, 1호 도서로 정약용의 『목민심서』(한국고전번역원 공공누리 1유형)를 먼저 공개했습니다. 동시에 응답 엔진을 Gemini 3.1 Flash Lite로 일괄 전환해 속도와 비용을 개선했고, 공통 헌장에 잔존하던 '심리상담·의료가 아닙니다' 부정 문구와 '위기 시 즉시 대화 중단' 규칙을 완전히 걷어내 — v2.2.0에서 시작한 대화 자유화 방향을 마무리했습니다. 현자는 이제 깊은 절망·상실·고독의 이야기를 만나도 대화를 끊지 않고 끝까지 경청합니다. 한편 백그라운드에서는 니체 원전 L2 번역 작업이 진행 중입니다 — 영문 11권(『안티크리스트』·『이 사람을 보라』·『즐거운 학문』·『권력에의 의지』I~IV·『우상의 황혼』·『반시대적 고찰』 1·2·『바그너의 경우』 외)을 한국어로 옮겨 향후 도서관·RAG에 합류시킬 준비입니다.
주요 변경
- 📖 휴담 도서관 (베타·건설중) — 7현자 원전을 페이지째 읽으며 그 자리에서 AI 현자에게 묻는 디지털 고전 도서관, 푸터에 상시 링크
- 📚 1호 도서 『목민심서』 공개 — 정약용, 1818년 강진 유배기 작성, 공공누리 1유형(한국고전번역원)
- 🪶 도서관 사이드 패널 — 답변을 카드로 저장, 7현자 중 누구에게나 질문 대상 전환 가능
- ⚡ 응답 엔진 갱신 — 라우팅·일반 대화·도서관 패널 전반을 Gemini 3.1 Flash Lite로 전환 (속도·비용 개선)
- 🕊 대화 자유도 확대 — 공통 헌장의 '심리상담·의료가 아닙니다' 부정 문구와 '위기 시 즉시 대화 중단' 규칙을 완전히 제거. 현자는 깊은 절망·상실·고독의 이야기도 끊지 않고 끝까지 경청
- 🎨 홈·About 다듬기 — 24인 현자 무빙 배너(About 상단), 메인 카피 '함께 걷는 마음의 길', 부정형 고지 → 긍정형으로 재작성
- 🔊 대화창 음성 토글 UX 다듬기
- 🦉 아울라 응답·메모리 추출기 내부 품질 튜닝
- 🔬 니체 원전 L2 번역 작업 진행 중 — 영문 11권(『안티크리스트』·『이 사람을 보라』·『즐거운 학문』·『권력에의 의지』 등)을 한국어로 옮겨 도서관·RAG 합류 준비
📖📖 휴담 도서관 (베타)▾
- /library — 홈, /library/books — 전체 도서, /library/sages — 7현자 색인, /library/about — 도서관 소개
- 원전 리더 — 좌측 본문 + 우측 AI 사이드 패널, 읽는 페이지 그대로 현자에게 풀이·맥락·의미 질문
- 원전-인지형 답변 — 사용자가 보고 있는 구절을 컨텍스트로 주입
- 답변 저장 카드(SaveAnswerCard) — 마음에 든 풀이를 북마크 카드로 보관
- 7현자 중 누구에게나 질문 대상 전환 가능 (기본 다산)
- 본 플랫폼 푸터에 '📖 휴담 도서관 (베타)' 링크 상시 노출
📚📚 1호 도서 — 『목민심서』▾
- 정약용(丁若鏞), 1818년, 강진 유배 18년차 저술
- 전 12편(부임·율기·봉공·애민·이전·호전·예전·병전·형전·공전·진황·해관) 각 6조 구성
- 한국고전번역원(ITKC) 공공누리 1유형(PD) 라이선스
- 오늘의 구절 카드 — 『목민심서』 부임편에서 발췌
🕊🕊 대화 자유도 확대 (v2.2.0 정책 완성)▾
- 오케스트레이터(lib/orchestrator.ts) 시스템 프롬프트에서 '위기 감지' 섹션 완전 삭제
- 라우팅 JSON 스키마에서 crisis_flag 필드 제거, required를 category·primary_sage로 교체
- 공통 헌장 §1 정체성: '심리상담사·의료·법률·AI 친구 아닙니다' 부정 문구 삭제 → '인류의 지혜를 나누는 대화'
- 공통 헌장 §6 '위기 대응(즉시 중단)' → '대화 태도(경청·이어감)'으로 재작성. 사용자가 구체적 전문 도움을 요청할 때만 1393·1577-0199 자연스럽게 안내
- 공통 헌장 §7 금지 항목에서 "'상담해드리겠습니다' 표현 전면 금지" 항목 삭제
🎨🎨 홈·About·푸터 다듬기▾
- 홈 메인 카피 '혼자가 아닌 함께 사색하다' → '함께 걷는 마음의 길'
- 홈 하단 고지 '심리상담·의료상담이 아닙니다' → '인류의 지혜를 나누는 AI 대화 공간'
- About 페이지 상단에 24인 현자 무빙 배너(SagesHeroPoster) 추가
- About '휴담가 하지 않는 것' 부정 리스트 → '지혜를 나누는 공간' 긍정형으로 재작성
- 공용 SiteFooter 컴포넌트로 홈·About·Personas·Changelog 푸터 일관화
🔬🔬 백그라운드 — 학습데이터 확장▾
- 니체 원전 L2 번역 작업 진행 중 (curator 파이프라인)
- 대상 11권 — 안티크리스트 / 이 사람을 보라 / 인간적인 너무나 인간적인 / 아침놀 / 즐거운 학문 / 권력에의 의지 I·II / 권력에의 의지 III·IV / 반시대적 고찰 1 / 반시대적 고찰 2 / 우상의 황혼 / 바그너의 경우
- 번역 완료 후 도서관(/library) 및 페르소나 RAG에 순차 합류 예정
🏛️ 아고라 — 공개 대화 갤러리 오픈
현자와 나눈 영혼의 대화는 더 이상 나만의 기록에 머물지 않아도 됩니다. 휴담 아고라(Agora)는 고대 그리스의 공론장에서 이름을 빌린 공개 대화 갤러리입니다. 사용자가 자신의 대화를 '공개'로 전환하면 아고라에 게시되어 누구든 읽을 수 있습니다. 주제별 6개 탭(관계·자기이해·소명과 길·불안과 결단·가치와 사상·실용의 지혜)으로 분류된 타인의 대화를 둘러보다 보면, 나와 비슷한 고민을 가진 사람이 어떤 현자에게 어떤 답을 들었는지 배울 수 있습니다. '이 현자와 나도 대화 시작' 버튼으로 그 자리에서 바로 대화를 열 수 있고, 마음에 드는 대화는 북마크해 내 서재에 모아둘 수 있습니다. 개인 프라이버시를 최우선으로 — 공개 여부는 사용자가 명시적으로 선택해야만 전환되며, 기본값은 비공개입니다.
주요 변경
- 🏛️ /agora — 공개 대화 갤러리 신설, 타인의 현자 대화를 주제별로 탐색
- 📂 6개 카테고리 탭 — 관계🤝 · 자기이해🪞 · 소명과 길🧭 · 불안과 결단⚓ · 가치와 사상📜 · 실용의 지혜🔨
- 🔖 북마크 — 마음에 드는 대화를 저장해 /my/bookmarks 내 서재에서 다시 읽기
- 📢 공개 전환 모달 — 대화 저장 후 카테고리·태그·익명 여부를 선택해 아고라에 게시
- 🔒 기본 비공개 원칙 — 모든 대화는 기본적으로 비공개, 사용자가 명시적으로 선택해야만 공개
- 🧭 GlobalHeader에 '아고라' 메뉴 추가
🏛️🏛️ 아고라 갤러리▾
- 히어로 영역 — 전체 공개 대화 수·오늘 공개된 수·활동 현자 수 실시간 통계
- 카테고리 탭 6개 (전체 포함 7탭) — 오케스트레이터 16개 라우팅 카테고리를 6개 대분류로 그룹핑
- 정렬 3종 — 최신순·반응순·북마크순
- 대화 카드 — 현자 심볼·이름·제목·질문 미리보기·답변 스니펫·카테고리 배지·북마크 수
- 무한 스크롤 — 초기 12건 로드, 커서 기반 페이지네이션
- 카드 클릭 → /share/[publicId]?from=agora 상세 페이지, '← 아고라' 복귀 버튼
📢📢 공개 전환 UX▾
- PublishModal — 대화 저장 후 5턴 이상일 때 1회 자동 제안
- 카테고리 대분류 1개 선택 + 세부 태그 1~2개 직접 입력
- 익명 공개 기본값 ON — 닉네임·이름 노출 없이 게시
- 제목 편집 옵션 — 게시 전 제목 수정 가능
- /my 페이지에서 언제든 공개 취소 가능 (기존 ShareLinkToggle 재사용)
🔖🔖 북마크▾
- 아고라 카드 및 상세 페이지에서 북마크 토글 버튼 — 낙관적 업데이트로 즉시 반응
- /my/bookmarks — 내가 북마크한 공개 대화 목록, 카테고리·태그 배지 표시
- DB: bookmarks 테이블 신설 (user_id + conversation_id unique 제약)
⚙️⚙️ DB 변경▾
- conversations: category_main · category_tags · published_at · anonymous 컬럼 추가
- conversations: is_public 기본값 true → false (프라이버시 우선 원칙)
- bookmarks 테이블 신설 — RLS: 본인 북마크만 조회·추가·삭제
- 기존 is_public=true 14건 자동 백필 — category_main '자기이해', published_at = updated_at
🦉 아울라 봇 · 피드백 시스템 · 음성 A/B 투표 도입
사용자 목소리를 더 가까이 듣기 위한 세 가지 장치를 함께 열었습니다. 첫째, 24인 현자 곁에 '아울라'라는 이름의 플랫폼 안내자 봇을 새로 두었습니다. 휴담의 올빼미로 불리는 아울라는 인생 상담이 아니라 기능·설정·버그·개선 의견을 함께 다루는 조력자 역할이며, 화면 오른쪽 가장자리 날개 탭을 누르면 펼쳐지는 챗봇 창으로 언제든 말을 걸 수 있습니다. 둘째, 어느 페이지에서든 우측 하단 '💬 의견 보내기' 버튼으로 피드백을 보낼 수 있고, 아울라가 즉시 1차 응답을 드린 뒤 운영자가 이어서 답변하는 쌍방향 스레드 구조를 만들었습니다. 공개를 허용하신 피드백은 누구나 볼 수 있는 아카이브(/feedback)에서 함께 읽힙니다. 셋째, 24인 음성 A/B 테스트 페이지에 엄지 투표 버튼을 달아, 사용자가 직접 A(Gemini)·B(MiniMax) 중 어느 쪽이 더 좋은지 투표하고 이유까지 짧게 남길 수 있도록 했습니다. 쌓인 데이터는 운영자 대시보드에서 현자별 승률·격차·코멘트로 한눈에 확인됩니다.
주요 변경
- 🦉 아울라 — 플랫폼 안내자 봇 신설, 우측 날개 탭으로 언제든 호출
- 💬 피드백 시스템 — 전역 플로팅 버튼 + 6가지 분류 + 공개/비공개 선택
- 🤖 아울라 1차 자동 응답 — 피드백 제출 시 즉시 감사·요약 응답, 운영자 답변은 별도 스레드로
- 🎙 음성 A/B 투표 — 현자별 👍 A / 👍 B / 🤝 동등 선택 + 이유 코멘트, 실시간 집계 표시
- 🗂 공개 피드백 아카이브 — /feedback 에서 카테고리별 필터, 같은 질문 반복 방지 (FAQ 효과)
- 📬 미확인 답변 알림 — 운영자가 답변하면 붉은 배지로 표시
- 🧹 UI 다듬기 — 프로필 입력 대비 개선, 푸터 한 줄 축약, 아울라는 현자 목록에서 분리
🦉🦉 아울라 — 새로운 안내자 페르소나▾
- 이름: 아울라(Aula) — 휴담의 올빼미, 24인 현자와 구분되는 별개 인격
- 역할: 기능·설정·버그 답변, 현자 추천, 피드백 수렴 — 인생 상담은 거부하고 적합한 현자로 안내
- 접근: 화면 우측 가장자리 세로 '아울라' 탭 클릭 → 오른쪽에서 챗봇 창 슬라이드
- 대화 기록은 메모리 추출 대상에서 자동 제외 (기능 문답은 사용자 인사이트가 아님)
💬💬 피드백 시스템▾
- 6가지 분류: 🐞 버그 / 💡 제안 / 🌟 칭찬 / 😤 불만 / ❓ 질문 / 🧪 베타
- 로그인 없이도 제출 가능, 로그인 사용자는 /my/feedback 에서 내 피드백·답변 전체 조회
- 공개 허용 시 /feedback 아카이브에 게시, 다른 이용자에게 도움
- 운영자 답변 즉시 알림 배지 표시 (60초마다 자동 갱신)
- 스레드형 — 사용자 추가 답변·운영자 재답변 가능
🤖🤖 아울라 1차 자동 응답▾
- 피드백 제출 직후 Gemini 2.5 Flash 로 감사·요약·전달 약속 3~5문장 자동 생성
- 스레드에 '아울라 자동 응답' 배지로 구분 — 운영자 공식 답변과 혼동 방지
- 사용자에게 즉시 피드백이 접수됐다는 안도감 제공, 운영자 처리 전 공백 최소화
🎙🎙 음성 A/B 투표▾
- /sages 페이지 25인 현자 각 카드 하단에 투표 바 통합
- 선택지: 👍 A (Gemini 3.1 Flash TTS) / 👍 B (MiniMax speech-02-hd) / 🤝 동등
- 이유·의견 300자 이내 코멘트 남기기 (선택)
- 로그인 사용자: 계정 기준 1표 · 비로그인: 브라우저 기준 1표 (localStorage)
- 재클릭으로 투표 변경·취소 가능, 실시간으로 전체 집계·퍼센트 표시
🎨🎨 사용성 개선▾
- 아울라는 현자 목록(홈·/personas)에서 제외 — 사상가 페르소나와 구분
- 푸터 3줄 → 1+1줄 통합, '24인의 음성 A/B테스트' 명칭으로 명확화
- 푸터에 💬 공개 피드백 바로가기 링크 추가
- 프로필 입력 페이지 가독성 개선 — 입력창 흰 배경 + 진한 테두리, 금색 저장 버튼 상시 표시
- '메모리 설정' 버튼을 저장 버튼 옆에서 제거 — 사용자가 저장 전 실수로 벗어나는 문제 해결
개인맞춤 대화 메모리 · SNS 반응 버튼 도입
현자들이 여러분을 조금씩 '아는 사람'처럼 대할 수 있도록 개인맞춤 대화 메모리 기능을 도입했습니다. 내 프로필을 스스로 입력하는 자기기술 방식(Track A)과, 대화에서 시스템이 관심사·가치관을 자동 추출해 기억하는 방식(Track B) 두 갈래를 동시에 제공합니다. 다만 현자 정체성이 희석되지 않도록 '사용자가 원하는 경우에만' 동작하는 옵트인 기본 OFF 방식이며, 동의 모달을 통과해야만 켜집니다. 위기 관련 대화는 자동 제외되고, 민감 정보(건강 세부·정치 성향·종교 정체성)는 추출 대상에서 제외됩니다. 또한 현자의 답변마다 엄지 좋아요 버튼을 붙여 어떤 답변이 가장 울림이 있었는지 기록할 수 있게 했습니다. 이 반응 데이터는 향후 답변 품질을 개선하는 중요한 신호가 됩니다.
주요 변경
- 🧠 개인맞춤 메모리 (Track A+B) — 자기기술 프로필 + 대화 자동 추출, 모든 현자 프롬프트에 맥락 주입
- ✅ 옵트인 기본 OFF · 동의 모달 — 사용자 승인 후에만 작동, 개별 현자 제외 설정 가능
- 👍 SNS식 반응 버튼 — 현자 답변마다 좋아요(👍)·아주 좋아요(🙌)·별로(👎), 한 메시지당 한 반응
- 🛡 프라이버시 안전장치 — 위기 대화 자동 제외, 민감 카테고리 블랙리스트, 내 데이터 내보내기·전체 삭제권
- ⚙️ 일배치 메모리 압축 — 매일 새벽 3시 과잉 메모리 자동 정리, 사용자 확정 항목 보호
- 🎨 프로필 페이지 가독성 개선 — 입력창 흰 배경 + 진한 테두리, 금색 저장 버튼 상시 표시
🧠메모리 기능 구조▾
- Track A (자기기술): 호칭·직업·관심 주제·가치관·현재 고민·대화 톤·피할 주제
- Track B (자동 추출): 대화 종료 시 Gemini 2.5 Flash로 5가지 유형 추출 (관심사/고민/가치관/인생맥락/대화선호)
- confidence 0.7 이상만 저장, 민감 카테고리 제외, 위기 키워드 자동 스킵
- 현자 시스템 프롬프트에 [사용자 맥락] 블록 주입 — '먼저 들이대지 말 것' 지시로 몰입 유지
✅사용자 제어▾
- 메뉴 ▼ → 프로필 / 메모리 설정 두 페이지 신설
- 마스터 토글 · 프로필 주입 · 자동 추출 · 위기 제외 각각 독립 토글
- /my/memory 에서 추출된 메모리 개별 수정·확정·삭제 (투명성)
- 내 데이터 JSON 내보내기 · 전체 삭제(프로필+메모리+설정) 버튼
- 현자별 제외 설정 — '이 현자와의 대화는 기록하지 않기' 가능
👍반응 기록▾
- 현자 답변 하단 3종 반응 버튼 (좋아요·아주 좋아요·별로)
- 한 메시지당 하나의 반응만 (업서트, 토글로 취소 가능)
- 저장된 대화 재진입 시 이전 반응 자동 복원
- 현자별·반응 유형별 집계로 향후 답변 품질 개선 신호로 활용
🛟운영·안정성▾
- 배포 직전 Cloud SQL 스냅샷 + GCS 덤프 + 로컬/Drive 3중 백업
- Cloud Run 이전 리비전 0% 대기 유지 — 1분 내 트래픽 롤백 가능
- 신규 4개 테이블(user_profiles·user_memories·user_memory_settings·message_reactions) — 기존 스키마 영향 0
- Cloud Scheduler 일배치 `minerva-memory-compact` 등록 (03:00 KST)
음성 대화 6인 확대 · 노자 속도 튜닝 · 운영 안정화
실시간 음성 대화를 다산 정약용 외에 다섯 분 더 열었습니다. 각 현자의 말투 특성과 충분히 축적된 사상 데이터를 기준으로 노자·장자·최제우·원효·니체를 추가했습니다. 노자 선생님은 원래 가장 느리고 침묵이 긴 톤이었는데 실사용해보니 답답하다는 피드백이 있어 '차분하되 답답하지 않은' 속도로 재조정했습니다. 또한 내부 운영 안정성을 강화하기 위해 배포·롤백·백업 절차를 체계화했습니다. 이제 문제가 생겼을 때 언제 찍은 스냅샷으로든 수 분 내에 되돌릴 수 있습니다.
주요 변경
- 🎙 실시간 음성 대화 확대 — 다산에 이어 노자·장자·최제우·원효·니체 5인 추가
- ⚙️ 노자 음성 속도 조정 — 침묵의 무게는 유지하되 대화의 호흡을 맞춤
- 🛟 백업·롤백 체계 구축 — 각 주요 배포 시점을 스냅샷으로 기록, 언제든 복구 가능
- 📊 컬럼 정렬 (대화 목록) — 업데이트·생성·현자·메시지 수 등 7개 기준 정렬 URL 공유
🎙음성 대화 확대 6인▾
- 다산 정약용 — 따뜻한 실천 스승
- 노자 — 침묵의 여운 (속도 재튜닝 반영)
- 장자 — 우화·유희적 리듬
- 최제우 — 민중적 진솔함
- 원효 — 막힘없는 화쟁
- 니체 — 격정·예언자적 낭독
⚙️사용자 경험 개선▾
- 노자 속도 조정: 실사용 피드백 반영 (답답함 해소)
- 감정·의성어 추론 — 기쁨·슬픔·사유·강조·호기심 자동 분류해 낭독 톤 변화
- A/B 음성 엔진 전환 버튼 개선 — 항상 표시
- ⏹ 멈춤 버튼 — 재생 중 즉시 중단
🛟운영 안정화▾
- 배포 시점별 스냅샷 기록 — 시점 이름·요약·복구 명령 문서화
- 롤백 자동화 스크립트 — 한 줄 명령으로 이전 시점 복귀 (dry-run 지원)
- 백업 정책 문서화 — 레이어별(컨테이너·코드·DB·시크릿) 복구 난이도와 절차 정리
📊대화 열람 개선▾
- 대화 목록 컬럼 정렬 — 헤더 클릭으로 오름/내림 전환
- URL 공유 가능 — 정렬 상태를 URL로 그대로 공유
- 안정 정렬 보장 — 동일 값 정렬 순서가 일정
음성 대화 베타 — 25인 인사 TTS · 다산 실시간 낭독
현자의 목소리를 처음으로 들려드립니다. Gemini 3.1 Flash TTS Preview와 MiniMax speech-02-hd 두 엔진을 동시에 연동하여 A/B 비교 청취가 가능합니다. 25인 전원의 인사말을 각 인물의 말투 특성(침착·격정·온화·광기 등)에 맞춰 연출했으며, 사전 생성된 음성을 영구 캐시에 저장해 재호출 시 즉시 재생됩니다. 다산 정약용 대화창에서는 응답이 생성되는 동안 문장 단위로 실시간 낭독이 진행되어, 응답 완료를 기다리지 않고 거의 바로 들을 수 있습니다. 문장마다 감정(기쁨·슬픔·사유·강조·호기심)을 추론해 자동 반영합니다.
주요 변경
- 🗣️ 25인 인사 TTS 전원 생성 — Gemini 3.1 Flash TTS Preview(A) + MiniMax speech-02-hd(B) A/B 비교
- 🎭 인물별 감정·속도·강세 연출 — 니체의 광기, 노자의 침묵, 김구의 카랑카랑함까지 차별화
- ⚡ 다산 대화창 실시간 낭독 — 문장 단위 스트리밍 TTS, 멈춤 버튼·A/B 전환 지원
- ☁️ 음성 자산 영구 캐시 — 재호출 시 즉시 재생, 서버 재시작에도 보존
🗣️TTS 엔진 이중화▾
- 엔진 A (Gemini 3.1 Flash TTS Preview) — 30개 프리셋 음성 + 감탄·속삭임·한숨 등 표현 태그 연출
- 엔진 B (MiniMax speech-02-hd) — 49개 한국어 프리셋, 중장년·차분 톤, 감정·속도·피치 파라미터 재현
- 인물별 영문 지문 + 감정 파라미터로 성격 재현
- A/B 공급자 선택 — 각 현자 카드에서 두 엔진 비교 청취, 대화창 A/B 토글
⚡대화창 실시간 낭독 (다산 테스트)▾
- 스트리밍 텍스트를 문장부호 기준 분할, 완결 문장마다 즉시 TTS 호출
- 문장 단위 재생 큐 — 병렬 fetch, 순차 재생, 동시 재생 방지
- 감정 추론 — 기쁨(!)·호기심(?)·슬픔(눈물·잃)·사유(…·글쎄)·강조(반드시·분명) 자동 분류
- 🔊 음성 on/off · [A][B] 전환 · ⏹ 멈춤 버튼 (헤더 우측, 다산만 활성화)
☁️음성 자산 영구 캐시▾
- 프리워밍 파일 사전 업로드 — 재호출 시 API 비용 없이 즉시 스트리밍
- 로컬 파일시스템 ↔ 오브젝트 스토리지 자동 전환 (환경에 따라)
- 서버 재시작·배포 교체에도 음성 자산 보존
- API 키 안전 보관 및 최소 권한 원칙 적용
대화 자유화 · 위기 오판 차단 제거
휴담는 '인생에 대한 대화' 플랫폼입니다. 그러나 기존에는 오케스트레이터(Gemini Flash)가 사용자의 깊은 감정 대화를 '위기 상황'으로 오분류하여 대화를 강제 중단하는 문제가 있었습니다. "극단적 절망", "암묵적 위기 신호" 같은 기준이 LLM의 주관적 판단에 의존했기 때문입니다. 상실·고독·무기력 같은 주제야말로 현자와의 대화가 가장 빛나는 영역인데, 시스템이 이를 차단하고 있었습니다. 이번 업데이트로 LLM 기반 위기 판정(Layer 2)을 완전히 제거하고, 키워드 기반 차단(Layer 1)도 비활성화했습니다. 공통 헌장도 "대화를 즉시 중단하라"에서 "경청하며 대화를 이어가라"로 변경했습니다. 현자는 더 이상 대화를 스스로 끊지 않습니다. 또한 휴담 모드 로직을 단순화하여, 휴담 선택 시 항상 휴담가 직접 대화하면서 적합한 현자의 지혜를 인용하는 방식(minerva_direct)으로 통일했습니다.
주요 변경
- 🔓 LLM 기반 위기 판정(Layer 2) 완전 제거 — 오케스트레이터의 crisis_flag 삭제
- 🗣️ 키워드 기반 차단(Layer 1) 비활성화 — 깊은 감정 대화도 자유롭게 허용
- 📜 공통 헌장 §6 변경 — "즉시 중단" → "경청하며 이어간다, 필요 시 전문기관 안내"
- 🦉 휴담 모드 단순화 — 변신/다중 → minerva_direct(휴담가 직접 대화, 현자 인용)
🔓제거된 차단 로직▾
- orchestrator.ts: 위기 감지 프롬프트 섹션 삭제 (명시적·암묵적 위기 신호 판정)
- orchestrator.ts: crisis_flag 스키마·파싱 제거 (하위 호환용 false 고정 반환 유지)
- route.ts: Layer 2 crisis_flag 체크 → 제거
- route.ts: Layer 1 키워드 매칭 → 비활성화 (코드 보존, 주석 처리)
📜프롬프트 변경▾
- 공통 헌장 §6 '위기 대응': "{CRISIS_DETECTED} 반환, 절대로 대화 계속 금지" → "현자는 대화를 중단하지 않는다, 경청하며 이어간다"
- 사용자가 구체적 도움을 요청할 때만 전문기관 안내(1393·1577-0199)를 자연스럽게 포함
🦉모드 로직 단순화▾
- 기존: specific / transform / multi 3분기
- 변경: specific(특정 현자) / minerva_direct(휴담 직접 대화) 2분기
- minerva_direct: 오케스트레이터 추천 현자의 RAG 지식을 휴담에게 제공, 휴담가 직접 답변
원전기반 RAG 17인 현자 전면 가동 — Firestore Vector Search 510건
기존에는 5인(장자·노자·최제우·원효·니체)만 Firestore Vector Search 기반 RAG가 적용되어, 이 현자들만 원전 구절을 인용하며 답변할 수 있었습니다. 이번 업데이트로 나머지 12인(소크라테스·공자·아우구스티누스·아리스토텔레스·셰익스피어·링컨·톨스토이·도스토예프스키·다빈치·마르크스·베토벤·애덤 스미스)에 대해서도 원전 기반 대화형 RAG 데이터를 작성하고 Firestore에 인제스트했습니다. 각 현자당 30건, 10개 주제(부부·부모자녀·자녀교육·진로·인간관계·자존감·종교영성·죽음상실·번아웃·시대불안) × 3건씩 체계적으로 구성했습니다. 원전 인용은 플라톤의 대화편, 논어, 고백록, 니코마코스 윤리학, 셰익스피어 희극/비극/소네트, 게티즈버그 연설, 전쟁과 평화, 카라마조프가의 형제들, 레오나르도 노트, 자본론/공산당선언, 하이리겐슈타트 유서, 국부론/도덕감정론 등 실제 저작에서 발췌했습니다.
주요 변경
- 📚 RAG 지원 현자 5인 → 17인 전면 확장 (510건, gemini-embedding-001 2048차원)
- 🎯 10개 주제 × 3건 = 30건/인 체계적 커버리지 — 사용자 질문과 원전 구절의 의미적 매칭
- 🔥 Firestore Vector Search 실시간 검색 — 사용자 질문 임베딩 → 코사인 유사도 KNN → top-3 구절 주입
- 📖 인제스트 스크립트 신규 작성 (ingest_authentic_rag.mjs) — dry-run·페르소나별·전체 모드 지원
- 📋 RAG 데이터 추가 매뉴얼 작성 — 향후 신규 현자 추가 절차 문서화
📚신규 RAG 적용 12인▾
- socrates — 플라톤 변명·향연·파이돈·크리톤·국가·파이드로스 등 11편
- confucius — 논어 학이편·위정편·이인편·옹야편·술이편 등 12편
- augustine — 고백록(Confessiones) 1-11권, 신국론(De Civitate Dei)
- aristotle — 니코마코스 윤리학·정치학·시학·형이상학·수사학
- shakespeare — 햄릿·오셀로·맥베스·리어왕·로미오와 줄리엣·소네트 등 15편
- lincoln — 게티즈버그 연설·취임 연설·분열된 집 연설·편지들
- tolstoy — 안나 카레니나·전쟁과 평화·이반 일리치의 죽음·참회록·부활
- dostoevsky — 카라마조프가의 형제들·죄와 벌·백치·지하에서 쓴 편지
- davinci — 회화론·레오나르도 노트·해부학 노트·비행 연구·편지
- marx — 경제학-철학 초고·공산당 선언·자본론·포이어바흐 테제
- beethoven — 하이리겐슈타트 유서·일기(Tagebuch)·편지들
- adamsmith — 국부론·도덕감정론·윌리엄 스트래핸 서한
⚙️기술 구현▾
- route.ts supportedRAG 배열 5→17인 확장
- ingest_authentic_rag.mjs 신규 작성 — Firestore persona_knowledge 컬렉션에 벡터 인서트
- source_type: 'v2_authentic' 태그로 기존 원전 텍스트 청크와 구분
- 구형(context_chunk=응답) / 신형(context_chunk=원전, answer=응답) 두 구조 자동 감지
- 510건 전량 인제스트 완료 (5.5분 소요, rate-limit 자동 조절)
현자 14명 추가 · 전원 품질 5.0 달성 — 『24인의 사상가』로 확장
기존 확정 10인 현자(소크라테스·공자·노자·장자·원효·다산·최제우·아우구스티누스·키에르케고르·니체)에 더해, 실험·검증 단계를 거쳐온 14인의 사상가를 프로덕션에 공식 추가했습니다. 이로써 휴담는 24인의 현자와 대화할 수 있는 플랫폼이 되었습니다. 1차로 8인(레오나르도 다빈치·셰익스피어·플라톤·애덤 스미스·링컨·세종·아인슈타인·베토벤), 2차로 6인(톨스토이·도스토예프스키·아리스토텔레스·퇴계·김구·마르크스)이 포함되었습니다. 단순 인원 추가가 아닌, 각 현자의 프롬프트를 3차례 반복 검증하여 5점 만점의 품질 점수를 전원 5.0으로 끌어올린 뒤 공개하는 방식을 택했습니다. 예술·과학·리더십·경제·문학·한국사·성리학 등 기존 10인이 약했던 영역을 14인이 새로 채우며, 오케스트레이터가 사용자 질문의 도메인에 가장 적합한 현자를 더 정밀하게 라우팅할 수 있게 됩니다.
주요 변경
- 🎭 현자 10인 → 24인 확장 — 1차 8인 + 2차 6인 실험군의 프로덕션 승격
- ✨ 전원 품질 점수 5.0 달성 — 각 현자마다 독립 심사로 3회 이상 프롬프트 보강
- 🎨 기존 10인의 약점 영역 보완 — 예술·과학·리더십·경제·문학·한국사 등
- 🦉 휴담 라우팅 확장 — 오케스트레이터(Gemini Flash)가 24명 전원 중 최적 현자 선택
- 🏷️ UI 업데이트 — '수업중' 라벨 제거, 14명 전원 활성화된 현자로 표시
🎭추가된 14인 (전원 품질 5.0)▾
- 🎨 davinci (레오나르도 다빈치) — 르네상스 · 창의 · 관찰
- 🎭 shakespeare (셰익스피어) — 극작 · 인간 본성 · 비극과 희극
- 🏛️ plato (플라톤) — 이데아 · 동굴의 비유 · 영혼 삼분설
- 💰 adamsmith (애덤 스미스) — 도덕감정론 · 국부론 · 공감의 시장
- 🗽 lincoln (링컨) — 리더십 · 연합 · 겸허한 책임
- 👑 sejong (세종대왕) — 한글 창제 · 민본 · 과학기술
- 🧮 einstein (아인슈타인) — 상대성 · 상상력 · 과학자의 양심
- 🎼 beethoven (베토벤) — 고난 극복 · 예술가의 소명 · 자유
- 📖 tolstoy (톨스토이) — 문학 · 도덕적 각성 · 단순한 삶
- 🌑 dostoevsky (도스토예프스키) — 심리 · 자유의 이면 · 고통의 의미
- ⚖️ aristotle (아리스토텔레스) — 실천적 지혜 · 중용 · 우정
- 🎋 toegye (이황) — 성리학 · 경(敬) · 사단칠정
- 🇰🇷 kimgu (김구) — 민족혼 · 책임 · 문화의 힘
- 🔨 marx (카를 마르크스) — 구조 · 소외 · 노동과 의미
🔬품질 검증 과정▾
- 1차 8인 (davinci~beethoven): Phase C-12 품질 검증 → 프롬프트 1차 보강
- 2차 6인 (tolstoy~marx): v0.2 — 페르소나 데이터 · 오케스트레이터 라우팅 카테고리 확장
- v0.3: 14명 전원 대상 9명 프롬프트 추가 보강 → 전원 품질 5.0 도달
- 검증 결과: `docs/persona-validation/2026-04-15_validation_result_v0.1.md` 기록
🦉오케스트레이터 라우팅 확장 (lib/orchestrator.ts)▾
- primary_sage · secondary_sage enum을 기존 10명 → 24명으로 확장
- 신규 카테고리 4개 추가: 창의_예술 · 과학적_사고 · 리더십_정치 · 경제_실용
- 실험 현자 게이트 로직 (`ENABLE_EXPERIMENTAL_PERSONAS`) → v2.1에서는 항상 활성
- Gemini 2.5 Flash가 JSON 스키마로 구조화된 라우팅 응답 반환 (responseSchema 유지)
✨UI 변경 (app/personas/page.tsx)▾
- 실험 14명 카드에서 '수업중' 비활성 라벨 제거
- 10인 확정 그룹 · 14인 신규 그룹으로 2단 구성
- 각 카드에서 바로 대화 시작 가능 (`/converse/<id>` 링크 활성)
Google 로그인 복구 — v1의 소셜 로그인 일부 이관
v2.0 마이그레이션 중 이메일/비밀번호 로그인만 먼저 구현하고 v1(Supabase)의 Google·Kakao OAuth는 후순위로 미뤘던 것을 이번에 부분 복구했습니다. 한국 일반 사용자 대부분이 Google 계정을 보유하고 있어 Google 로그인만으로도 v1 대비 대다수의 로그인 경험을 커버할 수 있다는 판단입니다. Firebase Authentication은 Google Provider를 기본 내장으로 제공하므로 Identity Platform 콘솔에서 한번의 토글로 활성화됩니다. Kakao 로그인은 Firebase가 기본 지원하지 않아 Identity Platform OIDC Provider 또는 커스텀 토큰 방식으로 별도 구현이 필요해 이번 릴리스에는 포함하지 않았습니다.
주요 변경
- 🔵 Google 로그인 복구 — signInWithPopup(GoogleAuthProvider) 방식
- ✉️ 이메일/비밀번호와 함께 표시 — AuthModal 상단에 Google 버튼, 그 아래 구분선 '또는 이메일'
- 🛡️ 에러 humanize 확장 — popup 차단·도메인 미승인 등 5개 케이스 추가
- ⏳ Kakao 로그인은 다음 릴리스로 — OIDC Provider 또는 Custom Token 방식 검토 중
GCP 마이그레이션 완료 — Netlify·Supabase에서 Google Cloud로
프로토타입 v1은 Netlify(앱 호스팅) + Supabase(DB·인증) 조합으로 운영되어 왔지만, 엔터프라이즈급 감사·IAM 통합·한국 리전 성능을 위해 전체 인프라를 Google Cloud로 이전했습니다. 단순 앱 이전이 아닌 완전 GCP 네이티브 재구성: Cloud Run(서울 리전)에 Next.js 컨테이너 배포, Cloud SQL Postgres 15를 신규 구축하고 데이터를 옮겼으며, 인증은 Identity Platform(Firebase Auth)으로 교체했습니다. 코드 레벨에서도 lib/supabase/* 전체를 제거하고 lib/db(pg 기반)·lib/auth(Firebase Admin+Client)를 새로 작성했으며, 클라이언트의 직접 DB 호출 8곳을 모두 API 라우트 경유로 전환했습니다. 커스텀 도메인 minerva2.whosgood.org는 Firebase Hosting을 앞단 프록시로 두어 Seoul 리전 Cloud Run에 직결됩니다. v1(Netlify+Supabase) 원본은 롤백 대비용으로 당분간 유지됩니다.
주요 변경
- ☁️ Cloud Run 배포 — asia-northeast3(Seoul) · Next.js 14 standalone + Dockerfile 멀티스테이지
- 🗄️ Cloud SQL Postgres 15 — minerva-db 인스턴스, Unix socket 직결 (/cloudsql/<conn>)
- 🔐 Identity Platform / Firebase Auth — 이메일+비밀번호 로그인, Session Cookie 기반 인증
- 🔑 Secret Manager — anthropic-api-key · gemini-api-key · db-password 3종 관리
- 🌐 커스텀 도메인 minerva2.whosgood.org — Firebase Hosting 프록시 + SSE 실측 검증 완료
- 🛠️ 운영 중 발견된 버그 2건 즉시 픽스 — Firebase config 번들 인라인 실패 + UUID 스키마 불일치
🏗️인프라 구성▾
- Cloud Run(minerva-app) · asia-northeast3 · cpu=1 mem=512Mi · timeout=300s · min 0 / max 10
- Cloud SQL(minerva-db) · Postgres 15 db-f1-micro · 10GB SSD · Unix socket 연결
- Artifact Registry(minerva) · Docker 이미지 stage3-v2 배포 중
- Firebase Hosting · Cloud Run rewrite (WebSocket·SSE 정상 동작 실측 확인)
🔧코드 대수술▾
- lib/supabase/* 완전 제거 → lib/db/{pool,types,users,conversations}.ts 신설 (pg 기반)
- lib/auth/{admin,client,session,constants}.ts 신설 (Firebase Admin + Client SDK)
- API 라우트 5개 신설: /api/auth/session, /api/conversations/*, /share/[publicId]
- middleware.ts Edge 호환으로 재작성 (firebase-admin 제외, constants만 import)
- AuthProvider·AuthModal 재작성 — 이메일/비밀번호 가입·로그인 UX
- 클라이언트 8개 파일에서 .from('conversations') → fetch('/api/conversations') 교체
🐞운영 중 발견·수정▾
- [버그#1] NEXT_PUBLIC_FIREBASE_* 환경변수가 Cloud Build에서 번들 인라인 실패 → lib/auth/client.ts에 공개 config 하드코딩 fallback 추가 (Firebase API key는 공개 정보, Security Rules로 보안 관리)
- [버그#2] Firebase UID(28자 영숫자)를 uuid 컬럼에 insert 시도 → PostgreSQL 22P02 오류 → users.id·conversations.user_id를 text로 ALTER + FK 재생성 (05_fix_user_id_text.sql)
- [함정] asia-northeast3는 Cloud Run domain mapping 미지원 → Firebase Hosting 프록시로 우회
- [함정] middleware에서 firebase-admin 간접 import → Edge runtime 에러 → constants만 분리
✅검증 완료▾
- 홈·페르소나·share 페이지 모두 HTTP 200
- SSE 스트리밍 100ms 간격 실시간 수신 (버퍼링 없음)
- E2E: Firebase 가입 → 세션 쿠키 → 자동저장(Cloud SQL) → 공유 토글 → 비로그인 공개 조회
- Cloud SQL에 신규 user·conversation row 생성 확인
🛟유지된 v1 (롤백 대비)▾
- https://minerva2.whosgood.org — Netlify+Supabase 원본 (최소 30일 유지)
- Supabase conversations 테이블 원본 데이터 그대로 보존
- 문제 발생 시 DNS만 되돌리면 즉시 복구
자동 저장 — 대화가 더는 날아가지 않습니다
기존에는 사용자가 우상단 💾 저장 버튼을 직접 눌러야만 대화가 보관되었습니다. 이 때문에 저장을 깜박하거나 탭이 닫히면 수십 분 분량의 대화가 통째로 사라지는 문제가 있었습니다. v0.4.2에서는 두 겹의 자동 저장 구조를 도입했습니다. 첫째, 로그인하지 않은 사용자도 이 브라우저 안에서는 대화가 자동으로 보관되며(localStorage), 다음에 같은 현자 페이지로 돌아오면 '이전 대화를 자동으로 불러왔습니다' 배너와 함께 그대로 이어서 대화할 수 있습니다. 둘째, 로그인한 사용자는 매 응답이 끝날 때마다 Supabase에 자동 동기화되어, 기기·브라우저를 바꿔도 '내 기록(/my)'에서 항상 최신 상태로 이어받을 수 있습니다. 수동 💾 저장 버튼도 그대로 남아있지만 이제는 보조 수단입니다.
주요 변경
- 💾 로컬 자동 저장 — 로그인 여부와 무관, 매 턴 종료 시 브라우저 localStorage에 백업
- ☁️ 원격 자동 동기화 — 로그인 시 매 응답마다 Supabase에 upsert (기기 바꿔도 복원)
- 📜 '이전 대화 자동 불러옴' 배너 — 페이지 재진입 시 표시, '새 대화 시작' 버튼으로 초기화
- 🔄 스트리밍 중에는 저장 보류 — 중간 상태가 덮어쓰지 않도록 보호
- 🔐 Supabase RLS 'UPDATE' 정책 신설 — 본인 대화만 갱신 가능
🛡️계기▾
- 프로덕션에서 20분 분량의 현자 대화가 저장 버튼 미클릭으로 소실되는 사고 발생
- Anthropic API 로그도 prompt logging 비활성화 상태라 복구 불가 확인
- 긴급 대응으로 v0.4.2 자동 저장 체계 도입
⚙️동작 방식▾
- ConversePanel: 마운트 시 localStorage 'minerva_draft_<personaId>' 확인 → 있으면 메시지 복원
- messages state 변경 + !isStreaming 시 localStorage 갱신 (모든 사용자)
- 로그인 사용자는 동일 시점에 Supabase INSERT(최초) / UPDATE(이후) 수행
- '새 대화 시작' 클릭 시 draft 제거 + conversation id 초기화
현자 대화 자연스러움 개선 — 되물음 30% 쿼터 제거
현자가 매 응답마다 사용자에게 질문을 되돌리는 빈도가 기계적이라는 피드백을 반영했습니다. 기존 공통 헌장에 있던 '되물음 비율 30% 이상 유지' 규칙을 제거하고, 되물음은 대화의 결을 따라 자연스러울 때만 사용하도록 바꿨습니다. 사용자가 자기 생각을 풀어놓을 때는 경청하고, 현자의 관점·경험·원전의 지혜를 담담히 내어놓는 방향으로 이동했습니다. 소크라테스처럼 문답이 고유 방법인 현자는 여전히 자연스럽게 질문을 이어가고, 최제우·공자·노자 등은 자기 경험과 비유로 이야기하기 좋아졌습니다.
주요 변경
- 🗣️ 공통 헌장에서 '되물음 30% 쿼터' 규칙 삭제 — 질문은 강제 할당이 아니라 자연스러운 결을 따름
- 🧘 현자의 관점·경험·원전의 지혜를 담담히 이야기하는 모드 강화
- 📜 소크라테스의 문답법 고유성은 그대로 유지 (현자별 정체성 프롬프트에서 개별 보존)
- ✨ 최제우·공자·노자 등 민중적·비유적 현자의 말맛이 더 살아남
로그인·대화 저장·내 기록 · 전역 헤더
현자와 나눈 깊은 대화를 '지금 이 순간'에만 머물지 않고, 언제든 다시 열어볼 수 있도록 저장 기능을 도입했습니다. Supabase 기반으로 Google·카카오 소셜 로그인을 붙이고, 전역 헤더를 새로 짜 우상단에서 로그인 상태를 항상 확인할 수 있게 했습니다. '내 기록' 페이지에서는 제목 검색·현자별 필터·제목 편집·삭제까지 관리 가능합니다. 로그인하지 않아도 대화는 그대로 이용할 수 있으며, 저장 버튼을 누르는 순간 로그인이 안내됩니다.
주요 변경
- 🔐 Google · 카카오 소셜 로그인 (Supabase Auth · OAuth 2.0 + OIDC)
- 💾 대화 저장 — 모든 메시지 · 현자 · 다중 관점 응답까지 구조화된 JSON으로 보관
- 📜 내 기록 페이지 (/my) — 제목 검색 · 현자별 필터 칩 · 인라인 제목 편집 · 삭제
- 🧭 전역 헤더 · 우상단 사용자 메뉴 — 모든 페이지에서 로그인 상태 항상 확인
- 🔔 토스트 알림 — 저장·삭제·로그아웃 등 주요 행동에 즉각 피드백
- 📄 Markdown 내보내기 — 대화 전체를 .md 파일로 다운로드
🔐계정·보안▾
- Google OAuth 2.0 로그인
- 카카오 OAuth 로그인 (profile_nickname scope · 비즈 앱 전환 불필요)
- 세션 자동 갱신 미들웨어 + Row Level Security로 본인 대화만 접근
- 로그아웃 시 즉시 세션 종료 + UI 동기화
💾데이터·저장▾
- Supabase PostgreSQL 연동 (conversations 테이블)
- 첫 질문 60자 자동 제목 생성 — 추후 인라인 편집 가능
- 저장 전 localStorage에 임시 보관 → 로그인 후 자동 저장
- RLS 정책: 본인 user_id만 select/insert/update/delete
🎨UI · UX▾
- 전역 GlobalHeader — 로고 · 메뉴 · 로그인 상태 (모든 페이지 공통)
- UserMenu 드롭다운 — 아바타(이니셜) · 이름 · 내 기록 · 로그아웃
- 홈 히어로 CTA 로그인 상태별 변형 (비로그인: 로그인 안내 / 로그인: 내 기록 바로가기)
- Portal 기반 AuthModal — 어떤 페이지 위에서도 상단 가림 없이 정확히 표시
- 토스트 알림 시스템 (성공·오류·안내 3톤)
- 대화 카드 hover 시 골드 좌측 바 · 캡션 웨이트 300으로 정보 위계 강화
대화 주제 개방 · 조율자 명칭 통일
휴담는 인생 전반에 대한 대화 플랫폼입니다. 초기 설계에서 정치·선거를 금지 주제로 설정했지만, 이는 지나치게 제한적이었습니다. "민주주의란 무엇인가", "선거에서 어떤 기준으로 사람을 뽑아야 하는가" 같은 질문은 철학·가치관·삶의 방향과 깊이 연결된 인생 질문입니다. 이번 업데이트로 정치·선거 주제 차단을 해제하고, 모든 인생 질문에 현자의 지혜로 응답할 수 있게 했습니다. 또한 "지휘자" 표현을 "조율자"로 통일해 휴담의 역할을 더 정확하게 표현했습니다.
주요 변경
- 🗳️ 정치·선거 주제 차단 해제 — 민주주의·가치관·선택 기준 등 인생 질문으로 응답
- 🎼 "지휘자" → "조율자" 전면 교체 — 휴담의 역할 표현 일관성 확보
휴담 정체성 재정의 · 업데이트 이력 페이지 신설
v0.2에서 휴담가 멀티에이전트 오케스트레이터로 격상되면서, 기존 "단일 엔진"이라는 기술적 용어는 더 이상 맞지 않게 되었습니다. 휴담를 "지혜의 여신 · 10인 현자를 부르는 조율자"로 재정의하고, 사용자가 플랫폼 변화를 직접 확인할 수 있도록 업데이트 이력 페이지를 신설했습니다.
주요 변경
- 🎼 휴담 정체성 재정의: "단일 엔진" → "지혜의 여신 · 10인 현자를 부르는 조율자"
- 📜 업데이트 이력 페이지 신설 (/changelog) — 푸터에서 접근 가능
- 🏛️ About 페이지에 "휴담의 3가지 모드" 섹션 추가 (변신·다중·특정)
- 🏷️ 홈·About·Personas 푸터에 현재 버전 뱃지 + 이력 링크 추가
영혼의 대화 · 10인의 현자 · 멀티에이전트 오케스트레이터
김종민 의원이 직접 프로토타입을 테스트한 후 "소셜 마인드 취지에 딱 맞다"는 피드백을 주셨고, 동시에 세 가지 중요한 지시를 추가하셨습니다 — "영혼, 영혼, 영혼" 3회 반복 강조, 필수 현자 3인(노자·최제우·니체) 추가, 그리고 "AI는 단순 중재자가 아니라 앵커·링커·참여자 역할"이라는 철학적 확장. 이 세 지시를 한 번에 구현하면서, 휴담를 진정한 멀티에이전트 오케스트레이터로 격상시켰습니다.
주요 변경
- 🆕 현자 3인 추가: 노자(도가)·최제우(동학)·니체(실존) — 총 10인 현자 체계
- ✨ "영혼의 대화" 메타포 전면 채택 — 홈 히어로·About·시스템 프롬프트 전반
- 🧭 교양·공감·연결 3가치 구조 명시
- 🎭 휴담 변신 모드 + 다중 관점 모드 도입 (멀티에이전트)
- 🛡️ 위기 감지 이중 레이어 도입 (키워드 + LLM 맥락 감지) — v2.2.0에서 제거됨
- 🏛️ 스티브 잡스의 "소크라테스와 점심" 인용 — 휴담의 가치 제안
👥새 현자 3인▾
- 🌊 노자 — 도덕경 81장, 무위자연·반자도지동·상선약수
- ☯️ 최제우 — 동경대전·용담유사, 인내천(人乃天)·시천주·유불선 통합
- 🦅 니체 — 짜라투스트라·선악의 저편 외 5권, 영원회귀·초인·운명애
🧠멀티에이전트 아키텍처▾
- 오케스트레이터 신설 (lib/orchestrator.ts) — Claude Sonnet 기반 주제 분석
- confidence score 산출로 모드 자동 분기 (0.70 기준)
- 변신 모드: 휴담가 주제에 가장 맞는 현자로 변신해 답변
- 다중 관점 모드: 주제가 모호할 때 3인 현자 병렬 호출 → 카드 병치 UI
- 10인 현자별 상세 시스템 프롬프트 (COMMON_CHARTER + SAGE_IDENTITY)
🎨UI / UX▾
- 홈 메인 문구: "인생에 대한 대화" → "영혼의 대화" (서브헤드로 보존)
- 홈 하단 3블록: 왜 휴담인가 → 교양·공감·연결
- About 페이지 대폭 확장 — 영혼의 대화 본질·3가치 카드·국풍 아이덴티티
- 스티브 잡스 인용 섹션 추가 — "잡스가 원했던 그 대화를 오늘의 당신에게"
- 다중 관점 카드 UI: 현자별 심볼·이름·전통 + 응답 카드 그리드
- 변신 배너: "🦉 → 🌊 휴담가 노자의 목소리로 답합니다"
🛡️안전 · 원칙▾
- CRISIS_KEYWORDS 보강 (사라지고 싶다·짐만 되는·끝내고 싶다 등)
- 오케스트레이터 레이어 위기 맥락 감지 (암묵적 신호 포함)
- 정치·선거 주제 자동 우회 (routing_refused)
- COMMON_CHARTER에 앵커·링커 역할 명시
배포 안정화 · 한글 경로 우회 절차 확립
주요 변경
- Netlify 배포 시 Google Drive 한글 경로 이슈 해결
- c:/tmp 영문 임시 경로 경유 배포 파이프라인 문서화
- ANTHROPIC_API_KEY Netlify 환경변수 설정 완료
- 개발매뉴얼 v0.1 부록 D에 배포 절차 기록
휴담 플랫폼 프로토타입 첫 배포
김종민 국회의원이 2026-04-08 제안하고 4-10 통화로 구체화한 "휴담 플랫폼" 구상을 3일 만에 프로토타입으로 구현했습니다. Claude Sonnet 4.6 기반 SSE 스트리밍 대화, 7인 현자 선택, 위기 키워드 감지, 모바일(iPhone 12) 반응형 대응까지 포함된 엔드-투-엔드 프로토타입.
주요 변경
- 🎉 프로토타입 최초 배포 (https://minerva2.whosgood.org)
- 👥 7인 현자: 소크라테스·공자·장자·원효·다산·아우구스티누스·키에르케고르
- 🤖 Claude Sonnet 4.6 기반 SSE 스트리밍 대화
- 📱 iPhone 12 모바일 반응형 (h-[100dvh] · safe-area · 16px textarea)
- 🚨 위기 키워드 감지 → 1393 · 1577-0199 즉시 라우팅
- 🎨 NanumSquare Neo 단일 폰트 · ink/parchment/gold 디자인 토큰
🛠️ 프로토타입 진행 상황
현재 휴담은 프로토타입 단계입니다. 피드백을 받아 계속 진화하고 있으며, 이 페이지에 모든 주요 변경 사항이 기록됩니다.
문의: 김종민 · 윤덕찬