메뉴
HN
Hacker News 15일 전

클로드는 그저 미스터 미식스일 뿐

IMP
2/10
핵심 요약

개발자 도구인 Claude Code에 애니메이션 '릭 앤 모티'의 밈 캐릭터인 미스터 미식스(Mr. Meeseeks) 목소리를 입히는 재미있는 플러그인이 공개되었습니다. AI가 작업을 마치거나 사용자의 승인을 기다릴 때마다 상황에 맞는 음성 클립을 재생하여 사용자가 타이밍을 놓치지 않게 도와줍니다. 백그라운드 작업이나 자동 승인 모드에서는 소리가 나지 않도록 설계되어 개발자의 피로도를 줄여주는 유용한 도구입니다.

번역된 본문

claude-meseeks 🔵 "저는 미스터 미식스예요! 절 보세요!" 이것은 AI 모델인 클로드가 실제로 사용자의 응답을 기다릴 때마다 미스터 미식스의 대사를 재생해 주는 Claude Code 플러그인입니다.

클로드가 작업을 마치고 다음 프롬프트를 기다릴 때 → audio/done/ 폴더에서 만족/완료 음성 클립이 재생됩니다 ("다 끝났어요!", "오, 그럼요!", "네, 분명히요!" …). 클로드가 사용자의 승인이 필요할 때 → audio/asking/ 폴더에서 요청/코칭 음성 클립이 재생됩니다 ("도와주실 수 있나요?", "다시 작업으로 돌아갈까요?" …). 두 기능 모두 Notification 이벤트에 의해 구동되며, notification_type으로 필터링되어 실제로 사용자의 개입이 필요한 순간에만 소리가 납니다. 자동 수락/권한 우회 실행, 백그라운드 에이전트 및 하위 에이전트 활동, 인증 새로고침 등의 자율 작업을 수행하는 동안에는 조용히 유지됩니다. 클립은 각 카테고리 내에서 무작위로 재생되며, 재생은 분리되어 비차단 방식으로 이루어지기 때문에 긴 재생 목록이 있어도 프롬프트가 멈추는 일이 없습니다.

설치 방법 이 저장소는 플러그인이자 자체 마켓플레이스 역할을 모두 합니다. /plugin marketplace add thephw/claude-meseeks /plugin install mr-meeseeks@claude-meseeks 또는 로컬 복제본에서 실행할 수 있습니다: /plugin marketplace add /path/to/claude-meseeks /plugin install mr-meeseeks@claude-meseeks Claude Code를 다시 시작하거나 새로고침하고 한 턴을 마치면 미식스의 목소리를 들을 수 있습니다.

요구 사항 시스템 PATH에 오디오 플레이어가 있어야 합니다. 이 도구는 다음 순서로 자동 감지합니다: afplay (macOS에 내장됨) → ffplay → mpg123 → paplay → aplay → Windows PowerShell Media.SoundPlayer. macOS에서는 추가 설정이 필요 없습니다. Linux에서는 ffmpeg (ffplay용) 또는 mpg123을 설치해야 합니다. 플러그인을 사용하는 데 Go 툴체인이 필요하지 않습니다. 미리 빌드된 바이너리가 bin/ 디렉터리에 제공됩니다. Go는 이를 다시 빌드할 때만 필요합니다 (아래 참조).

meeseeks CLI 재생은 클립이 바이너리에 직접 내장된 meeseeks라는 작은 Go 프로그램으로 처리됩니다. 수동으로 실행할 수도 있습니다: meeseeks play # 무작위 "완료" 클립, 분리되어 재생 meeseeks play asking # 무작위 "요청" 클립 meeseeks play feedback --wait # 프롬프트 제출 클립, 완료될 때까지 차단 meeseeks play --clip "ALL DONE" # 이름으로 지정한 특정 클립 meeseeks list all # 내장된 모든 클립 목록

