给 Claude Code 做了个桌面硬件小玩具
第一个硬件项目:用 ESP32 + 彩屏 + 电磁铁 + 蜂鸣器,通过 Hook 把 Claude Code 的工作状态实时映射到桌面硬件上
更新 2026-06-01:
外壳到货、组装完毕、整机功能全部调通。"后续"里的两件事都做完了——外壳组装完毕,电磁铁推杆顶上也粘了一只小螃蟹(Claude吉祥物),召唤权限时一蹦一蹦。视频是硬件演示。
- 跨应用确认:当 Claude Code 需要确认权限时,即使焦点不在 Claude Code 终端,按一下顶上的按钮也能切回去确认权限,确认完会自动切回原来的应用。可以看视频演示,我先把让 Claude 在后台运行,并将窗口切到浏览器,当需要确认权限时,电磁铁跳动提醒,这时按一下小螃蟹,焦点跳回终端确认,又迅速自动跳回浏览器。
- 按钮短按 / 长按:短按是权限确认,长按是静音 / 取消静音的切换。
- 顶上的红色小螃蟹:这个螃蟹相信用过 Claude Code 的人都非常熟悉吧😂,是 Claude 终端上的动画形象~也是3D打印的小玩具。
- 当前装配状态:硬件还是用蓝丁胶临时粘起来的,板子之间和外壳都还没拧螺丝,再用一段时间,没问题再拧。
最近会把代码整理一下上传到 GitHub,感兴趣可以蹲蹲~会包含固件代码和外壳建模,以及给 Claude Code 使用的 Hook 插件(可以直接通过 plugin 方式进行安装哦!一键安装,即插即用~)
以下是原文(2026-5-30) ↓
这是什么
一个软硬件混合的桌面小玩具:把 Claude Code 的运行状态映射成 ESP32 屏幕动画 + 电磁铁推杆 + 蜂鸣器,让 AI 的工作"看得见、听得见、摸得着"。这是我的第一个硬件项目,零基础起步,从选元件到画 CAD 外壳全程 vibe coding。
动机
第一,是平时让 Claude Code 跑长任务,最烦的是不知道它现在到哪一步了——是在思考、在写代码、卡在等我点"同意权限",还是已经跑完了?盯着终端干等很累,切去干别的又怕错过它的提问。
第二,是我想试试,借助 AI 我能把能力边界推到多远。 说实话,如果没有 AI,硬件开发这种事儿我可能不会自己上手。不是不感兴趣——我初中就自己组装过一台 3D 打印机,从小就喜欢捣鼓东西,各种拆装啥的。但让我从零写固件、选 MOSFET、画 CAD,以前可能觉得"这不是我专业,搞不来的"。有了 AI 之后,心里的第一反应变成了:说不定我也可以?
这个项目就是那个"说不定"的结果。从看不懂电路图到整机跑通,全程 vibe coding,AI 帮我把"望而却步"变成了"要不试试"。
工作方式
Claude Code Hook → Python 插件 → Mac daemon ──USB──► ESP32 → 屏幕 / 电磁铁 / 蜂鸣器
◄──USB── 硬件按钮
Claude Code 在不同时刻触发不同的 Hook 事件,插件翻译成单字符指令通过串口发给 ESP32,ESP32 再决定屏幕动画、电磁铁动作、蜂鸣器音效。
核心设计原则是 "动 = 重要"——只有需要我介入的时刻硬件才会有物理动作:
| Claude 在干嘛 | 屏幕 | 电磁铁 | 蜂鸣器 |
|---|---|---|---|
| 我刚提交输入 | 🟡 黄底螃蟹思考中 | 静止 | 静音 |
| 它在写/改代码 | 🔵 蓝底螃蟹敲键盘 | 静止 | 静音 |
| 它在等我批准权限 | 🟠 橙底感叹号"召唤" | 咔咔咔 咔—— | 叮叮叮 |
| 任务完成 | 🟢 绿底螃蟹开花 | 咔!咔! | 马里奥金币音 |
| 闲置 6 秒后 | ⚪ 浅灰打盹 | 静止 | 静音 |
硬件按钮支持短按(切 Claude Code 窗口 + 确认权限弹窗)和长按(切换静音),即使焦点在别的桌面也能一键确认。
硬件
整套淘宝下来约 80 元:ESP32-C3 SuperMini 做主控、0.96" ST7735 彩屏显示动画、IRF540N 光耦隔离 MOS 模块驱动电磁铁、无源蜂鸣器、微动按钮,全堆在面包板上。

外壳
用 CadQuery 建了外壳模型,在嘉立创下单 3D 打印——每月一次的免费打印券,原价一百多,直接 0 元购。(嘉立创真的大好人)

第一版参数没调对,板子塞不进去。连夜改了参数重新下单,周日到货再组装。

技术亮点
- Hook 事件映射:注册 5 个 Claude Code 事件(user_prompt→思考、pre_write_tool→写代码、permission_request→召唤、stop/notification→完成),通过本地插件
xiaoke-local-plugin装到 Claude Code - Mac 桥接 daemon:ESP32-C3 的 USB-Serial 不支持 HID 模拟键盘,按钮确认权限走 Mac daemon 监听串口 + JXA 编译的 KeyReturn.app 模拟回车,权限范围收窄到"只能按回车"
- 动画资产管线:SVG 源 → Playwright 采样帧序列 → 256 色调色板量化 → RLE 压缩 → Arduino C++ header,全自动零手动逐帧
- Pygame 桌面模拟器:不烧设备就能在 Mac 上预览所有状态的螃蟹动画效果
后续
- 等新外壳到货,把所有模块塞进去,做成真正能摆桌上的小盒子
- 在电磁铁推杆上粘一只 Claude 吉祥物螃蟹——召唤时小螃蟹在桌上一蹦一蹦