# 讨论记录 --- ## 讨论:ESP-IDF v6.0 编译适配 **日期**:2026-03-31 **目标**:解决 ESP-IDF v6.0 编译失败问题,完成固件烧录 ### 问题清单 #### 1. Flash 大小配置错误 - **错误**:分区表需要 16MB,但 sdkconfig 配置为 2MB - **修复**:`sdkconfig` 中 `CONFIG_ESPTOOLPY_FLASHSIZE` 改为 16MB #### 2. WiFi 断开原因码未定义 - **错误**:`WIFI_REASON_ASSOC_EXPIRE` 等符号在 v6.0 中未定义 - **修复**:`wifi_manager.c` 中所有 reason code 添加 `#ifdef` 保护 #### 3. CMakeLists.txt 缺少源文件 - **错误**:`llm_provider.c` 未加入编译列表,导致链接错误 - **修复**:添加 `ota/ota_manager.c` 到 SRCS #### 4. 头文件缺失(共 16 处) | 文件 | 缺失头文件 | 原因 | |------|-----------|------| | `cli/serial_cli.c` | `llm/llm_provider.h` | `llm_provider_set_api_key` | | `llm/llm_provider.c` | `esp_http_client.h` | `esp_http_client_set_header` | | `bus/message_bus.c` | `freertos/FreeRTOS.h`, `freertos/queue.h` | `xQueueCreate`, `QueueHandle_t` | | `wifi/wifi_manager.c` | `esp_event.h` | `esp_event_handler_instance_register` | | `wifi/wifi_manager.c` | `freertos/FreeRTOS.h`, `freertos/task.h`, `freertos/event_groups.h` | `xEventGroupCreate`, `vTaskDelay` | | `ota/ota_manager.c` | `esp_system.h` | `esp_restart` | | `channels/telegram/telegram_bot.c` | `freertos/FreeRTOS.h`, `freertos/task.h` | `xTaskCreatePinnedToCore`, `vTaskDelay` | | `tools/tool_registry.c` | `` | `free()` | | `proxy/http_proxy.c` | `` | `struct timeval` | | `gateway/ws_server.c` | `` | `uint8_t` | ### ESP-IDF v6.0 API 兼容性验证 以下 API 在 v6.0 中**仍然存在**,无需修改: - `esp_spiffs_info()` ✅ - `esp_websocket_client_send_bin()` ✅ - `esp_tls_set_conn_sockfd()` / `esp_tls_set_conn_state()` ✅ - `esp_console_new_repl_uart()` / `esp_console_new_repl_usb_serial_jtag()` ✅ - `esp_https_ota()` + `esp_https_ota_config_t` ✅ - `esp_wifi_set_config()` ✅ ### 烧录说明 ESP32-S3 使用 **USB 口**(内置 USB Serial/JTAG 控制器)烧录: ```powershell idf.py -p COMx flash monitor ``` - 插 USB 口(标记为 `USB`),不是 UART 口 - 如遇连接失败,按住 BOOT 键再插线进入下载模式 --- ## 讨论:增加国内大模型厂商接入 **日期**:2026-03-31 **目标**:为 MimiClaw 增加硅基流动和火山方舟(豆包模型)接入 ### 项目现状 - 当前支持:Anthropic (Claude)、OpenAI (GPT) - 运行平台:ESP32-S3,纯 C 语言 - 交互方式:Telegram 机器人 ### 国内厂商 API 兼容性 - **硅基流动**:OpenAI 兼容,Base URL `https://api.siliconflow.cn/v1` - **火山方舟**:OpenAI 兼容,Base URL `https://ark.cn-beijing.volces.com/api/v3` ### 实现方案 由于两者都提供 OpenAI 兼容 API,可复用现有 OpenAI 集成代码,只需: 1. 修改 Base URL 2. 调整认证方式(Bearer Token) 3. 处理模型名称规范 ### 待解决问题 1. 认证方式差异确认 2. 模型名称规范 3. 工具调用格式兼容性验证 --- ## 讨论:时区设置功能 **日期**:2026-04-01 **目标**:为 MimiClaw 添加可配置的时区支持,默认改为中国时区 ### 背景 - 原默认时区为 `PST8PDT,M3.2.0,M11.1.0`(太平洋时间) - 需要支持用户自定义时区,特别是中国用户(UTC+8) - 交互方式从 Telegram 改为飞书 ### 实现方案 #### 存储方式 - **NVS 存储**:使用 `system_config` namespace,key 为 `timezone` - **Build-time 默认值**:`MIMI_TIMEZONE` 改为 `"CST-8"` - **优先级**:NVS 值 > Build-time 值 #### CLI 命令 ``` set_timezone # 例如: set_timezone CST-8 或 set_timezone Asia/Shanghai timezone_show # 显示当前时区配置和本地时间 ``` #### LLM 工具 - 新增 `set_timezone` 工具,LLM 可通过对话设置时区 - 支持 POSIX 格式(`CST-8`)和城市名(`Asia/Shanghai`) - 内置 18 个城市名映射表 ### 改动文件 | 文件 | 操作 | |------|------| | `main/mimi_config.h` | 默认时区改为 `CST-8`,添加 `MIMI_NVS_KEY_TIMEZONE` | | `main/tools/tool_set_timezone.h` | **新建** | | `main/tools/tool_set_timezone.c` | **新建** | | `main/tools/tool_registry.c` | include 新头文件 + 注册工具 | | `main/cli/serial_cli.c` | 添加 `set_timezone` / `timezone_show` 命令 | | `main/CMakeLists.txt` | 添加 `tool_set_timezone.c` 到 SRCS | ### 支持的时区格式 - POSIX: `CST-8`, `JST-9`, `EST5EDT,M3.2.0,M11.1.0`, `UTC0` - 城市名: Asia/Shanghai, Asia/Tokyo, America/New_York 等 18 个预设