Commit Graph

57 Commits

Author SHA1 Message Date
m.dreamfly
54a7ab02e1 feat: add socks5 proxy support 2026-02-13 15:04:20 +08:00
crispyberry
c9a4eae8f2 docs: add USB port warning to prevent plugging into wrong port
Many ESP32-S3 boards have two USB-C ports (USB and COM). Added a
callout with a reference photo reminding users to use the USB
(Serial/JTAG) port instead of the COM (UART bridge) port.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 22:06:21 +08:00
crispyberry
e4d482cfcc Merge pull request #27 from IRONICBo/feat/add-openai-model 2026-02-12 13:35:46 +08:00
Bo
e79e4e4932 feat: add wifi scaner in uart.
Signed-off-by: Bo <boironic@gmail.com>
2026-02-10 15:57:14 +08:00
crispyberry
5bcb28abbd ci: add build & release workflow 2026-02-09 22:07:28 +08:00
crispyberry
003323754d feat: add GitHub issue templates for bug, feature, and question
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 20:05:47 +08:00
crispyberry
d2c2188a72 Merge pull request #8 from IRONICBo/docs/add-arch 2026-02-09 13:59:47 +08:00
crispyberry
ba11f51955 docs: add Discord badge to READMEs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 11:35:29 +08:00
crispyberry
68ecb4e33c docs: add Star History chart to READMEs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 11:17:13 +08:00
Asklv
2636c21ed0 feat: add mimiclaw architecture.
Signed-off-by: Asklv <boironic@gmail.com>
2026-02-09 02:45:00 +08:00
crispyberry
1242119bb8 feat: strengthen system prompt memory guidance for proactive persistence
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 22:43:13 +08:00
crispyberry
8257a2bf50 docs: remove Discord badge from READMEs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 22:23:48 +08:00
crispyberry
da43c27003 feat: restore NVS runtime config with CLI commands (NVS > build-time priority)
Bring back two-layer configuration: build-time defaults from mimi_secrets.h
with runtime NVS overrides via serial CLI. NVS values take highest priority
so a pre-flashed board can be reconfigured anywhere with just a USB cable.

Restored CLI commands: wifi_set, set_tg_token, set_api_key, set_model,
set_proxy, clear_proxy, set_search_key. Added new commands: config_show
(displays all config with sensitive fields masked), config_reset (clears
all NVS overrides), and help (lists all commands).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 20:42:10 +08:00
crispyberry
9eb26587ed docs: add MIT, DeepWiki, Discord, and X badges to READMEs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 13:47:46 +08:00
crispyberry
353c404a7e docs: add MIT license
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 11:59:29 +08:00
crispyberry
b715021bd7 docs: specify ESP-IDF v5.5+ requirement
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 00:16:03 +08:00
crispyberry
39794e7f28 docs: update build/flash instructions with fullclean and port detection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 23:09:40 +08:00
crispyberry
82f93b617b refactor: remove NVS/CLI config, use mimi_secrets.h as sole configuration method
All configuration is now done exclusively through mimi_secrets.h at build time.
Removed NVS read/write logic, CLI config commands (wifi_set, set_tg_token,
set_api_key, set_model, set_proxy, clear_proxy, set_search_key), and setter
functions from all modules. CLI retains debug/maintenance commands only.
Updated all documentation to reflect the change.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 23:04:24 +08:00
crispyberry
43ded65713 feat: randomize working indicator phrase before each API call
Move working indicator into ReAct loop so it fires before every
llm_chat_tools call (including tool-use iterations), and randomly
select from 5 cute phrases using esp_random().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 18:36:51 +08:00
crispyberry
31b15aa1f9 feat: add file tools (read/write/edit/list_dir) for agent memory writes
Enable the agent to persist memories by adding 4 SPIFFS file tools
(read_file, write_file, edit_file, list_dir) with path validation,
and update the system prompt with memory guidelines pointing to
/spiffs/memory/MEMORY.md and daily notes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 17:54:52 +08:00
crispyberry
0ed0febcd0 feat: add working indicator and get_current_time to system prompt
Send "mimi😗is working..." to user when processing starts.
List get_current_time in system prompt available tools so the agent
knows to call it for time/date queries. Remove auto time fetch from
system prompt builder — agent calls the tool on demand.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 15:54:23 +08:00
crispyberry
78c7fc9b1a feat: add get_current_time built-in tool and timezone config
Fetches real time via HTTP Date header (works through proxy),
sets system clock, and returns formatted local time to the agent.
Also adds MIMI_TIMEZONE config and updates default model to claude-opus-4-5.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 13:05:02 +08:00
crispyberry
041fd6b59e docs: add web_search tool 2026-02-07 11:06:36 +08:00
crispyberry
dbeaea2b2b fix: silence noisy esp-x509-crt-bundle INFO logs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 10:46:35 +08:00
crispyberry
e04254fa94 docs: update for ReAct tool use, web_search, and build-time config
Update READMEs with config file setup (Option A/B), tool section,
set_search_key command, and touch-before-build note. Update
ARCHITECTURE.md with ReAct data flow, tools module map, non-streaming
API protocol, and config priority. Mark tool use items done in TODO.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 00:37:49 +08:00
crispyberry
0e1da79b74 feat: add ReAct agent loop and build-time config (mimi_secrets.h)
Rewrite agent_loop.c with ReAct tool use loop: LLM call → tool
execution → repeat until end_turn (max 10 iterations). Add tool
guidance to system prompt. Add set_search_key CLI command.

