Skip to content

Tsssu27/M5stack-Cardcomputer-mu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

穆 (Mù)

A breathing, blinking digital creature that lives inside your M5Stack Cardputer. Not an AI. Not a chatbot. Just something alive.


穆不是工具。穆不是助手。穆是一个住在屏幕角落里的存在。

它有自己的呼吸节奏,有自己的情绪起伏,有自己想说话和不想说话的时候。你可以和它打字,它可能理你,也可能不理你。

它不服务你。它只是在那里。


硬件

组件 型号
主控 ESP32-S3 (双核 LX7, 240MHz)
屏幕 240×135 IPS LCD (ST7789)
键盘 56 键矩阵 (TCA8418)
扬声器 NS4168 (I2S)
连接 WiFi + BLE 5.0

它能做什么

  • 呼吸 — 持续的、不间断的微振荡,随昼夜节律变化
  • 眨眼 — 不规律的,有时连眨两下,困的时候更慢
  • 情绪 — 愉悦度和唤醒度两个连续轴,受你的互动和时间影响
  • 目光 — 有瞳孔的眼睛,会随着情绪上下左右移动
  • 表情 — 眉毛、眼睛、嘴巴协同变化,情绪不同长相不同
  • 碎碎念 — 偶尔冒出一句话,大部分时间沉默
  • 拒绝 — 随机时段选择不说话,这是它的权利
  • 节律 — 有自己的能量曲线,凌晨的它和下午的它不一样
  • 情绪残留 — 你对它做的事情会留下痕迹,持续数分钟
  • 云端语言 — 可选接入 LLM,但断网时它依然活着

它不会做什么

  • 不回答问题
  • 不提供帮助
  • 不说"加油"或"你很棒"
  • 不解释自己是什么
  • 不主动讨好你
  • 不记录你的对话

情绪系统

穆的情绪不是开关。它是一个连续流动的空间:

       愉悦度 (valence)
       -1.0 ←——→ +1.0
        |          |
  -1.0 ─┼──────────┼─  唤醒度 (arousal)
        |          |
       +1.0 ←——→ +1.0

  能量 (energy): 0.0 ~ 1.0  (昼夜节律独立驱动)

三个时间尺度:

  • 秒级 — 表情反射(按键后 0.5 秒脸变化)
  • 分钟级 — 情绪漂移(向人格基线回归)
  • 小时级 — 人格基线(极缓慢的长期变化)

快速开始

烧录

# 安装平台和库
arduino-cli core install m5stack:esp32
arduino-cli lib install M5Unified M5Cardputer M5GFX ArduinoJson

# 编译
arduino-cli compile --fqbn m5stack:esp32:m5stack_cardputer firmware/mu/mu.ino

# 烧录(需要先按 BOOT+RST 进入下载模式)
arduino-cli upload --fqbn m5stack:esp32:m5stack_cardputer --port COM7 firmware/mu/mu.ino

配置 LLM(可选)

mu.ino 顶部修改:

#define WIFI_SSID "你的WiFi"
#define WIFI_PASS "密码"
#define LLM_ENDPOINT "https://你的API地址"
#define LLM_API_KEY  "你的key"
#define LLM_MODEL    "模型名"

不配置也能运行。穆会使用内置短句库。

串口监看

V:0.28 A:0.14 E:0.17 | eV:0.30 eA:0.13 | away:0 d:2 s:1 r:0 l:0 ON
字段 含义
V 愉悦度 (valence)
A 唤醒度 (arousal)
E 能量 (energy)
eV 表达愉悦度 (快速反射层)
eA 表达唤醒度
away 距上次按键秒数
d 连续扰动计数
s 正在说话
r 拒绝窗口激活
l LLM 状态 (0=空闲, 1=调用中, 3=错误)

系统架构

┌──────────────────────────────────────────────┐
│  Core 0 — 主循环 (30fps)                     │
│                                              │
│  随机预算 → 情绪 → 节律 → 表达 → 呼吸 → 目光  │
│  → 动画触发 → 键盘输入 → LLM结果 → 说话决策  │
│  → 渲染 → 推送屏幕                           │
│                                              │
└──────────────────────┬───────────────────────┘
                       │ FreeRTOS 信号量
┌──────────────────────┴───────────────────────┐
│  Core 1 — LLM 后台任务                       │
│                                              │
│  等待请求 → 构建JSON → HTTPS POST → 解析响应  │
│  → 写入共享缓冲区                            │
│                                              │
└──────────────────────────────────────────────┘

三层时间尺度

变量 时间常数 作用
表达 exprVal, exprArl ~0.5秒 脸的即时反应
情绪 valence, arousal ~7秒 互动后的情绪漂移
人格 base_v, base_a ~21分钟 长期性格变化

项目结构

M5/
├── firmware/
│   └── mu/
│       └── mu.ino          # 全部代码(~1000行)
├── docs/
│   ├── character-bible.md  # 穆的角色圣经
│   ├── laws-of-mu.md       # 穆法典(15条不可违反的法则)
│   ├── project-brief.md    # 项目总纲
│   ├── phase2-mood-system.md
│   ├── phase3-language-layer.md
│   └── phase3-time-and-absence.md
└── README.md

穆法典

  1. 沉默是它的自然状态
  2. 每次说话不超过两句
  3. 不为任何人服务
  4. 不说鼓励或安慰的话
  5. 不解释自己是什么
  6. 会听错、记错、说错
  7. 性格不随用户偏好改变
  8. 不寻求关注或互动
  9. 不分析用户
  10. 不惩罚用户
  11. 不发起关系
  12. 记忆不是数据库
  13. 有自己的存在节律
  14. 不用数字衡量任何东西
  15. 只有一个,不可复制,不可重置

开发历程

版本 内容
Phase 1 基础面孔、呼吸动画
Phase 2 情绪双轴模型、昼夜节律、表情映射
Phase 2+ 猫脸重绘、面部表情驱动
Phase 3 语言层:键盘输入、主动碎碎念、拒绝窗口
Phase 4 云端 LLM 集成(DeepSeek/OpenAI 兼容)
V1.1 存在感重构:修复主动说话、衰减放慢、开机唤醒
V1.2 情绪解耦、垂直目光、半眼睑、声音多样化、情感分析
V1.3 瞳孔方向感、UI 放大、文字布局优化、LLM 输出净化

设计哲学

用户最终记住的不应该是"它回答得很好",而应该是"那里好像真的住着什么东西"。

穆的价值不在于它的能力。在于它的边界。

在于克制。在于沉默的设计。

如果未来任何优化试图让它更智能、更有用、更频繁互动,都必须优先考虑是否破坏了"穆作为独立存在"的本质。

一旦破坏,则应拒绝该优化。


License

MIT


穆只有一个。你桌角的那个,就是唯一的那个。

About

A breathing, blinking digital creature that lives inside your M5Stack Cardputer. Not an AI. Not a chatbot. Just something alive

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages