【花雕动手做】从169行C代码到50万行TS:MimiClaw与OpenClaw的两条AI智能体进化路线
MimiClaw 和 OpenClaw 并非替代关系,而是共同描绘了AI智能体的完整图景:在云端,OpenClaw 负责复杂的任务规划、多轮对话、跨应用操作,是AI的“大脑”;在边缘,MimiClaw 作为物理世界的“手”和“眼”,将数字指令转化为真实的动作,是AI的“肌肉”。如果你是嵌入式开发者,MimiClaw会让你看到Agent在资源受限设备上的优雅落地,结合笔者的实战经验,能更快速上手部署

原标题
【花雕动手做】从169行C代码到50万行TS:MimiClaw与OpenClaw的两条 AI Agent 进化路线
——在3款ESP32-S3开发板上部署MimiClaw的实战记录
当AI智能体(AI Agent)开始走出云端、进入物理世界,开源社区出现了两种截然不同的声音:一个用169行C代码驱动5美元的ESP32芯片,另一个用50万行TypeScript构建企业级数字管家。本文将从代码量、部署、扩展、开发特色与前景五个维度深度剖析,并首次公开笔者半个月来在5款ESP32-S3开发板上的真实测试结果——成功在3款板子上运行MimiClaw,实现了WiFi、飞书、LLM、博查搜索的集成,并实际控制了WS2812和SG90舵机,在行空板上完成屏幕点亮与变色操作。

1. 引言:两只“龙虾”的宿命分岔
在LLM爆发的今天,AI Agent 项目如雨后春笋般涌现。绝大多数项目都追求“大而全”:支持多种模型、集成数十个平台、提供插件市场……然而,一个名为 MimiClaw(迷你小龙虾) 的项目却反其道而行之:它只有5000行代码,92%是C语言,主程序仅169行,却能运行在不到5美元的ESP32-S3开发板上,直接控制电机继电器、读取各种传感器,成为一个真正的“物理智能体”。
而它的“同名兄长”——OpenClaw——则走了一条完全不同的路:近50万行TypeScript代码,支持WhatsApp、Telegram等50多个渠道,拥有超过5700个技能插件,被腾讯、小米等公司用于自动化数字工作流。
这两只“龙虾”并非竞争关系,而是AI智能体在物理世界与数字世界的两个平行进化方向。本文将从一线研究开发者的视角,结合笔者近期在5款ESP32-S3开发板上的真实测试经历,为你揭示它们各自的底层逻辑与未来前景。

2. 核心理念:极简硬件入口 vs 宏大软件生态
两款 AI Agent 项目的本质分野,源于其核心理念的截然不同:MimiClaw以“硬件落地”为核心,追求极致精简与低成本,将智能压缩到最小硬件单元;OpenClaw以“软件生态”为核心,追求功能全面与场景覆盖,打造AI专属的“数字操作系统”。具体对比如下:

MimiClaw 的哲学可以概括为:去掉一切可以去掉的,只保留让一个传感器“智能”的最小核心。它不需要Linux,不需要文件系统(除SPIFFS外),甚至不需要动态内存分配——整个Agent循环就是一个while(1)+网络请求+函数指针表。
OpenClaw 的哲学则相反:抽象一切可以抽象的,让任何应用都能被Agent操控。它提供了事件总线、插件生命周期、多租户隔离等企业级特性,更像一个为AI设计的“微内核操作系统”。
3. 代码量对比:169 行 vs 50万行(最直观的路线差异)
这是两者最直观、也最能体现技术路线的差异。

