这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 「M5STACK TAB5测评」我复刻了ClaudeCodeBuddy电子宠物

共1条 1/1 1 跳转至

「M5STACK TAB5测评」我复刻了ClaudeCodeBuddy电子宠物

助工
2026-05-09 16:30:45     打赏

从终端彩蛋到ESP32硬件

最近被 Claude Code 里的Buddy 电子宠物刷屏了吧?输入一条/buddy命令,终端就蹦出一只专属 ASCII 小宠物,陪你写代码、吐槽 bug,还带稀有度、属性、动画,简直是程序员深夜专属治愈神器。

作为嵌入式 + GUI 爱好者,我直接把这套系统从软件搬到 ESP32 硬件,做了个可触摸、可交互、可离线运行的Code Buddy 硬件版。今天把完整构建流程、源码思路、上手玩法全部分享,技术论坛同款干货,新手也能跟着跑通。

 微信图片_20260509155926_901_508.jpg


 

一、Buddy 是什么?

    Buddy 不是简单玩具,是一套完整的轻量级电子宠物系统是从Claude code 源码里学习出来的,源码我已经学习过然后人道毁灭了,只留下这份宝典,供大家享用。

宠物的核心特征:

 18 种宠物物种:鸭、鹅、猫、龙、章鱼、水豚、幽灵、六角恐龙、机器人等

 5 级稀有度:普通 (60%)→优秀 (25%)→稀有 (10%)→史诗 (4%)→传说 (1%)

 确定性生成:同一种子 / 账号,永远生成同一只宠物,无法篡改

 ASCII Art 动画:每只 3 帧循环,纯文本渲染,不占图片资源

 五维属性:调试能力、耐心、混乱度、智慧、吐槽力,带性格描述

 离线可运行:数据存在 Flash,断电不丢档

我做的硬件版,1:1 还原 Claude Buddy 核心逻辑,同时适配 ESP32-P4 + LVGL 9.3,触摸交互、动画、存储全打通。

index_02.png


 

二、硬件 & 环境准备

1. 硬件清单

 主控:ESP32-P4(或 M5Stack Tab5,屏幕 1280×720 最佳)

2. 开发环境

 ESP-IDF5.5.2(必须对应,避免驱动兼容问题)

 LVGL9.3.0GUI 渲染核心)

 字体:lv_font_unscii_16等宽字体(保证 ASCII 对齐不变形)

 系统:Windows/Linux 均可,推荐 VSCode + IDF 插件

 

三、项目核心架构

  我完全沿用 Claude Buddy 的设计思想,做嵌入式适配:

Plain Text
┌─────────────────────┐
│    Code Buddy App   │
├──────────┬──────────┤
│  数据层  │  渲染层  │  交互层
│ buddy.h │sprites.h │ buddy.cc
└──────────┴──────────┘
     │         │         │
     ▼         ▼         ▼
 NVS存储   LVGL渲染    定时器动画

 数据层:宠物结构体、稀有度、属性、种子生成逻辑

 渲染层ASCII 精灵、3 帧动画、缩放变换

 交互层:触摸按钮、喂食 / 玩耍 / 刷新宠物、数据保存


index_07.png


 

四、保姆级构建:从 0 编译烧录

Step 1 拉取 / 创建项目文件

创建 ESP-IDF 项目,新建buddy组件目录,放入 3 个核心文件:

Plain Text
main/apps/tools/buddy/
├── buddy.h          // 数据结构、枚举、接口
├── buddy_sprites.h  // 18种宠物ASCII精灵数据
└── buddy.cc         // 生成、渲染、存储、UI逻辑

Step 2 关键代码配置

1. 宠物数据结构(和 Claude 完全对齐)

c
typedef enum {
    BUDDY_DUCK, BUDDY_GOOSE, BUDDY_BLOB, BUDDY_CAT, BUDDY_DRAGON,
    BUDDY_OCTOPUS, BUDDY_OWL, BUDDY_PENGUIN, BUDDY_TURTLE, BUDDY_SNAIL,
    BUDDY_GHOST, BUDDY_AXOLOTL, BUDDY_CAPYBARA, BUDDY_CACTUS, BUDDY_ROBOT,
    BUDDY_RABBIT, BUDDY_MUSHROOM, BUDDY_CHONK,
    BUDDY_SPECIES_COUNT
} buddy_species_t;

typedef struct {
    buddy_species_t species;
    buddy_rarity_t  rarity;
    bool            shiny;       // 1%闪光变种
    // 五维属性
    uint8_t debugging, patience, chaos, wisdom, snark;
    char name[32], personality[64];
    uint32_t hatched_at, user_seed;
} buddy_t;

2. 确定性随机生成(Mulberry32 PRNG

保证同种子 = 同宠物,离线也能复现:

c
static uint32_t rng_state = 0;
static uint32_t rng_next(void) {
    uint32_t z = (rng_state += 0x6D2B79F5);
    z = (z ^ (z >> 15)) * (z | 1);
    z ^= z + (z ^ (z >> 7)) * (z | 61);
    return z ^ (z >> 14);
}

3. NVS 存储(断电不丢档)

c
#define NVS_NAMESPACE "buddy_app"
void buddy_save(const buddy_t* buddy) {
    nvs_handle_t handle;
    nvs_open(NVS_NAMESPACE, NVS_READWRITE, &handle);
    nvs_set_blob(handle, "buddy_data", buddy, sizeof(buddy_t));
    nvs_commit(handle);
    nvs_close(handle);
}

4. LVGL 动画(500ms 一帧,流畅不卡)

c
anim_timer = lv_timer_create(anim_timer_cb, 500, NULL);
static void anim_timer_cb(lv_timer_t* timer) {
    current_frame = (current_frame + 1) % 3;
    update_sprite_display();
}

Step 3 编译 & 烧录

1. 命令行进入项目目录

2. 配置:idf.py menuconfig(开启 NVSLVGL、屏幕驱动)

3. 编译:idf.py build

4. 烧录:idf.py flash monitor

看到屏幕出现 ASCII 宠物,恭喜你 ——硬件版 Buddy 上线了

 

五、上手使用:你的第一只硬件电子宠物

1. 首次启动

 开机自动用设备唯一 ID 作为种子生成宠物

 显示:精灵动画 + 名字 + 稀有度 + 五维属性 + 性格描述

2. 交互操作(触摸按钮)

 喂食:耐心 + 5,播放开心帧,自动保存

 玩耍:混乱度 / 智慧随机提升,触发随机表情

 新宠物:重置种子,重新生成(可刷传说 / 闪光)

 

merged_output.jpg


、总结

    Claude Code Buddy 本来只是个终端彩蛋,但把它搬到 ESP32 硬件后,才真正体会到:
    轻量算法 + ASCII 渲染 + 确定性生成 = 嵌入式趣味应用的完美模板

     整个项目代码≈15KB,精灵数据≈8KB,运行内存≈2KB资源占用极低,非常适合 LVGL 入门、ESP-IDF 练手,或者做桌面小摆件。

你也可以直接拿我的框架,换精灵、改交互、加屏幕,快速做出属于自己的电子宠物。

 

https://gitee.com/genvex/m5stack_-osystem

这是我构建的针对m5stackTab5构建的板卡支持框架,上面的应用均基于这个框架生成。在Vibe coding 的加持下,每日一App的速度向前狂奔,后面我会把一些有趣的项目继续分享出来。 





关键词: M5stack_tab5     buddy      宠物    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]