这份指南会手把手教你,用 Claude Code 的自动化工具,实现 MicroPython 代码提示执行速度或减小内存占用。
Skill 源代码地址:https://github.com/FreakStudioCN/MicroPython_Skills
零、前置知识
一、前置安装
1.1 claude code 安装
关于 claude code 安装可以查看下面的文档:用 Claude 对 MicroPython 代码进行 AI 审查:零基础手把手教你
1.2 安装 Skill
下面,我们主要用到**/upy-opt-driver 和 /upy-slim-driver** :
/upy-opt-driver — 驱动性能优化:
-
- 已规范化的驱动文件,按 GraftSense 性能优化指南改写,聚焦执行速度提升。
/upy-slim-driver
— 驱动内存优化:
- 已规范化的驱动文件,按 GraftSense 内存最小化指南改写,聚焦 RAM 占用降低。
1.3.1 远程安装(国内不推荐)
打开终端,复制下面这串命令,回车执行,把所有自动化工具一次性装完(只需要装一次):
npx skillfish add FreakStudioCN/MicroPython_Skills upy-norm-driver
npx skillfish add FreakStudioCN/MicroPython_Skills upy-norm-main
npx skillfish add FreakStudioCN/MicroPython_Skills upy-gen-main
npx skillfish add FreakStudioCN/MicroPython_Skills upy-gen-readme
npx skillfish add FreakStudioCN/MicroPython_Skills upy-gen-pkg
npx skillfish add FreakStudioCN/MicroPython_Skills upy-norm-pkg
npx skillfish add FreakStudioCN/MicroPython_Skills upy-opt-driver
npx skillfish add FreakStudioCN/MicroPython_Skills upy-slim-driver
npx skillfish add FreakStudioCN/MicroPython_Skills upy-pack-driver
或
for skill in upy-norm-driver upy-norm-main upy-gen-main upy-gen-readme
upy-gen-pkg upy-norm-pkg upy-opt-driver upy-slim-driver upy-pack-driver; do
npx skillfish add FreakStudioCN/MicroPython_Skills $skill
done
安装过程会自动下载工具,等终端提示安装完成就可以了。
1.3.2 本地安装(国内推荐)
克隆本仓库(或直接下载 ZIP 解压):
git clone https://github.com/FreakStudioCN/MicroPython_Skills.git
将 skill 目录复制到 Claude Code 的 skills 目录,本地 skills 目录固定为 ~/.claude/skills/,根据操作系统展开如下:
macOS / Linux:
# 安装单个 skill
cp -r MicroPython_Skills/upy-norm-driver ~/.claude/skills/
# 安装全部 skill(在克隆目录内执行)
cd MicroPython_Skills
for skill in upy-norm-driver upy-norm-main upy-gen-main upy-gen-readme
upy-gen-pkg upy-norm-pkg upy-opt-driver upy-slim-driver upy-pack-driver; do
cp -r $skill ~/.claude/skills/
done
Windows(PowerShell**)**:
# 安装单个 skill
Copy-Item -Recurse MicroPython_Skillsupy-norm-driver $env:USERPROFILE.claudeskills
# 安装全部 skill(在克隆目录内执行)
cd MicroPython_Skills
$skills = @("upy-norm-driver","upy-norm-main","upy-gen-main","upy-gen-readme",
"upy-gen-pkg","upy-norm-pkg","upy-opt-driver","upy-slim-driver","upy-pack-driver")
foreach ($skillin$skills) {
Copy-Item -Recurse $skill$env:USERPROFILE.claudeskills
}
重启 Claude Code,skills 即生效。
1.3 小白必看:避坑指南
路径里绝对不能有中文 / 空格!
比如 G:我的驱动 会导致命令出错,改成 G:my_drivers所有确认命令都复制终端里的提示!
不要自己打字,比如「确认写入原文件 G:mpr121_projectmpr121.py」,直接复制粘贴最保险,避免打错字
不要中途关掉终端!
每个步骤都要等它跑完,出现「确认写入 / 继续?」的提示再操作
出错了怎么办?
如果中途想改之前的步骤,输入 重做当前步骤,工具会重新跑这一步,不会影响已经做好的文件
文件权限问题?
-
- Windows 用户如果提示权限不足,把文件夹放到 D 盘 / G 盘,不要放到桌面或系统文件夹里,右键文件夹「属性 - 安全」,给当前用户加上「完全控制」权限
依赖库找不到?
如果你的驱动用到了第三方库,工具会自动帮你查找 upypi 上的包,如果找不到会标注出来,你可以手动去 upypi 确认包名,修改 package.json 里的依赖即可
打包失败?
- 检查文件夹里的文件是否齐全:必须有驱动文件、main.py、README.md、package.json,缺失的话要先完成对应的步骤
1.4 示例文件
下面是两个有待优化的文件:
signal_filter.py 信号
main.py测试脚本:
- 生成 200 个模拟采样数据,调用 SignalFilter 进行批量处理、滤波、统计分析,循环内字符串拼接打印结果。
查看原文档下载:https://f1829ryac0m.feishu.cn/wiki/HnyXwwPCXiHucgkhodzcZ9pfnTe?from=from_copylink
二、完整操作步骤
2.1 原始代码测试
这里,我们将先运行未优化的 main.py 和 signal_filter.py,获取性能基准数据。
将 main.py 和 signal_filter.py 上传到你的 MicroPython 设备(如 ESP32-S3),通过 Thonny 或串口工具运行程序。
运行结果如下:
>>>%Run-c$EDITOR_CONTENT
MPY:softreboot
FreakStudio:TestingSignalFilterdriver
Generated200testsamples
==========PerformanceReport==========
Time:32827us(32ms)
Memory used:55552bytes
Memory free:8259328bytes
Statistics:min=5max=509avg=165.0
Error codes: [1, 2, 3, 16, 17, 18, 32, 33]
==========PerformanceReport==========
Time:34846us(34ms)
Memory used:4016 bytes
Memory free:8308000bytes
Statistics:min=5max=509avg=165.0
Error codes: [1, 2, 3, 16, 17, 18, 32, 33]
==========PerformanceReport==========
Time:34627us(34ms)
Memory used:4000 bytes
Memory free:8308016bytes
Statistics:min=5max=509avg=165.0
Error codes: [1, 2, 3, 16, 17, 18, 32, 33]
==========PerformanceReport==========
Time:34757us(34ms)
Memory used:4000 bytes
Memory free:8308016bytes
Statistics:min=5max=509avg=165.0
Error codes: [1, 2, 3, 16, 17, 18, 32, 33]
Programinterruptedbyuser
Cleaningupresources...
Programexited
>>>
我们可以看到:
基础测试数据:生成测试样本数:200 个信号统计值(固定):最小值 = 5,最大值 = 509,平均值 = 165.0错误码(固定):[1, 2, 3, 16, 17, 18, 32, 33]
执行耗时数据:首次处理耗时:32827 us (32 ms)后续稳定耗时:34627~34846 us (34 ms)平均运行耗时:≈34 ms
内存占用数据:首次内存使用:55552 字节稳定后内存使用:4000~4016 字节首次空闲内存:8259328 字节稳定后空闲内存:8308000~8308016 字节
2.2 使用 upy-opt-driver 进行性能优化
我们先通过 upy-opt-driver,聚焦执行速度提升,解决上述耗时瓶颈。
打开你的 MicroPython 项目目录,在里面运行终端,并且输入 claude:
然后输入下面的命令:
/upy-opt-driver 【你需要优化的py文件目录】
我们这里输入的是:
/upy-opt-driver G:bmp280
这里,我们直接复制指令**:**
确认对全部文件执行优化
工具会输出一份结构化的优化报告,包含每个文件的优化项、优先级和提速说明,例如:
检查无误后,复制指令**:**
确认写入原文件
点击回车:
将工具生成的优化代码上传到设备中,开始测试:
如果报错,将报错信息返回给 claude code:
必要时,我们可以人工介入,说明哪些地方需要修改:
也可以让 claude code 通过 mpremote 连接对应单片机的 COM 接口自动 Debug:
我们可以看到,它可以读取 REPL 中输出信息,自动 Debug:
我们可以看到调试成功:
输出结果如下:
FreakStudio:TestingSignalFilterdriver
Generated200testsamples
==========PerformanceReport==========
Time:31800us(31ms)
Memory used:45904bytes
Memory free:8268880bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:31698us(31ms)
Memory used:45872bytes
Memory free:8267712bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:32567us(32ms)
Memory used:45872bytes
Memory free:8267696bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:31703us(31ms)
Memory used:45872bytes
Memory free:8267696bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:32019us(32ms)
Memory used:45872bytes
Memory free:8267696bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:32098us(32ms)
Memory used:45872bytes
Memory free:8267696bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:31692us(31ms)
Memory used:45872bytes
Memory free:8267696bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:31836us(31ms)
Memory used:45872bytes
Memory free:8267696bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:32134us(32ms)
Memory used:45872bytes
Memory free:8267696bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:32370us(32ms)
Memory used:45872bytes
Memory free:8267696bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
(24s·timeout30s)
我们可以看到:
测试样本:200 个
执行耗时:31692~32567 us(31~32 ms),平均 32 ms
内存占用:使用 45872~45904 字节,空闲 8267696~8268880 字节
数据统计:最小值 5,最大值 509,平均值 165
错误码:b'x01x02x03x10x11x12 !'
2.3 使用 upy-slim-driver 进行内存优化
输入下面的命令:
/upy-slim-driver 【你需要优化的py文件目录】
我们这里输入的是:
/upy-slim-driver G:bmp280
接着,复制命令:
确认对全部文件执行内存优化
检查无误后,复制命令:
确认写入并继续下一个文件?
检查无误后,复制命令:
确认写入?
将工具生成的优化代码上传到设备中,开始测试:
输出如下:
>>>%Run-c$EDITOR_CONTENT
MPY:softreboot
FreakStudio:TestingSignalFilterdriver
Generated200testsamples
==========PerformanceReport==========
Time:22184us(22ms)
Memory used:26704bytes
Memory free:8288032bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:22347us(22ms)
Memory used:26672bytes
Memory free:8286896bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:22346us(22ms)
Memory used:26672bytes
Memory free:8286864bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:22336us(22ms)
Memory used:26672bytes
Memory free:8286864bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:22351us(22ms)
Memory used:26672bytes
Memory free:8286864bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:22350us(22ms)
Memory used:26672bytes
Memory free:8286864bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:22344us(22ms)
Memory used:26672bytes
Memory free:8286864bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:22347us(22ms)
Memory used:26672bytes
Memory free:8286864bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:22350us(22ms)
Memory used:26672bytes
Memory free:8286864bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:22347us(22ms)
Memory used:26672bytes
Memory free:8286864bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:22349us(22ms)
Memory used:26672bytes
Memory free:8286864bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
==========PerformanceReport==========
Time:22340us(22ms)
Memory used:26672bytes
Memory free:8286864bytes
Statistics:min=5max=509avg=165
Error codes:b'x01x02x03x10x11x12!'
数据总结如下:
测试样本:200 个
执行耗时:22184~22351 us,稳定运行 22 ms
内存占用:使用 26672~26704 字节,空闲 8286864~8288032 字节
数据统计:最小值 5,最大值 509,平均值 165
错误码:b'x01x02x03x10x11x12 !'
2.4 优化前后对比测试
统一基准:200 组测试样本,信号统计结果一致(最小值 5、最大值 509、平均值 165)
三、进阶优化技巧
3.1 upy-opt-driver(性能优化)
3.2 upy-slim-driver(内存优化)
四、避坑指南
4.1 upy-opt-driver(性能优化)
4.2 upy-slim-driver(内存优化)
原文链接:https://f1829ryac0m.feishu.cn/wiki/HnyXwwPCXiHucgkhodzcZ9pfnTe?from=from_copylink
963