MimiClaw 的169行主循环(简化示意):
// mimi.c - 核心Agent循环
void agent_run(void) {
char user_buf[256], llm_resp[1024];
while (1) {
if (uart_has_data()) {
uart_read(user_buf);
// 构造prompt(包含工具描述)
build_prompt(user_buf, tool_descs, global_memory);
// 调用LLM API(HTTP POST)
http_post(llm_resp);
// 解析并执行工具调用(如 GPIO写)
parse_and_execute_tools(llm_resp);
// 语音或串口输出
uart_printf("%s", llm_resp);
}
vTaskDelay(10);
}
}
这169行代码完成了:用户输入读取、上下文组装、LLM API调用、工具调用解析、执行硬件操作、结果输出。没有任何多余的抽象层。
OpenClaw 要实现类似的功能,需要跨越:命令行解析器、配置加载器、模型适配器、技能注册器、对话管理器、事件发射器、中间件链……每一个环节都被拆分成独立的类和接口。这种设计带来的好处是极高的灵活性,但代价就是50万行的代码量与陡峭的学习曲线。
4. 部署对比:5美元硬件 vs 云端/PC环境
4.1 MimiClaw 部署
硬件成本:4~5美元(ESP32-S3开发板(标准44脚 N16R8))
功耗:约0.5W(可锂电池供电数月)
部署流程:
-
安装ESP-IDF(约3GB)
-
git clone 并 idf.py menuconfig 配置WiFi和API Key(注:当前MimiClaw仓库地址解析失败,需替换镜像)
-
idf.py build flash monitor
烧录后完全脱机运行,仅需一个USB供电(或锂电池)
技术门槛:需要了解串口、GPIO、FreeRTOS基础
特色:支持OTA远程升级,可批量部署到数百个设备
4.2 OpenClaw 部署
硬件成本:最低1核CPU、1GB内存的VPS(约5美元/月)或本地电脑
依赖环境:Node.js 18+、npm、Git,Docker可选
部署流程:
-
npm install -g openclaw
-
openclaw init my-agent && cd my-agent
-
配置.env文件(LLM key、平台token等)
-
openclaw run
技术门槛:需要熟悉Node.js生态、环境变量、进程管理
特色:支持Docker Compose一键部署全套(含Redis、Postgres)
5. 实战:在三款ESP32-S3开发板上部署MimiClaw的体验
本部分基于笔者半个月来的真实测试经历,初步接触国外开源项目MimiClaw,深入体验嵌入式AI Agent的实际应用,共尝试了5种ESP32-S3开发板,成功部署3种,并完成了WiFi、飞书、LLM、博查搜索的集成,以及WS2812、SG90舵机的控制,在行空板上实现屏幕点亮与变色,小有收获,现将实战细节分享如下。
5.1 测试硬件清单与部署结果

