嵌入式开发实践:AI 驱动下“人-硬件-模型”的闭环工程推演

嵌入式通信项目有一个典型特征:一切以协议为中心。无论是设备间的报文交互,还是调试诊断,都依赖于对协议规范的精确理解和实现。传统开发中,我们通常会:

  • 人工阅读几十甚至上百页的协议文档,手写报文组装、校验计算、状态机逻辑;
  • 通过串口打印日志,人工对比十六进制报文,定位一个字节的错误;
  • 当系统包含多个角色(如主设备和从设备)时,两端分别实现,很容易出现解析逻辑不一致的问题。

这种模式有两个天然瓶颈:一是人的注意力有限,容易在重复性、模式化的工作中出错;二是反馈回路太长——写代码、烧录、抓日志、对比、修改,一个循环可能耗费数十分钟。

过去的一周多时间里,我经历了一次极具挑战但也充满启发的工程交付。任务的核心是在内外网严格隔离的工业网络环境下,完成一个底层通信模块的新增功能开发。

如果还是按照上述的开发套路进行,肯定可以走得通,而且也最为轻车熟路。但是我想单纯走得通似乎也没有额外的收获,自然地,本次实践就希望做到AI参与其中。

因此,我深度引入了 Coding Agent 参与核心研发。这并非简单的“代码自动补全”,而是一次针对传统硬件通信开发的范式重构。为了让身处外网的 AI 能够理解并开发内网的专有协议,我必须先从零开始设计一套验证工具,进而彻底厘清 API 的边界。这次实践促使我重新审视了在工业物联网场景下,人、硬件与人工智能之间的协作关系。

隔离网络下的接口契约与脚手架

在传统的通信设备开发中,我们习惯于拿着长达数百页的协议规范,逐个字节地进行位操作拼接,然后连接物理设备,在串口终端里反复抓取报文进行比对。这种模式在单兵作战时效率极低,尤其是当面临内外网隔离的限制时,外部的先进工具无法直接触达内网的测试环境。

需求痛点倒逼了架构的解耦。要让 AI 参与进来,首先要解决的是“环境缺失”问题。AI 无法直接连接物理总线,因此,明确的接口定义(API Contract)就成了唯一的沟通桥梁。我在外网主导开发了一套从零构建的验证工具,它的本质是一个物理环境的软件投影。通过将复杂的通信协议和报文交互抽象为清晰的接口规范,我实际上是为 AI 搭建了一个可以自由探索的“脚手架”。在这个沙盒里,AI 不需要知道物理网络拓扑,只需要基于契约进行增量开发。这种面向接口的隔离开发模式,反而极大地提升了代码的模块化程度。

“人-硬件-模型”的非线性闭环

引入 AI 后,我深刻体会到开发流程不再是线性的“设计-编码-测试”,而是演变成了一个三者在环(Plan-Execution-Observation)的动态博弈。

在这个三角关系中,各自的定位变得非常清晰。作为工程师,我负责提供领域直觉、解读那些隐藏在协议字里行间的隐含规则,并制定技术方案。AI 扮演着不知疲倦的执行引擎,它擅长模式化识别、快速组装协议帧、计算复杂的校验和。然而,无论 AI 生成的代码看起来多么无懈可击,在硬件通信领域,物理设备才是最诚实、最冷酷的裁判。

模型存在幻觉,它可能会在地址字节序的翻转上犯错,或者在多层协议封装时混淆校验的边界。此时,硬件设备通过“无响应”或“错误码”给出直接反馈。我提取这些异常报文和日志,将其作为上下文再次投喂给 AI,完成从“观察”到“重新规划”的闭环。这种模式下,硬件的物理约束成为了矫正 AI 逻辑偏差的基石。

领域规约化:通过 Spec 约束模型的本体论

在初期尝试让 AI 编写协议代码时,一个显著的痛点是缺乏前置的规则约束,导致模型每次的输出风格不一,甚至在基础的协议遵循上反复出错。这引发了我对 AI 辅助工程的深层思考:我们不能指望模型天然理解某个特定工业场景的专有知识。

目前的阶段性最佳实践,是实施“配置优先”的策略。在编写任何一行业务代码之前,必须先建立一套领域规范(Rules/Specs/Skills)。这实际上是在构建一种面向当前项目的“本体论”。通过将协议规范、接口约束和设计草图转化为 AI 可读的配置文件,我们将 LLM 的庞大能力强行限定并坍缩到了一个极小的领域子集中。

这种领域规约化约束,是引导模型防止幻觉、保持上下文连贯的决定性手段。我不再是逐句指导 AI 如何解析报文,而是维护一份持续更新的 Specification。系统状态的变化、新功能的加入,首先反映在这些配置文件的状态流转上。可以预见,随着模型能力的进化,这种构建本体论和 Spec 约束的能力本身也将融入 AI 之中。工程师的终极形态,或许只需专注于精准定义需求和边界,完整的工业级产品化将顺理成章地自动生成。

分布式状态机与解析一致性的工程陷阱

在具体的实现推演中,有两类技术陷阱在 AI 协作模式下尤为隐蔽,需要工程师投入极大的精力去把控。

其一是分布式节点的状态机管理。在多设备通信网络中,主节点往往需要管理从节点的状态流转(如未触发、处理中、已完成等)。AI 极易写出完美的单次线性逻辑,却容易忽略状态机的边界回滚。例如,当系统参数更新或查询范围发生变化时,旧的状态如果不被显式重置,就会导致后续的业务流程彻底卡死。模型很难主动意识到“当范围缩小后,被剔除的节点状态应当如何平滑过渡”。这种涉及系统全局稳定性的状态周期管理,必须由人类工程师进行严密的逻辑推演和防御性设计。

其二是多端协议解析的一致性问题。通信系统天然存在主从或对等的设备角色,两端必须严格遵循同一套解释学。在实践中我发现,如果在 AI 生成代码时没有给出明确的全局视角,它可能会在数据发送端使用一种字节解析逻辑,而在数据接收端或不同角色端使用另一种貌似合理但完全不匹配的逻辑(比如错把报文序号解析为设备物理地址)。这种一致性撕裂是致命的。因此,将核心的协议解析逻辑抽象为绝对复用的公共组件,并要求 AI 严格对照唯一的标准文档进行双向对齐,是保证通信可靠性的底线。

结语

长达十余年的软件工程经验告诉我,技术的工具链总是在不断更迭,但工程的本质——对复杂度的控制与抽象——从未改变。

这次基于隔离环境的通信产品交付,让我看到了个体开发者借助 AI 触达更深层工业硬件场景的巨大潜力。当我们在谈论 AI 辅助编程时,我们探讨的不再仅仅是效率的提升,而是如何通过清晰的边界划分、严格的 Spec 约束以及物理硬件的真实反馈,构建一个高效且健壮的创造力闭环。在这个闭环中,人的价值从“代码编写者”彻底升维到了“系统规则的制定者”与“复杂逻辑的仲裁者”。


了解 实践笔记 的更多信息

订阅后即可通过电子邮件收到最新文章。

发表评论

滚动至顶部