스코프 키
기억을 나누는 기준이 되는 키입니다.flow_idFlow 단위로 나눕니다. 해당 Flow를 쓰는 모든 실행이 같은 기억을 공유합니다.thread_id대화 단위로 나눕니다. 보통flow_id와 함께 써서 대화마다 기억을 따로 둡니다.user_id사용자 단위로 나눕니다. 사용자마다 기억이 따로 쌓입니다.- 커스텀 키 위 셋 말고도 호출에 함께 보내는 값이면 키가 될 수 있습니다. 예:
org_id
thread_id를, 호출자가 user_id를 채우는 식입니다.
그래서 커스텀 키에는 호출에서 보내는 이름을 그대로 넣어야 합니다. 호출 쪽에서 org_id를 보내고 있다면 커스텀 키에도 org_id를 넣습니다. 호출에 없는 organization_id를 넣으면 스코핑이 되지 않습니다.
키를 하나도 쓰지 않으면 전역이 되어, 모든 실행이 하나의 저장소를 공유합니다.
스코프 키 조합
스코프 키는 여러 개를 조합할 수 있고, 조합한 결과가 하나의 저장 단위가 됩니다.flow_id와 thread_id를 함께 쓰면 대화 하나가 저장 단위가 되고, 여기에 user_id까지 더하면 같은 대화라도 사용자마다 따로 저장됩니다. 키를 더할수록 저장 단위가 작아집니다.
메모리 공간 설정에서 다음 중 하나를 선택합니다. 앞의 넷은 자주 쓰는 조합을 미리 담아 둔 프리셋입니다.
- 세션
flow_id와thread_id - 유저 장기기억
user_id - Flow 공유
flow_id - 전역 키 없음
- 키 직접 조합
flow_id,thread_id,user_id중 필요한 것을 선택하고, 커스텀 키를 만들어 같이 조합할 수도 있습니다.
접근 제어
스코프가 저장을 나눈다면, 접근 제어는 읽기를 통제합니다. 이 메모리 공간에 접근할 수 있는 사람을 제한하고, 접근한 사람에게 보여 줄 항목을 정합니다. 파티션 키(개인화) 기준이 될 값을 하나 정하면, 호출자는 자기 값에 해당하는 항목만 봅니다. 비워 두면 모두가 같은 항목을 봅니다.안 함, 유저별(user_id), 조직별(org_id), 고객사별(client_id) 중에서 선택하거나 커스텀 클레임을 직접 넣습니다.
필요 권한(게이트) 조건을 걸어 접근 자체를 막습니다. 조건을 통과하지 못한 호출은 이 메모리 공간을 읽지 못합니다. 각 규칙은 param + 연산자(in / eq) + 허용값 목록 형태입니다. 관리자만을 누르면 user.permission in admin, owner 규칙이 바로 만들어지고, + 규칙으로 조건을 더 추가할 수 있습니다. 조건이 여럿이면 모두 통과해야 접근됩니다.
디버깅하는 법
Agent 답변에 다른 스코프의 기억이 섞여 나온다면 이렇게 확인합니다.- 트레이스의 메모리 작업을 봅니다. 모든 읽기/쓰기가 스코프와 함께 기록됩니다.
- 의도보다 넓은 스코프로 쓰인 항목을 찾습니다.
- 메모리 공간 설정 탭의 접근 섹션에서 파티션 키와 필요 권한이 의도대로 걸려 있는지 확인합니다.