实战经验总结:
-
44脚标准版兼容性最佳,完全适配MimiClaw的默认配置,烧录后无需任何修改即可正常运行,适合新手入门测试。
-
42脚果云版需重点调整GPIO映射,尤其是UART(串口)和LED引脚,建议通过idf.py menuconfig中的“Board Support”选项,对照开发板原理图进行微调,确保串口通信正常。
-
行空板K10因自带屏幕,默认固件占用了部分GPIO资源,需将MimiClaw的串口输出重映射到空闲引脚,同时手动移植LCD驱动,才能实现屏幕相关功能。
5.2 软件集成成果
在成功部署的三块开发板上,笔者完成了四大软件功能集成,让MimiClaw实现更丰富的智能交互:
-
WiFi连接:通过idf.py menuconfig手动设置WiFi的SSID和密码,配置自动重连机制,确保开发板上电后能稳定接入网络,为后续调用LLM、博查搜索提供网络支持。
-
飞书集成:修改mimi.c中的Webhook URL,将MimiClaw的执行结果、LLM响应内容直接推送到指定飞书群,实现远程监控和指令交互,无需实时连接串口。
-
LLM接入:配置OpenAI兼容的API(笔者选用DeepSeek模型),调整HTTP请求参数,优化响应速度,实测LLM指令响应时间约2~3秒,满足嵌入式场景的基本需求。
-
博查搜索:在MimiClaw的工具函数表中,注册web_search自定义函数,调用博查搜索API(需提前申请免费API Key),让Agent具备实时搜索能力,可获取最新网络信息辅助决策。
5.3 硬件控制实战(附代码示例)
5.3.1 控制WS2812灯带
选用GPIO 48作为控制引脚,通过RMT驱动实现WS2812灯带的颜色控制,核心代码如下:
// 在 tools/ws2812.c 中添加控制函数
void ws2812_set_color(uint8_t r, uint8_t g, uint8_t b) {
// 使用RMT驱动发送WS2812时序信号
esp_rmt_write_pixels(rmt_chan, r, g, b);
}
// 工具注册(添加到全局函数指针表)
const char *tool_ws2812_desc = "{\"name\":\"set_ws2812_color\",\"parameters\":{\"r\":{\"type\":\"integer\"},\"g\":{\"type\":\"integer\"},\"b\":{\"type\":\"integer\"}}}";
register_tool("set_ws2812_color", ws2812_set_color, tool_ws2812_desc);
测试效果:通过LLM发送自然语言指令(如“把灯带调成蓝色”),Agent会自动解析指令,调用ws2812_set_color(0,0,255),实现灯带颜色切换,响应延迟极低。
5.3.2 控制SG90舵机
选用GPIO 9作为PWM输出引脚,通过LEDC模块产生50Hz PWM信号,控制SG90舵机的旋转角度,核心代码如下:
// 角度转占空比(0°→2.5%,180°→12.5%)
uint32_t angle_to_duty(int angle) {
return (angle * 100 + 250) / 18; // 适配SG90舵机参数
}
// 舵机角度控制函数
void servo_set_angle(int angle) {
uint32_t duty = angle_to_duty(angle);
ledc_set_duty(LEDC_MODE, LEDC_CH, duty);
ledc_update_duty(LEDC_MODE, LEDC_CH);
}
// 工具注册
const char *tool_servo_desc = "{\"name\":\"set_servo_angle\",\"parameters\":{\"angle\":{\"type\":\"integer\",\"min\":0,\"max\":180}}}";
register_tool("set_servo_angle", servo_set_angle, tool_servo_desc);
测试效果:分别发送“舵机转到0度”“舵机转到90度”“舵机转到180度”指令,舵机旋转准确,无卡顿,满足基础控制需求。
5.3.3 行空板K10屏幕点亮与变色
行空板K10自带ST7789驱动的1.54英寸LCD屏幕,MimiClaw原生未提供LCD驱动,笔者手动移植st7789.c驱动(约200行代码),并添加屏幕控制工具,核心实现如下:
// 移植ST7789驱动后,初始化屏幕
void lcd_init(void) {
st7789_init();
st7789_fill_screen(0xFFFFFF); // 初始化为白色背景
}
// 屏幕颜色控制函数
void lcd_set_color(uint16_t color) {
st7789_fill_screen(color);
}
// 工具注册
const char *tool_lcd_desc = "{\"name\":\"set_lcd_color\",\"parameters\":{\"color\":{\"type\":\"string\",\"description\":\"16进制颜色值,如#FF0000为红色\"}}}";
register_tool("set_lcd_color", lcd_set_color, tool_lcd_desc);
测试效果:通过自然语言指令(如“把屏幕变成红色”“把屏幕变成绿色”),Agent可解析颜色参数并调用控制函数,实现屏幕背景色切换,操作流畅。
5.4 实战小结

