> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# FemtoClaw 微型龙虾智能体
- URL: https://www.hubwiz.com/blog/femtoclaw-a-tiny-lobster-agent/
- Published: 2026-03-09T02:38:41.000Z
- Updated: 2026-03-09T02:38:41.000Z
- Description: 你能在价格低于一杯咖啡的芯片上运行 AI 智能体吗？
- Author: admin
- Tags: AGENT, FEMTOCLAW, #Import 2026-10-14 14:41

我发现了 Ziboyan Wang 开发的 MimiClaw —— 这是一个在 ESP32-S3 上运行 AI 智能体的精彩项目。MimiClaw 证明了你不需要 Linux 就能和 Claude 或 OpenAI 对话。你可以在裸机 C 语言环境中，在 FreeRTOS 任务上实现这一切。

但 MimiClaw 需要配备 8MB PSRAM 的 ESP32-S3 —— 一块价值 10 美元的开发板，而我手头有一块 ESP-WROOM-32，这是我在 2018 年买的。此外，它还需要 Claude 或 OpenAI 的 API 密钥，但我不想为此付费，因为 OpenClaw 和其他 Claws 项目支持 Ollama、vLLM 或 LM Studio 等本地模型。

ESP-WROOM-32 没有 PSRAM。在 WiFi 和 FreeRTOS 占用份额后，只剩下约 120KB 内部 SRAM。两个 TLS 连接（一个用于 Telegram，一个用于 LLM API）每个都要消耗约 120KB。基本上什么都没剩下。我尝试构建并烧录，但无法烧录到 ESP32，因为它需要 ESP32-S3，所以我遇到了阻碍！

我想在 ESP32 上实现这个目标。一块价值 4 美元的微控制器，拥有约 120KB 的可用内存，看看我能否在如此有限的设备上让它运行起来。我 fork 了 MimiClaw 并添加了 ESP32 支持，它成功了。我称之为 **FemtoClaw**。

## 1、FemtoClaw 实际上能做什么

FemtoClaw 是一个运行在裸机 ESP32 硬件上的完整 AI 智能体。以下是它的功能：

- **通过 Telegram 聊天** —— 从手机向它发送消息，获得由 Claude、GPT 或本地 LLM 模型（通过 Ollama 或 LM Studio 提供）驱动的响应
- **搜索网络** —— 使用 DuckDuckGo（零配置）或 Brave Search（需要 API 密钥）
- **记住事物** —— 长期记忆存储在闪存中的 markdown 文件里，重启后仍然保留
- **调度任务** —— AI 创建自己的 cron 作业并自主执行
- **心跳** —— 定期唤醒，检查任务列表，并在未被请求的情况下采取行动
- **读写文件** —— 在板载的 SPIFFS 文件系统上
- **在多个 LLM 提供商上运行** —— Anthropic (Claude)、OpenAI (GPT)、Ollama 和 LM Studio

所有这些功能都使用纯 C 语言实现，运行在 FreeRTOS 上，底层没有操作系统。

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-p-cnQFjXgyvQWHLc84OGUw.png)

FemtoClaw 功能快照。

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-t9poF7EWaXjhnDi8ODXg9A.png)

FemtoClaw 功能快照（续）。

## 2、架构：将智能体塞进 120KB

以下是系统架构图：

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-I956CWgXqC6s7G_RH7R7MA.png)

架构：在 120KB RAM 上运行的智能体

设计将工作分配到两个 CPU 核心：

**核心 0** 处理所有 I/O —— Telegram 长轮询、WebSocket 服务器、串行 CLI、WiFi 事件和出站消息调度。

**核心 1** 完全专注于智能体循环。它从入站队列中取出消息，构建系统提示（从闪存加载个性、用户资料、长期记忆和日常笔记），构建消息数组，并进入 ReAct 循环。

ReAct 循环调用 LLM，检查响应是否包含工具调用，执行它们（网络搜索、文件操作、cron 管理），追加结果，然后再次循环 —— 最多 10 次迭代 —— 直到模型完成。

