01 / 15
🇨🇳 中文 · 🇬🇧 English
🤖
码克助手 · Claude Buddy

让代码
有了体温

将 Claude Code 工具执行状态实时转化为桌面设备的灯光与语音

v1.0.0 · Production Ready · 2026-06-23
ESP32 MicroPython BLE Claude Code LVGL WS2812B Doubao TTS 可定制角色
The Problem

你在用 Claude Code
但你不知道它在干什么

😶‍🌫️
看不见进度
Claude 在跑一大堆工具,你不盯着终端就不知道到底还在不在跑,做没做完
⌨️
错过审批窗口
Claude 问你"是否执行这条 Bash 命令",你去倒杯水,回来发现任务一直卡在等待
🔔
无法感知错误
测试跑挂了、工具出错了,你不看终端就毫不知情,等你回来早就超时重试了
🤹
多实例更混乱
同时开了好几个 Claude Code,每个都在跑,根本不知道哪个做完了哪个卡住了
你需要的是一个 不需要盯着看 的状态感知方式
The Solution

码克助手 — 放在桌上的 Claude 状态灯

clock lit
闹钟版 · 灯光状态
panel display
面板版 · 屏幕动画
clock hardware
Claude-Buddy 硬件实物
通过 Claude Code Hook 实时捕获工具执行事件,经 BLE 推送到 ESP32 设备,转化为直观的灯光颜色和语音播报。
💡
闹钟版(Clock)
WS2812B 双灯珠 + 豆包 TTS 语音
空闲蓝 → 工作青 → 完成绿 → 出错红
📺
面板版(Panel)
2.4" TFT 屏幕 + LVGL 动画角色
8 种预设角色,支持自定义
延迟 <5ms,不阻塞 Claude Code 执行
Fail-Open,断连不影响工具运行
✓ 支持多 Claude Code 实例并发追踪
面板角色 / 语音音色均可自定义,一行配置烧录生效
Hardware Gallery

实物展示

CLOCK FORM · ESP32-C3 闹钟版
clock 1
外观
clock 2
灯光效果
clock 3
使用场景
PANEL FORM · ESP32-S3 面板版
panel 1
外观
panel 2
屏幕显示
panel 3
桌面场景
USE SCENARIOS · 使用场景实拍
使用场景 01
使用场景 02
使用场景 03
使用场景 04
Use Scenarios

四大 使用场景

01
离开座位去倒水
让 Claude 帮你重构模块,你去倒杯咖啡。设备青色流动灯表示还在干,绿色三闪告诉你完成了,不用一直盯着屏幕。
W → C 完成通知
02
⚠️
等待审批提醒
Claude 需要执行 Bash 命令等你批准,黄灯慢闪 + 语音"请查看终端",你立刻知道需要回来操作,不会一直卡着。
P 待审批提醒
03
🚨
错误即时感知
pytest 跑挂、API 超时、工具报错,红灯交替闪 + 语音"任务出错了",不需要看终端就能立刻感知出了问题。
E 错误状态
04
🤹
多项目并发管理
同时跑多个 Claude Code 处理不同项目,面板版显示多 session 历史。v0.9.4 起,slot 字段稳定槽位映射,session 沉默重连后回到原位,历史不误清。v1.0.0 正式发布三形态:D-Shell 正式面板(GT911 触摸+彩虹灯带)、Panel 开发板、Clock 闹钟版。v1.1.0 新增 WizFi360 WiFi 版(RP2040 + WiFi TCP),无需蓝牙即可通信。
Multi-Session
How It Works

工作原理 一图看懂

💻
Claude Code
你日常用的
AI 编程助手
Hook
<5ms
🖥
PC 守护进程
后台常驻
状态机处理
BLE
5Hz
📟
ESP32 设备
放在桌上
灯光+语音
你每次用 Claude Code 会触发这些 Hook
PreToolUse Claude 要执行工具了 → 设备变青
PostToolUse 工具执行完了 → 设备绿闪
Notification 需要你审批 → 设备黄闪+语音
StopFailure 出错崩溃了 → 设备红闪+语音
设备状态码 → 灯光 / 动画
I空闲蓝色慢呼吸 · 等待指令
W执行中青色流水 · 工具运行中
P等待审批黄色慢闪 + 语音提醒
C完成绿色快闪×3 + 语音"完成"
E出错红色交替闪 + 语音"出错"
System Architecture

三层 分层架构

LAYER 1 · CLAUDE CODE RUNTIME
PreToolUse PostToolUse PostToolUseFailure SubagentStart Notification · Stop
stdin/stdout · TCP :57320 · <5ms
LAYER 2 · PC DAEMON (Python asyncio)
hook_bridge.py
规范化 Hook 事件
ble_daemon.py
状态机 5Hz 推送
transport.py
bleak BLE 管理
pair_device.py
蓝牙配对 MAC
BLE NUS · 20B MTU · 自动重连
LAYER 3 · ESP32 DEVICE (MicroPython)
transport
aioble recv
protocol
v6 解析
state
枚举调度
renderer
基类抽象
display_r.
LVGL 面板
light_r.
LED+语音
Data Flow

