긴 대화와 사이드바, 많은 표가 있는 페이지를 통째로 대화에 넣으면 정작 필요한 입력창을 찾기 어려워진다. 나는 관찰을 제한된 목록과 검색으로 나눴다. 작게 돌려주는 일만큼 중요한 것은 잘린 자료를 완전한 페이지로 착각하지 않는 일이었다.
많이 보내는 것보다 필요한 대상을 남긴다
현재 후보 목록은 일반 링크와 버튼뿐 아니라 편집 가능한 입력과 선택 항목을 모은다. 긴 탐색 사이드바가 실제 입력창을 앞에서 밀어내지 않도록 편집기와 일반 입력의 우선순위를 둔다. 이름을 잘 만든 뒤에도 목록의 순서와 한도가 결과에 영향을 준다.
우선순위는 업무 목적의 확정이 아니다. 위에 나온 항목을 에이전트가 무조건 선택해도 된다는 뜻은 아니다. 필요한 역할과 이름을 실제 요청에서 정하고 검색해야 한다. 목록을 작게 만드는 최적화가 첫 번째 대상을 누르는 추측으로 이어지지 않게 구별했다.
목록 한도와 본문 한도는 따로 있다
한 프레임에서 대상을 제한해도 본문과 표가 계속 커질 수 있다. 현재 구현은 요소 반환 수와 텍스트 길이, 표·행·열, 제목 목록에 각각 한도를 둔다. 드라이버가 여러 프레임을 합칠 때도 전체 텍스트와 표·제목의 별도 제한이 있다.
편의 page API는 다시 더 짧은 snapshot을 만든다. 같은 페이지라도 원래 관찰과 에이전트에게 보여 준 요약은 범위가 다르다. 나는 한 단계의 한도를 페이지 전체의 완전 수집 기준으로 소개하지 않는다. 자료가 어느 계층에서 얼마나 남는지 알아야 부족할 때 맞는 읽기 입구를 선택할 수 있다.
검색 결과에도 전체와 일치 수를 남긴다
selection에는 total·matched·offset·limit·hasMore가 있다. 전체 후보 중 검색과 맞은 수와 이번에 반환한 범위를 구별한다. 본문 검색도 일치 위치 근처를 제한해 보여 주며 textMatched와 textTruncated 같은 정보를 남긴다.
모든 종류의 생략이 하나의 플래그에 완전히 담긴다고 확대하지 않는다. 프레임별 텍스트와 합산 뒤 제한은 적용 위치가 다르다. 호출자는 반환 단계와 제한을 함께 봐야 한다. 검색 결과가 비었다는 사실만으로 아직 읽지 않은 프레임과 페이지 전체에 대상이 없다고 단정하지 않는 것이 중요했다.
잘린 목록에서 유일하다고 판단하지 않는다
page locator는 새 find의 결과가 hasMore면 TARGET_QUERY_TRUNCATED로 멈춘다. 이번 목록에 버튼이 하나만 보이더라도 아직 반환하지 않은 일치 항목이 있을 수 있어서다. 유일성은 현재 조각의 개수만 세는 것으로 증명되지 않는다.
다음 행동은 검색어와 역할·링크를 더 구체화하거나 필요한 프레임과 범위를 읽는 것이다. 한도를 크게 올려 모든 문제를 해결하려 하면 자료 비용과 불확실성이 다시 늘어난다. 작게 찾기와 더 읽기의 절차를 함께 제공해야 제한이 실제 사용의 막다른 길이 되지 않는다. 추가 조회 중에도 화면은 바뀔 수 있으므로 서로 다른 관찰 조각을 무조건 이어 붙여 현재의 완전한 목록이라고 판단하지 않는다.
표를 읽는 범위도 데이터 의미와 맞춘다
표는 실제 table뿐 아니라 역할이 table·grid·treegrid인 구조를 찾고 행과 셀을 정리한다. 중첩 표의 행과 셀이 바깥 표에 섞이지 않게 가까운 소유 구조를 확인한다. 그래도 정해진 행·열 한도가 있으므로 전체 장부를 읽었다고 볼 수는 없다.
업무상 합계가 필요하다면 일부 표를 보고 전체 금액으로 계산하지 않아야 한다. 페이지 읽기와 원본 데이터 내보내기는 다른 계약이다. 이 글은 현재 텍스트·요소·표 구성과 locator의 잘림 거절 코드를 읽었다. 실제 외부 장부를 내려받거나 새 수집 완전성 시험을 한 결과는 아니다.
생략을 설명하는 것도 인터페이스의 일이다
사용자가 보는 현황판도 모든 데이터를 한 화면에 넣을수록 좋은 것은 아니다. 필요한 질문을 먼저 보여 주고 더 읽을 길을 남기는 편이 편할 수 있다. 다만 부분 자료의 숫자가 전체처럼 보이지 않게 범위와 기준을 표시해야 한다.
북극성에서도 같은 원칙을 적용했다. 작게 읽는 기능과 생략을 알아차리는 기능이 함께 있어야 에이전트가 필요한 다음 조회를 고를 수 있다. 나는 “짧아졌다”는 결과보다 “무엇을 아직 모르는지 알 수 있다”는 조건을 중요하게 봤다. 제한된 관찰은 비용 절감만이 아니라 정확한 후속 판단을 위한 계약이었다.