消息通过 FreeRTOS 队列流动。入站来自各个通道，出站来自智能体。清晰的分离，没有共享状态。

## 3、记忆系统

FemtoClaw 将所有内容作为纯文本文件存储在 SPIFFS 闪存上：

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-4IA6EDA01dD6M3HhVWtq6g.png)

FemtoClaw 的数据结构

没有数据库。没有 Redis。只是闪存芯片上的 markdown 文件。事实证明这就是你所需要的一切。

## 4、困难的部分：在没有 PSRAM 的情况下让它工作

在 ESP32-S3（那块 10 美元的开发板）上，你有 8MB 的 PSRAM。这很容易。TLS 缓冲区、JSON 解析、会话历史 —— 把它们全部扔进 PSRAM 就可以继续了。

在 ESP-WROOM-32 上，你没有任何这些东西。以下是内存预算：

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-3-1CbR7umQKxkn6lsFvVvA.png)

ESP32 SRAM 上的内存分配

每个缓冲区都必须仔细调整大小。LLM 流缓冲区从 32KB (S3) 降到 8KB (ESP32)。上下文缓冲区从 16KB 降到 4KB。这些数字不是随意的 —— 它们是大量反复试验的结果。

`femto_config.h` 中的 `#if CONFIG_SPIRAM` 守卫处理这种分割：

```
#if CONFIG_SPIRAM
#define FEMTO_LLM_STREAM_BUF_SIZE (32 * 1024)
#else
#define FEMTO_LLM_STREAM_BUF_SIZE (8 * 1024)
#endif

```

它有效。

## 5、多提供商 LLM：不仅仅是 Claude

MimiClaw 只支持 Claude 或 OpenAI。我从一开始就想要的是提供商的灵活性以及对本地模型的支持。FemtoClaw 目前支持四个 LLM 后端：

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-2uEc_4UdGssuoaVOKLXjSg.png)

FemtoClaw 支持的 LLM

你可以通过串行 CLI 在运行时切换提供商 —— 无需重新烧录：

```
femto> set_model_provider openai
femto> set_api_base_url http://192.168.1.100:11434
femto> set_model minimax-m2.5:cloud

```

LLM 代理自动处理所有格式差异。Anthropic 使用 `system` 作为顶级字段和 `input_schema` 作为工具。OpenAI 将系统提示放在消息数组中，并将工具包装在 `function` 对象中。代理在它们之间进行透明转换。

这意味着你可以完全离线地在本地网络上使用 Ollama 运行 FemtoClaw。一块 4 美元的芯片与本地 LLM 对话。无需云端。

## 6、零配置网络搜索：DuckDuckGo 来救场

MimiClaw 为所有功能都需要 API 密钥。我不想为网络搜索这样做。如果有人买了一块 4 美元的开发板并烧录了 FemtoClaw，网络搜索应该直接工作。

所以我构建了一个在 ESP32 本身上运行的 DuckDuckGo HTML 抓取器。它向 `html.duckduckgo.com/html/` 发送 POST 请求，解析原始 HTML 响应，并提取标题、URL 和摘要。

棘手的部分？DuckDuckGo 的 HTML 页面在实际结果开始之前有大约 8KB 的样板代码。在具有 8KB 缓冲区的 ESP32 上，这意味着你的整个缓冲区被标题和导航填充 —— 没有结果。

修复方案是一个流式 HTML 解析器，它会跳过所有内容，直到找到 `class="results"`。只有那时它才开始写入缓冲区。这个单一优化使 DuckDuckGo 能够在 8KB RAM 上使用。

如果你确实有 Brave Search API 密钥，FemtoClaw 会改用它 —— JSON 解析更清晰、更快。但 DuckDuckGo 开箱即用，这很重要。

## 7、双目标：一个代码库，两个芯片

FemtoClaw 在同一个代码库中运行在 4 美元的 ESP-WROOM-32 和 10 美元的 ESP32-S3 上。ESP-IDF 构建系统处理目标选择：

