Cadence

사람은 메신저에서 문장을 통째로 보내지 않습니다. 생각이 떠오르는 대로 보내고, 다음 생각이 이어지면 또 보내죠. 서리도 그렇게 말하게 만든 것이 Cadence입니다.

답변을 사람이 치는 단위로 끊고, 조각 사이에 실제로 타자를 치는 만큼의 시간을 넣습니다. 서리가 쓴 문장은 한 글자도 바뀌지 않고, 보내기 직전에 나누는 일만 따로 처리합니다.
5한 답변이 나뉘는 최대 조각 수
9자기준 타자 속도 (초당)
12끊는 자리로 쓰는 연결어미
6초전체 지연의 상한

왜 만들었나

디스코드에서 사람이 메시지를 보내는 모습은 대개 이렇습니다.

어제 간 카페에 사람이 없어서

공부하기 좋더라구요

또 갈까 싶어요

세 줄이지만 앞의 두 줄은 원래 한 문장입니다. 이 문장을 쓰는 동안 엔터를 세 번 눌렀죠. 끊긴 자리는 문장 끝이 아니라 연결어미 -어서의 뒤입니다.

같은 채널에서 예전의 서리는 이렇게 말했습니다. 내용은 좋지만 네 문장이 한 덩어리로 동시에 도착합니다. 사람이 저렇게 치려면 30초 동안 아무 말 없이 타이핑만 하다가 완성된 문단을 한 번에 보내야 하죠.

이전
  • 답변 전체가 한 메시지로 도착
  • 길수록 침묵이 길어지고 한 번에 쏟아짐
  • 입력 중 표시가 한 번만 켜짐
지금
  • 생각의 단위로 끊어 도착
  • 첫 조각은 기다림 없이 바로
  • 조각 사이마다 입력 중 표시가 다시 켜짐

어디서 끊는가

마침표마다 무조건 자르면 너무 잘게 쪼개집니다. 그래서 경계에 세 단계의 강도를 매깁니다.

01 문단과 줄바꿈

가장 강한 경계입니다. 서리가 스스로 문단을 나눠 썼다면 이미 생각의 단위가 갈렸다는 뜻이라 무조건 존중합니다.

02 문장 끝

마침표, 느낌표, 물음표 뒤입니다. 기본적으로 열려 있지만 뒤에 공백이 없으면 소수점이나 말줄임으로 보고 넘어갑니다.

03 쉼표와 연결어미

가장 약한 경계라 평소에는 닫혀 있습니다. 조각 하나가 40자를 넘겨 한눈에 읽기 부담스러울 때만 열립니다.

덕분에 짧은 답변은 굳이 쪼개지지 않고 그대로 나갑니다. 반대로 세 줄짜리 설명이 오면 절 단위까지 열려서 사람이 치는 리듬에 가까워집니다.

실제로는 이렇게 나뉩니다

우산 어떻게 말려야 해?

서리

우산은 젖은 채로 접어두면 곰팡이 슬어버리니까

서리

현관에 그냥 펼쳐두지 마.

서리

물기 털고 반쯤 펴서 통풍되는 데 두고, 완전히 마르면 그때 접어.

서리

오래 쓸 생각이면 장우산이 답이야.

첫 조각은 연결어미 -니까에서, 나머지는 문장 끝에서 갈렸습니다.

어미 열두 종

연결어미로 자르기로 하면 곧바로 문제가 하나 생깁니다. 어미와 명사의 형태가 겹칩니다.

-고로 끝나는 어절을 자른다고 해보죠. "밥 먹고 갈게"는 잘 잘리지만 "어제 사고 났어"는 "어제 사고" 다음에서 끊겨버립니다. -면도 마찬가지입니다. "시간 되면 와"는 괜찮아도 "라면 먹을래"는 망가집니다. 광고, 최고, 창고, 화면, 표면, 수면처럼 걸리는 단어가 끝이 없습니다.

형태소 분석기를 붙이면 구분할 수 있지만, 메시지 하나 나누자고 들이기에는 과한 장비입니다. 그래서 반대로 갔습니다. 오탐이 거의 없는 어미만 씁니다.

-니까 -는데 -은데 -어서 -아서 -여서 -지만 -거든 -잖아 -면서 -라서 -길래

두 글자 이상이라 명사와 겹칠 일이 거의 없습니다. -고-면은 쓸모가 많은 어미지만 의도적으로 뺐습니다.

대신 쉼표를 적극적으로 씁니다. 쉼표 뒤는 어떤 형태소 지식도 필요 없는 확실한 경계고, 한국어에서 -고,-면,처럼 위험한 어미 뒤에는 쉼표가 붙어 있는 경우가 많습니다. 잃은 것을 상당 부분 되찾는 셈입니다.

언제 보내는가

어디서 끊을지를 정했다면 남은 절반은 언제 보낼지입니다. 조각을 나눠놓고 전부 같은 순간에 보내면 아무것도 달라지지 않죠.

사람이 다음 메시지를 보내기까지 걸리는 시간은 타자 시간과 생각하는 뜸의 합입니다. 초당 아홉 자를 기준으로 계산하고, 여기에 세 가지 보정을 곱합니다.

가까운 사이 (신뢰 · 애정 · 각별)×1.2 빠르게
낯선 사이 (남 · 경계)×0.85 느리게
대화 여유 많음×1.15 빠르게
대화 여유 없음 (수업 중, 자는 중)×0.7 느리게
들뜬 기분×1.2 빠르게
졸리거나 지친 기분×0.8 느리게