端到端 数据管道

Claude Code Hook Events 8 种事件类型 stdin / stdout hook_bridge <5ms · fail-open v2 envelope ble_daemon per-session 状态机 5Hz 节流推送 dirty-flag diff TCP :57320 BLE NUS 20B MTU chunk 自动重连 ESP32 MicroPython protocol 解析 state 调度 💡LED · 🔊语音 📺LVGL 屏幕 WIRE FORMAT v6 {"ss":[{"n":"proj","s":"W","m":"Read: /src/main.py","slot":"cd501167"}]} I=空闲 · W=执行中 · P=等待审批 · C=完成 · E=出错
Hardware Specs

四形态 硬件规格

PANEL FORM · ESP32-S3
panel
面板版外观
panel3
屏幕展示
芯片ESP32-S3
屏幕ST7789 2.4" 320×240
触摸CST816S I2C
UI 框架LVGL
角色形象CAT / ROBOT / DUCK
DSHELL FORM · ESP32-S3
芯片ESP32-S3
屏幕ST7789 2.4" 320×240
触摸GT911 I2C
灯带WS2812×8 彩虹流水
UI 框架LVGL
角色选择CAT / ROBOT / DUCK
CLOCK FORM · ESP32-C3
clock
闹钟版外观
clock2
灯光效果
芯片ESP32-C3
LEDWS2812B × 2 (ISR 驱动)
功放MAX98357A I2S
语音引擎豆包 TTS 200+ 音色
PCM 格式8kHz 单声道 16-bit
Key Metrics

核心 性能指标

<5ms
Hook 响应延迟
200ms
BLE 推送节流
74+
测试用例
5Hz
状态推送频率
v6
协议版本
10 种
Hook 事件类型
+slot
v5→v6 新增字段
4
硬件形态
<5ms Hook 响应 — 工具触发瞬间设备同步亮起,不会出现"已经跑完了灯还没动"的滞后感。
200ms 节流 — 高频工具连续触发时合并推送,设备不会因此闪烁或卡顿。
119+ 测试用例 — 覆盖状态机、协议解析、多 session 并发,改动代码后有保障,不怕回归。
5Hz 推送频率 — 每秒刷新 5 次,状态变化在 200ms 内必达设备,肉眼感知实时。
v6 协议 — 新增 slot 字段,session 重连后回到原槽位,多项目切换不再乱序、历史不误清。
8 种 Hook 事件 — 从提交 prompt 到工具完成、审批等待、异常退出,全生命周期都有感知。
+slot 字段 — 一个字段解决槽位漂移根因:session 有了稳定身份,设备端不再靠顺序猜位置。
4 种硬件形态 — dshell 正式面板+触摸+彩虹灯带;panel 开发板屏幕+历史适合深度多任务;clock 灯光+语音适合放桌角瞥一眼;wizfi360 WiFi TCP 通信无需蓝牙。
Daemon 634 行 — 核心逻辑精简,状态机清晰,二次开发或自定义协议门槛低。
固件 ~2800 行 — 12 个文件各司其职,MicroPython 可直接在设备上热更新,无需重新烧录。
~100 B/s BLE — 占用极低,不影响电脑其他蓝牙设备,ESP32 USB 供电即可长期运行。
<1s Daemon 启动 — 一条命令不到一秒就绪,不需要等待漫长初始化,随开随用。
WIZFI360 FORM · RP2040
RP2040 主控
WiFi TCP 通信
WS2812×2 LED
MAX98357A 扬声器
振动传感器 + 马达
无需蓝牙
USB 供电 即插即用
Quick Start

快速 上手安装

推荐方式 claude plugin install claude-buddy 一行命令,自动注册所有 Hook
离线:git clone …/claude-buddy-plugin → claude . | GitHub
方式一 · CLI 手动安装
安装 PC 依赖
pip install bleak websockets pyserial mpremote
生成 TTS 语音(clock 形态)
python scripts/gen_voice_assets.py
烧录固件到 ESP32
python scripts/flash_device.py --variant clock
烧录固件到 RP2040(WiFi 版)
python scripts/flash_device.py --variant wizfi360
BLE 配对 + 启动守护进程
python daemon/pair_device.py
python daemon/ble_daemon.py
注册 Hook + 验证
写入 settings.json · python daemon/smoke.py
方式二 · GUI 一键工具 推荐
setup_tool · 5 步完成烧录与配对
选硬件 → 连接 → 调参 → 烧录 → 配对
python -m setup_tool # 或双击 dist/Claude_Assistant_Setup.exe
日常使用 · 装好后每次只需
# 1. 给 ESP32 通电
# 2. 启动守护进程
$ python daemon/ble_daemon.py
# 3. 正常使用 Claude Code
设备自动跟随工具状态变化 ✨
State Machine

