claude-desktop-buddy 心跳快照逐字段拆解running、waiting、prompt 与权限回复完整指南【免费下载链接】claude-desktop-buddyReference and an example for the Bluetooth API for makers in Claude Cowork Claude Code Desktop项目地址: https://gitcode.com/gh_mirrors/cl/claude-desktop-buddyclaude-desktop-buddy 是一个基于蓝牙 BLE 的 Claude 桌面伴侣硬件参考项目它让 Claude Cowork 与 Claude Code 桌面端通过 Nordic UART Service 向 ESP32 小桌宠如 M5StickC Plus推送心跳快照heartbeat snapshot设备据此展示会话状态、权限审批提示permission prompt并支持在设备上直接点按批准/拒绝。本文逐字段拆解这个 JSON 快照讲清running、waiting、prompt到底代表什么以及一次权限回复是如何从桌面端流到硬件按钮的。先连上打开 Hardware Buddy 配对窗口快照只有在配对成功后才会开始下发。打开路径macOS / Windows 通用Help → Troubleshooting → Enable Developer Mode开启开发者模式菜单栏Developer → Open Hardware Buddy…打开配对窗口点击Connect从扫描列表中选择你的设备首次连接按系统提示授予蓝牙权限配对完成后桥梁会在后台自动重连窗口只用于首次配对、查看状态面板或拖入角色文件夹心跳快照是什么变更即发 10 秒保活协议细节完整收录在 REFERENCE.md 的Heartbeat snapshot一节。它的下发规则很简单状态变化→ 立即下发一帧快照无变化→ 每 10 秒一帧 keepalive 保活约 30 秒收不到任何一帧→ 设备应判定连接已断一次典型的快照长这样字段后面逐个拆{ total: 3, running: 1, waiting: 1, msg: approve: Bash, entries: [10:42 git push, 10:41 yarn test], tokens: 184502, tokens_today: 31200, prompt: { id: req_abc123, tool: Bash, hint: rm -rf /tmp/foo } }逐字段拆解每个字段该驱动什么字段含义设备侧的常见用法total全部会话数信息面板显示total 0表示没有任何会话running正在生成内容的会话数running 0→ 进入忙碌状态waiting被权限提示阻塞的会话数waiting 0→ 进入注意状态LED 闪烁msg一行摘要专为小屏幕准备直接打在 HUD 状态栏entries最近的转录行最新在前只保留几行做成可滚动的消息流水tokens桌面端启动以来的累计输出 token与上次差值累加驱动喂食/升级进度tokens_today本地零点以来的输出 token持久化做每日计数器零点自动归零prompt仅在需要权限决策时出现id就是回复时要原样带回的请求 ID弹出审批屏等待按键示例中waiting: 1与prompt同时出现——这正是有一条会话正卡在一个 Bash 权限请求上的信号组合。设备如何消费快照data.h 与状态机示例固件把整帧快照解析进 src/data.h 中的TamaState结构会话计数、消息行、promptId/promptTool/promptHint三个待审批字段见 src/data.h#L7-L22。每收到一帧就刷新一次超过 30 秒没收到数据dataConnected()返回 false小宠进入睡眠。真正有戏的映射在 src/main.cpp#L479-L485 的derive()状态机里逻辑非常直白未连接 →sleep闭眼慢呼吸waiting 0→attention警觉LED 闪烁优先级最高刚完成回合 →celebrate撒花庆祝running 3→busy出汗干活其余 →idle眨眼环顾也就是说running和waiting这两个计数器直接决定了小宠的表情和 LED 行为——这就是心跳快照驱动硬件情绪的核心机制。完整七状态表可参考 README.md 的The seven states。权限回复全流程从 prompt 到按钮按下这是整个协议最精彩的闭环走一遍桌面端弹出审批快照中出现prompt含id、tool、hint命令预览。固件在 src/main.cpp#L1023-L1039 检测到promptId变化立刻唤醒屏幕、提示音、跳转审批屏——无论当时开着什么菜单。等待回复审批屏上显示工具名、命令 hint 和已等待秒数attention状态让 LED 持续闪烁提醒你。按键决策按A 批准、按B 拒绝。固件把请求 ID 原样带回src/main.cpp#L1079-L1117{cmd:permission,id:req_abc123,decision:once}decision取once批准这次工具调用或deny拒绝。id必须与prompt.id完全一致桌面端收到后转发给会话管理器放行或拦截。 4.收尾反馈批准耗时小于 5 秒会触发heart心动特效src/main.cpp#L1084-L1087批准/拒绝次数与响应速度还会写入 src/stats.h 的 NVS 统计参与心情与等级计算——每 50K token 升一级并放一次彩带。下一帧快照里prompt消失、waiting归零小宠回到idle闭环完成。新手上手清单 协议权威文档REFERENCE.mdUUID 表、JSON Schema、命令与 ack、配对安全 想自建设备不需要本仓库任何代码只要你的 BLE 设备能广播 Nordic UART Service、解析换行分隔 JSON 即可Arduino、nRF52、树莓派 BLE dongle 都行 官方固件源码src/状态机在 src/main.cppBLE 收发在 src/ble_bridge.cpp 完整操作手册docs/manual.html⚠️ 提醒BLE 桥接仅在桌面端开启开发者模式时可用属于面向 maker 的实验性 API且 transcript 片段在链路上可见——生产环境请要求 LE Secure Connections 配对理解了心跳快照的这几个字段你其实已经拿到了用硬件感知 Claude 工作流的全部原料running画忙碌、waiting亮 LED、prompt弹审批、按钮回一个 JSON 完成闭环。剩下的只是给它选一个顺眼的表情了。【免费下载链接】claude-desktop-buddyReference and an example for the Bluetooth API for makers in Claude Cowork Claude Code Desktop项目地址: https://gitcode.com/gh_mirrors/cl/claude-desktop-buddy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考