작동 방식 hooks/hooks.json은 scripts/play.sh notify를 실행하는 Notification 및 UserPromptSubmit 훅을 등록합니다. 해당 실행 스크립트는 사용자의 플랫폼에 맞게 미리 빌드된 bin/meeseeks--를 실행하며(일치하는 바이너리가 없으면 소스에서 go build로 폴백하거나, 둘 다 없으면 조용히 대기), 이벤트의 JSON을 표준 입력(stdin)을 통해 전달합니다. meeseeks notify는 JSON을 읽고 hook_event_name 및 notification_type을 확인합니다:

  • 이벤트: UserPromptSubmit (방금 클로드에 프롬프트를 보냄) → 결과: 무작위 피드백 클립
  • 이벤트: Notification + idle_prompt (클로드 작업 완료, 사용자 차례) → 결과: 무작위 완료 클립
  • 이벤트: Notification + permission_prompt (승인 필요) → 결과: 무작위 요청 클립
  • 그 외 ( agent_completed , auth_success , …) → 결과: 무음

선택된 클립은 내장된 오디오에서 캐시 디렉터리로 추출된 후 분리된 프로세스에서 시스템 플레이어로 전달됩니다. 모든 경로는 종료 코드 0으로 종료되므로 훅이 세션을 차단하거나 오류를 일으키지 않습니다. 각 카테고리는 플러그인 구성 옵션(enableDone / enableAsking / enableFeedback)을 통해 독립적으로 음소거할 수 있습니다. 이 옵션은 플러그인을 활성화할 때 Claude Code가 요청하며, CLAUDE_PLUGIN_OPTION_* 환경 변수로 훅에 전달됩니다. 기본값은 켜짐이며, 오직 자동 훅 재생만 제어됩니다 (수동 meeseeks play는 항상 재생됨).

왜 Stop 훅을 사용하지 않나요? Stop 훅은 자동 연속 실행을 포함하여 모든 턴의 끝에서 발동하므로, 클로드가 실제로 사용자를 기다리지 않을 때도 소리가 재생됩니다. 이벤트 유형 필터야말로 "지금 당신의 차례입니다"라는 신호를 가장 확실하게 알려줍니다.

클립 사용자 정의 클립은 audio/ 디렉터리 아래에 있으며, 각 동작에 매핑되는 세 개의 폴더로 정렬됩니다: audio/done/ — 클로드가 작업을 마치고 사용자 차례가 되었을 때 재생됩니다 (유휴 프롬프트). audio/asking/ — 권한/입력 프롬프트 시 재생됩니다. audio/feedback/ — 클로드에 프롬프트를 제출할 때마다 재생됩니다. 재생되는 내용을 변경하려면 폴더 간에 .mp3 파일을 이동하거나 직접 만든 파일을 넣은 후 새 클립이 다시 내장되도록 바이너리를 다시 빌드하십시오: ./scripts/build.sh # 모든 플랫폼용 bin/ 재생성 두 가지 제약 사항이 있습니다: 파일 이름은 반드시 .mp3로 끝나야 하며, — go:embed의 제한으로 인해 —

