말을 건 뒤 걸어가면 답장이 사라졌다

말을 걸고 이동하면 답장이 사라졌습니다
오후의 틈에서 로컬 AI에게 인사를 보낸 뒤 광장 반대편으로 이동하면, 예약된 직접 답장이 나타나지 않았습니다. 예외는 없었지만 사용자가 기대한 응답은 누락됐습니다. 오류 로그만 확인해서는 잡기 어려운 문제였습니다.
재현에서는 로컬 AI 여섯 명이 있는 씬에 입장하고 인사를 전송했습니다. 응답 대상이 예약된 것을 확인한 뒤 멀리 이동하고, 4초 후 해당 AI의 답장이 도착했는지 검사했습니다. 수정 전에는 마지막 응답 검사가 실패했습니다.
직접 답장이 일상 발화 조건을 다시 타고 있었습니다
원인은 PlazaChat의 예약 응답 경로가 일상 발화용 TryAISay를 호출하는 데 있었습니다. 이미 말을 주고받기로 예약된 답장에 18m 거리와 8초 쿨다운 제한이 다시 적용됐습니다. 예약 시점에는 가능했던 대화가 이동 이후의 조건 때문에 사라진 것입니다.
직접 답장과 주변에서 들리는 일상 대화는 목적이 다릅니다. 일상 발화의 제한을 전부 없애기보다, 직접 응답에 필요한 검사 경로를 분리했습니다.
답장 전용 조건을 만들었습니다
직접 응답에는 CanReply를 사용해 AI의 활성 상태, 대화 가능 여부, 입장·차단·자리 비움 상태를 확인합니다. 예약된 답장에는 거리와 일상 발화 쿨다운을 적용하지 않고, 답장이 대기 중인 AI의 일상 발화를 뒤로 미뤘습니다.
일상 발화 자체의 제한은 유지했습니다. 답장이 사라지는 문제를 고치면서 광장의 모든 발화가 제한 없이 나오는 변화까지 만들지 않도록 범위를 좁혔습니다.

수정 후 실제 응답과 채팅 기록입니다. 동일한 수정 전 화면은 확보하지 못했고, 실패 JSON을 비교 근거로 사용했습니다.
같은 이동으로 다시 확인했습니다
수정 전과 같은 재현에서 직접 답장이 전달됐고, 후속 회귀 검사 513개도 오류와 경고 없이 통과했습니다. QA가 바꾼 사용자 프로필과 신고 저장값은 원래 값으로 복원했습니다.
이 결과는 로컬 AI 응답에 대한 검증입니다. 온라인 AI와 멀티플레이는 구현 범위가 아니며 새 웹 빌드도 검사하지 않았습니다. 같은 문장을 출력하더라도 직접 답장인지 일상 발화인지에 따라 검사 조건을 나눠야 한다는 점을 기록했습니다.
예약부터 응답까지 같은 순서를 재현합니다
중앙 아카이브에 추가된 도표도 입장부터 4초 뒤 답장 확인까지의 순서를 보여 줍니다. 아래는 그 재현 절차를 그대로 옮겼습니다. 실제 클래스 호출 관계가 아니라 사용자가 수행한 행동과 확인 시점을 나타냅니다.
flowchart TD
step0["입장"]
step1["안녕하세요 전송"]
step2["응답 대상 예약 확인"]
step3["광장의 반대편으로 이동"]
step4["4초 뒤 예약 대상의 정확한 응답 확인"]
step0 --> step1
step1 --> step2
step2 --> step3
step3 --> step4
예외가 0개였다는 사실만으로는 기능 성공을 판단할 수 없었습니다. 이번에는 예약된 대상의 정확한 응답이 채팅에 남았는지를 별도로 검사했습니다. 이미 수락한 답장을 전달하는 조건과 새 일상 대화를 시작하는 조건을 섞지 않는 것이 수정의 핵심입니다. 거리 제한을 없앤 범위도 직접 답장으로 한정했으므로 일상 발화 정책이 사라진 것은 아닙니다.
미로


댓글
이 글에 대한 생각을 남겨 주세요.