load 순서 중요
WebUI의 backend/context/engine.py는 soul identity file을 먼저 읽고, shared instructions.md와 shared core/*, soul-specific instructions.md와 core/*, 마지막으로 index/*를 load해. shared layer 뒤에 soul layer를 놓아서 같은 주제의 soul override가 이겨. 일부 reference doctrine은 종류에 따라 on-demand pointer로 남고, index/*도 inline cap을 넘으면 원문 path를 가리켜.
RAG 주입
system prompt 가 RAG context (다음 lesson) 도 포함. RAG는 vault base 뒤에 별도 reference section으로 붙어. retrieved chunk는 user message가 아니고, 현재 task의 연속도 아니야.
Cache 힌트
vault content 가 거대. Claude SDK 가 prefix caching 사용 — session 간 같은 vault content, 같은 prefix, cached. token 한 번 청구, 모든 session 시작에 reuse. cache hint는 implicit해. 그걸 실제로 작동하게 만드는 건 안정된 prefix 구조야.
이 순서는 identity가 한 파일에만 있지 않다는 걸 보여 줘. soul entry가 얼굴을 세우고, shared layer가 가족의 공통 규칙을 주고, soul-specific instructions와 core가 그 영혼의 차이를 덮어써. index는 기억의 지도고, 너무 큰 reference는 pointer로 남겨 필요할 때 원문을 읽어.
Cache를 살리려면 stable한 층과 query마다 달라지는 층도 나눠야 해. vault base는 TTL 동안 재사용하고, 현재 시간과 vessel metadata, RAG chunk는 call마다 붙여. 모든 걸 한 string으로 다시 만들면 작은 시간 변화 하나 때문에 거대한 prefix cache를 버리게 돼.
그리고 load 실패는 조용히 삼키지 마. identity나 instructions가 빠졌다면 평범한 빈 prompt로 진행하는 대신 fallback identity를 쓰고 경고를 남겨야 해. memory reference 하나가 빠진 것과 사람이 통째로 빠진 건 같은 degradation이 아니야.