Chapter 3

UX 디자인

  • 3.1 모달리티
  • 3.2 동기식 대 비동기식 에이전트 경험
  • 3.3 컨텍스트 유지와 연속성
  • 3.4 에이전트 능력 커뮤니케이션
  • 3.5 상호작용 설계에서의 신뢰

아무리 기술적으로 뛰어난 에이전트라도, 사용자 경험이 구리면 아무도 안 써. 에이전트가 성공하려면 사용자에게 힘을 주고, 신뢰를 쌓고, 좌절감을 줄이고, 능력과 한계를 명확하게 전달해야 하거든. 에이전트 UX는 지금 미친 속도로 진화하고 있기 때문에, 특정 UI 패턴보다는 기술이 바뀌어도 유효한 설계 원칙에 집중하는 게 맞지.

모달리티란 에이전트가 사용자와 상호작용하는 방식, 즉 채널을 말해. 텍스트, 그래픽, 음성, 비디오 — 각각 장단점이 다르고, 어떤 걸 고르느냐가 사용자 경험을 근본적으로 바꿔.

텍스트가 가장 기본이고 가장 보편적인 모달리티야. ChatGPT, Claude, 대부분의 에이전트가 텍스트 기반이지. 정밀한 지시가 가능하고, 기록이 남고, 비동기 커뮤니케이션에 적합해. 코드 리뷰, 문서 작성, 데이터 분석 같은 작업에서는 텍스트가 압도적으로 효율적이거든. 단점은 텍스트가 사용자에게 잘 쓰는 능력을 요구한다는 거야. 프롬프트를 잘 쓰는 사람과 못 쓰는 사람의 결과 차이가 크고, 이게 사용자 간 불평등을 만들지. 또한 복잡한 시각 정보를 텍스트로 설명하는 건 비효율적이야.

GUI를 통한 그래픽 상호작용은 에이전트의 상태나 진행 상황을 한눈에 보여줄 수 있다는 게 큰 장점이야. 멀티 에이전트 시스템에서 각 에이전트가 뭘 하고 있는지를 대시보드로 보여주면, 텍스트로 줄줄이 읽는 것보다 훨씬 직관적이지. 선택지를 시각적으로 제시하면 사용자가 "뭘 해야 할지" 고민하는 인지 부하도 줄어들어.

음성 인터페이스는 접근성 측면에서 강력해. 손을 못 쓰는 상황, 시각 장애가 있는 사용자, 키보드 타이핑이 불편한 사용자 모두에게 자연스러운 채널이지. 하지만 치명적인 단점이 있어 — 음성은 일시적이야. 말한 건 사라지거든. 복잡한 정보를 전달하거나, 긴 목록을 나열하거나, 정확한 숫자를 전달하는 데는 부적합해. 특히 음성 에이전트의 턴테이킹(turn-taking) 문제가 중요한데, 사람과 사람의 대화에서는 상대방이 말을 끊어도 자연스럽게 흐름을 이어가는데, 에이전트는 이게 아직 어설프거든.

비디오 모달리티는 가장 풍부한 정보를 전달할 수 있어. 교육이나 온보딩에서 특히 유용하지. "이렇게 하세요"를 텍스트로 열 줄 쓰는 것보다 30초 영상으로 보여주는 게 훨씬 효과적인 경우가 많아. 다만 대역폭을 많이 먹고, 실시간 처리에 컴퓨팅 자원이 많이 필요하고, 접근성 측면에서도 자막이나 오디오 설명을 별도로 제공해야 해.

진짜 강력한 건 이것들을 결합하는 거야. 단일 모달리티보다 멀티모달 접근이 거의 항상 더 나은 경험을 만들어. 음성으로 지시하면서 화면에서 결과를 시각적으로 확인하거나, 텍스트 채팅하면서 에이전트가 차트로 분석 결과를 보여주거나, 코드 에디터에서 텍스트 + 인라인 시각화 + 터미널 출력을 동시에 활용하는 식이지. 핵심은 각 모달리티의 강점을 살려서 조합하되, 사용자가 모달리티 간 전환할 때 맥락이 끊기지 않게 설계해야 한다는 거야.