```
idf.py set-target esp32 # $4 板
idf.py set-target esp32s3 # $10 板

```

S3 获得更大的缓冲区、PSRAM 分配，并有资格使用需要第三个 TLS 连接或更多闪存空间的功能。路线图根据硬件约束将每个计划的功能标记为"两者都支持"或"仅 S3"：

**两者都支持（4 美元 + 10 美元）：** 系统信息工具、Telegram 白名单、API 密钥轮换、模型故障转移、webhook 端点、天气工具、Gemini 提供商

**仅 S3（10 美元）：** HTTP 获取、会话压缩、Discord 机器人、Web 仪表板、从 URL 安装技能

ESP32 并没有被削弱 —— 它运行完整的智能体循环、网络搜索、cron、心跳和记忆系统。S3 只是解锁了需要更多 RAM 或闪存的额外功能。

## 8、我学到了什么

构建 FemtoClaw 教会了我一些代码中不会显现的东西：

**限制催生创造力。** 当你只有 120KB 时，你不添加功能 —— 你减少浪费。每次分配都会被质疑。每个缓冲区都会被测量。结果是软件只做它需要做的事情，不多不少。

**Markdown 作为存储格式被低估了。** SOUL.md、MEMORY.md、日常笔记 —— AI 读写的是人类使用的相同格式。没有序列化层，没有 ORM，没有模式迁移。只是文本文件。

**ReAct 模式出奇地可移植。** 在云服务器上的 Python 中运行的相同观察-思考-行动循环，在微控制器上的 C 语言中也能运行。LLM 不在乎是什么在调用它。你只需要解析 JSON 和发出 HTTP 请求 —— ESP-IDF 两者都处理得很好。

**4 美元的硬件惊人地强大。** ESP32 是为 IoT 传感器和 WiFi 小工具设计的。但通过精心设计，它运行一个完整的 AI 智能体。这感觉像是未来 —— 绝对边缘的智能，在硬件上足够便宜，可以嵌入任何地方。

## 9、自己试试

FemtoClaw 在 MIT 许可证下是[开源](https://github.com/manjunathshiva/femtoclaw?ref=hubwiz.com)的。你需要：

- 一块 ESP-WROOM-32（4 美元）或 ESP32-S3（10 美元）开发板
- 一个 Telegram 机器人令牌（从 BotFather 免费获得）
- 一个来自 Anthropic、OpenAI 或本地 Ollama/LM Studio 实例的 API 密钥

烧录它，发送一条 Telegram 消息，然后看着一块 4 美元的芯片思考。

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-txwj-BEjYtwEfDinF5jo3g.png)

AI 助手提醒快照。

## 10、接下来是什么

路线图包括会话压缩（总结旧消息以防止上下文丢失）、Discord 机器人、OTA 技能安装和 Web 仪表板 —— 所有这些都针对 ESP32-S3。对于 ESP32，重点是用现有功能的稳定性和效率。

我也在探索将 Gemini 作为第三个云端提供商和直接天气 API 集成，以减少网络搜索开销。

如果你对嵌入式 AI、边缘计算感兴趣，或者只是享受在不可能小的硬件上让事情工作的挑战 —— 我很乐意听到你的声音。提出问题、提交 PR，或者只是给仓库点星标并关注。

世界上最小的 AI 助手可以放在你的手掌中。而且它的成本比你早晨的咖啡还低。

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-T52vJo55KVvhckv9LAbNrQ-2.jpeg)

我的 ESP32 24/7 运行的快照。

---

原文链接: [FemtoClaw: I Built the World's Smallest AI Assistant on a $4 Chip](https://freedium-mirror.cfd/https://medium.com/ai-advances/femtoclaw-i-built-the-worlds-smallest-ai-assistant-on-a-4-chip-0d537c90f230?source=home%5Ffor%5Fyou---------46-98--------------------f246c32b%5F8505%5F4db1%5F93c6%5Fdb28964641fd-------15-------)

汇智网翻译整理，转载请标明出处