Claude가 대기 중일 때 Mr. Meeseeks 음성을 재생하는 Claude Code 플러그인
요약
Claude Code가 작업을 마치거나 사용자의 승인을 기다릴 때 Mr. Meeseeks의 음성을 재생하는 플러그인입니다. Notification 이벤트를 기반으로 상황에 맞는 음성을 무작위로 재생하며, 비차단 방식으로 동작합니다.
핵심 포인트
- Claude Code의 상태 변화에 따른 음성 알림 기능 제공
- 작업 완료 및 승인 요청 시 상황별 맞춤 음성 재생
- 자율 작업 중에는 소음 방지를 위해 무음 유지
- 플러그인 마켓플레이스를 통한 간편한 설치 지원
- macOS, Linux, Windows 등 다양한 OS 환경 호환
claude-meseeks 🔵
"I'm Mr. Meeseeks! Look at me!" (나는 Mr. Meeseeks다! 나를 봐!)
Claude가 진정으로 당신을 기다리고 있을 때마다 Mr. Meeseeks의 음성 라인을 재생하는 Claude Code 플러그인입니다.
- Claude가 작업을 마치고 다음 프롬프트(prompt)를 기다릴 때 →
audio/done/디렉토리에서 만족스러워하거나 완료된 클립을 재생합니다 ("All done!", "Ooh yeah!", "Yes siree!" …). - Claude가 당신의 승인이 필요할 때 →
audio/asking/디렉토리에서 요청하거나 코칭하는 클립을 재생합니다 ("Can you help me?", "You mind if we get back to the task?" …).
두 경우 모두 Notification 이벤트를 기반으로 하며, notification_type에 의해 필터링되어 당신이 실제로 필요할 때만 실행됩니다. 자율 작업(autonomous work) — 자동 승인/권한 우회 실행, 백그라운드 에이전트(background-agent) 및 서브 에이전트(subagent) 활동, 인증(auth) 갱신 등 — 시에는 무음을 유지합니다. 클립은 카테고리 내에서 무작위로 선택되며, 재생은 분리되어 비차단(non-blocking) 방식으로 이루어지므로 긴 음성 라인이 재생되어도 프롬프트 입력이 멈추지 않습니다.
설치 (Install)
이 저장소는 플러그인이자 자체 마켓플레이스(marketplace)입니다.
/plugin marketplace add thephw/claude-meseeks
/plugin install mr-meeseeks@claude-meseeks
또는, 로컬 클론(local clone)으로부터:
/plugin marketplace add /path/to/claude-meseeks
/plugin install mr-meeseeks@claude-meseeks
Claude Code를 재시작하거나 다시 로드(reload)한 뒤 한 턴을 완료하면, Meeseeks의 목소리를 들을 수 있습니다.
요구 사항 (Requirements)
PATH에 오디오 플레이어가 있어야 합니다. 도구는 다음 순서대로 자동으로 감지합니다: afplay (macOS, 내장) → ffplay → mpg123 → paplay → aplay → Windows PowerShell Media.SoundPlayer. macOS에서는 추가로 필요한 것이 없습니다. Linux에서는 ffmpeg (ffplay용) 또는 mpg123을 설치하십시오.
플러그인을 사용하기 위해 Go 툴체인(toolchain)은 필요하지 않습니다 — 빌드된 바이너리(prebuilt binaries)가 bin/에 포함되어 있습니다. Go는 바이너리를 다시 빌드할 때만 필요합니다 (아래 참조).
meeseeks CLI
재생은 클립이 바이너리에 직접 내장된 작은 Go 프로그램인 meeseeks에 의해 처리됩니다. 수동으로 직접 실행할 수도 있습니다:
meeseeks play # 무작위 "done" 클립, 분리 실행
meeseeks play asking # 무작위 "asking" 클립
meeseeks play feedback --wait # 프롬프트 제출 클립, 완료될 때까지 대기
...
작동 원리
hooks/hooks.json은 scripts/play.sh notify를 실행하는 Notification 및 UserPromptSubmit 훅 (hook)을 등록합니다. 이 런처는 사용자의 플랫폼에 맞는 사전 빌드된 bin/meeseeks-<os>-<arch>를 실행하며 (일치하는 바이너리가 없으면 소스에서 go build를 시도하고, 둘 다 사용할 수 없으면 아무 작업도 하지 않음), 이벤트의 JSON을 표준 입력 (stdin)을 통해 전달합니다.
meeseeks notify는 해당 JSON을 읽고 hook_event_name과 notification_type을 확인합니다:
| 이벤트 | 결과 |
|---|---|
UserPromptSubmit (Claude에게 프롬프트를 방금 보냄) | 무작위 feedback |
| ... |
선택된 클립은 내장된 오디오에서 캐시 디렉토리 (cache dir)로 추출되어 분리된 프로세스(detached process)의 시스템 플레이어로 전달됩니다. 모든 경로는 종료 코드 0을 반환하므로, 훅 (hook)이 세션을 차단하거나 오류를 발생시키지 않습니다.
각 카테고리는 플러그인의 설정 옵션(enableDone / enableAsking / enableFeedback)을 통해 독립적으로 소리를 끌 수 있습니다. Claude Code는 플러그인을 활성화할 때 이에 대해 사용자에게 묻고, 이를 CLAUDE_PLUGIN_OPTION_* 환경 변수 (env vars)로 훅 (hook)에 전달합니다. 기본값은 활성화(on) 상태이며, 자동 훅 재생만 제어됩니다 (수동 meeseeks play는 항상 재생됩니다).
왜
Stop훅을 사용하지 않나요?Stop훅은 자동 계속 실행 (auto-continuations)을 포함하여 모든 턴의 끝에서 발생하므로, 실제로 대기 중이 아닐 때도 소리가 재생됩니다. 이벤트 유형 필터 (event-type filter)가 "당신의 차례입니다"를 알리는 신뢰할 수 있는 신호입니다.
클립 커스텀하기
클립은 audio/ 아래에 위치하며, 동작에 따라 세 개의 폴더로 분류됩니다:
audio/done/— Claude가 작업을 마치고 사용자의 차례가 되었을 때 (유휴 프롬프트) 재생됩니다.audio/asking/— 권한 요청 또는 입력 프롬프트 시 재생됩니다.audio/feedback/— Claude에게 프롬프트를 제출할 때마다 재생됩니다.
재생되는 소리를 변경하려면 .mp3 파일을 폴더 간에 이동하거나 직접 파일을 넣은 후, 새로운 클립이 다시 임베딩(embedded)되도록 **바이너리를 다시 빌드(rebuild the binaries)**해야 합니다:
./scripts/build.sh # 모든 플랫폼에 대한 bin/를 재생성합니다
두 가지 제약 사항이 있습니다: 파일명은 반드시 .mp3로 끝나야 하며, go:embed 제한으로 인해 아포스트로피(')를 포함해서는 안 됩니다.
왜 Meeseeks인가? 단일 목적 세션에 대하여
이 테마는 단순한 농담이 아니라 하나의 작동 철학입니다.
Mr. Meeseeks는 단 하나의 작업을 완수하기 위해 소환됩니다. 그는 그 작업이 완료될 때까지만 존재하며, 작업이 끝나면 만족스럽게 사라집니다. Meeseeks에게 단 하나의 구체적인 목표(
jayuzumi.com의 Mr. Meeseeks Soundboard에서 영감을 얻었으며 오디오 소스를 가져왔습니다.
클립을 제공해 주셔서 감사합니다! 🔵
오디오에 관한 참고 사항
음성 클립은 Rick and Morty (jayuzumi.com의 Mr. Meeseeks Soundboard를 통해)에서 가져온 것이며, 개인적인 비상업적 재미를 위해 여기에 포함되었습니다. 이 클립들은 각각의 권리 소유자에게 자산입니다. 이 플러그인을 공개적으로 재배포하거나 본인의 오디오로 교체하기 전에 해당 권리를 고려해 주시기 바랍니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Posts의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기