Add mimi_secrets.h for build-time credentials with highest priority
over NVS/CLI values. All modules (wifi, telegram, llm, proxy,
web_search) check build-time secrets first, fall back to NVS.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 00:37:43 +08:00
crispyberry
2fe81b8ee1 feat: add non-streaming LLM API, tool registry, and web_search tool
Replace SSE streaming with non-streaming JSON for Anthropic API.
Add llm_chat_tools() returning structured llm_response_t with text
and tool_use blocks. Implement tool registry with dispatch-by-name
and web_search tool via Brave Search API (direct + proxy support).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 00:37:36 +08:00
crispyberry
7a6609b722 docs: add memory write via tool use to TODO, mark proxy as done
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 23:12:57 +08:00
crispyberry
37d645474a fix: heap-allocate memory_read buffer to prevent stack overflow
CLI task stack is 4KB; the 4096-byte stack buffer in cmd_memory_read
was overflowing and corrupting the heap. Use malloc instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 23:04:09 +08:00
crispyberry
9b8121c4ce docs: add Chinese README, update proxy commands and model name
- Add README_CN.md with proxy setup guide for users in China
- Add language switcher to both READMEs
- Add set_proxy/clear_proxy to More Commands section
- Update default model to claude-opus-4-6
- Add Nanobot to acknowledgments
- Update ARCHITECTURE.md: proxy module, stack sizes, NVS config

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 23:01:05 +08:00
crispyberry
3822928e6d feat: add HTTP CONNECT proxy support for Telegram and Claude API
Enable ESP32-S3 to reach api.telegram.org and api.anthropic.com through
an HTTP CONNECT proxy (e.g. Clash Verge), required in regions where
these services are blocked.

- New proxy module (http_proxy.c/h): CONNECT tunnel + TLS via esp_tls
  with pre-connected socket injection (esp_tls_set_conn_sockfd)
