furniture-expert × GPT 음성대화 연동 — A안 (Plus 하이브리드) 설명 + 구현계획
0. 배경 (왜 이 작업인가)
페페 지시: 음성대화는 GPT가 최고 → furniture-expert를 실제 사람처럼 음성으로 교육·논의하는 비중이 클 것. GPT에 MCP를 달아 대화형 작업 전담.
조사로 확정된 사실 (2026-07 웹 실측)
- ChatGPT 음성모드는 커스텀 커넥터(MCP) 호출 불가 — OpenAI 플랫폼 제한, 우회 불가. 커넥터는 텍스트 챗에서만 작동(Developer Mode).
- 2025-11 업데이트로 음성모드가 별도창이 아니라 같은 대화방 안에서 돌아감 — 음성·텍스트가 한 스레드, 컨텍스트 공유. ← 이게 A안의 열쇠.
- Realtime API(음성 중 실시간 MCP 툴콜 가능)는 별도 크레딧 종량 전용 — Plus 구독으로 못 씀. 시간당 $3~6.
방안 비교 (페페 질문 답)
| 방안 | 비용 | 음성 품질 | KB 접근 | 판정 |
|---|---|---|---|---|
| A. Plus 하이브리드 | 0원 | GPT 고급음성 그대로(하루 수 시간) | 음성 전·후 텍스트 한 줄로 | ✅ 채택 |
| B. 자체 음성 래퍼 (Whisper+웹자동화) | 0원 | 턴제, 지연 3~10초 | 가능 | 보류(부자연) |
| C. Realtime API 자체 음성앱 | $3~6/시간 | 진짜 실시간 | 음성 도중 자동 | 나중 확장 옵션 |
| ChatGPT 앱을 자체앱으로 확장 | — | — | — | ❌ 불가(공식 앱 확장 API 없음) |
전략 = A로 시작(비용 0), 서버는 C도 바로 붙게 설계 → 음성 도중 실시간 조회가 아쉬워지면 화면 하나만 추가.
1. A안이란 무엇인가 (쉬운 설명)
한 줄: ChatGPT 앱을 그대로 쓴다. 새 앱 안 만든다. 미니PC에 "가구지식 창고 서버"를 세워두고, ChatGPT가 거기 접속하게 연결만 해준다.
비유: 지금 폰 채티(claude.ai)가 미니PC user_brief를 읽고 메모 남기는 커넥터 — 페페가 직접 등록했던 그것과 완전히 같은 방식. A안 = 그걸 ChatGPT용으로 하나 더, 내용물만 가구 KB 10권.
[페페 폰/PC ChatGPT 앱] ←─인터넷(HTTPS+토큰)─→ [미니PC 가구지식 서버]
음성/텍스트 대화 ├ 가구 KB 00~09 (읽기)
├ "배운 것" 보관함 (쓰기)
└ 논의 메모함 (쓰기)
페페 사용 장면 (매일)
- 폰 ChatGPT → "가구전문가" 프로젝트 방 → 새 대화
- 🎤 음성 버튼 누르고 그냥 말함 — 평소 지피티 음성대화 그대로. GPT는 프로젝트 지침에 심어둔 페페 공장 사양(콘피마트 직결·CNC보링·풀오버레이·상판900·신발장380·프로파일 탭매입…)을 알고 대답
- 상세 수치 필요하면 텍스트 한 줄: "KB에서 프로파일 자료 읽어와" → GPT가 미니PC에서 KB-06을 가져와 대화방에 로드 → 이후 음성 대화에서 그 내용 보며 대답
- 페페가 새 지식을 가르쳤으면 대화 끝에: "오늘 내용 저장해" → GPT가 미니PC 보관함(학습후보 큐)에 적재
- 코디가 나중에 보관함 열어 페페 승인 받고 정식 KB 반영 (GPT는 KB 직접 수정 못 함 — 음성 오인식·환각이 KB 오염 못 하게)
됨 / 안 됨
- ✅ 음성 자유 교육·논의 (Plus 고급음성, 하루 수 시간 = 충분)
- ✅ GPT가 공장 사양 알고 대답 (프로젝트 지침)
- ✅ 상세 KB 보며 대답 (음성 시작 전 "읽어와" 한 줄)
- ✅ 배운 내용 미니PC 저장 ("저장해" 한 마디)
- ❌ 음성으로 말하는 도중 GPT가 알아서 KB 뒤지기 — 이것만 안 됨(플랫폼 제한). 필요해지면 C 확장.
데이터 흐름 (P3 자가학습과 연결)
음성 논의 → GPT 요약 → propose_kb_update
→ 미니PC learn_candidates.json (pending 상태)
→ P3 검토페이지(furniture-learn.html, 추후 구현)에서 페페 승인/거부/댓글
→ 승인분만 KB *.md 반영+커밋
→ 코디 서브에이전트(P1)·직원챗봇(P2)·다음 GPT 대화가 갱신된 KB 사용
grillme 확정 3결정 반영: ① 음성 브리지를 P3보다 먼저(후보 큐가 P3 입력이 됨) ② 폰+PC 어디서나(Funnel HTTPS) ③ KB 반영은 검토 큐 경유.
2. 구현 계획 (코디 작업)
2-1. furniture-mcp 서버 — C:\dev\tools\furniture-voice\server.py (신규)
골격 전체 재사용 = C:\dev\tools\user-brief-mcp\server.py(FastMCP streamable-http + TransportSecuritySettings allowlist + BearerAuth 미들웨어 + .token 파일 + 포트점유 watchdog + --selfcheck). 새 토큰 별도 발급.
MCP 툴 5개:
| 툴 | 동작 |
|---|---|
| read_factory_lens() | KB-00(페페 공장 확정사양) 전문 반환 |
| list_kb() | KB 00~09 목록+한줄설명 |
| read_kb(module) | 번호/이름으로 KB 파일 반환(화이트리스트 — user-brief _projects() 경로탈출 차단 패턴) |
| propose_kb_update(module, title, content, source_note) | C:\dev\user_brief\projects\furniture-expert\learn_candidates.json에 {id, ts, source:"gpt-voice", module, title, content, source_note, status:"pending"} append. P3 파이프라인(source:"selflearn")과 스키마 공유 |
| log_discussion(topic, notes) | user_brief/inbox/gpt-furniture-YYYY-MM-DD.md append(채티 inbox 회수 관례 동일 — 코디가 세션 시작 시 회수) |
KB 원본 = C:\dev\user_brief\projects\furniture-expert\kb\*.md (00~09 실재 확인 완료).
2-2. 공개 노출 + 상시화
- Funnel 경로 추가:
tailscale funnel --set-path /furniture http://127.0.0.1:8791→https://poin-mini.tailc5d3c1.ts.net/furniture/mcp(기존 /mcp=user-brief 8788 영향 없음. 구현 시funnel status먼저 확인) - 포트 8791(8788=user-brief, 8790=missav, 8799=devplan 회피 — 가용 확인 후 확정)
run_server.vbs복제 + schtasks 5분 watchdogfurniture_voice_mcp(user_brief_mcp와 동일 패턴)
2-3. ChatGPT 세팅 (1회)
- 커넥터 등록: ChatGPT 설정→커넥터→Developer Mode→커스텀 커넥터(URL+bearer 토큰). 페페 계정 필요 — 코디가 CDP 패턴(
remote-real-chrome-gui-cdp: schtasks /it Session1 크롬+9222→페페 로그인→connect_over_cdp)으로 보조 - "가구전문가" 프로젝트 생성 + 지침 입력: 코디가 문안 작성(소스 =
C:\Users\delix\.claude\agents\furniture-expert.md0절 렌즈 축약 + "정확 수치는 read_kb 호출" + "페페가 가르친 지식은 propose_kb_update로 저장, 논의는 log_discussion" + 한국어·현장용어 병기)
2-4. C 확장 대비 설계 (이번엔 구현 안 함)
- 서버는 표준 MCP(streamable-http)라 Realtime API session config에 URL만 넘기면 그대로 붙음 — 추가 작업 시
voice.html+ephemeral token 엔드포인트만 더하면 됨. 이번 범위 밖.
2-5. 시드·devplan 갱신
projects/furniture-expert/handoff.md: 인터페이스 축 갱신(P1 개발서브에이전트✅ / P-voice GPT 브리지 / P2 직원챗봇 / P3 자가학습—음성이 채우는 큐 소비)- devplan
C:\dev\devplan\furniture-expert.html: GPT 브리지 카드+아키텍처 추가 - devplan 상세 페이지 신설
C:\dev\devplan\furniture-gpt-bridge.html: 이 계획서(A안 쉬운 설명·방안 비교·사용 장면·아키텍처·구현계획) 전문을 라이트+테라코타 테마로 게시, furniture-expert.html에서 링크. 설명 md 원본은projects/furniture-expert/gpt-voice-bridge-plan.md로 user_brief에 보존+manifest 등록 - 루트
HANDOFF.mdNOW + user_brief 로컬 커밋 + broker notify
3. 검증
python server.py --selfcheck— 툴 5개 assert(화이트리스트 차단·후보 JSON 스키마·inbox append·경로탈출 차단)- 로컬 MCP 핸드셰이크: curl 8791 initialize/tools-list 200, bearer 없이 401
- Funnel 경유 외부 HTTPS 동일 핸드셰이크
- 실사용 E2E: ChatGPT 텍스트 챗(커넥터 등록 후)에서 "신발장 몸통 깊이?"→read_kb 툴콜+380 응답, "…KB에 추가해줘"→learn_candidates.json에 pending 항목 실재 확인
- 페페 실측: 폰 ChatGPT 프로젝트 방에서 음성 대화 + KB 로드 + 저장 육안 (음성·계정이라 코디 자동검증 불가 항목)
4. 파일 목록
| 파일 | 작업 |
|---|---|
C:\dev\tools\furniture-voice\server.py |
신규 (user-brief-mcp 골격 재사용) |
C:\dev\tools\furniture-voice\{.token,run_server.vbs,README.md,project_instructions.md} |
신규 |
C:\dev\user_brief\projects\furniture-expert\learn_candidates.json |
신규 (P3 공용 큐) |
projects/furniture-expert/handoff.md · C:\dev\devplan\furniture-expert.html · 루트 HANDOFF.md |
갱신 |
5. 순서 (notify-step 5단계)
- 서버+툴 5개+selfcheck+로컬 핸드셰이크
- Funnel 경로+schtasks 상시화+외부 핸드셰이크
- 커넥터 등록 보조(CDP)+프로젝트 지침 문안
- ChatGPT 실사용 E2E(read_kb·propose 실증)
- 시드·devplan 갱신+커밋 → 페페 음성 실측 안내