여기서 하이라이트는 자율성 슬라이더(The Autonomy Slider) 개념이야. 사용자가 에이전트의 자율성 수준을 직접 조절할 수 있게 해주는 건데, 워크플로와 에이전트의 경계는 이분법이 아니라 스펙트럼이거든. 한쪽 끝에는 사용자가 모든 걸 통제하는 "완전 수동" 모드가 있고, 반대쪽 끝에는 에이전트가 알아서 다 하는 "완전 자율" 모드가 있어. Cursor가 좋은 예시야. Tab 자동완성(낮은 자율성)부터 에이전트 모드로 전체 기능 구현(높은 자율성)까지, 같은 도구 안에서 자율성 레벨을 사용자가 선택하지. 핵심 원칙은 이거야 — 자율성은 사용자가 부여하는 권한이지, 시스템이 빼앗는 통제권이 아니야. 신뢰는 이진법이 아니라 스펙트럼이고, 자율성을 높여도 항상 개입/되돌리기가 가능해야 해. "디자인 없는 자율성은 방기처럼 느껴지고, 디자인된 자율성은 힘처럼 느껴진다"라는 표현이 이 개념을 잘 요약해줘.

동기식 경험은 사용자가 요청하고, 에이전트가 처리하는 동안 기다리고, 결과를 받는 패턴이야. 즉각적인 피드백이 장점이지 — 뭘 시키면 바로 반응이 오니까 사용자가 통제감을 느끼거든. 문제는 에이전트가 복잡한 작업을 할 때야. 심층 리서치, 대규모 코드 리팩토링 같은 건 몇 분에서 몇 시간이 걸릴 수 있는데, 그동안 사용자를 화면 앞에 붙잡아두는 건 비합리적이잖아.

비동기식은 "이거 해놔" → 에이전트가 백그라운드에서 작업 → 완료되면 알림 패턴이야. 모델이 **장기 추론(long-horizon reasoning)**을 할 수 있게 되면서 가능해졌지. 하지만 비동기식의 UX 설계는 훨씬 어려워. 진행 상황 전달, 개입 지점 설계, 결과 전달 — 이 세 가지를 잘 풀어야 해.

성공적인 에이전트 제품은 하나의 패턴만 쓰는 게 아니라, 세 가지 패턴을 조합해. 협업(Collaborative) — 실시간 채팅처럼 함께 작업, 임베디드(Embedded) — 기존 워크플로에 자연스럽게 녹아듦, 비동기(Asynchronous) — 백그라운드에서 자율적으로 작업 수행. Claude Code가 좋은 예야. 터미널에서 실시간 대화(협업) + 코드 에디터에 인라인 제안(임베디드) + 백그라운드 에이전트로 장시간 작업(비동기)을 전부 지원하거든.

에이전트가 이전 대화를 기억하는가의 문제도 중요해. 사용자가 매번 처음부터 다시 설명해야 한다면, 그건 에이전트가 아니라 그냥 매번 새로 만나는 낯선 사람이지. 단일 세션 내 상태 유지는 비교적 쉬워 — 컨텍스트 윈도 안에 이전 대화를 넣으면 돼. 문제는 세션을 넘어가는 장기 상태 유지야. 메모리 시스템, 사용자 프로필, 세션 요약 같은 기술이 필요하고, 에이전트가 뭘 기억하고 있고 뭘 잊었는지를 사용자에게 투명하게 알려줘야 해.

더 나아가서 개인화도 중요해. 명시적 개인화 — 사용자가 직접 설정하는 것, 암묵적 개인화 — 에이전트가 사용자의 패턴을 관찰해서 알아서 적응하는 것. 여기서 중요한 건 적응이 투명해야 한다는 점이야. 에이전트가 왜 이런 방식으로 응답하는지 사용자가 이해할 수 있어야 하고, 원하지 않는 적응은 리셋할 수 있어야 해. 그렇지 않으면 에이전트가 "내 맘대로 바뀌는 블랙박스"가 되어 오히려 신뢰를 잃거든.

에이전트가 뭘 할 수 있고 뭘 못 하는지를 사용자에게 어떻게 전달할 것인가 — 이게 잘못되면 기대와 현실의 갭이 생기고, 그 갭이 곧 실망이 돼. 좋은 에이전트 UX는 확실한 척 하지 않아. 에이전트가 자신의 판단에 얼마나 확신이 있는지를 사용자에게 드러내야 하지. 신뢰도 퍼센트 표시, 근거 제시, 불확실한 부분 명시 같은 방법들이 있어. 특히 경계해야 할 건 **근거 없는 확신(confidence without grounding)**이야. 에이전트가 권위적인 톤으로 확신에 찬 대답을 하는데 실제로는 틀린 경우 — 이게 신뢰를 가장 빠르게 파괴하는 방법이거든.