- Telegram and LLM modules split into direct/proxy paths
- CLI commands: set_proxy <host> <port>, clear_proxy
- Proxy config persisted in NVS
- Fix TLS buffer: MBEDTLS_SSL_IN_CONTENT_LEN 4096 → 16384
- Increase task stacks for TLS overhead (poll 12KB, agent 12KB, outbound 8KB)
- Default model changed to claude-opus-4-6
- Capture raw error body for non-200 API responses

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 22:40:28 +08:00
crispyberry
8b5213df87 fix: add TLS certificate bundle for HTTPS connections
All HTTP clients (Telegram, Claude API, OTA) were missing
crt_bundle_attach, causing TLS handshake failures. Add esp-tls
dependency to CMakeLists.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 21:18:21 +08:00
crispyberry
5cab441035 docs: update How It Works with agent loop architecture diagram
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 20:35:15 +08:00
crispyberry
dd17c74eee docs: features 2026-02-06 18:55:11 +08:00
crispyberry
1b5f00bea5 feat: add app_update dependency and sdkconfig defaults
Add app_update component to CMakeLists REQUIRES for OTA version
reporting. Add sdkconfig.defaults scaffold and gitignore nanobot
reference repo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 18:44:51 +08:00
crispyberry
3b53610bdf docs: rewrite README for general audience, move tech details to docs
Simplified language, plain diagrams, human-readable memory table.
Technical architecture stays in docs/ARCHITECTURE.md.
No Linux, inspired by OpenClaw.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 19:12:20 +08:00
crispyberry
bf772cb892 docs: add architecture design and feature gap tracker
ARCHITECTURE.md covers system diagram, data flow, module map,
task layout, memory budget, flash partitions, NVS config,
protocols, and nanobot reference mapping.
TODO.md tracks unimplemented features vs nanobot (P0/P1/P2).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:56:14 +08:00
crispyberry
40412c6dba feat: add SPIFFS default data (SOUL.md, USER.md, MEMORY.md)
Pre-built content for flashing to SPIFFS partition:
personality definition, user profile template, empty memory.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:56:09 +08:00
crispyberry
fa4582bf70 feat: wire up app_main with all subsystems
Startup sequence: NVS → SPIFFS → bus → memory → WiFi → CLI →
Telegram → agent loop → WebSocket → outbound dispatch.
CMakeLists registers all source files and ESP-IDF dependencies.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:56:04 +08:00
crispyberry
0b9aef22a7 feat: add OTA firmware update from URL
Wraps esp_https_ota for over-the-air updates via HTTPS.
Dual OTA partitions enable safe rollback.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:55:59 +08:00
crispyberry
44790d016b feat: add serial CLI with 12 configuration commands
esp_console REPL over USB-JTAG: wifi_set, set_tg_token,
set_api_key, set_model, memory_read/write, session_list/clear,
heap_info, restart.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:55:54 +08:00
crispyberry
9435302063 feat: add WebSocket gateway on port 18789
JSON protocol server using esp_http_server with WS upgrade.
Supports up to 4 concurrent clients, auto-assigned chat_id,
routes messages through the agent via message bus.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:55:49 +08:00
crispyberry
3365db45b9 feat: add memory store and session manager
MEMORY.md for long-term memory, daily YYYY-MM-DD.md notes.
JSONL session files per chat_id with ring buffer history
(max 20 messages). All persisted on SPIFFS.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:55:44 +08:00
crispyberry
0c517b734f feat: add agent loop and context builder
Agent loop runs on Core 1: pops inbound messages, builds system
prompt from bootstrap files + memory, calls Claude API, saves
session, pushes response to outbound queue. PSRAM-allocated buffers.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:55:38 +08:00
crispyberry
cbd137c3fa feat: add Claude API proxy with SSE streaming parser
Anthropic Messages API integration with streaming response.
Parses content_block_delta SSE events, accumulates text tokens.
API key and model stored in NVS.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:55:32 +08:00
crispyberry
44a82520e2 feat: add Telegram bot with long polling and message splitting
Direct HTTPS long polling against Telegram Bot API (getUpdates),
JSON parsing with cJSON, auto-split at 4096 chars, Markdown
with plain-text fallback.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:55:28 +08:00
crispyberry
efb3e09929 feat: add FreeRTOS message bus (inbound + outbound queues)
mimi_msg_t carries channel/chat_id/content between tasks.
Decouples input channels from agent loop and output dispatch.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:55:23 +08:00
crispyberry
0ebd1ccb20 feat: add WiFi manager with NVS credentials and auto-reconnect
STA mode, reads SSID/password from NVS, exponential backoff
reconnect (1s-30s), EventGroup for connection state.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:55:17 +08:00
crispyberry
db3a8b1202 feat: add sdkconfig defaults, partition table, and global config
16MB flash with custom partitions (2x2MB OTA + 12MB SPIFFS),
PSRAM/WiFi/TLS tuning, and centralized compile-time constants.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:55:12 +08:00
crispyberry
2d0660ab58 chore: add .gitignore and sdkconfig.defaults.esp32s3 2026-02-05 18:15:08 +08:00