코드 리뷰를 당신의 언어로 받아쓰세요
일러스트

코드 리뷰를 당신의 언어로 받아쓰세요

코드는 영어입니다. 리뷰 코멘트까지 그럴 필요는 없습니다. 25개 언어 중 하나로 리뷰를 온디바이스 받아쓰는 방법, 그리고 언어 고정이 중요한 이유.

Teodor Deleanu2026년 9월 3일읽는 데 6분

대부분의 개발자 도구에는 조용한 가정이 하나 박혀 있습니다. 코드가 영어니까 개발자도 영어여야 한다는 가정입니다. 키워드는 영어입니다. 라이브러리 이름도 영어입니다. 에러 메시지도 영어입니다. 그러니, 하는 논리가 이어집니다. 개발자를 위한 받아쓰기는 영어 전용이어도 아무도 신경 쓰지 않는다.

코드 리뷰는 그 가정을 곧바로 깨뜨립니다. 리뷰 코멘트는 코드가 아닙니다. 사람에게 건네는 문장이고, 아주 많은 팀에서 그 사람은 당신과 제1 언어를 공유합니다. 루마니아 팀은 Rust 서비스를 리뷰하면서 영어 식별자에 대해 루마니아어 코멘트를 씁니다. 폴란드 팀은 폴란드어로, 독일 팀은 독일어로 같은 일을 합니다. 코드는 영어로 남고, 코드에 대한 대화는 그렇지 않습니다.

받아쓰기는 리뷰 코멘트에 유별나게 잘 맞습니다. 리뷰는 읽는 활동이고 타이핑은 읽기를 끊기 때문입니다. 하지만 그건 코멘트가 실제로 쓰이는 언어에서 동작할 때만 좋은 일입니다. 이 글은 그걸 되게 만드는 이야기입니다. Keebye가 온디바이스로 다루는 언어, 언어 고정이 어떻게 동작하는지, 그리고 경계가 어디인지. 이 모든 게 왜 중요한지에 대한 주장 자체는 개발자를 위한 받아쓰기가 영어 전용이어서는 안 되는 이유에 있습니다. 이 글은 그 실무 후속편입니다.

왜 리뷰 코멘트는 이상적인 받아쓰기 대상인가

리뷰 코멘트에는 개발자가 쓰는 거의 모든 텍스트보다 음성에 잘 맞는 세 가지 성질이 있습니다.

짧습니다. 대부분의 코멘트는 한 문장에서 세 문장입니다. 그건 숨 한 번, 핫키 한 번, 발화 한 번입니다.

산문입니다. 형식이 뻣뻣한 커밋 메시지나 정확한 문법이 필요한 설정 파일과 달리, 리뷰 코멘트는 문제를 소리 내어 설명하는 방식 그대로입니다. "소켓이 응답하지 않으면 이건 영원히 재시도해요. 상한을 두세요." 말한 판과 친 판이 거의 같습니다.

눈이 바쁠 때 생깁니다. 당신은 diff를 읽고 있습니다. 타이핑하려고 멈춘 순간 읽던 자리를 잃습니다. 받아쓰기는 계속 읽으면서, 이미 클릭해 들어간 입력창에 코멘트를 말해 넣게 해 줍니다.

여기에 언어라는 차원을 더해 보세요. 팀이 폴란드어로 리뷰한다면, 영어 전용 받아쓰기 도구는 선택을 강요합니다. 영어로 리뷰하거나(부자연스럽고, 동료들은 더 느리게 읽을 수 있습니다) 타이핑하거나(이점을 잃습니다). 둘 다 원한 게 아닙니다.

Keebye가 실제로 지원하는 것

여기서 중요한 온디바이스 엔진은 둘이고, 그에 대해서는 정확할 만한 값이 있습니다.

기본 엔진은 영어에 맞춰져 있습니다. 빠르고, 대부분이 쓰는 엔진이고, 폴란드어 리뷰 코멘트에 쓰고 싶은 엔진은 아닙니다. 영어가 아닌 말에 대고 쓰면 소리로는 그럴듯한 영어, 즉 당신이 하지 않은 말을 내놓습니다.

두 번째 엔진 Canary는 정확히 25개 언어를 다룹니다. 불가리아어, 크로아티아어, 체코어, 덴마크어, 네덜란드어, 영어, 에스토니아어, 핀란드어, 프랑스어, 독일어, 그리스어, 헝가리어, 이탈리아어, 라트비아어, 리투아니아어, 몰타어, 폴란드어, 포르투갈어, 루마니아어, 러시아어, 슬로바키아어, 슬로베니아어, 스페인어, 스웨덴어, 우크라이나어. 선택형이고, 한 번 내려받으며, 그다음부터는 Keebye의 다른 모든 것처럼 오프라인에서 돕니다. 백 개 언어가 아닙니다. 스물다섯 개, 목록으로 적어 두었고, 당신의 언어가 그 목록에 없다면 이 글은 아직 당신을 도울 수 없습니다.

Apple의 기본 음성 인식을 엔진으로 쓰는 선택지도 있고, 그건 당신 Mac의 언어 지원을 그대로 들고 옵니다. 특성이 다른 별개의 길이고, 이 글의 나머지는 Canary에 대한 이야기입니다.

언어를 고정하세요. 추측하게 두지 마세요

영어가 아닌 리뷰에서 단독으로 가장 중요한 설정은 언어 고정입니다.

자동 감지는 옳은 기본값처럼 들리지만 개발자에게는 틀린 기본값입니다. 리뷰 코멘트는 영어 식별자로 빽빽합니다. 함수 이름, 패키지 이름, "null"과 "async"와 "callback" 같은 단어. 80퍼센트가 루마니아어이고 20퍼센트가 영어 토큰인 코멘트는 언어 감지기가 가장 못 다루는 혼합 신호를 정확히 던져 줍니다. 문장 중간에 뒤집히거나, 전체가 영어였다고 결정해 버리고, 당신은 자신 있게 틀린 전사를 받습니다. 이 실패는 자동 감지가 자꾸 틀린다면, 언어를 고정하세요가 자세히 훑습니다.

Canary에서는 Keebye가 언어를 명시적으로 설정하게 해 줍니다. 루마니아어를 고정하면 모델은 루마니아어로 디코딩합니다. 문장 안의 영어 식별자는 언어를 바꿨다는 증거가 아니라 차용어로 처리됩니다. 흔치 않은 식별자의 인식은 여전히 완벽하지 않을 수 있지만, 언어 자체가 동전 던지기이기를 그만둡니다.

알아 둘 만한 동작이 하나 있습니다. 고정한 언어는 다음 발화를 위해 읽힙니다. 고정을 바꾸면 이제 하려는 받아쓰기가 그걸 씁니다. 이미 키를 뗀 받아쓰기가 다시 전사되지는 않습니다. 실전에서는 이렇게 됩니다. 바꾸고, 그다음에 말한다. 하루 사이에 두 언어로 리뷰한다면 이 전환은 쌉니다. 메뉴 막대 트레이에 빠른 전환용 11개 언어 추린 목록이 있고, Settings에는 25개 전부가 있습니다.

받아쓴 리뷰 세션 하나

루마니아어로 리뷰하는 팀에서 세션은 이렇게 흘러갑니다.

풀 리퀘스트를 엽니다. 트레이는 어제 고정해 둔 루마니아어를 이미 보여 주고 있어서 할 일이 없습니다. 첫 파일을 읽습니다. 세 번째 헝크, 상한 없는 재시도 루프. 코멘트 상자를 클릭하고, 오른쪽 ⌘를 누른 채 루마니아어로 코멘트를 말하고, 뗍니다. 텍스트가 들어오고, "음"과 헛시작은 규칙 기반 정리에 걷혔고, 식별자 reconnectSocket은 일주일 전에 사용자 사전에 넣어 둔 덕에 온전합니다.

