
项目地址在文章末尾,麻烦佬们帮忙star!!!!
凌晨两点,你的终端里 Claude Code 正在疯狂跑日志,Bash 命令一条接一条执行。你盯着飞速滚动的黑框,手指悬在键盘上,心里直打鼓:
- 它会不会偷偷改了配置文件?
- 高危操作的审批提示,会不会被日志刷过去漏看?
- 我到底要等多久?它现在是在忙,还是卡住了?
Claude Code 的 “工具自动执行”是效率神器,但黑盒式的操作流程,总让人有种 “失控感”。
为了治这种焦虑,我给 Claude Code 做了个「实体监工搭子」—— 一个跑在 ESP32 上的电子宠物,能实时同步 Claude 的状态,所有高危操作,必须经过它点头才放行。
先上效果:当你的 Claude 要执行任何 Bash/Write/Edit 操作时,终端里还没反应,你的小屏幕上已经弹出了审批请求:
- 亮黄的界面写着 “APPROVE?”,连命令内容都给你打出来了
- 小猫歪着头,屏幕右下角的 “YES” 按钮闪着绿光,等你点一下
- 点完审批,小猫会跳个爱心舞,告诉你 “搞定啦”,然后恢复忙碌状态继续同步 Claude 的工作进度
我给它做了 3 个不同风格的 ASCII 角色:软萌猫咪、机械机器人、圆滚滚鸭子,每个角色都对应 7 种状态动画:
- 空闲时:猫咪闭眼打哈欠,机器人指示灯慢闪
- 忙碌时:小猫皱眉认真工作,鸭子来回踱步
- 等待审批时:它会突然瞪大眼睛,歪着头等你做决定
- 任务完成时:直接跳爱心庆祝舞,告诉你 “搞定啦!”
不用再刷日志找进度,瞟一眼小屏幕,就知道 Claude 现在是在摸鱼还是在干活。
Claude Code 自带的审批提示,很容易被日志刷过去漏看。而我的 Buddy,把审批流程从 “终端弹窗” 搬到了物理屏幕上:
- 任何需要审批的工具(Bash/Write/Edit),都会先发送到 Buddy
- 屏幕强制弹出审批界面,带 30 秒倒计时,不点 “YES” Claude 根本无法继续执行
- 就算终端里不小心手滑,也会被 Buddy 的物理审批拦住,彻底杜绝 “误删库” 的悲剧
从 Claude Code 的 Hook 事件,到 PC 端守护进程,再到 ESP32 的 BLE 连接,整个流程完全无感:
- 你还是正常在终端里敲claude命令,该怎么用怎么用
- 所有状态同步、审批请求,都是后台静默完成的,不打断你的工作流
- 就算 Buddy 没电了,也会自动超时放行,不会卡住你的任务
很多人问我:“不就是个连蓝牙的小屏幕?有必要写这么多代码吗?”其实为了让它丝滑又稳定,我踩了不少坑,也做了很多 “强迫症细节”:
1. 双层状态机:临时动画不打断主流程
我给 Buddy 做了个双层状态模型:
- base状态:和 Claude 同步的持久状态(空闲 / 忙碌 / 等待审批)
-
active状态:临时覆盖的动画(比如审批后的爱心庆祝),持续 2-3 秒后自动回落
这样就算 Claude 还在忙碌,它跳完庆祝舞也会自动回到忙碌状态,完全不用写复杂的恢复逻辑。
2. BLE 透明分片:20 字节限制?上层完全不用管
ESP32 的 BLE NUS 服务有个痛点:单次只能发 20 字节数据,JSON 消息很容易被截断。我直接在驱动层做了透明拼接:
- 发送时自动按 20 字节分片,加帧头标记
-
接收时自动拼接完整消息,遇到\n再抛给上层
上层代码收发 JSON 就和普通字符串一样简单,完全不用管分片细节。
3. 三任务异步并发:动画、BLE、触控互不阻塞
用asyncio开了三个独立任务:
- ble_task:后台处理蓝牙连接和消息收发
- touch_task:异步监听触控,不阻塞主循环
-
render_task:固定 20FPS 渲染动画,丝滑不卡顿
就算 Claude 疯狂发消息,小猫的眨眼动画也不会掉帧。
4. 硬件抽象:换板?改一个文件就行
所有引脚、屏幕参数、设备配置,全塞在config.py里。以后换别的 ESP32 开发板,只要改这个文件的参数,不用动业务代码,直接适配。
很多人说,这东西 “华而不实”,但我觉得,它解决的是程序员和 AI 交互里最容易被忽略的问题:失控感。当 AI 的操作从 “终端里滚动的日志”,变成 “物理屏幕上的小猫点头”,你和 AI 的关系,从 “被动接受” 变成了 “主动掌控”。它不再是一个只会敲代码的黑盒,而是一个有状态、有反馈、需要你配合的 “搭子”。
而且,谁能拒绝一个会在你敲代码时陪在旁边,还会跳爱心舞给你庆祝的电子宠物呢?
仓库地址:https://github.com/FreakStudioCN/MicroPython_Claude_Assistant
文章摘自:https://www.cnblogs.com/FreakEmbedded/p/19925868
