프로젝트Design system · Demo · In progress
모든 컴포넌트가 무엇을 알고 있는지, 얼마나 확실한지, 누가 실행할 수 있는지 말하는 디자인 시스템.
object-oriented DSDTCG tokenshuman–autonomyfictional
KAIROS는 사람이 자율 비행체를 감독하면서 AI의 권고를 승인하거나 거절하는 콘솔을 위한 디자인 시스템이다. 시간에 쫓기며 결정하는 경우가 많다. 이를 브라우저에서 직접 돌려 볼 수 있는 가상의 해양 드론 콘솔로 구현했다. 드론 열두 대가 순찰하고, 착함할 배가 한 척 있고, 정해진 순서로 문제가 생긴다.
대부분의 컴포넌트 라이브러리는 생김새를 정한다. 이 시스템은 대상이 무엇인지에서 시작한다. 비행체, 경보, 권고, 결정. 모든 컴포넌트는 이런 객체 하나를 보여 주면서 세 가지를 말한다. 센서가 본 것인가, AI가 추론한 것인가? 얼마나 크게 끼어들어도 되나? 실행하려면 누구의 권한이 필요한가?
아래는 시나리오별로 무슨 일이 생기고, 운용자에게 무엇이 보이고, 왜 그렇게 설계했는지다. 문법 자체를 어떻게 지었는지는 다음 글에 적었다: 객체지향 디자인 시스템 만들기.

지금 어디까지 왔나
열두 대 모두 배 안에 보관된 상태로 시작한다. 갑판이 하나라 90초 간격으로 한 대씩 이륙하고, 상승해서 각자 구역으로 이동한 뒤에야 순찰을 시작한다.
왜 이렇게 설계했나

HERON 2의 GNSS 위치가 흔들리기 시작한다. AI는 전파 간섭을 의심하고 등대로 가서 위치를 다시 잡으라고 권고한다. 결정 시간 안에 아무도 결정하지 않으면 시스템이 드론을 제자리에 세우고, 위치 오차는 계속 커진다.
왜 이렇게 설계했나


권고는 카드 하나로 온다. 위에서 아래로 읽으면 된다. AI가 제안하는 것, 결정에 필요한 숫자 두 개, AI가 그렇게 보는 이유, 가장 강한 반대 근거. 전체 근거는 요청하면 열린다.
왜 이렇게 설계했나


시나리오마다 콘솔이 볼 수 없는 진실이 숨어 있다. GNSS 간섭일 수도, 드론 자체 수신기 고장일 수도 있다. 증상도 AI의 권고도 어느 쪽이든 같다. 둘을 가르는 건 근거 한 줄, 옆 기체의 신호 세기뿐이고, 모델은 그 줄을 보지 않는다.
왜 이렇게 설계했나

제자리 대기는 운용자 혼자 정한다. 경로를 바꾸려면 Mission Lead가 동의해야 한다. 임무를 끝내려면 사유도 적어야 한다. Mission Lead는 거부할 수도 있고, 마감보다 늦게 답할 때도 있다.
왜 이렇게 설계했나




결정의 모든 단계가 일어나는 순간 기록된다. 누가 무엇을 미리 봤는지, 누가 요청했는지, 누가 동의했는지, 언제 실행이 시작됐는지. 결정이 끝나면 콘솔이 이유를 한 번 묻고, 운용자는 건너뛸 수 있다.
왜 이렇게 설계했나


드론이 맞바람 속에서 귀환 시점에 닿았고, 시스템은 이미 귀환을 시작했다. 운용자에게는 예비 연료를 써서 임무를 이어 갈지 정할 짧은 시간이 있다. 열두 대가 갑판 하나를 쓰니 돌아온 기체는 줄을 선다.
왜 이렇게 설계했나


PUFFIN 9의 무선 링크가 끊긴다. 기체에게 아무것도 물을 수 없고, 비행 전에 받아 둔 절차를 따른다. 링크 상실 대기 지점에서 선회하다가 돌아온다.
왜 이렇게 설계했나

기체를 잃는 방식은 세 가지다. 추진 장치 고장으로 CURLEW 5가 바다에 내려앉고, 충돌로 GANNET 8의 텔레메트리가 한 프레임 만에 끊기고, 배터리 셀 고장으로 SKUA 10이 모델 예상보다 빨리 방전된다. 어느 기체도 콘솔에서 사라지지 않고 손실 보고서가 된다.
왜 이렇게 설계했나



바다에서 조난 비컨이 울린다. 비행 한 편을 보내면 사람을 더 빨리 찾지만 그 순찰 구역이 빈다. 구조 조정 본부는 5분 안에 답을 기다린다.
왜 이렇게 설계했나


AIS가 없는 작은 배가 순찰 구역에 나타난다. AI는 센서가 본 것으로 정체를 짐작하지만 확신도는 낮다.
왜 이렇게 설계했나

조난 비컨, 귀환 시점에 가까운 드론 네 대, 미확인 접촉물이 같은 15분 안에 겹친다.
왜 이렇게 설계했나

토큰은 DTCG 형식이고 epistemic.inferred.fill, severity.critical.fg처럼 생김새가 아니라 의미로 이름을 붙였다. Storybook에는 모든 컴포넌트가 모든 상태로 들어 있다.
왜 이렇게 설계했나


가정과 한계
다음은 사용자 테스트다. 참가자 12명, 조건 여섯 개, 그중 절반은 AI가 틀린 경우다. 탐색 단계의 테스트라서, 사람이 콘솔을 어디서 잘못 읽는지는 보여 줄 수 있지만 안전하다는 걸 입증하지는 못한다. AI가 틀렸을 때 놓친 오류뿐 아니라, AI가 맞았는데 괜히 거절한 경우도 함께 센다. 결과는 여기에 추가한다.
임무, 비행체, 사람 모두 가상이다. 무기, 표적, 교전은 설계하지 않고, 무엇도 아군이나 적으로 분류하지 않는다. 운용자가 할 수 있는 모든 행동은 우리 비행체를 움직이는 것이다.