乐于分享
好东西不私藏

你的 AI 助手为什么总生成"错误"的嵌入式代码?

你的 AI 助手为什么总生成"错误"的嵌入式代码?

可能是你没写 CLAUDE.md

上个月,我们团队开始用 Claude Code 辅助固件开发。

开头几天效果不错。然后第三天,小李来找我,脸色不太好看:

“飞经理,AI 帮我生成了一段 C 代码,里面用了 malloc……”

我没说话,就默默看着他。

“我知道我知道——我们 MCU 才 20KB SRAM,堆内存完全禁用的。”

这就是”AI 不懂你的项目”的典型症状。

不是 AI 不聪明,是我们没告诉它边界在哪。


🎯 CLAUDE.md 是什么?

Claude Code 在项目里工作时,会自动读取根目录的 CLAUDE.md 文件,把里面的内容当作永久上下文记住。

说人话就是:你不需要每次对话都重新解释项目背景,写在 CLAUDE.md 里,AI 永远记得。

对嵌入式项目来说,这个文件尤其重要。AI 默认假设你有充足内存、有操作系统、可以用标准库。但我们的嵌入式项目哪一条都不满足。


🔧 嵌入式 CLAUDE.md 必须写哪四件事?

第一件:硬件约束 + 禁止列表

告诉 AI 你的 MCU 型号、内存大小,以及绝对不能做的事

这里有个关键细节:禁止项必须说明原因。

踩坑警告:光写”禁止 malloc”没用,AI 偶尔还是会用。要写清楚原因!

划重点:写”禁止 malloc,目标平台 SRAM 仅 20KB,运行时碎片化会导致堆栈溢出,必须用 mem_pool.h 的静态内存池”—— 这样 AI 真的会遵守,还会主动提醒你

AI 就像新来的工程师,只说”不行”他会反复试;告诉他”不行,上次因为这个产品召回了一批”,立刻老实了。

第二件:编码规范(只写嵌入式特有的)

命名约定、ISR 函数体行数限制、寄存器操作规范——把这些写进去,AI 生成的代码就能符合你的项目风格。

通用规范(如代码要有注释)不必写,AI 默认就会做。只写嵌入式特有的限制。

第三件:工具链命令

把构建、测试、静态分析命令直接写进 CLAUDE.md,AI 就知道怎么帮你验证代码,不用每次都问”这个项目怎么编译”。

第四件:工作流引导

最容易被忽略的一条:告诉 AI 在这个项目里怎么工作。

比如”改代码前先输出修改计划,等我确认后再动”——这能防止 AI 自作主张修改你不想动的文件。嵌入式驱动代码牵一发动全身,这条规则能救命。


⚠️ 飞经理踩坑实录

坑:AI 重复犯同类错误,改了又改

有一段时间,AI 频繁在 ISR 里生成调用 HAL_Delay 的代码。我修了三四次,后来才想起来——我没在 CLAUDE.md 里明确禁止这个。

加了禁止项之后,立刻消停了。

飞经理经验:每次发现 AI 重复犯同一类错误,就是 CLAUDE.md 该更新的信号。把这个错误的禁令写进去——我叫它 「CLAUDE.md 进化法」,文档随项目成长。


飞经理总结

CLAUDE.md 不是一次性工作,是项目的活文档。AI 每次犯错,都是一次完善它的机会。写好它,AI 才是你的”高级固件工程师”同事;写不好,它就是埋在代码里的定时炸弹。

💬 你们项目有没有配置 CLAUDE.md?遇到过 AI 生成”离谱”代码的情况吗?欢迎留言,飞经理帮你把坑填上!


[1] Claude Code 官方文档:https://docs.anthropic.com/en/docs/claude-code

[2] STM32 嵌入式开发参考:https://cloud.tencent.com/developer/article/2619928


飞经理 | 测试老兵的技术分享

点赞、在看、转发,你的支持是飞经理更新的动力