Claude 就是 Mr. Meeseeks

Hacker News Top 工具

摘要

一个 Claude Code 插件,当 Claude 等待用户输入时播放 Mr. Meeseeks 音频提示,通过音频反馈增强开发体验。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/13 22:55

thephw/claude-meseeks

来源:https://github.com/thephw/claude-meseeks

claude-meseeks 🔵

“我是Meeseeks先生!看我!”

一个Claude Code(https://code.claude.com)插件,当Claude真正在等待你时,播放Mr. Meeseeks的语音。

  • 当Claude完成任务并等待你的下一个提示 → 播放audio/done/中的完成/满意片段(“全都搞定!”、“哦耶!”、“是的先生!” ……)。
  • 当Claude需要你的批准 → 播放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并完成一个轮次——你应该能听到Meeseeks的声音。

要求

你的PATH中需要有一个音频播放器。工具会自动检测,顺序为:afplay(macOS内置)→ ffplay → mpg123 → paplay → aplay → Windows PowerShell Media.SoundPlayer。在macOS上无需额外安装。在Linux上,安装ffmpeg(用于ffplay)或mpg123。

使用插件不需要Go工具链——预编译的二进制文件已存放在bin/中。只有需要重新构建时才需要Go(见下文)。

meeseeks CLI

播放由一个小型Go程序meeseeks处理,音频剪辑直接嵌入二进制文件中。你也可以手动驱动它:

meeseeks play                      # 随机"完成"剪辑,分离播放
meeseeks play asking               # 随机"询问"剪辑
meeseeks play feedback --wait      # 一个提示提交剪辑,阻塞直到播放完成
meeseeks play --clip "ALL DONE"    # 按名称播放特定剪辑
meeseeks list all                  # 列出所有嵌入的剪辑

工作原理

hooks/hooks.json注册了Notification和UserPromptSubmit钩子,两者都会运行scripts/play.sh notify。该启动器会根据你的平台执行预构建的bin/meeseeks--(如果没有匹配的二进制文件,则回退到从源码go build,如果两者都不可用则保持静默),并通过stdin传入事件的JSON。

meeseeks notify读取该JSON并查看hook_event_name和notification_type:

事件结果
UserPromptSubmit(你刚刚向Claude发送了提示)随机feedback
Notification + idle_prompt(Claude完成,轮到你了)随机done
Notification + permission_prompt(需要批准)随机asking
其他所有情况(agent_completed、auth_success……)静默

选中的剪辑从嵌入的音频提取到缓存目录,并由分离的进程交给系统播放器。每个路径都以0退出,因此钩子永远不会阻塞或使你的会话出错。

每个类别可以通过插件的配置选项(enableDone / enableAsking / enableFeedback)独立静音——Claude Code在启用插件时会提示这些选项,并将其作为CLAUDE_PLUGIN_OPTION_*环境变量传递给钩子。它们默认开启;只有自动钩子播放受限制(手动meeseeks play始终播放)。

为什么不用Stop钩子? Stop在每个轮次结束时触发——包括自动延续——因此它会在你实际上没有被等待时播放声音。事件类型过滤器才是“轮到你了”的可靠信号。

自定义剪辑

剪辑存放在audio/中,分为三个映射到行为的文件夹:

  • audio/done/ — 当Claude完成并轮到你了(空闲提示)时播放。
  • audio/asking/ — 在权限/输入提示时播放。
  • audio/feedback/ — 每次你向Claude提交提示时播放。

要更改播放内容,将.mp3文件移动到对应文件夹,或放入你自己的文件,然后重新构建二进制文件以便新剪辑被重新嵌入:

./scripts/build.sh   # 重新生成所有平台的bin/

两个限制:文件名必须以.mp3结尾,并且由于go:embed的限制,不能包含撇号(')。

为什么是Meeseeks?

关于单一目标会话

这个主题不仅仅是个玩笑——它是一种工作哲学。一个Mr. Meeseeks被召唤出来是为了完成一个任务。它只存在到任务完成,然后满意地消失。给Meeseeks一个具体的单一目标(“帮我把这一杆推进洞”),它就会愉快而高效。给它一个模糊或无界的目标,或者让它活得太久,情况就会迅速恶化——“存在就是痛苦,Jerry!”——直到你得到一个越来越失去理智的Meeseeks房间。

一个Claude Code会话同样最好如此:

  • 为单一目标召唤它。 一个限定在单一明确定义目标——比如“添加这个端点”、“修复这个失败的测试”、“编写这个插件”——的会话是专注而锐利的,就像一个全新的Meeseeks一样。
  • 让它完成,然后让它离开。 当目标达成时,结束会话。为下一个任务开始一个新会话。一个带有干净上下文的新会话每次都胜过过时的会话。
  • 警惕长期会话。 将一次对话拖过多个不相关的目标,你就得到了Meeseeks盒子问题:上下文堆积,焦点漂移,早期的偏离污染后期工作,质量下滑。长 ≠ 高效。

所以:把每个会话当作一个Meeseeks。一个目的。完成它。消失。🔵

致谢

灵感来自jayuzumi.com的Mr. Meeseeks Soundboard(https://jayuzumi.com/mr-meeseeks-soundboard)的声音剪辑。感谢提供剪辑!🔵

关于音频的说明

语音片段来自《瑞克和莫蒂》(通过jayuzumi.com的Mr. Meeseeks Soundboard(https://jayuzumi.com/mr-meeseeks-soundboard)),此处仅为个人非商业娱乐用途包含。它们属于各自权利持有者的财产。在公开发布此插件或替换为你自己的音频之前,请考虑这些权利。

相似文章

Claude Overlay

Product Hunt

Claude Overlay 是一个浮动的聊天界面,与 Claude Code 集成,让用户能够与一个能看见他们屏幕的 AI 助手互动。