当前位置: 首页 > news >正文

利用大模型AI辅助研发快速实现openUBMC的NCSI协议命令字解析

本文将分享openUBMC 25.06版本交付中的一个真实案例:作为一名刚接触 openUBMC 的开发者,在项目交付过程中,如何借助 AI 辅助策略,快速完成 NCSI 标准命令字的 Lua 代码编写。同时,通过实战总结出可复用的 Prompt 编写技巧与代码重构范式,旨在帮助社区开发者更高效地完成简单重复的协议命令字开发工作。

作者简介:钱昱霏,进入BMC领域4个月的BMC开发者,专注于软件开发与自动化效率提升,在AI辅助研发有独特的见解。

背景:协议命令字开发遭遇重复劳动难题

NCSI(Network Controller Sideband Interface,网络控制器边带接口)是一种用于 BMC 与网络控制器通信的协议。在openUBMC 25.06版本项目开发过程中,我面临着以下几方面的挑战:

  • 模块代码重复率高:

    不同命令之间,除了命令字的请求响应体存在差异外,其他代码的重复度极高。

  • 测试数据需手动编写:

    需要自己手动计算二进制测试数据,过程复杂且极易出错。

  • 文档晦涩难懂:

    NCSI 协议文档仅有英文版本,阅读需耗费大量精力,且容易对部分章节产生误解。

为保证高质量交付,我将目光投向了当下热门的 AI 辅助编码能力,期望借助大模型的力量辅助完成这项开发工作。

重复模式分析:抓住“可自动化”的核心

当前 AI 辅助编码能力尚未能完全替代人工手写,盲目让 AI 独立编写代码只会适得其反。因此,首要任务是对代码结构与功能模块进行分析,识别出适合 AI 发挥作用的场景。

1. 协议文档理解和命令字提取

经过多年迭代优化,当前大模型对自然语言的理解效率极高,尤其在英文文档理解方面表现突出,因此可通过大模型提取 NCSI 命令字的请求体和响应体封装格式。

2. 编写命令处理函数

为避免大模型自由发挥,预设协议请求和响应体函数格式能更有效地引导其生成所需代码。同时,为与 openUBMC 社区编码风格保持一致,可将已有代码作为上下文传递给大模型作为参考。

对于操作日志记录等 BMC 专有的要求,也可通过模板提供给大模型,要求其在所有设置类命令字函数中添加操作日志记录。

3. 编写测试用例,保证生成代码符合协议要求

为了保证生成代码的质量,利用openUBMC社区UT框架可以快速验证生成代码是否正确。同样,测试代码也可以利用大模型生成。

由于 NCSI 通讯采用二进制格式,利用大模型对协议的理解能力,可快速推导所需测试数据,省去手动编写二进制数据的繁琐过程。

编码实战:Prompt模板实用技巧

在工具选型上,采用 GPT-4.1 与 Cursor 组合。经过多轮实践,总结出一套高效 Prompt 模板,现分享如下。

实战成果:

  • 自动生成80+个函数与测试用例,准确率超90%,UT覆盖率达86%以上。
  • 整体开发效率提升65%,累计节省30+人天。
  • 代码风格与社区通用规范一致,顺利通过 SIG Committer 审核。

知识背景设置:

得益于 Cursor 强大的上下文感知机制,同一仓库内的代码文件会被自动纳入大模型的分析范围,开发者无需额外配置 Lua 语法和编码风格。不过,由于 NCSI 协议文档不属于仓库内置文件,需单独处理。

值得一提的是,Cursor 支持将完整协议文档作为知识库集成到上下文环境中。笔者已将公开的 NCSI 协议文档导入 Cursor,为后续命令字解析工作提供了坚实的理论依据。

模板编写:

将任务拆解为多步骤,通过迭代式生成与问答交互,可进一步提升代码生成准确性。

我将任务分成三步,并编写了对应的Prompt:

1.生成NCSI命令字的响应和解析函数。

2.针对生成的函数,生成对应的UT函数和测试数据。

3.优化所有新增代码。

Prompt示例1:生成新函数

请基于以下现有代码模式,为新的NCSI命令 [COMMAND_NAME] 生成相应的函数: 参考的头文件定义: 命令类型宏定义:参考 test-main/ncsi 路径下头文件中的命令常量 包结构定义:参考头文件中的请求/响应结构体定义 长度宏定义:参考头文件中的 *_REQ_LEN、*_RSP_LEN、*_PAD_LEN 等宏 现有模式: function ncsi_cmd.ncsi_enable_channel(package_id, channel_id, eth_name) 要求: 1. 函数名为 ncsi_[COMMAND_NAME] 2. 参数为 package_id, channel_id, eth_name 3. 包含相同的参数验证逻辑 4. 调用对应的模块函数 5. 返回相同的错误码

