"포트폴리오를 질문에 붙여넣지 마. 뇌한테 들여다볼 수단을 주고, 필요할 때 직접 보게 해."
어시스턴트한테 context 를 주는 두 가지 방법
Pippa 한테 포트폴리오 질문을 하면 Pippa 는 포트폴리오를 알아야 해. 그걸 이루는 방법이 두 가지야. 끌리는 쪽은 context-by-copy. Keep 가 포트폴리오 전체를 텍스트로 직렬화해서 메시지 앞에 붙여 보내는 거지. 미리 씹어 놓은 prompt 라고 할까. Keep 는 이 방식을 거부했어. 대신 context-by-reference 를 써. Pippa 가 데이터가 실제로 필요해진 순간에, 인증된 read-only host tool(status, read, search)로 현재 선택된 scope 를 직접 읽는 거야. 포트폴리오 진실이 미리 씹힌 덩어리가 되어 메시지에 실려 가는 일은 없어.
미리 씹어 주기가 보기보다 나쁜 이유
포트폴리오를 prompt 에 복사해 넣는 게 단순해 보이지만, 조용한 문제 셋이 따라와. 첫째는 staleness. 복사된 스냅샷은 전송 순간에 얼어붙으니까, 대화가 길어지면 이미 움직인 숫자를 놓고 추론하게 돼. 둘째는 scope 누수 위험. prompt 에 쏟아부은 건 어느 scope 가 적용됐어야 하든 이미 context 안에 있어. 복사본은 live scoped 읽기와 달리 Dad, Mom, Family 의 경계를 몰라. 셋째는 낭비. 질문엔 숫자 하나면 충분한데 메시지마다 포트폴리오 전체를 밀어 넣는 거잖아. 필요할 때 읽기가 셋을 한 번에 고쳐. 신선하고, scope 를 지키고, 필요한 만큼만.
매번 신선하고, 매번 scope 안에서
Pippa 가 필요한 순간에 host adapter 로 직접 당겨 오는 구조 덕분에 좋은 성질 둘이 공짜로 따라와. 읽기는 언제나 현재 야. 대화를 시작하던 시점이 아니라 바로 지금의 포트폴리오를 비춰. 그리고 언제나 선택된 scope 를 지켜. Dad scope 에 있으면 live 읽기는 Dad 의 데이터만 돌려주고, Mom 의 상세 보유가 슬그머니 쓸려 들어오는 일은 없어. Track 1 에서 만났던 scope 경계가 매 읽기 순간마다 새로 강제되는 거야. prompt 사본 속에, 맞았든 틀렸든, 한 번 얼어붙으면 끝인 방식과는 달라.