원문 캡처 · astralbeam.ai
원문 캡처 · astralbeam.ai

에이전트형 채팅 인터페이스는 답변뿐 아니라 진행 중인 작업, 사용자의 결정, 실행 결과도 정확히 보여줘야 한다. 아래 열 가지 사례는 특정 제품을 녹화한 것이 아니라 실패와 개선 방식을 보여주는 단순화된 시뮬레이션이다.

  • 진행 상황을 설명하지 않는 표시: ‘생각 중’이라는 문구만으로는 모델 응답 대기, 데이터 조회, 도구 실행, 사용자 결정 대기를 구분할 수 없다. 현재 작업과 경과 시간, 다음에 필요한 결정을 표시하고, 근거 없는 진행률 대신 실제 실행 상태를 알려야 한다.
  • 연결이 끊겨 답변이 사라지는 경우: 응답 중 네트워크가 바뀌어도 대화와 메시지의 식별 정보를 보존하고, 받은 내용은 계속 보여줘야 한다. 지원되는 경우 기존 실행에 다시 연결한다. 이어받기가 불가능하면 그 사실을 밝히고 명시적인 재시도 방법을 제공한다. 스트림 재개에는 영속성이 필요하다.
  • 재시도할 때 작업이 중복되는 경우: 서버가 작업을 만들었지만 확인 응답이 브라우저에 도달하지 않으면, 재시도가 작업을 한 번 더 만들 수 있다. 응답 재시도와 작업 반복을 구분하고, 각 논리적 작업에 안정적인 식별자를 부여해 쓰기 작업을 다시 실행하기 전에 결과를 확인해야 한다. Stripe의 멱등성 계약은 안전한 재시도의 구체적인 사례다.
  • 정보가 부족한 승인 요청: “이 작업을 허용할까요?”라고만 묻지 말고 작업 내용, 영향을 받는 기록, 범위, 되돌릴 수 있는지를 알려야 한다. 승인은 정확히 제안된 작업에 연결하고, 에이전트가 계획을 바꾸면 다시 확인을 받아야 한다. 확인 화면이 서버 측 권한 검사를 대신하지는 않는다. AI SDK의 도구 승인 흐름을 참고할 수 있다.
  • 화면에서만 멈춘 작업: 채팅에 ‘중지됨’이라고 표시돼도 백그라운드 도구가 이메일을 계속 보낼 수 있다. 취소 요청이 실제 작업에 전달돼야 하며, 요청과 확인된 취소를 구분해야 한다. 완료된 작업, 취소된 작업, 되돌릴 수 없는 작업을 각각 보여준다. 외부 작업을 중단할 수 없다면 모두 멈췄다고 약속하지 말고 계속 실행 중이라고 알려야 한다.
  • 부분 실패를 감추는 ‘완료’ 표시: 여러 프로젝트 중 일부만 업데이트된 경우, 도구 실행 결과에 따라 항목별 상태와 전체 결과를 표시해야 한다. 완료된 작업은 계속 확인할 수 있게 하고, 안전할 때만 실패한 부분을 재시도하도록 안내한다. 먼저 권한이나 입력을 바꿔야 한다면 그 점을 설명한다.
  • 새 메시지 때문에 읽던 위치를 잃는 경우: 사용자가 이전 내용을 읽고 있다면 새 답변이 도착해도 화면을 맨 아래로 이동시키지 않아야 한다. 사용자가 이미 끝부분에 가까이 있을 때만 새 내용을 따라가고, 그렇지 않으면 현재 위치를 유지하면서 새 답변으로 이동하는 선택지를 제공한다.
  • 전송 실패로 초안이 사라지는 경우: 서버가 전송을 확인하기 전까지 초안을 유지하거나 실패 시 복원해야 한다. 첨부 파일 참조도 보존해야 한다. 초안을 페이지 이동 뒤에도 저장한다면, 공유 기기에서 다른 사람에게 내용이 노출되지 않도록 로그인한 사용자와 대화에 연결해야 한다.
  • 휴대전화 화면에 맞지 않는 데스크톱 결과: 채팅창만 줄이지 말고 도구가 반환한 표와 동작 버튼도 확인해야 한다. 카드와 컨트롤은 화면에 맞게 재배치하고, 실제로 2차원인 표는 별도로 스크롤할 수 있게 한다. 화면 키보드와 확대된 글자도 시험한다. WCAG의 화면 재배치 안내는 좁은 화면과 확대를 함께 고려해야 하는 이유를 설명한다.
  • 화면에는 보이지만 보조 기술에 전달되지 않는 업데이트: 작업이 끝났다는 의미 있는 상태 변화를 알리고, 키보드 포커스를 유지하며, 컨트롤에는 기능을 설명하는 이름을 붙여야 한다. 스트리밍되는 토큰을 매번 알리지는 않는다. 상태 메시지에 관한 W3C 안내는 지나치게 잦은 알림도 피하도록 안내한다.