MimicLaw 快速上手

准备工作

  • 硬件: ESP32-S3 开发板,16MB Flash + 8MB PSRAM(如小智 AI 开发板 ~¥35)
  • 软件: ESP-IDF v5.5+esptool.py(用于烧写预编译固件)
  • 账号: Anthropic API Key, Telegram Bot Token(通过 @BotFather 创建)
  • 可选: Brave Search API Key(用于 web_search 工具)、HTTP 代理(用于受限网络)

方式一:烧写预编译固件

GitHub Releases 下载最新版本:

# 下载合并固件(一体化二进制文件)
# 烧写到 ESP32-S3
esptool.py --chip esp32s3 -b 460800 write_flash 0x0 mimiclaw-full-v0.1.0.bin

然后通过串口 CLI 配置(见下方配置部分)。

方式二:从源码构建

# 克隆指定版本
git clone --branch v0.1.0 https://github.com/memovai/mimiclaw.git
cd mimiclaw

# 创建密钥文件
cp main/mimi_secrets.h.example main/mimi_secrets.h
# 编辑 main/mimi_secrets.h 填入你的凭据

# 构建
idf.py set-target esp32s3
idf.py build

# 烧写 + 监控
idf.py -p /dev/ttyACM0 flash monitor

编译时密钥 (mimi_secrets.h)

#define MIMI_SECRET_WIFI_SSID       "我的WiFi"
#define MIMI_SECRET_WIFI_PASS       "WiFi密码"
#define MIMI_SECRET_TG_TOKEN        "123456:ABC-DEF..."
#define MIMI_SECRET_API_KEY         "sk-ant-api03-xxxxx"
#define MIMI_SECRET_MODEL           "claude-sonnet-4-5"

// 可选
#define MIMI_SECRET_PROXY_HOST      ""
#define MIMI_SECRET_PROXY_PORT      ""
#define MIMI_SECRET_SEARCH_KEY      ""

配置

烧写后,连接串口 CLI(115200 波特率):

screen /dev/ttyACM0 115200
# 或
minicom -D /dev/ttyACM0 -b 115200

基本命令

mimi> wifi_set MySSID MyPassword     # WiFi 凭据
mimi> set_tg_token 123456:ABC...     # Telegram Bot Token
mimi> set_api_key sk-ant-api03-...   # Anthropic API Key
mimi> set_model claude-sonnet-4-5    # LLM 模型
mimi> restart                        # 重启生效

可选命令

mimi> set_proxy 192.168.1.83 7897    # HTTP 代理(Clash Verge / V2Ray)
mimi> clear_proxy                    # 清除代理
mimi> set_search_key BSA...          # Brave Search API Key

诊断命令

mimi> config_show                    # 显示所有配置(密钥已脱敏)
mimi> wifi_status                    # 连接状态 + IP 地址
mimi> heap_info                      # 空闲内存(内部 + PSRAM)
mimi> session_list                   # 列出所有会话文件
mimi> session_clear <chat_id>        # 删除某个会话
mimi> memory_read                    # 打印 MEMORY.md 内容

双层配置系统

MimicLaw 使用双层配置:

  1. 编译时 (mimi_secrets.h):编译进固件,个人构建时最方便
  2. 运行时 NVS (通过 CLI):存储在 Flash 中,重启不丢失。优先于编译时默认值

config_show 命令会标注每个值的来源:

=== Current Configuration ===
  WiFi SSID     : MySSID  [NVS]
  WiFi Pass     : MyPa****  [NVS]
  TG Token      : 1234****  [build]
  API Key       : sk-a****  [build]
  Model         : claude-sonnet-4-5  [build]
  Proxy Host    : (empty)  [not set]
=============================

第一次对话

  1. 打开 Telegram,找到你的机器人(通过 @BotFather 创建的)
  2. 发送任意消息
  3. 设备串口输出会显示 Agent 处理过程
  4. 响应出现在 Telegram 中

也可以通过 WebSocket 连接 ws://<设备IP>:18789

{"type": "message", "content": "你好", "chat_id": "my_client"}

记忆和人格

MimicLaw 启动时从 SPIFFS Flash 加载三个文件:

文件用途可通过
/spiffs/config/SOUL.mdAI 人格和行为定义write_file 工具或 CLI 修改
/spiffs/config/USER.md用户档案信息write_file 工具或 CLI 修改
/spiffs/memory/MEMORY.md长期持久化记忆Agent 自动写入

Agent 被指示主动将重要信息保存到 MEMORY.md 和每日笔记 (/spiffs/memory/daily/YYYY-MM-DD.md)。你不需要要求它记住什么 — 它会自主完成。

固件更新 (OTA)

MimicLaw 使用双 OTA 分区(ota_0 + ota_1)。ota_manager 模块封装了 ESP-IDF 的 esp_https_ota(),支持通过 URL 进行空中固件升级。更新成功后设备自动重启。

常见问题排查

症状原因解决方法
WiFi 连接不上凭据错误wifi_set <ssid> <pass> 然后 restart
Telegram 无响应Bot Token 无效set_tg_token <token> 然后 restart
API 报 401 错误API Key 无效set_api_key <key> 然后 restart
响应很慢上下文过大session_clear 清理旧会话
SPIFFS 空间满会话/笔记过多通过 CLI 删除旧文件
无法访问 API网络受限配置代理:set_proxy <host> <port>