다음 파일. 남기고 싶은 코멘트가 산문이 아니라 코드 제안입니다. 그건 칩니다. diff를 받아쓰는 건 어느 언어에서든 나쁜 경험입니다.

나중에 다른 팀의 기여자가 스레드에 들어와 영어로 씁니다. 영어로 답하고 싶습니다. 트레이를 클릭해 추린 목록에서 영어를 고르면 다음 발화는 영어로 디코딩됩니다. 답하고, 다시 되돌립니다.

이 중 어느 것도 창을 필요로 하지 않습니다. Keebye는 메뉴 막대에 머물고, 핫키는 포커스를 가진 앱에서 동작합니다. 리뷰가 열린 브라우저 탭이든, 데스크톱 Git 클라이언트든, CLI 리뷰 도구를 돌리는 터미널이든 상관없습니다.

솔직한 한계

스물다섯 개 언어이고, 전부는 아닙니다. 터키어, 일본어, 아랍어, 또는 Canary 목록 밖의 어떤 언어로 리뷰한다면 두 번째 엔진은 그걸 다루지 않습니다. Apple의 기본 엔진은 시스템의 언어 지원에 따라 다룰 수도 있지만, 그건 동작이 다른 별개의 엔진입니다.

트레이의 추린 목록은 열한 개입니다. 영어, 루마니아어, 프랑스어, 독일어, 스페인어, 이탈리아어, 포르투갈어, 네덜란드어, 폴란드어, 러시아어, 우크라이나어는 두 번의 클릭 거리에 있습니다. 나머지 열네 개는 Settings에 있습니다. 매일 쓰는 한 쌍에 이를테면 체코어와 핀란드어가 들어 있다면, 그중 한쪽은 Settings를 거칩니다.

식별자는 여전히 식별자입니다. 어느 언어의 음성 모델이든 snake_case_names에는 고전합니다. 반복되는 것들은 사전이 도와주고, 나머지는 손으로 고치게 됩니다. 올리기 전에 코멘트를 읽으세요.

실시간 전사는 없습니다. Canary는 키를 뗄 때 하나의 배치로 전사합니다. 말하는 동안 단어가 보이지는 않습니다. 한 문장에서 세 문장짜리 리뷰 코멘트에서는 거의 느껴지지 않습니다.

다듬기는 선택형이고 기본은 있는 그대로입니다. 온디바이스 로컬 LLM 다듬기를 켜면 문장 구조를 정돈하고, 그 출력에서 심한 토큰 손실이나 팽창, 반복이 보이면 충실도 가드가 원본 전사로 되돌립니다. 그 가드는 휴리스틱입니다. 당신의 뜻이 살아남았는지는 확인하지 않습니다. 부정이 뒤집히면 결론이 바뀌는 리뷰 코멘트에서는 대부분 다듬기를 꺼 두고 규칙 기반 정리에 일을 맡깁니다.

이게 놓이는 자리

언어 고정이 가장 신경 쓰이는 기능이라면 Keebye vs Wispr Flow가 음성 처리가 어디서 도는지와 언어를 어떻게 다루는지로 둘을 비교하고, Wispr Flow가 더 맞는 지점도 담고 있습니다. 손이 diff 위에 있는 채로 받아쓴다는 더 넓은 이야기는 빌더를 위한 진짜 입력 채널이 하루하루를 다루고, Mac을 위한 음성 받아쓰기가 설정을 다룹니다.

개발자가 영어 전용이라는 가정은 애초에 사실이 아니었습니다. 도구에게 편했을 뿐입니다. 자기 언어로, 목소리로, 기기를 떠나지 않는 음성 처리로 리뷰하는 일은 틈새 요구가 아닙니다. 도구가 허락한다면 소프트웨어를 쓰는 사람들 가운데 상당한 몫이 그렇게 할 일입니다.

생각하는 언어로 리뷰하세요

무료 체험을 시작해 언어를 고정하고, 동료에게 말하듯 리뷰 코멘트 하나를 받아쓰세요.

Start free trial

Early access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.

계속 읽기