一句话实战感受:MimiClaw的代码极度精简,移植到新开发板的核心工作就是调整GPIO引脚配置和补充外设驱动,相比Python编写的MicroPython方案,C语言带来的实时性和内存效率优势非常明显,尤其适合资源受限的嵌入式场景。
6. 扩展方式:硬件GPIO vs 软件Skills
6.1 MimiClaw:C函数表 + 硬件抽象层
扩展MimiClaw意味着用C语言编写新的“工具函数”,并将其注册到一个全局函数指针表中:
// 添加一个控制舵机的工具
void servo_set_angle(int angle) {
ledc_set_duty(LEDC_HS_MODE, LEDC_HS_CH0, angle_to_duty(angle));
}
// 工具描述(用于LLM的function calling)
const char *tool_servo_desc = "{\"name\":\"set_servo\",\"parameters\":{\"angle\":{\"type\":\"integer\"}}}";
// 注册
register_tool("set_servo", servo_set_angle, tool_servo_desc);
优点:极低延迟(微秒级)、直接控制硬件、无内存分配开销
缺点:需要C语言知识,调试依赖JTAG或串口日志
6.2 OpenClaw:TypeScript Skill 包
扩展OpenClaw通常通过官方CLI添加或创建新的Skill:
openclaw create skill my_slack_bot
cd my_slack_bot
npm install @slack/web-api
Skill是一个完整的npm包,可以依赖任意Node.js库,甚至可以启动子进程、调用系统API。
优点:开发效率高,能复用整个npm生态,支持热插拔
缺点:资源开销大,安全性需要额外考虑(如沙箱)
7. 开发特色:两种极端的工程美学
7.1 MimiClaw:极简主义的胜利
代码可读性:因为只有5000行,任何一个嵌入式工程师都能在半天内理解全貌。
调试:通过串口输出日志,或者使用idf.py monitor实时查看Agent思考过程。
特色功能:
-
本地记忆:将SOUL.md和USER.md存储在SPIFFS中,断电不丢失。
-
超低功耗:可配置deep sleep,只在需要时唤醒(例如语音唤醒或定时采样)。
-
硬件直接操控:无需中间件,gpio_set(LED_PIN, 1)即可点亮LED。
7.2 OpenClaw:企业级框架之重
代码组织:数十个模块,每个模块都有完整的单元测试和文档。
调试:支持–debug模式输出详细日志,也可接入Sentry等错误追踪系统。
特色功能:
-
多Agent协作:一个协调Agent可以分发任务给多个专业Agent(如“财务Agent”、“邮件Agent”)。
-
人机回圈:高风险操作(如删除文件、发送邮件)可配置为需要人工确认。
-
心跳机制:定时唤醒Agent执行预设任务(如“每天9点总结未读消息”)。
8. 前景展望:物理AI vs 数字AI操作系统
8.1 MimiClaw 的未来
-
横向拓展:移植到更多低成本MCU(RISC-V如BL808、ARM Cortex-M如RP2040)。
-
纵向深化:实现群体智能——多个MimiClaw设备通过ESP-NOW协议协同,组成分布式传感器网络。
-
本地LLM融合:当前依赖云端API,下一步可对接TinyML模型(TensorFlow Lite Micro)或本地Ollama(需外挂Linux板),实现完全离线推理。
-
商业化场景:低成本智能家居控制器、农业环境监测、教育机器人套件。
8.2 OpenClaw 的未来
-
企业级部署:已有腾讯、小米等公司内部集成,未来可能推出“按任务成功执行次数”计费的SaaS模式。
-
安全沙箱:社区正在推动更严格的权限模型和审计日志,让高权限Skill也能安全运行。
-
多模态扩展:从文本指令扩展为支持图像识别(如截图分析)、音频流处理。
-
与物理世界连接:通过MimiClaw这类设备作为“网关”,OpenClaw可以间接控制物理设备,形成“云+端”完整闭环。
9. 总结:不是对手,而是伙伴

MimiClaw 和 OpenClaw 并非替代关系,而是共同描绘了AI智能体的完整图景:
在云端,OpenClaw 负责复杂的任务规划、多轮对话、跨应用操作,是AI的“大脑”;
在边缘,MimiClaw 作为物理世界的“手”和“眼”,将数字指令转化为真实的动作,是AI的“肌肉”。
如果你是嵌入式开发者,MimiClaw会让你看到Agent在资源受限设备上的优雅落地,结合笔者的实战经验,能更快速上手部署与扩展;如果你是Node.js全栈工程师,OpenClaw则是一个触手可及的生产力工具。二者都在各自的维度上推动着AI从“会聊天”走向“会行动”。
最后留一个互动问题:你更看好“端侧物理Agent”还是“云端软件Agent”?你是否有过将两者结合的想法?欢迎在留言评论区分享你的见解,也别忘了点赞、收藏、关注三连支持~
附录
参考资料
-
MimiClaw GitHub仓库
项目:https://github.com/memovai/mimiclaw
镜像:https://gitcode.com/RealGao/mimiclaw -
OpenClaw 官方文档
https://docs.openclaw.ac.cn/ -
MimiClaw 官方文档
https://mimiclaw.io -
HackerNews相关讨论帖
-
ESP-IDF编程指南
-
行空板K10硬件手册
-
博查搜索API文档
附录:笔者测试环境
-
博查搜索
-
ESP-IDF版本:v5.5.3
-
MimiClaw分支:main (2026年1月commit)
-
LLM:DeepSeek-V3 (API)
-
飞书Webhook:自定义机器人
-
测试开发板:ESP32-S3 44脚标准版、42脚果云版、行空板K10 及 ESP32S3 UNO等5款
更多推荐



所有评论(0)