最近一直在摸索用AI Agent去搞定我觉得繁琐的工作,并设计了Agent把以前老项目代码整理成结构化知识库然后进行问答。
这个agent,能够助我快速理解大多数项目,以及后面还可以扩展提炼项目中能够复用的模块架构,直接让AI移植到新项目上用。
然后,突然想起在在9年前,做过一个项目,写过贼屎山的代码:

所有逻辑都通过全局变量去判断区别。

就是while(1)一路到底,所有产品功能逻辑都写在里面。
现在还记得改功能那个崩溃,改了这里那里又出问题。
然后我很好奇,这种屎山代码,AI能不能很好地整理出来?
结果有点出乎我的意料:越乱的项目,AI反而越有价值,因为人工成本太高了。
这些文档都是AI agent通过我的程序给我输出的。
比如项目功能说明书:

比如项目都有哪些功能?

比如用到的通信协议,我并没有提供通讯协议文档给它,纯程序识别。

整个过程就就几分钟,这不把人工的效率吊起来打?
而且写作本身也是需要经验和能力的,我写了6年的文章内容,从专业度、规范性这块都不及它。
我觉得嵌入式行业,项目代码乱是常态,不是谁的问题。
就像这个项目从立项到量产,中间经历了什么?
需求改了又改,催的又急,代码先实现功能再说,管不了这么多了。
公司的老项目,工程师换了两拨,每个人风格不一样,有人喜欢驼峰命名,有人习惯下划线,有人直接拼音缩写。
交付完就丢一边,下次改需求再打开,发现目录结构都看不懂了。
最懂的那个人已经不在了,留下的代码没人敢动。
文件分类基本靠感觉,公共驱动模块和业务逻辑搅在一起。
硬件相关的文件和应用层文件混在同一个目录。
通信协议的实现散落在三四个地方,有的在src,有的在lib,有的不知道为什么在test目录里。
注释?有注释就不错了。或者干脆一个注释都没有。
这不是哪个团队的问题,是行业普遍现象。
项目周期长、人手紧、优先级永远在交付上,代码质量这个事,能拖就拖。
拖到最后,就变成了你现在看到的样子。
AI看代码的方式,和人完全不同
人看混乱的代码,第一反应是头疼。
因为人理解代码是线性的,从main函数开始,一层一层跟进去。脑子里面要同时维持调用栈、状态机、中断上下文,还得记住哪些全局变量在哪个地方被改了。信息量一大,大脑就过载了。
而且嵌入式代码的特殊性在于,你不仅要理解软件逻辑,还得知道硬件的上下文。这个GPIO为什么配成推挽输出?这个SPI的时钟频率为什么是这么个值?光看代码看不出所以然,得结合原理图和数据手册。
这是人读代码费劲的根本原因:上下文太多了。
AI不一样。
AI不是一行一行“读”代码,它是整体分析。
函数之间的调用关系,它一次就能梳理出来。哪个函数被谁调用、调了几次、参数怎么传的,不用一个个翻。
变量的定义和引用,它能建立完整的关联图。这个全局变量在哪些地方被修改,哪些地方只读,有没有潜在的并发问题。
宏定义和条件编译的分支,它能分辨出不同配置下的代码路径。哪个宏控制哪个功能,编译时走了哪个分支。
你看到像是一坨shi,AI看到的是一张网。

有节点、有连线、有层次。
混乱的是文件目录,不是逻辑本身。
为什么越乱,AI反而越值钱
这里有个反直觉的逻辑。
项目越乱,除了代码本身,还有更离谱的问题,比如项目的知识和经验,分散在不同人的脑子里、不同时期的提交记录里、不同格式的文件里。
这恰恰是AI最擅长处理的场景。
你想想,一个项目如果代码结构清晰、文档齐全、注释规范,那它本身就不太需要AI来整理。
人能看懂的东西,AI只是锦上添花。
真正需要AI的,是那种除了当事人没人搞得懂的项目。
那个做了五年的老项目,只有老张知道SPI的CS引脚为什么要手动拉低拉高,因为某版芯片有BUG,硬件自动控制会偶发通信失败。
这些信息,文档里找不到,代码注释里看不到,全在当事人脑子里。
AI能做的,就是从代码本身把这些隐含的逻辑关系提取出来。
函数命名不规范?没关系,AI看的是函数的实际操作,往哪个寄存器写了什么值,触发了什么中断,数据经过了什么处理。
文件乱放?没关系,AI分析的是include关系和函数调用链,它知道哪些文件有依赖,哪个模块负责什么。
注释没有?没关系,寄存器操作、协议帧解析、中断处理这些嵌入式常见模式,AI能从代码结构推断出功能意图。
混乱的项目,藏着最多的隐性知识。
以前这些知识只能靠人啃代码获取,费时费力还没人愿意干。
现在AI可以帮你快速提取出来,变成可以查询、可以问答的知识。
喂资料之前,做最低限度整理
不是什么都不管,直接一股脑丢给AI。
建议做两件事就够了。
第一,去掉明显无关的文件。
编译生成的中间文件、历史备份的旧版本、测试用的临时脚本,这些跟项目逻辑没关系,喂进去只会增加噪音。
第二,保持原始格式。
不要为了好看去重排代码、合并文件、改命名。你的优化反而可能破坏代码的原始信息。AI理解原始代码的能力,比你想象的强。
就这两步,够了。
剩下的,AI Agent自己能处理。
乱不可怕,没人能看懂才可怕
很多团队一直拖着不做知识沉淀,原因就是觉得代码太乱、资料太散。
“等我整理好再说。”
但现实是,永远不会整理好。
项目还在维护,需求还在改,代码只会越来越乱。
等整理好了再做,等于永远不做。
换个思路。
不是等你准备好才开始,是开始了才能慢慢理清楚。
AI帮你从混乱的代码里提取出模块结构、调用关系、功能说明——这些提取出来的东西本身,就是最好的项目文档。
你一直想整理但没时间整理的事,AI帮你做了第一步。
有了第一步,后面每一步都更容易。
夜雨聆风