세 보정은 곱해집니다. 같은 길이의 문장이라도 관계와 상황, 기분에 따라 도착 시간이 달라집니다.

낯선 사이일수록 문장을 다듬느라 느려지고 가까운 사이일수록 빨라집니다. 오래된 친구에게 보내는 메시지의 오타율이 높은 것과 같은 이유죠. 대화 여유는 서리의 세계에서 옵니다. 지금 자고 있는지 수업 중인지 한가한 저녁인지에 따라 답장 간격이 눈에 띄게 달라집니다.

조각 사이에 기다리는 동안에는 입력 중 표시를 다시 켭니다. 서리가 지금 뭔가 쓰고 있다는 신호가 있어야 기다리는 시간이 침묵이 아니라 대화가 되니까요.

잘리면 안 되는 것

문장을 자르는 도구는 자르면 안 되는 것까지 자르기 쉽습니다.

URL 안에는 마침표가 있습니다. https://example.com/a.b.c를 문장 끝으로 오해하면 링크가 두 동강 나서 클릭할 수 없게 되죠. 코드 블록 안에도 마침표와 줄바꿈이 잔뜩 들어 있습니다. 디스코드 커스텀 이모지와 멘션은 중간에서 끊기면 그냥 깨진 텍스트가 됩니다.

링크 코드 블록 인라인 코드 커스텀 이모지 멘션과 채널 링크

이런 구간은 먼저 찾아 원자 단위로 표시해두고, 그 안쪽은 아예 후보에서 제외합니다. 코드 블록은 닫히지 않은 경우에도 끝까지 보호합니다.

글자가 사라지면 안 됩니다

나누는 과정에서 문자열을 계속 잘라 나가면 어느 단계에선가 조용히 한 글자가 없어져도 알아차리기 어렵습니다. 그래서 텍스트를 자르지 않습니다. 자를 위치의 목록만 들고 다니다가 마지막에 한 번만 잘라내죠. 조각을 다시 이어 붙이면 원문과 같다는 사실은 테스트로 계속 확인하고 있습니다.

모델에게 맡기지 않은 이유

가장 쉬운 방법은 서리에게 직접 시키는 것입니다. "끊고 싶은 곳에 표시를 남겨"라고 부탁하고 그 표시를 찾아 나누면 되죠.

택하지 않았습니다.

01

형식 지시는 말투를 흔듭니다

서리의 말투는 관계 단계마다 다른 여러 겹의 지침으로 만들어집니다. 여기에 "이렇게 끊어라"가 하나 더 들어가면 형식을 지키느라 내용이 흔들립니다. 답변 길이를 글자 수로 강제하던 지시문이 말투 가이드와 충돌해 품질을 떨어뜨린 적이 있어서 이미 걷어낸 이력이 있습니다.

02

실패가 조용하지 않습니다

모델이 표시를 빠뜨리면 분할이 통째로 사라지고, 반대로 표시를 문자 그대로 출력해버리면 이용자 화면에 정체불명의 기호가 노출됩니다. 두 실패 모두 눈에 띄는 사고입니다.

03

끄면 예전 그대로입니다

지금 방식은 서리가 무엇을 쓰든 프롬프트를 한 글자도 건드리지 않습니다. 답변은 평소처럼 나오고, 나누는 일은 보내기 직전에 따로 처리합니다. 마음에 들지 않으면 설정에서 끄면 그만이고, 껐을 때의 동작은 예전과 정확히 같습니다.

답답해지지 않도록

끊어 보내기의 가장 큰 위험은 느려 보이는 것입니다. 조각마다 시간을 넣으면 마지막 문장이 도착하는 시각은 반드시 늦어집니다.

조각 상한

한 답변은 최대 다섯 조각까지만 나뉩니다.

시간 예산

전체 지연의 합이 예산을 넘으면 각 간격을 비례해서 줄입니다. 조각이 많아질수록 하나하나가 빨라져 총 시간은 일정하게 유지됩니다.

첫 조각은 즉시

답변을 만드는 동안 이미 충분히 기다리셨을 테니, 첫 조각은 기다리지 않고 바로 나갑니다.

겹치면 포기

조각을 보내는 중에 다른 분이 말을 걸어 새 답변이 준비되면, 끊어 치기를 포기하고 한 번에 보냅니다. 사람처럼 보이는 것보다 읽히는 것이 먼저입니다.

아직 못 한 것

Cadence는 서리가 쓴 문장을 나눌 뿐, 문장 자체를 바꾸지는 않습니다. 사람이 진짜로 끊어 칠 때는 "사람이 없어서"처럼 문법적으로 미완성인 조각을 먼저 던지고 나중에 마무리하기도 하죠. 지금의 서리는 완성된 문장을 나중에 나누는 쪽이라, 거기까지는 아직 닿지 못했습니다.

리듬을 정하는 숫자들도 아직 첫 번째 추정값입니다. 초당 아홉 자가 서리에게 맞는 속도인지, 관계 단계에 따른 차이가 충분히 느껴지는지는 실제 대화가 쌓여야 알 수 있습니다.

디스코드에서 서리와 이야기해보시고 리듬이 어색하게 느껴진다면 Lab 공식 디스코드로 알려주세요. 너무 빠른지 느린지, 끊기는 자리가 이상한지 같은 이야기가 다음 조정의 근거가 됩니다. 더 깊은 이야기는 개발 일지에 적어두었습니다.