119 lines
9.5 KiB
Markdown
119 lines
9.5 KiB
Markdown
# 使用说明
|
||
|
||
## 编译
|
||
```shell
|
||
idf.py fullclean
|
||
idf.py set-target esp32s3
|
||
```
|
||
|
||
## MimiClaw 启动顺序图
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ app_main() 开始 │
|
||
└─────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 1. 核心基础设施初始化 │
|
||
│ ┌───────────────────────────────────────────────┐ │
|
||
│ │ • 初始化NVS (非易失性存储) │ │
|
||
│ │ • NVS安全检查 │ │
|
||
│ │ • 创建默认事件循环 │ │
|
||
│ │ • 初始化SPIFFS (文件系统) │ │
|
||
│ └───────────────────────────────────────────────┘ │
|
||
└─────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 2. 子系统初始化 │
|
||
│ ┌───────────────────────────────────────────────┐ │
|
||
│ │ • 消息总线 (message_bus_init) │ │
|
||
│ │ • 内存存储 (memory_store_init) │ │
|
||
│ │ • 技能加载器 (skill_loader_init) │ │
|
||
│ │ • 会话管理器 (session_mgr_init) │ │
|
||
│ │ • WiFi管理器 (wifi_manager_init) │ │
|
||
│ │ • HTTP代理 (http_proxy_init) │ │
|
||
│ │ • Telegram机器人 (telegram_bot_init) │ │
|
||
│ │ • 飞书机器人 (feishu_bot_init) │ │
|
||
│ │ • LLM代理 (llm_proxy_init) │ │
|
||
│ │ • 工具注册表 (tool_registry_init) │ │
|
||
│ │ • 定时服务 (cron_service_init) │ │
|
||
│ │ • 心跳服务 (heartbeat_init) │ │
|
||
│ │ • 代理循环 (agent_loop_init) │ │
|
||
│ └───────────────────────────────────────────────┘ │
|
||
└─────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 3. 串口CLI启动 (无WiFi依赖) │
|
||
│ ┌───────────────────────────────────────────────┐ │
|
||
│ │ • 串口CLI初始化 (serial_cli_init) │ │
|
||
│ └───────────────────────────────────────────────┘ │
|
||
└─────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 4. WiFi连接阶段 │
|
||
│ ┌───────────────────────────────────────────────┐ │
|
||
│ │ • 启动WiFi管理器 (wifi_manager_start) │ │
|
||
│ │ • 扫描附近AP并打印 │ │
|
||
│ │ • 等待WiFi连接 (30秒超时) │ │
|
||
│ └───────────────────────────────────────────────┘ │
|
||
└─────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌───────────────┐
|
||
│ WiFi连接成功? │
|
||
└───────────────┘
|
||
│
|
||
┌───────────────────┼───────────────────┐
|
||
│ │ │
|
||
▼ │ ▼
|
||
┌─────────────────────┐ │ ┌─────────────────────┐
|
||
│ 5a. 连接成功路径 │ │ │ 5b. 连接失败路径 │
|
||
│ • 获取IP地址 │ │ │ • 进入WiFi配置门户│
|
||
│ • 初始化时间同步 │ │ │ (wifi_onboard_start)│
|
||
│ (time_sync_init) │ │ │ • 重启设备 │
|
||
└─────────────────────┘ │ └─────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────┐
|
||
│ 启动管理门户(可选) │
|
||
│ (wifi_onboard_start)│
|
||
└─────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 6. 网络服务启动 │
|
||
│ ┌───────────────────────────────────────────────┐ │
|
||
│ │ • 创建出站调度任务 (outbound_dispatch_task) │ │
|
||
│ │ • 启动代理循环 (agent_loop_start) │ │
|
||
│ │ • 启动Telegram机器人 (telegram_bot_start) │ │
|
||
│ │ • 启动飞书机器人 (feishu_bot_start) │ │
|
||
│ │ • 启动定时服务 (cron_service_start) │ │
|
||
│ │ • 启动心跳服务 (heartbeat_start) │ │
|
||
│ │ • 启动WebSocket服务器 (ws_server_start) │ │
|
||
│ └───────────────────────────────────────────────┘ │
|
||
└─────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ MimiClaw 启动完成 │
|
||
│ "Type 'help' for CLI commands" │
|
||
└─────────────────────────────────────────────────────────┘
|
||
|
||
|
||
### 关键启动点和依赖关系
|
||
#### 时间依赖
|
||
1. *时间同步 (time_sync_init)*:只在WiFi连接成功后初始化
|
||
2. 网络服务:所有网络服务(Telegram、飞书、WebSocket等)都在WiFi连接成功后启动
|
||
#### 无依赖启动
|
||
1. 串口CLI:最早启动,即使没有WiFi也能工作
|
||
2. 核心基础设施:NVS、SPIFFS等必须首先初始化
|
||
#### 条件分支
|
||
1. WiFi连接失败:进入配置门户模式,阻塞直到配置成功并重启
|
||
2. WiFi连接成功:继续启动所有网络服务
|
||
#### 并行启动
|
||
- 多个子系统初始化是顺序执行的,但一旦启动,它们会在各自的FreeRTOS任务中并行运行
|
||
- 出站调度任务在启动网络服务前创建,以避免丢失早期响应
|
||
这个启动顺序确保了核心功能在没有网络时也能部分工作(如CLI命令),同时网络相关服务在连接建立后按顺序启动。
|