2026년 8월 26일 수요일

에이전트 설계 ⑧ — HITL과 UX: 승인 버튼을 늘리지 마라

에이전트 UX의 2026년 결론부터: 승인 버튼을 늘리는 것은 답이 아니다. 승인이 잦으면 사용자가 안 읽고 누르고(approval fatigue), 검증 비용이 절약 시간을 초과한다(Nielsen의 "review paradox"). 답은 세 방향이다.

1. 자율성은 스위치가 아니라 슬라이더

Karpathy의 프레임: Cursor의 Tab→Cmd+K→에이전트 모드, Perplexity의 검색→Deep Research처럼 사용자가 자율성 수준을 단계적으로 선택하게 하라. 원칙은 "AI는 생성하고 인간은 검증하는 루프를 최대한 빠르게" — "Demo is works.any(), product is works.all()". 한국어 정리로는 UX Collective의 3원칙이 압축적이다: 실행 전 계획 노출(plan visibility), 신뢰가 쌓일수록 점진적 위임, 어느 지점에서든 개입 가능 + 비가역 행동 명시.

2. 승인 흐름 — 채팅창에서 받은편지함으로

LangChain의 ambient agents가 정식화한 인간 접점 3패턴: notify(행동 없이 알림) / question(정보 부족 시 질문) / review(민감한 행동 전 승인) — 백그라운드 에이전트를 만들 때 접점을 이 중 무엇으로 할지부터 정하라. 오픈소스 Agent Inbox의 응답 스키마도 재사용 가치가 높다: accept / edit / respond / ignore 4종 — 실무에선 승인/거부 이분법보다 "인자를 고쳐서 승인"(edit)이 훨씬 자주 쓰인다. 백엔드 기본기는 durable pause: LangGraph interrupt()+체크포인터(며칠 뒤 승인에도 서버 재시작 무관 재개 — 단 재개 시 노드가 처음부터 재실행되므로 인터럽트 이전 부수효과는 멱등이어야 한다는 함정 주의) 또는 OpenAI Agents SDK의 needsApproval(인자 값 기반 동적 판단 — "금액이 임계값 이상일 때만 승인 요구"가 기본형). 12-Factor의 관점 전환도 유용하다: 인간도 하나의 도구다 — request_human_input 툴로 모델링하면 Slack·이메일로 승인을 라우팅하는 구조가 자연스럽다.

3. 신뢰는 UI가 아니라 아키텍처로

Anthropic의 정량 데이터가 방향을 정해준다: 샌드박스(파일시스템+네트워크 이중 격리)로 안전 경계를 아키텍처에 넣자 승인 프롬프트가 84% 감소 — 승인이 필요한 순간 자체를 줄이는 것이 HITL을 늘리는 것보다 낫다. 도구를 가역성 기준으로 분류해 비가역 행동에만 인터럽트를 걸어라.

스트리밍 UI — 토큰이 아니라 툴콜 생애주기

Vercel AI SDK가 표준화한 패턴: 툴콜을 typed part로 스트리밍하고 상태 4단계(input-streaming → input-available → output-available / output-error)를 UI 상태머신에 1:1 매핑 — "에이전트가 뭘 하는지"가 로딩 스피너가 아니라 진행형 컴포넌트로 보인다. 프레임워크 간 이벤트 표준으로는 AG-UI 프로토콜(16개+ 프레임워크 통합)이 자리 잡는 중 — 자체 UI를 만들더라도 이벤트 분류(토큰/툴콜/상태/HITL)는 설계 체크리스트로 쓸 만하다.

한 줄 요약: 계획 노출·diff·감사 인터페이스로 검증을 빠르게 만들고, 샌드박스 같은 안전한 기본값으로 승인이 필요한 순간 자체를 줄여라.

— 에이전트 설계 시리즈 ⑧ / 다음 글: 평가와 디버깅 — 트랜스크립트를 직접 읽어라

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

에이전트 설계 ⑪ (완결) — 프레임워크와 2026 스택: 제어 흐름의 소유권만은 넘기지 마라

마지막 편. 프레임워크 전쟁은 사실상 수렴했다 — 모든 메이저 벤더가 공식 SDK를 냈고 원시 개념(도구 루프·subagent/handoff·체크포인팅·MCP)도 동일해졌다. 차별화 전선은 루프가 아니라 하네스 품질과 내구성(durability) 으로...