개발 취재 노트
AI한테 짧게 물었는데 엉뚱하게 설계 설명만 길게 돌아올 때
무용 연습실에서 리더 한 명이 영상을 재생하면 나머지는 각자 폰으로 접속해 같은 지점을 따라보는 동기화 웹앱(formation)을 만들고 있었다. 영상·음악 동기화 기능을 다 붙이고 "이제 네가 두 창으로 직접 테스트해봐"라는 말이 오간 바로 다음 턴에, "그거 어떻게 추가해?"라는 짧은 질문 하나가 완전히 다른 두 갈래로 갈라졌다.
결론
Q. AI 코딩 어시스턴트에게 짧게 물었는데 전혀 다른 장황한 설명만 돌아온다면? A. 질문이 아니라 답변이 어떻게 끝났는지를 봐라. 답이 "이렇게 할까, 저렇게 할까?"처럼 또 다른 질문으로 끝났다면, 그 답변 속에 이미 있었을 수 있는 사실(예: "아직 안 됐다")이 확인으로 전달됐다고 믿지 말고 화면을 직접 열어 확인해야 한다.
AI는 짧고 모호한 질문을 받으면 바로 직전 대화 맥락으로 빈틈을 채워 해석한다. 직전에 "남은 작업 목록" 같은 설계 레벨 맥락이 있었다면, 바로 다음에 오는 짧은 질문도 그 맥락에 끌려 "어떻게 구현해야 하나"로 읽히기 쉽다. 반대로 질문한 사람은 눈앞 화면을 보고 "이거 지금 되나 안 되나"를 묻는 사용 절차 질문이었을 수 있다.
상황
이 앱은 Cloudflare Workers + Durable Objects 위에서 리더가 재생 위치·상태를 보내고 뷰어들이 따라가는 구조로, 로컬 wrangler dev(http://localhost:8787)로 검증하며 만들어지고 있었다 . 기능 범위는 초반에 이미 나뉘어 있었다 — 리더의 영상 선택은 Phase 1 필수 기능으로, 무용수 위치·동선을 담은 formation.json 첨부는 "나중에 붙이는 선택 기능(add-on)"으로 설계 문서에 분리해 두었다 .
리더·뷰어 페이지(Phase 2b)까지 구현을 마친 시점에도 이 분리는 그대로였다. 어시스턴트는 "지금까지" 표와 "남은 것" 목록을 정리하면서 "formation 첨부 기능 (옵셔널 add-on)"을 여전히 미구현 항목으로 남겨두고, "먼저 데스크톱 2창으로 돌려보고 걸리는 것 알려줘"라고 직접 테스트를 요청했다 .
증상
바로 다음 턴에서 짧은 질문이 왔다. "formation 은 어떻게 추가해야 하는데?"
이 질문에 대해 어시스턴트는 "formation 기능을 어떻게 구현해야 하는가"로 받아들였다. 클라우드 경유 아키텍처(리더가 선택 → WebSocket 전송 → 방 서버가 저장·방송 → 뷰어 자동 수신)를 표와 함께 길게 설명하고, "추가할 것" 목록(리더 개설 폼에 동선 파일 입력 추가 등)을 제시한 뒤, 답변을 "지금 이걸 Phase 3로 구현할까? 아니면 데스크톱 2창 기본 테스트 먼저 하고 그다음에 붙일까?"라는 되묻는 질문으로 마쳤다 .
곧바로 재질문이 왔다. "어.. 그게 아니라. 지금은 리더로 접근하면 영상 파일을 선택하라고 나오는데 formation 을 선택하는 절차가 없어. 이거 선택할 수 있는 절차가 있어야 선택하는거 아냐? 아직 없어?" 이 문장은 리더 화면을 실제로 열어보고 쓴 1차 관찰이다("지금은 리더로 접근하면 ~ 나오는데").
원인
"formation은 어떻게 추가해야 하는데?"는 두 가지로 읽힐 수 있는 질문이었다 — (A) "이 기능을 시스템에 어떻게 구현해야 하나"(설계) 또는 (B) "지금 화면에서 내가 어떻게 조작해 추가하나"(사용). 어시스턴트는 바로 앞 턴 자신이 만든 "남은 작업" 목록 맥락에 끌려 (A)로 읽었다 .
같은 턴 68에서 어시스턴트 자신이 "먼저 데스크톱 2창으로 돌려보고 걸리는 것 알려줘"라며 테스트를 요청해 둔 상태였다는 점이 이 해석을 더 어긋나게 만들었다. 그 요청대로 화면을 열어보고 있었다면 "어떻게 추가해야 하는데?"는 (B), 즉 지금 화면에서의 조작 질문으로 보는 편이 더 자연스럽다.
답변 안에는 사실 정답에 해당하는 문장이 이미 있었다. "빠진 건 딱 하나 — 리더가 formation을 '보내는' 부분. 지금 리더는 받기만 하고 보내질 않아" . 이는 턴 71의 질문("아직 없어?")에 대한 답이기도 하다. 하지만 이 문장은 아키텍처 설명과 표 중간에 묻혀 있었고, 메시지는 그 사실을 다시 확인해주는 대신 "구현할까, 테스트 먼저 할까?"라는 새 질문으로 끝났다. 결국 질문한 사람이 원했을 "그 절차, 지금 없어"라는 명시적 확인은 답변의 결론 자리에 놓이지 않았다. 그 결과 질문한 사람은 답을 받는 대신 화면을 직접 열어 재확인해야 했다.
해결
재질문(턴 71) 직후 어시스턴트는 즉시 해석을 바꿨다. "아직 없어 — 맞아. Phase 2b에서 의도적으로 뺐고, 그래서 지금 리더 개설 화면엔 영상 입력만 있고 동선 선택 절차가 없어." 질문으로 끝내는 대신 확인 문장으로 먼저 답한 뒤 구현에 들어갔다 .
이후 리더 개설 폼에 동선 파일(.json) 입력을 추가하고, 파싱·전송(publishFormation)과 서버 쪽 hasFormation 플래그를 연결해 기능을 완성했다. 마무리 보고에서도 어시스턴트는 "동선(formation) 선택 절차 추가 완료했어. 네 지적이 맞았어 — Phase 2b에서 의도적으로 뺀 상태였고, 이제 붙였어"라며 턴 71의 지적이 옳았음을 명시적으로 인정했다 .
같은 사실(아직 없다)이 턴 70과 턴 72에 둘 다 있었다는 점이 핵심이다. 차이는 내용이 아니라 형식이었다 — 턴 70은 그 사실을 긴 설명 중간에 묻어두고 질문으로 끝냈고, 턴 72는 그 사실을 답변의 첫 문장이자 확인으로 제시했다.