从终端彩蛋到ESP32硬件
最近被 Claude Code 里的Buddy 电子宠物刷屏了吧?输入一条/buddy命令,终端就蹦出一只专属 ASCII 小宠物,陪你写代码、吐槽 bug,还带稀有度、属性、动画,简直是程序员深夜专属治愈神器。
作为嵌入式 + GUI 爱好者,我直接把这套系统从软件搬到 ESP32 硬件,做了个可触摸、可交互、可离线运行的Code Buddy 硬件版。今天把完整构建流程、源码思路、上手玩法全部分享,技术论坛同款干货,新手也能跟着跑通。

一、Buddy 是什么?
Buddy 不是简单玩具,是一套完整的轻量级电子宠物系统,是从Claude code 源码里学习出来的,源码我已经学习过然后人道毁灭了,只留下这份宝典,供大家享用。
宠物的核心特征:
• 18 种宠物物种:鸭、鹅、猫、龙、章鱼、水豚、幽灵、六角恐龙、机器人等
• 5 级稀有度:普通 (60%)→优秀 (25%)→稀有 (10%)→史诗 (4%)→传说 (1%)
• 确定性生成:同一种子 / 账号,永远生成同一只宠物,无法篡改
• ASCII Art 动画:每只 3 帧循环,纯文本渲染,不占图片资源
• 五维属性:调试能力、耐心、混乱度、智慧、吐槽力,带性格描述
• 离线可运行:数据存在 Flash,断电不丢档
我做的硬件版,1:1 还原 Claude Buddy 核心逻辑,同时适配 ESP32-P4 + LVGL 9.3,触摸交互、动画、存储全打通。

二、硬件 & 环境准备
1. 硬件清单
• 主控:ESP32-P4(或 M5Stack Tab5,屏幕 1280×720 最佳)
2. 开发环境
• ESP-IDF:5.5.2(必须对应,避免驱动兼容问题)
• LVGL:9.3.0(GUI 渲染核心)
• 字体:lv_font_unscii_16等宽字体(保证 ASCII 对齐不变形)
• 系统:Windows/Linux 均可,推荐 VSCode + IDF 插件
三、项目核心架构
我完全沿用 Claude Buddy 的设计思想,做嵌入式适配:
Plain Text |
• 数据层:宠物结构体、稀有度、属性、种子生成逻辑
• 渲染层:ASCII 精灵、3 帧动画、缩放变换
• 交互层:触摸按钮、喂食 / 玩耍 / 刷新宠物、数据保存

四、保姆级构建:从 0 编译烧录
Step 1 拉取 / 创建项目文件
创建 ESP-IDF 项目,新建buddy组件目录,放入 3 个核心文件:
Plain Text |
Step 2 关键代码配置
1. 宠物数据结构(和 Claude 完全对齐)
c |
2. 确定性随机生成(Mulberry32 PRNG)
保证同种子 = 同宠物,离线也能复现:
c |
3. NVS 存储(断电不丢档)
c |
4. LVGL 动画(500ms 一帧,流畅不卡)
c |
Step 3 编译 & 烧录
1. 命令行进入项目目录
2. 配置:idf.py menuconfig(开启 NVS、LVGL、屏幕驱动)
3. 编译:idf.py build
4. 烧录:idf.py flash monitor
看到屏幕出现 ASCII 宠物,恭喜你 ——硬件版 Buddy 上线了!
五、上手使用:你的第一只硬件电子宠物
1. 首次启动
• 开机自动用设备唯一 ID 作为种子生成宠物
• 显示:精灵动画 + 名字 + 稀有度 + 五维属性 + 性格描述
2. 交互操作(触摸按钮)
• 喂食:耐心 + 5,播放开心帧,自动保存
• 玩耍:混乱度 / 智慧随机提升,触发随机表情
• 新宠物:重置种子,重新生成(可刷传说 / 闪光)

六、总结
Claude Code 的 Buddy 本来只是个终端彩蛋,但把它搬到 ESP32 硬件后,才真正体会到:
轻量算法 + ASCII 渲染 + 确定性生成 = 嵌入式趣味应用的完美模板
整个项目代码≈15KB,精灵数据≈8KB,运行内存≈2KB,资源占用极低,非常适合 LVGL 入门、ESP-IDF 练手,或者做桌面小摆件。
你也可以直接拿我的框架,换精灵、改交互、加屏幕,快速做出属于自己的电子宠物。
https://gitee.com/genvex/m5stack_-osystem
这是我构建的针对m5stackTab5构建的板卡支持框架,上面的应用均基于这个框架生成。在Vibe coding 的加持下,每日一App的速度向前狂奔,后面我会把一些有趣的项目继续分享出来。
我要赚赏金
