ESP-Mosaico借助Claude Code变身Muse智能设备
一名开发者使用Anthropic的Claude Code,为乐鑫ESP-Mosaico模块化开发板编写固件,先完成贪吃蛇游戏,随后将它改造成一台Muse设备。整个过程主要由AI生成代码,开发者负责提出需求、安装验证和决策,项目也借此观察Vibe Coding在硬件领域的实际能力。ESP32凭借成本低、功耗低、资料丰富等特点,仍是AI硬件和创客项目常用的平台。
ESP-Mosaico采用ESP32-S31主控,配备480×480屏幕、麦克风、扬声器和两侧扩展槽,可按需接入摄像头、交互模块等配件。它预留前2 MB Flash运行固定的Vibe Mode固件,负责安装应用、恢复系统、查看日志和截屏;用户按住橙色AI键即可进入该模式,即使应用损坏也不容易将板子刷成“砖”。开发者按照提示词让Claude Code搭建环境并完成贪吃蛇,之后又接入Muse Gadgets,让设备支持中文对话、语音回复、拍照上传以及靠近亮灯问候。
首次开发遇到的主要障碍集中在工具链。ESP-IDF必须固定到工作区指定的7b9cc1ac提交,对应版本号为6.2.0;国内组件镜像缺少esp-gsp 1.5.1,Claude Code改从官方接口下载并校验哈希;GSP场景编译器要求的0.6.1未发布,最终采用CI使用的签名版0.5.0。开发板布局、摄像头和交互模块则通过模块化方式组合。
贪吃蛇使用Raylib Lite开发,同一份C代码同时支持浏览器模拟器和实体设备。游戏采用20×18网格,吃到苹果后增加一节并得一分,速度由每秒6格提升至12.6格,撞墙或撞到自身结束,填满棋盘则获胜;触屏滑动可转向,点击可开始或转向,点击分数栏暂停。项目还编写了8个回放测试,要求每次运行后的最终状态哈希一致。
开发过程中还修复了空白游戏模板只监听触摸点0的问题:浏览器鼠标事件被识别为点1,导致点击无效,后来改为跟随最先按下的手指或鼠标。首次连接Mac时还因USB线不支持数据传输而无法识别设备。更换线材后,先使用recover写入Vibe Mode基础固件,再通过system-update安装游戏,并核对设备ID、启动ID和健康状态。实测运行帧率为33.3 fps,触摸操作正常。
10月2日,Meta开源Muse Gadgets设备端SDK,提供ESP32固件和树莓派Linux SDK,采用Apache 2.0许可证,但Muse助手本身并未开源。设备需要在gadgets.muse.ai获取SDK token,并在Muse App中开启开发者模式完成配对。直接编译官方固件存在三项问题:其仅支持ESP-IDF 6.0.1,而该版本不支持ESP32-S31;标准刷机流程会覆盖Vibe Mode;国内网络无法直连api.muse.ai和hatch.metaaivm.com。
因此,开发者保留Vibe Mode,将Muse改造成标准ESP-Mosaico应用。16 MB Flash中前2 MB继续留给Vibe Mode,其余空间存放Muse;配对信息、Wi-Fi密码和设备凭证保存在64 KB的NVS区域,换固件时无需重新配对。Muse的固件还关闭了上游默认的云端回滚机制,避免设备首次配网前因无法连接服务器而自动恢复旧版本。
代码被拆为三层:Meta SDK仅提供必要接口,开发板适配逻辑放在外层包装工程中,相关分支共包含9次提交。最早的改动包括增加启动钩子,用于启动ESP-Iris设备管理服务并注册摄像头、语音和问候功能;同时关闭Muse原本“5分钟无法联网即回滚”的逻辑,把固件验收交给Vibe Mode。整个项目先后使用4个Claude Code会话,其中两个在同一块板上并行运行,后续还需继续处理家庭路由器环境下的联网问题。
本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。
阅读原文