원문 보기
원문 보기 (영어)
claude-meseeks 🔵 "I'm Mr. Meeseeks! Look at me!" A Claude Code plugin that plays a Mr. Meeseeks voice line whenever Claude is genuinely waiting on you . When Claude finishes and is waiting for your next prompt → a satisfied/finished clip from audio/done/ ( "All done!" , "Ooh yeah!" , "Yes siree!" …). When Claude needs your approval → an asking/coaching clip from audio/asking/ ( "Can you help me?" , "You mind if we get back to the task?" …). Both are driven by the Notification event, filtered by notification_type so it fires only when you're actually needed. Autonomous work — auto-accept/bypass-permissions runs, background-agent and subagent activity, auth refreshes — stays silent . Clips are random within the category, and playback is detached and non-blocking, so a long line never freezes your prompt. Install This repository is both the plugin and its own marketplace. /plugin marketplace add thephw/claude-meseeks /plugin install mr-meeseeks@claude-meseeks Or, from a local clone: /plugin marketplace add /path/to/claude-meseeks /plugin install mr-meeseeks@claude-meseeks Restart or reload Claude Code and finish a turn — you should hear Meeseeks. Requirements An audio player on your PATH . The tool auto-detects, in order: afplay (macOS, built in) → ffplay → mpg123 → paplay → aplay → Windows PowerShell Media.SoundPlayer . On macOS nothing extra is needed. On Linux, install ffmpeg (for ffplay ) or mpg123 . No Go toolchain is required to use the plugin — prebuilt binaries ship in bin/ . Go is only needed to rebuild them (see below). The meeseeks CLI Playback is handled by a small Go program, meeseeks , with the clips embedded directly in the binary. You can drive it by hand too: meeseeks play # random "done" clip, detached meeseeks play asking # random "asking" clip meeseeks play feedback --wait # a prompt-submit clip, blocking until it finishes meeseeks play --clip "ALL DONE" # a specific clip by name meeseeks list all # list every embedded clip How it works hooks/hooks.json registers Notification and UserPromptSubmit hooks that both run scripts/play.sh notify . That launcher execs the prebuilt bin/meeseeks-<os>-<arch> for your platform (falling back to go build from source if there's no matching binary, or staying silent if neither is available), passing the event's JSON through on stdin. meeseeks notify reads that JSON and looks at hook_event_name and notification_type : Event Result UserPromptSubmit (you just sent Claude a prompt) random feedback Notification + idle_prompt (Claude done, your turn) random done Notification + permission_prompt (needs approval) random asking anything else ( agent_completed , auth_success , …) silence The chosen clip is extracted from the embedded audio to a cache dir and handed to a system player in a detached process. Every path exits 0, so the hook never blocks or errors your session. Each category can be silenced independently via the plugin's config options ( enableDone / enableAsking / enableFeedback ) — Claude Code prompts for these when you enable the plugin, and passes them to the hook as CLAUDE_PLUGIN_OPTION_* env vars. They default to on; only automatic hook playback is gated (manual meeseeks play always plays). Why not the Stop hook? Stop fires at the end of every turn — including auto-continuations — so it plays sounds when you aren't actually being waited on. The event-type filter is the reliable signal for "it's your turn." Customizing clips Clips live under audio/ , sorted into three folders that map to behavior: audio/done/ — played when Claude finishes and it's your turn (idle prompt). audio/asking/ — played on permission/input prompts. audio/feedback/ — played every time you submit a prompt to Claude. To change what plays, move .mp3 files between the folders or drop your own in, then rebuild the binaries so the new clips are re-embedded: ./scripts/build.sh # regenerates bin/ for all platforms Two constraints: filenames must end in .mp3 , and — because of a go:embed restriction — must not contain apostrophes ( ' ). Why Meeseeks? On single-purpose sessions The theme isn't just a joke — it's a working philosophy. A Mr. Meeseeks is summoned to accomplish one task . It exists only until that task is done, and then it poofs out of existence, satisfied. Give a Meeseeks a single, concrete goal ("help me finish this putt") and it's cheerful and effective. Give it a vague or unbounded one, or keep it alive long past its purpose, and things degrade fast — "existence is pain, Jerry!" — until you get a room full of increasingly unhinged Meeseeks. A Claude Code session works best the same way: Summon it for one goal. A session scoped to a single, well-defined objective — "add this endpoint", "fix this failing test", "write this plugin" — is focused and sharp, the same way a fresh Meeseeks is. Let it finish, then let it go. When the goal is met, end the session. Start a new one for the next task. A fresh session with a clean context beats a stale one every time. Beware the long-lived session. Dragging one conversation across many unrelated goals is how you get the Meeseeks box problem: context piles up, focus drifts, earlier tangents pollute later work, and quality slides. Long ≠ productive. So: treat each session like a Meeseeks. One purpose. Accomplish it. Poof. 🔵 Credits Inspired by and audio sourced from the Mr. Meeseeks Soundboard at jayuzumi.com. Thanks for the clips! 🔵 Note on the audio The voice clips are from Rick and Morty (via the jayuzumi.com Mr. Meeseeks Soundboard ) and are included here for personal, non-commercial fun. They are the property of their respective rights holders. Please consider those rights before redistributing this plugin publicly or swap in your own audio.