Prompt示例2: 测试用例生成

请基于以下测试模式,为 [MODULE_NAME] 模块生成完整的测试用例: 现有测试模式: function TestNCSIBroadcastFilter:test_enable_broadcast_filter() 要求: 1. 为 [MODULE_NAME] 创建测试类 TestNCSI[MODULE_NAME] 2. 包含 setUp 和 tearDown 方法 3. 为每个公共函数生成测试用例 4. 包含成功和失败场景测试 5. 验证请求报文格式 6. 包含边界条件测试 请生成完整的测试文件。

Prompt示例3: 代码优化

代码优化建议 分析 src/lualib/ncsi/ncsi_protocol/ 目录下的代码, 识别可以进一步优化的重复模式。 当前已优化的模式: 1. 使用 handle_channel_operation 通用函数 2. 使用 ncsi_utils.create_custom_cmd_table 3. 使用命令表模式 请分析还有哪些重复代码可以进一步优化, 并提供具体的优化方案和代码实现。

高效 Prompt 编写技巧总结

最后,给大家分享一些我自己总结的有效Prompt编写技巧:

总结

尽管目前无法实现 “一键生成完整代码”,但大模型在研发辅助中仍具较高实用价值。这种新型开发模式有望颠覆传统开发流程,为 BMC、固件领域带来革新性体验。

期待在 openUBMC 社区看到更多 AI 辅助编码实践,激发更多创新思路。欢迎开发者分享经验、交流见解,共同探索 AI 辅助编码的无限可能。

欢迎关注我们

社区官网:https://www.openubmc.cn

代码仓地址:https://gitcode.com/openUBMC/network_adapter

http://www.jsqmd.com/news/1370457/

相关文章:

  • 一键式生成AI漫剧怎么选?知漫剧模型聚合方案与传统管线成本对比
  • Claude Code文件引用与加载机制:CLAUDE.md、Skills与Subagents实战配置指南
  • AI论文降重与查重技术实战:从原理到工具应用
  • vcruntime140.dll找不到无法继续安装怎么修复?从官方补丁到专业修复工具详解
  • 2026年单人通风橱柜供应厂家:实验室专用净气型与台式移动通风柜品牌实力解析 - 优企名品
  • Rowhammer攻击复现指南:从DRAM物理缺陷到权限提升实战
  • 火泰坦单人通关《命运2》平衡地牢:太阳黑子与持续输出的自洽循环
  • Windows官方镜像下载与纯净安装全攻略:告别第三方风险
  • 2026年8月德州电动观光车摆度车/全封闭电动观光车实力公司推荐_德州速迈新能源车业有限公司 - 行业平台推荐
  • CPPS培训机构推荐 - 众智商学院cppm官方
  • 彻底解决VC++2010运行库安装难题:从原理到实战的完整指南
  • 2026年长春阳光房品牌怎么选?认准这3点避坑指南
  • AI Agent智能编排:从技能堆砌到工作流协同的核心架构与实践
  • WSL2安装配置全攻略:从系统准备到开发环境搭建
  • SublimeREPL配置全攻略:Python虚拟环境、PDB调试与IPython集成
  • 揭秘住宅IP代理:原理、用途以及应用分析
  • AI Agent评估框架:从指标设计到工程实践的全链路指南
  • 西施浣纱袜业背后的它,竟然是拥有四十余年的袜艺底子的大厂
  • 新能源电机与电源精密绕线:跑道型线圈设计、定制与测试全流程
  • NPM 从入门到精通:前端工程化核心工具与实战指南
  • Motrix下载管理器性能调优:突破网络瓶颈,实现下载速度300%提升
  • 《百姓杯全民赛》战术复盘:AAA战队与LOST星战队的矛与盾对决
  • 分布式系统设计与服务拆分策略:上线配置该怎么收口
  • Python 封装与属性:类的“防护罩”和“智能门禁”
  • A2UI:让AI Agent自动生成可交互界面的技术架构与实现
  • SpringBoot+Vue3宠物领养系统:全栈开发实战与毕设项目指南
  • 电竞比赛技术复盘:从BP策略到团战决策的系统性分析方法
  • 警惕技术债务清理中的虚假完成率:从状态变更到真实问题解决
  • AI 时代工程师的成长:把能力拆回可练习的工作
  • UVM验证中get_type_name、get_name与get_full_name的区别与应用详解