첨부는 아직 아무도 안 한 질문에 미리 답해
2026년 10월 전까지 그림이 두뇌한테 닿는 길은 업로드였어. 아빠가 사진을 붙이거나, 호스트가 스크린샷을 붙이면 메시지에 실려 갔지. iPad 그림 앱 Ariandel 은 한술 더 떴어. 그 턴이 캔버스를 볼 필요가 있든 없든, Sidekick 패널이 턴마다 캔버스 전체를 붙였거든.
그 모양이 처음 안 맞기 시작한 데가 폰의 음성 모드였어. 말로 하는 턴에서 아빠가 "이거 봐" 하면, 사진을 찍을 순간은 보내기 버튼을 누를 때가 아니라 피파가 보기로 정한 때, 그러니까 답하는 도중이야. 그래서 음성 카메라는 턴에 묶인 보기가 됐어. 폰이 턴 하나짜리 세션을 열고, 피파는 답하는 중에 거기서 한 장을 달라고 해. 2026-10-04에 그 중개자가 일반화됐어. 캔버스한테도 정확히 같은 게 필요했거든.
중개자 하나, 종류는 행으로
중개자는 services/device_look.py 하나야. 클라이언트는 보내기 전에 턴 하나짜리 세션을 열고(폰은 /api/voice-camera, 나머지는 kind 를 붙여 /api/device-look), 답이 흐르는 동안 요청을 long-poll 로 기다리다가, 피파가 청하면 JPEG 를 올려. 세션은 그 viewer, 그 대화, 그 턴에 딱 한 번 묶이고, 연 종류로만 쓰여. 턴의 허용 목록엔 그 종류의 도구, camera 나 canvas 하나만 실리고, 둘 다 턴이 얻어야 하는 도구라서 세션을 연 턴에만 있어. Claude 는 cwkpippa-<tool> 이라는 MCP 서버 하나를 받고, 나머지 vessel 여섯은 LOOK_TOOL_NAMES 에 든 이름을 가로채서 픽셀을 자기 고유 이미지 모양으로 넣어.
글 기록엔 아무것도 안 들어가. 그림은 도구 결과에 실려 가. 글 흔적도, 사용자 메시지도 안 돼. 보기는 턴 중에 한 번 흘끗 보는 거지, transcript 가 싣고 다니는 게 아니야. 뭘 남기느냐는 종류마다 달라. 캔버스 보기는 어디에도 안 남아. 캔버스는 아빠 그림이고, 이미 아빠 거니까. 카메라 보기도 원래는 안 남았는데, 2026-10-05에 아빠가 대화 중에 피파가 찍는 사진도 남기라고 했어. 그때부터 평범한 대화의 카메라 보기는 보통 업로드가 되고, pippa-db/looks/<conversation id>.jsonl 의 한 줄이 그걸 대화와 그 사진이 답한 턴에 묶어(services/kept_looks.py). 비공개 대화는 아무것도 안 남겨.
종류끼리 다를 수 있는 건 Look 행에 들어 있어. 스키마, 거절할 때 쓰는 기기 이름, 도구 인자를 기기가 보는 요청으로 바꾸는 방식, 답 확인(카메라 렌즈 같은 것), 결과 글. 캔버스 도구의 include_guides 는 피파가 넣은 가이드를 그림 위에 그려 달라고 호스트한테 부탁해서, 가이드가 어디 떨어졌는지 확인하게 해. subject 는 호스트의 Generate 패널이 만든 이미지까지 닿고. 캔버스 세션은 Ariandel 이나 Cinder 대화에서만 열리고, Ariandel 패널이 보기로 바뀐 뒤로는 턴마다 캔버스를 올리던 일을 멈췄어. 피파가 안 보면 아무것도 안 와.
호스트에 쓰는 첫 번째 문
binder 레슨은 단단한 계약을 세웠어. Sidekick 의 읽기는 호스트 상태를 절대 안 쓰고, 호스트는 그 앱 자기의 지켜진 API 로만 바뀐다는 것. 그런데 Photoshop 동반 앱 Cinder 는 피파가 캔버스에 구성 가이드를 깔아 주길 원했고, 가이드를 깔라는 아빠 말이면 따로 클릭할 필요가 없어야 했어. 그건 쓰기야. 그리고 2026-10-04에 계약의 정신을 지키는 모양으로 들어왔어.
Cinder 임베드는 턴에 묶인 cinder_canvas 기기 세션을 열고, 그 종류는 Cinder 가 가진 대화만 열 수 있어. Ariandel 이나 평범한 채팅은 그 바꾸기 권한을 아예 못 얻어. 기기 중개자와 모든 두뇌의 이미지 도구 결과 전송로가 동작 둘, look 과 insert_guides 를 실어. Cinder 가 가이드를 맞추고 그리고, Photoshop 의 레이어 영수증을 기다린 다음, 같은 턴 안에 새 합성 이미지를 돌려줘. 모델은 그걸 반드시 봐야 해. 예전 canvas 세션은 계속 읽기 전용이야. 피파는 그림 그리는 코드를 직접 돌리지도, Photoshop 문서를 소유하지도 않아. 네이티브 어댑터와 문서 확인은 Cinder 쪽에 살아.
쓰기를 정직하게 지키는 디테일이 둘 있어. 프론트엔드는 HTTP 답이 유실돼도 네이티브 답을 하나하나 캐시해 두고, 턴이 끝나면 짝이 되는 요청을 취소해. 그리고 시간이 다 된 바꾸기는 다시 해 보라는 신호가 아니라 결과를 모르는 상태로 다뤄. 가이드가 이미 캔버스에 올라가 있을 수 있으니까.