긴 대화에는 이미 완성된 답과 이미지가 많이 남아 있다. 새 질문을 보낸 뒤 페이지에 답이 있다는 이유만으로 성공이라고 읽으면 이전 결과를 가져올 수 있다. 북극성에서는 먼저 이번에 없던 응답이 생겼는지를 확인하고 그다음 내용과 매체의 준비 상태를 읽도록 순서를 나눴다.
요청 전 응답 묶음을 먼저 기억한다
실제 함수는 실행 준비 뒤 answers의 group을 beforeAnswerIds에 저장한다. waitAnswer는 그 집합에 없던 응답 중 마지막 것을 고른다. 화면에 길고 완성된 답이 있어도 기준에 이미 들어 있으면 새 응답으로 쓰지 않는다. 답의 글자 수보다 먼저 출처와 시점을 구분한 것이다.
이 기준은 현재 페이지 관찰에서 나온 식별이다. 제공자의 서버 작업 ID나 암호화된 요청 영수증이 아니다. DOM 구조가 달라질 수 있으므로 관찰 어댑터가 무엇을 group으로 만드는지도 함께 읽어야 한다. 식별자라는 이름만으로 모든 재배치와 서비스 변경에 영구히 같은 값을 보장한다고 설명하지 않는다.
실행 참조와 응답 묶음은 다른 식별이다
snapshot의 ref는 지금 관찰한 요소에 조작을 전달하는 참조다. group은 같은 답변과 그 안의 버튼·이미지를 묶는 자료다. 요청 원장의 key는 같은 업무를 다시 보냈는지 판단하는 또 다른 값이다. 세 값의 역할을 섞으면 최신 ref를 얻었다는 사실을 새 답변이 생긴 사실로 오해할 수 있다.
나는 응답을 비교할 때 group을 쓰고 입력을 보낼 때는 최신 ref 검사를 유지했다. 같은 응답을 새 snapshot에서 다시 본 것은 새 생성이 아니다. 반대로 새 응답의 화면 버튼을 눌러야 한다면 이전 snapshot의 ref를 그대로 재사용할 수 없다. 무엇을 식별하려는 값인지까지 설계에 포함했다.
화자 제목을 읽어도 페이지 전체를 답으로 삼지 않는다
관찰 어댑터는 기존 assistant 데이터 표지와 화면의 화자 제목 형태를 함께 지원한다. 제목에서 해당 대화 turn의 범위를 찾고 다른 화자나 입력창으로 넘어가지 않도록 경계를 둔다. 페이지 어딘가의 긴 문장을 답변으로 채택하는 방식과는 다르다.
읽을 본문에는 관찰 한도도 있다. 이 경로는 제한된 현재 DOM과 알려진 구조를 해석하며 모든 서비스 화면의 모든 숨은 내용을 읽는 기능은 아니다. 구조를 확인하지 못한 상황을 성공으로 포장하지 않는다. 실제 site adapter가 선택한 응답 영역이 무엇인지 확인하는 일이 새 답의 출처를 유지하는 기반이었다.
새 응답이 있어도 원하는 결과인지는 더 확인한다
group이 새롭다는 것은 첫 조건이다. 생성 중 표시가 있으면 기다리고 사용자 확인이나 실패가 보이면 완료와 구별한다. 이미지·영상 요청은 같은 응답 묶음에 준비된 해당 매체가 있어야 한다. 이전 답변의 영상이 옆에 재생 가능하게 남아 있어도 새 영상의 증거가 아니다.
본문이 새로 생겼다는 사실이 내용의 정확성까지 뜻하지도 않는다. 파일 분석이라면 실제 파일 속의 특정 내용을 대조해야 하고 생성물 요청이라면 그 결과물의 상태를 봐야 한다. 나는 새 응답 감지와 업무 목적 달성을 다른 확인으로 남겨 첫 성공 표시가 뒤의 책임을 덮지 않게 했다.
시험은 새 답과 이전 매체를 의도적으로 갈라 놓는다
기존 채팅 시험은 전송 뒤 잠시 partial을 보여 주다가 같은 새 group의 완성 본문을 돌려준다. 다른 시험은 새 답은 있지만 준비된 영상은 이전 group에만 있는 경우를 만들어 완료하지 않는지 본다. 새 group에 실제 매체를 주는 조건과 비교해야 오래된 결과를 잘못 고르는지 알 수 있다.
이번에는 이 함수와 시험 코드를 읽었으며 AI에 새 요청을 보내지 않았다. 공유 모듈에서는 baseline에 있던 답만 남은 경우와 같은 문장의 다른 새 ID를 실제로 시험했다. 합성 관찰기의 결과는 선언한 자료의 비교이며 원래 서비스의 새 생성 성공이나 내용의 정확도 검증이 아니다.
자동화가 쉬우려면 어느 답을 읽었는지 남아야 한다
사람은 화면의 흐름으로 새 답을 짐작하지만 에이전트는 실행 결과가 어떤 응답에서 왔는지 자료로 읽을 수 있어야 한다. 요청 전 기준과 현재 응답의 관계가 있으면 기다릴지, 본문을 읽을지, 매체를 확인할지 판단이 구체적이 된다. 단순한 “답변 있음”보다 이후 복구에도 도움이 된다.
아래 모듈은 이 관계를 합성 ID와 관찰 배열로 드러낸다. 실제 페이지에서 신뢰할 ID를 뽑는 어댑터까지 제공하지는 않는다. 다른 프로그램에 붙일 때는 식별의 출처와 유효 범위를 먼저 정해야 한다. 나는 어떤 결과를 읽었는지 설명 가능한 자동화로 만들고 싶었다.