Claude Code 플러그인, 통째로 깔지 않고 알맹이만 빼왔다

지난 편 → 6편 — 챗GPT랑 클로드, 왜 서로 대화는 못 시킬까 Claude Code로 한동안 일하다 보면, 남이 만들어 둔 도구를 가져다 쓰고 싶어지는 순간이 옵니다. 마켓플레이스에 올라온 플러그인 중 하나가 눈에 들어왔습니다. 코드를 필요 이상으로 부풀리지 않게, "게으른 시니어 개발자"처럼 최소로만 짜도록 붙잡아 주는 도구였습니다. 마음에 들었습니다. 그런데 막상 설치하려니 손이 멈췄습니다. 제가 원한 건 그 안에 담긴 원칙 하나 였는데, 플러그인은 그것 말고도 이런저런 것들을 통째로 데려옵니다. 안 쓸 기능까지 제 환경에 얹히는 게 영 내키지 않았습니다. 그래서 깔지 않고, 열어서 필요한 알맹이만 빼내기로 했습니다. 그러려면 먼저 "플러그인"과 "스킬"이 뭐가 다른지부터 알아야 했습니다. 스킬과 플러그인은 뭐가 다른가 한 줄로 하면 이렇습니다. 스킬은 부품 하나, 플러그인은 부품을 담은 상자. 스킬(Skill) 은 최소 단위입니다. SKILL.md 라는 마크다운 파일 하나가 전부고, 필요하면 옆에 보조 파일(스크립트·데이터)을 둘 수 있습니다. 두는 곳도 단순합니다. 개인용: ~/.claude/skills/<이름>/SKILL.md 프로젝트용: .claude/skills/<이름>/SKILL.md 파일 맨 위 frontmatter에 "이 스킬을 언제 써야 하는지"를 적어두면, Claude가 상황을 보고 알아서 불러 씁니다. 아니면 /스킬이름 으로 직접 부를 수도 있습니다. 말하자면 "이 일은 이렇게 처리해라"라고 적어둔 지침 한 장 입니다. 플러그인(Plugin) 은 그 부품들을 담아 배포하는 상자입니다. .claude-plugin/plugin.json 이라는 매니페스트를 중심으로, 여러 종류의 구성요소를 한 번에 묶습니다. skills/ — 스킬들 agents/ — 커스텀 에이전트(서브에이전트...

음성으로 코딩하기 (6편) — 한국어로 말했는데 영어로 알아듣는 이유

"취소해"라고 말했는데 화면엔 "This way" 가 떴어요. 분명 한국어로 말했는데 영어로 알아듣다니. 이 황당한 현상의 범인은, 뜻밖에도 좋으라고 켜둔 기능이었습니다.

지난 편 → 5편 — Claude가 답했는데 왜 조용하지?

짧은 명령어가 자꾸 이상하게 들렸어요

긴 문장은 그럭저럭 인식됐는데, "취소"·"전송" 같은 짧은 명령어가 유독 자주 틀렸어요. "취소해"가 엉뚱한 한국어로 들리는 건 그렇다 쳐도, 가끔은 아예 영어("This way", "async")로 알아듣더라고요.

한국어로 쓰라고 설정도 해뒀는데 영어라니. 처음엔 "모델이 이상한가?" 했죠.

모델도 프롬프트도 아니었어요

whisper large-v3에 한국어(ko)로 고정해뒀고, 자주 쓰는 단어를 미리 알려주는 힌트(initial_prompt)도 넣어봤어요. 그런데도 짧은 명령어의 영어 오인식은 안 사라졌죠. 원인은 인식기 앞단, 소리를 다듬는 단계에 있었어요.

진짜 범인은 노이즈 제거였어요

저는 노이즈 제거(denoise) 를 켜두고 있었어요. 팬 소리나 잡음을 걷어내라고요. 긴 문장에서는 이게 도움이 됐어요.

그런데 짧은 키워드에서는 정반대였습니다. "취소"는 0.5초짜리 약한 신호예요. 노이즈 제거가 그 약한 신호까지 과하게 깎아버리니, whisper 입장에선 뭉개진 소리를 받고 "그럴듯한 무언가"로 채워 넣다가 영어를 뱉은 거였죠.

발화 종류노이즈 제거 효과
긴 문장✅ 도움 (잡음만 걷어냄)
짧은 키워드(0.5초)❌ 독 (약한 신호까지 깎아 영어·환각 오인식)

같은 기능이 발화 길이에 따라 정반대로 작동한 거예요.

키워드 전용 엔진도 써봤지만 접었어요

"그럼 키워드는 아예 다른 방식으로 인식하면?" 싶어서 Vosk라는 엔진을 시도했어요. 인식 후보를 "취소·전송·다시" 같은 키워드로만 한정하면 정확할 줄 알았죠.

그런데 이게 더 위험했어요. 키워드가 아닌 말(잡음이나 창 이름)까지 억지로 "전송"·"취소"로 매핑해버리더라고요. 심지어 "취소"를 "전송"으로 알아듣기도 했고요. 취소하려다 전송되면 큰일이잖아요. 그래서 접었습니다.

해결 — 경로마다 노이즈 제거를 다르게

결론은 단순했어요. 긴 문장(일반 발화)은 노이즈 제거를 켜두고, 짧은 키워드만 노이즈 제거를 끄는 거였죠. 발화 종류에 따라 정반대로 처리하니 영어 오인식이 확 줄었어요.

교훈 — 좋은 도구도 상황 따라 독이 된다

노이즈 제거는 분명 좋은 기능이에요. 하지만 "항상 켜두면 좋다"는 건 없었어요. 짧고 약한 신호에는 오히려 독이었죠.

AI(Claude)는 "노이즈 제거를 켜라"까진 제안했지만, "짧은 키워드에선 그게 역효과" 라는 건 결국 제가 데이터를 뽑아 직접 확인해야 했어요. 도구의 좋고 나쁨은 상황에 달렸더라고요.

다음 편

이번엔 음량이 문제였어요. 소리를 키우면 인식이 좋아질까? 그리고 마주한 무료 모델의 벽 이야기. → 7편 — 소리를 키워도 안 됐다: 무료 모델의 벽


(이전 편: 5편 — Claude가 답했는데 왜 조용하지?)

댓글