Files
mimiclaw/taolun.md
titor 7dc4122778
Some checks failed
Build / idf-build (push) Has been cancelled
Build & Release / build (push) Has been cancelled
feat: 添加时区设置功能,默认时区改为 CST-8
- 新增 set_timezone LLM 工具,支持通过对话设置时区
- 新增 set_timezone / timezone_show CLI 命令
- 默认时区从 PST 改为 CST-8(中国标准时间 UTC+8)
- 支持 POSIX 格式和 18 个城市名映射(Asia/Shanghai 等)
- 时区通过 NVS 持久化存储(system_config namespace)
- config_show 中显示当前时区配置
- 更新 changelog.md 和 taolun.md 文档
2026-04-01 00:50:41 +08:00

127 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 讨论记录
---
## 讨论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` | `<stdlib.h>` | `free()` |
| `proxy/http_proxy.c` | `<sys/time.h>` | `struct timeval` |
| `gateway/ws_server.c` | `<stdint.h>` | `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` namespacekey 为 `timezone`
- **Build-time 默认值**`MIMI_TIMEZONE` 改为 `"CST-8"`
- **优先级**NVS 值 > Build-time 值
#### CLI 命令
```
set_timezone <TZ> # 例如: 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 个预设