에이전트가 자신의 능력과 한계를 사전에 명확히 알려주는 것도 중요해. 할 수 있는 것과 할 수 없는 것을 솔직하게 말해야 하고, 작업을 시작하기 전에 **의도 미리보기(Intent Preview)**를 제공하는 게 좋아. 에이전트가 뭘 하려고 하는지 계획을 먼저 보여주고, 사용자가 확인한 뒤 실행하는 패턴이지. 이게 **정보에 기반한 동의(informed consent)**를 제공하고, 에이전트에 대한 통제감을 유지하게 해줘.

에이전트는 반드시 실패해. 문제는 실패할 때 어떻게 하느냐야. 에이전트의 장기적 성공은 완벽한 수행 능력보다 실패에서 우아하게 회복하는 능력에 달려 있거든. 실패를 숨기지 말고, 확실하지 않으면 추측하지 말고 사용자에게 물어보고, 부분적 장애가 발생해도 핵심 기능은 유지하고, 실패 후 다음에 뭘 해야 하는지 안내해야 해. 흥미로운 건 에이전트 시스템은 갑자기 터지는 게 아니라 서서히 드리프트한다는 거야. 모델이 업데이트되고, 프롬프트가 수정되고, 도구가 추가되면서 행동이 점진적으로 변하는데, 눈에 보이는 장애가 발생할 때쯤이면 위험이 이미 오래 누적된 상태지.

마지막은 앞의 모든 내용을 관통하는 주제 — 신뢰야. 신뢰는 "디자인 프로세스의 산출물"이야. 좋은 UX를 설계하면 신뢰가 따라오는 거지. 신뢰 보정이란 사용자가 에이전트의 능력에 대해 갖는 인식을 실제 성능과 맞추는 과정이야. 과신이 위험하고 — 에이전트를 너무 믿으면 틀린 결과를 검증 없이 수용하게 되거든. 불신도 문제야 — 매번 이중 확인해서 효율이 뚝 떨어지지. 목표는 적절한 신뢰(Calibrated Trust) — 에이전트가 잘하는 영역에서는 믿고, 약한 영역에서는 더 주의하는 거야.

에이전트는 처음에 투명하고 감독받는 행동부터 시작해서, 신뢰성을 입증하면서 점진적으로 자율성을 얻어야 해. 처음에는 모든 행동을 사용자에게 보고하고 승인받고, 반복적으로 정확한 결과를 보여주면 사용자가 자율성을 점차 높여주는 거지. 이 과정이 자연스러우려면 에이전트의 추론 과정이 투명해야 하고, 행동 감사 로그가 있어야 하고, 모든 에이전트 행동에 실행 취소(Undo) 버튼이 있어야 해.

투명성은 단순히 기술적 내부 상태를 전부 보여주는 게 아니야 — 그건 정보 과부하지. 중요한 것을 설명하는 것이야. 왜 그런 결정을 했는지, 어떤 정보가 영향을 미쳤는지, 어떤 가정을 했는지. 에이전트 UX 디자인은 결국 관계 설정이야. 에이전트가 뭘 할 수 있는지 미리 알려주고, 하는 일을 실시간으로 보여주고, 실수하면 솔직하게 인정하고, 사용자가 통제권을 가지게 하고, 시간이 지나면서 서로를 알아가는 것. 이 관계가 잘 설계되면 사용자는 에이전트를 믿고 더 많은 걸 맡기게 돼.


정리

3장 읽고 기억할 거 세 가지:

  1. 자율성 슬라이더가 핵심 개념이야. 사용자가 에이전트의 자율성 레벨을 상황에 맞게 조절할 수 있어야 하고, 자율성은 시스템이 가져가는 게 아니라 사용자가 부여하는 거야
  2. 확실한 척 하지 마. 에이전트가 자기 확신과 불확실성을 솔직하게 드러내고, 실패할 때 우아하게 처리하는 게 장기적 신뢰를 쌓는 길이야
  3. 신뢰는 선언이 아니라 디자인의 결과물이야. 투명성, 통제권, 점진적 자율성 확대를 통해 사용자와 에이전트 사이의 관계를 설계하는 것이 이 챕터의 본질이거든