신뢰도 게이팅과 사람에게로의 에스컬레이션
이전 페이지에서는 임계값을 코드가 소유해야 한다고 논했습니다. 이 페이지는 그 임계값이 나누는 것 —— 임계값 양쪽의 세 구간을 다룹니다.
두 구간이 아니라 세 구간
실제 프로젝트에서 “자동이냐 아니냐”로 만드는 경우는 드뭅니다. 흔한 형태는 세 구간입니다.
| 구간 | 조건 | 동작 |
|---|---|---|
| 자동 | 신뢰도가 상위 임계값을 넘고 추가 검사도 통과 | 그냥 실행합니다 |
| 에스컬레이션 | 중간에 해당 | 사람에게 넘깁니다 |
| 폐기 | 신뢰도가 하위 임계값 아래 | 아무것도 하지 않고, 사람의 주의도 소모하지 않습니다 |
세 번째 구간은 간과하기 쉽지만 세 구간 중 가장 저렴합니다. “보지 않음”과 “사람이 한 번 훑어봄”은 사람 한 명만큼 차이가 납니다.
트리아지 구현 하나는 전형적입니다. P(SEV1) + P(SEV2) ≥ 0.80일 때만 호출하고,
0.20 미만이면서 실행 가능성 검사도 동의하지 않을 때만 폐기하며,
중간 구간은 사람에게 보냅니다.
실제 문제는 중간 구간에 있습니다
세 구간이 생기면, 어려운 질문은 모두 가운데 구간으로 옮겨갑니다.
그것은 여유 용량이 아니라 사람의 처리 용량입니다. 구간이 넓을수록 에스컬레이션이 늘고, 사람이 처리할 양도 늘어납니다. 9%의 에스컬레이션 비율은 낮아 보이지만 —— 기저율이 하루 수천 건이라면 이야기가 달라집니다.
페일세이프가 필요합니다. 없으면 조용히 막힙니다. 결정을 사람에게 넘기면, 사람이 볼 때까지 아무 일도 일어나지 않습니다. 대시보드에서는 그 모습이 “모든 것이 정상”과 정확히 똑같이 보입니다. 트리아지 도구의 답은 단호합니다. 15분 안에 확인 응답이 없으면 그냥 호출합니다. P1이 대기열에 앉아 있는 것보다 누군가를 깨우는 편이 낫습니다.
에스컬레이션 조건 자체가 실패할 수 있습니다. 에이전트 내부의 자율성 게이트는
Choice가 0.6을 넘고 그리고 자율성 안전 Noul이 0.5를 넘을 때만 계속하고,
그렇지 않으면 그 턴을 사람에게 돌려줍니다. 두 숫자 모두 통과해야 합니다 ——
“무엇을 해야 하는가”와 “이것이 안전한가”는 별개의 질문이고, 하나의 신뢰도가
둘 다 정직하게 답할 수는 없기 때문입니다.
임계값 정하기: 먼저 측정합니다
0.8을 즉석에서 골라내는 것이 가장 흔한 접근이며, 석 달 뒤에 소음이 될 가능성이 가장 큰 접근입니다. 재현 가능한 접근은 자체 레이블 데이터에서 목표 정확도에 도달하는 데 필요한 임계값을 측정하는 것입니다.
공개된 예가 하나 있습니다. 0.7을 저신뢰 게이트로 두고 n=130에 대한 실행에서 9%의 에스컬레이션 비율로 오분류 3건 중 3건을 잡아냈습니다. 표본은 작습니다. 그 가치는 0.7에 있는 것이 아니라 이런 숫자를 어떻게 보고해야 하는지를 보여준다는 데 있습니다. 표본 크기, 에스컬레이션 비율, 그리고 무엇을 잡았는지입니다.
과소평가된 위험: 지연 시간
트리아지 도구의 실측 숫자는 따로 표로 볼 만합니다.
| 지표 | 값 |
|---|---|
| p50 | 418 ms |
| p95 | 1477 ms |
| 비용 | 천 건당 약 $0.04 |
| 가장 느린 호출 | 자체 2초 타임아웃에 151 ms 못 미침 |
p95는 p50의 3.5배입니다. 그 말은 평균보다 꼬리가 더 중요하다는 뜻입니다 —— 타임아웃 정책은 꼬리에서 발동하고, 발동하는 순간 여러분은 설계한 분기가 아니라 폴백 분기에 있기 때문입니다. 가장 느린 호출은 타임아웃까지 151 ms밖에 남지 않았습니다. 즉 이 시스템의 결정성은 운 좋게 잘못 떨어지지 않은 동전에 의존하고 있었던 셈입니다.
따라서 게이팅 시스템은 “판단을 틀리는” 식으로 실패하기보다 타임아웃이 나서 폴백을 타는 식으로 실패합니다. 폴백은 주 경로와 독립적으로 테스트해야 합니다.
두 가지 폴백 방향, 둘 다 옳습니다
오류가 났을 때 공개 구현들은 두 진영으로 갈리며, 둘 다 옳습니다.
- fail-closed: 권한 판정기는 타임아웃이나 오류 시 거부합니다. 안전 게이트는 이렇게 동작해야 합니다 —— fail-open 안전 게이트는 조용한 구멍입니다.
- fail-open: Claude Code Stop 훅은 어떤 오류에서도 허용합니다. 효율 게이트는 이렇게 동작해야 합니다 —— fail-closed 효율 게이트는 전체 흐름을 교착시킵니다.
기준은 “어느 쪽이 더 안전한가”가 아니라 어느 비용이 더 큰가, 즉 잘못 차단하는 비용인가 놓치는 비용인가입니다. 그리고 이것은 코드를 작성할 때 정해야 합니다. 그것이 결정하는 것은 주 경로가 아니라 예외 경로이기 때문입니다.
한 문장으로
세 구간 설계에서 일은 중간 구간에 있습니다. 그 폭은 비용이고, 그 페일세이프는 신뢰성 속성입니다. 둘 다 기본값에 맡기지 말고 명시적으로 설계해야 합니다.