设备端 状态机 (点击节点高亮)

SLEEP 💤 off IDLE 🔵 呼吸蓝 WORKING 🩵 流水青 PENDING 🟡 慢闪黄 CELEBRATE 💚 快闪×3 ERROR 🔴 交替红 BLE 连接 PreToolUse PostToolUse · 超时4s needs_approval 已审批 所有工具完成 闪完回到空闲 PostToolFailure 超时 优先级 Error > Pending > Working > Idle
Dev Tool

PC 端 设备模拟器

sim_device 实时状态监控 · 无需 ESP32 硬件即可调试
开发利器 — 无需硬件即可验证完整设备逻辑
3 终端启动(顺序不可错)
python -m scripts.sim_device
启动模拟设备,循环重连 daemon:57321
python daemon/ble_daemon.py --tcp-device
daemon 以 TCP 模式连接模拟设备
python scripts/sim_hooks_v5.py --no-daemon --skip-ble-check
发送测试事件,观察实时状态变化
4 种日志调试
per-dot sticky — 单槽位 C/P 粘滞
empty-slot hold — 空槽保持 dominant
sticky broken — W/E 打破粘滞
sticky dominant — global C/P 抗 I
python scripts/read_sim_log.py # 4 文件 × 150 行循环轮转,自动排序
无需 ESP32 实时状态 日志轮转 粘滞测试
// 用户自定义

个性化配置 · /create-character

Skill · 创建面板角色
在 Claude Code 对话中输入 /create-character,AI 会引导你完成角色创建全流程。
描述需求
告诉 AI 想要什么形象(参考图/文字描述/像素图)
AI 生成代码
自动创建 device/char_<name>.py,含动画 + 5状态配色
自动注册
写入 device/config.py 的 CHARACTER 字段
重新烧录
运行 setup_tool 或 flash_device.py 即可看到新角色
# 在 Claude Code 中输入 /create-character
已内置 7 种角色 + 无限自定义
cat 猫robot 机器人 ghost 幽灵among_us creeperkirby pikachu + 自定义
其他自定义入口
语音音色
scripts/gen_voice_assets.py
设备 Logo
scripts/logo_converter.py
行为参数
device/config.py
面板角色
/create-character
预设角色预览 · 8 角色 × 5 状态(I/W/P/C/E)
# 无需设备,生成预览图 python scripts/preview_character.py
码克助手
让每一行代码,都有触感
Claude Buddy · MicroPython Claude Assistant
clock lit
闹钟版 · 青色流水 Working
panel screen
面板版 · 屏幕动画
claude-buddy
v0.10.1
claude plugin install claude-buddy →
v0.12.0 · 2026-06-08
振动感应 + 全局亮度
📳 振动传感器 / 马达
GPIO10 SW-180xxP 拍击检测
中断当前语音,播报工作状态
GPIO20 振动马达 · C/E/P 脉冲反馈
setup_tool 可开关
🔆 全局亮度
LIGHT_BRIGHTNESS 1-100
LIGHT_CONNECT_BRIGHTNESS 独立
GUI 亮度滑块
test_worker.py 配置覆写测试
v1.1.0 · 2026-07-08
WizFi360 WiFi 版 + 第四硬件形态
🌐 WizFi360 WiFi 版硬件
RP2040 + WizFi360 WiFi 模块
TCP 通信无需蓝牙
WS2812×2 双灯 + MAX98357A 扬声器
振动传感器 + 马达,USB 供电即插即用
静态 IP 分配 + 自动配对
📋 文档 + 工具更新
GUI 新增 WiFi SSID/密码输入框
启动桥接按钮(GUI 内一键运行 daemon)
烧录后自动获取 IP 并配对
全部文档更新为四种硬件形态
新增 firmware/README.md 库文件说明
v1.0.0 · 2026-06-23
D-Shell 正式面板 + 三形态发布
🖥️ D-Shell 正式面板硬件
ESP32-S3 + ST7789V 2.4寸屏
GT911 触摸 + WS2812×8 彩虹灯带
正式面板硬件,st7789v 驱动适配
display_renderer 内置彩虹流水灯 ISR
📋 三形态 + 文档更新
GUI 新增 D-Shell 选项(屏幕+角色+灯带)
版本号升级至 v1.0.0(首个正式版本)
全部文档更新为三种硬件形态
LED 灯带简化为彩虹流水,解决同步问题
v0.10.1 · 2026-06-05
一键烧录 图文指南
📋 setup_tool_guide.md
25 步截图全流程
Clock / Panel 分叉路径
豆包 TTS 语音生成
自定义角色导入
🔧 其他更新
build_public.py 保留 .git 元数据
skill.md 推荐 GUI 优先
install_mechanism_v1 归档
CLAUDE.md 新增工具入口说明