#pragma once /* MimiClaw Global Configuration */ /* Build-time secrets (highest priority, override NVS) */ #if __has_include("mimi_secrets.h") #include "mimi_secrets.h" #endif #ifndef MIMI_SECRET_WIFI_SSID #define MIMI_SECRET_WIFI_SSID "" #endif #ifndef MIMI_SECRET_WIFI_PASS #define MIMI_SECRET_WIFI_PASS "" #endif #ifndef MIMI_SECRET_TG_TOKEN #define MIMI_SECRET_TG_TOKEN "" #endif #ifndef MIMI_SECRET_API_KEY #define MIMI_SECRET_API_KEY "" #endif #ifndef MIMI_SECRET_MODEL #define MIMI_SECRET_MODEL "" #endif #ifndef MIMI_SECRET_MODEL_PROVIDER #define MIMI_SECRET_MODEL_PROVIDER "anthropic" #endif #ifndef MIMI_SECRET_PROXY_HOST #define MIMI_SECRET_PROXY_HOST "" #endif #ifndef MIMI_SECRET_PROXY_PORT #define MIMI_SECRET_PROXY_PORT "" #endif #ifndef MIMI_SECRET_PROXY_TYPE #define MIMI_SECRET_PROXY_TYPE "" #endif #ifndef MIMI_SECRET_SEARCH_KEY #define MIMI_SECRET_SEARCH_KEY "" #endif #ifndef MIMI_SECRET_FEISHU_APP_ID #define MIMI_SECRET_FEISHU_APP_ID "" #endif #ifndef MIMI_SECRET_FEISHU_APP_SECRET #define MIMI_SECRET_FEISHU_APP_SECRET "" #endif #ifndef MIMI_SECRET_TAVILY_KEY #define MIMI_SECRET_TAVILY_KEY "" #endif /* Provider-specific API keys (fallback when generic MIMI_SECRET_API_KEY is empty) */ #ifndef MIMI_SECRET_ANTHROPIC_API_KEY #define MIMI_SECRET_ANTHROPIC_API_KEY "" #endif #ifndef MIMI_SECRET_OPENAI_API_KEY #define MIMI_SECRET_OPENAI_API_KEY "" #endif #ifndef MIMI_SECRET_SILICONFLOW_API_KEY #define MIMI_SECRET_SILICONFLOW_API_KEY "" #endif #ifndef MIMI_SECRET_SILICONFLOW_BASE_URL #define MIMI_SECRET_SILICONFLOW_BASE_URL "https://api.siliconflow.cn/v1" #endif #ifndef MIMI_SECRET_VOLCENGINE_API_KEY #define MIMI_SECRET_VOLCENGINE_API_KEY "" #endif #ifndef MIMI_SECRET_VOLCENGINE_BASE_URL #define MIMI_SECRET_VOLCENGINE_BASE_URL "https://ark.cn-beijing.volces.com/api/v3" #endif /* WiFi */ #define MIMI_WIFI_MAX_RETRY 10 #define MIMI_WIFI_RETRY_BASE_MS 1000 #define MIMI_WIFI_RETRY_MAX_MS 30000 /* Telegram Bot */ #define MIMI_TG_POLL_TIMEOUT_S 30 #define MIMI_TG_MAX_MSG_LEN 4096 #define MIMI_TG_POLL_STACK (12 * 1024) #define MIMI_TG_POLL_PRIO 5 #define MIMI_TG_POLL_CORE 0 #define MIMI_TG_CARD_SHOW_MS 3000 #define MIMI_TG_CARD_BODY_SCALE 3 /* Feishu Bot */ #define MIMI_FEISHU_MAX_MSG_LEN 4096 #define MIMI_FEISHU_POLL_STACK (12 * 1024) #define MIMI_FEISHU_POLL_PRIO 5 #define MIMI_FEISHU_POLL_CORE 0 #define MIMI_FEISHU_WEBHOOK_PORT 18790 #define MIMI_FEISHU_WEBHOOK_PATH "/feishu/events" #define MIMI_FEISHU_WEBHOOK_MAX_BODY (16 * 1024) /* Agent Loop */ #define MIMI_AGENT_STACK (24 * 1024) #define MIMI_AGENT_PRIO 6 #define MIMI_AGENT_CORE 1 #define MIMI_AGENT_MAX_HISTORY 20 #define MIMI_AGENT_MAX_TOOL_ITER 10 #define MIMI_MAX_TOOL_CALLS 4 #define MIMI_AGENT_SEND_WORKING_STATUS 1 /* Timezone (POSIX TZ format) */ #define MIMI_TIMEZONE "CST-8" /* LLM */ #define MIMI_LLM_DEFAULT_MODEL "claude-opus-4-5" #define MIMI_LLM_PROVIDER_DEFAULT "anthropic" #define MIMI_LLM_MAX_TOKENS 4096 #define MIMI_LLM_API_URL "https://api.anthropic.com/v1/messages" #define MIMI_OPENAI_API_URL "https://api.openai.com/v1/chat/completions" #define MIMI_SILICONFLOW_API_URL "https://api.siliconflow.cn/v1/chat/completions" #define MIMI_VOLCENGINE_API_URL "https://ark.cn-beijing.volces.com/api/v3/chat/completions" #define MIMI_LLM_API_VERSION "2023-06-01" #define MIMI_LLM_STREAM_BUF_SIZE (32 * 1024) #define MIMI_LLM_LOG_VERBOSE_PAYLOAD 0 #define MIMI_LLM_LOG_PREVIEW_BYTES 160 /* Message Bus */ #define MIMI_BUS_QUEUE_LEN 16 #define MIMI_OUTBOUND_STACK (12 * 1024) #define MIMI_OUTBOUND_PRIO 5 #define MIMI_OUTBOUND_CORE 0 /* Memory / SPIFFS */ #define MIMI_SPIFFS_BASE "/spiffs" #define MIMI_SPIFFS_CONFIG_DIR MIMI_SPIFFS_BASE "/config" #define MIMI_SPIFFS_MEMORY_DIR MIMI_SPIFFS_BASE "/memory" #define MIMI_SPIFFS_SESSION_DIR MIMI_SPIFFS_BASE "/sessions" #define MIMI_MEMORY_FILE MIMI_SPIFFS_MEMORY_DIR "/MEMORY.md" #define MIMI_SOUL_FILE MIMI_SPIFFS_CONFIG_DIR "/SOUL.md" #define MIMI_USER_FILE MIMI_SPIFFS_CONFIG_DIR "/USER.md" #define MIMI_CONTEXT_BUF_SIZE (16 * 1024) #define MIMI_SESSION_MAX_MSGS 20 /* Cron / Heartbeat */ #define MIMI_CRON_FILE MIMI_SPIFFS_BASE "/cron.json" #define MIMI_CRON_MAX_JOBS 16 #define MIMI_CRON_CHECK_INTERVAL_MS (60 * 1000) #define MIMI_HEARTBEAT_FILE MIMI_SPIFFS_BASE "/HEARTBEAT.md" #define MIMI_HEARTBEAT_INTERVAL_MS (30 * 60 * 1000) /* GPIO */ #define MIMI_GPIO_CONFIG_SECTION 1 /* enable GPIO tools */ /* Skills */ #define MIMI_SKILLS_PREFIX MIMI_SPIFFS_BASE "/skills/" /* WebSocket Gateway */ #define MIMI_WS_PORT 18789 #define MIMI_WS_MAX_CLIENTS 4 /* Serial CLI */ #define MIMI_CLI_STACK (4 * 1024) #define MIMI_CLI_PRIO 3 #define MIMI_CLI_CORE 0 /* NVS Namespaces */ #define MIMI_NVS_WIFI "wifi_config" #define MIMI_NVS_TG "tg_config" #define MIMI_NVS_FEISHU "feishu_config" #define MIMI_NVS_LLM "llm_config" #define MIMI_NVS_PROXY "proxy_config" #define MIMI_NVS_SEARCH "search_config" /* NVS Keys */ #define MIMI_NVS_KEY_SSID "ssid" #define MIMI_NVS_KEY_PASS "password" #define MIMI_NVS_KEY_TG_TOKEN "bot_token" #define MIMI_NVS_KEY_FEISHU_APP_ID "app_id" #define MIMI_NVS_KEY_FEISHU_APP_SECRET "app_secret" #define MIMI_NVS_KEY_API_KEY "api_key" #define MIMI_NVS_KEY_TAVILY_KEY "tavily_key" #define MIMI_NVS_KEY_MODEL "model" #define MIMI_NVS_KEY_PROVIDER "provider" #define MIMI_NVS_KEY_PROXY_HOST "host" #define MIMI_NVS_KEY_PROXY_PORT "port" #define MIMI_NVS_KEY_PROXY_TYPE "proxy_type" /* Provider-specific NVS Keys */ #define MIMI_NVS_KEY_ANTHROPIC_API_KEY "anthropic_api_key" #define MIMI_NVS_KEY_ANTHROPIC_BASE_URL "anthropic_base_url" #define MIMI_NVS_KEY_OPENAI_API_KEY "openai_api_key" #define MIMI_NVS_KEY_OPENAI_BASE_URL "openai_base_url" #define MIMI_NVS_KEY_SILICONFLOW_API_KEY "siliconflow_api_key" #define MIMI_NVS_KEY_SILICONFLOW_BASE_URL "siliconflow_base_url" #define MIMI_NVS_KEY_VOLCENGINE_API_KEY "volcengine_api_key" #define MIMI_NVS_KEY_VOLCENGINE_BASE_URL "volcengine_base_url" /* System NVS Keys */ #define MIMI_NVS_KEY_TIMEZONE "timezone" #define MIMI_NVS_KEY_NTP_SERVER "ntp_server" /* NTP */ #define MIMI_DEFAULT_NTP_SERVER "ntp.ntsc.ac.cn" /* WiFi Onboarding (Captive Portal) */ #define MIMI_ONBOARD_AP_PREFIX "MimiClaw-" #define MIMI_ONBOARD_AP_PASS "" /* open network */ #define MIMI_ONBOARD_HTTP_PORT 80 #define MIMI_ONBOARD_DNS_STACK (4 * 1024) #define MIMI_ONBOARD_MAX_SCAN 20