原文首发于我的微信公众号 TaohongMaxwell查看原文

前言

如今,写代码早已经不是门槛极高的事情。普通人只要有一点计算机基础,外加部分产品设计的能力,已经完全可以通过AI的协助创造出一份下限极高的代码。哪怕没有数据结构或软件工程基础,也可以凭借AI的能力,把简单逻辑的程序优化得有模有样。

但直到今天,很多人都以为利用AI进行代码编写与开发是一件很高端、很有难度的事情。于是被种种原因拖住了尝试的脚步,例如害怕配置环境、对新鲜事物的本能畏惧、对AI回复的不满意等。

今天,以用于设计、分析和优化电磁(EM)组件及系统的高性能 3D EM 分析软件CST Studio Suite的Python二次开发为例,和大家分享我近期总结出来的AI协助代码创作的基本流程。

通过脚本控制CST Studio Suite,工程师可以将这些重复性的工作交给计算机自动完成,例如编写相应的算法让计算机自动寻找最优解,从而大大提高求解计算的效率。

其中,涉及的工具都是最简单的网页对话,不需要配置任何环境,也不需要安装任何软件,供大家参考、讨论。(CLI等高级功能的使用不在本文的讨论范围内哈)

核心方法

  1. 需求收集。尽可能详细地收集并描述用户需求。如demo模型(原始CAD模型和处理好的CST模型)、手动操作流程(文档或视频)、开发要求等详细信息。
  2. 拟定程序架构。形成抽象需求的工程方案,明确文件如何操作,数据如何流动。
  3. API测试。结合文档及API说明,找出程序运行需要的必要API,明确其操作方法和参数说明。
  4. 最小实施例编写。结合实际需求及开发文档,手动编写一个最小实施案例,完成最小功能实现。
  5. 完整代码编写。 a. 结合上述步骤1-4,将必要信息作为提示词发送给LLM,利用AI进行代码创作(提示词可包含:客户需求、程序架构、API/Method示例代码片段、最小实施例程序代码片段等)。 b. 根据测试、运维等需求进行迭代与版本管理。

省流版方案可以查看这张表。

开发阶段工作内容输出产物AI参与度
1.需求收集尽可能详细描述用户需求,并形成详细的需求规格说明书需求说明建议人工完成,尤其是利益相关者
2.拟定程序架构形成抽象需求的工程方案,明确文件如何操作,数据如何流动系统框图和/或流程图人工/AI皆可
3.单元/API测试结合文档及API说明,找出程序运行需要的必要API,明确其操作方法和参数说明涉及API的代码片段建议人工完成
4.最小实施例编写结合实际需求及开发文档,手动编写一个最小实施案例,完成最小功能实现最小实施例代码片段建议人工完成
5.完整代码编写结合上述步骤1-4,将必要信息作为提示词发送给LLM,利用AI进行代码创作相对完整的程序代码AI Copilot

各环节内容

一、需求评估环节

这个部分主要评估项目在技术、经济和社会条件等方面的可行性,确定项目目标和范围,进行投资效益分析,并制定初步的开发计划。同时与客户或利益相关者深入沟通,明确软件必须实现的功能、性能指标、可靠性等要求,并形成详细的需求规格说明书。

由于涉及到开发细节以及成本核算,这部分建议完全由人工完成,且尽可能让所有利益相关者都参与。

二、架构设计环节

这部分工作主要涉及将需求转化为具体的技术蓝图,包括系统架构设计(模块划分、接口设计等)和详细设计(算法、数据结构等),构建一个相对完整的系统框架,为编码工作提供依据。

以往的工作中,技术架构设计的工作由软件架构师/高级工程师完成,但如今AI在计算机程序设计的能力突飞猛进,这部分工作也可以让AI完成了。

具体工作流程:将客户需求与预期作为提示词发送给LLM,并明确工作量限制,让AI生成合适的架构,甚至输出系统框图和/或流程图。

 1┌─────────────────────────────────────────────────────────────────┐
 2│                    CST SNP文件处理系统架构                       │
 3└─────────────────────────────────────────────────────────────────┘
 4 5 6┌─────────────────────────────────────────────────────────────────┐
 7│                          主控制模块                             │
 8│                       (FileSelectorGUI)                         │
 9└─────────────────────────────────────────────────────────────────┘
1011┌───────────────────────┼───────────────────────┐
12│                       │                       │
13▼                       ▼                       ▼
14┌───────────────┐       ┌───────────────┐       ┌───────────────┐
15│  文件管理模块  │       │  CST处理引擎   │       │   参数验证模块 │
16└───────────────┘       └───────────────┘       └───────────────┘
17│                       │                       │
18▼                       ▼                       ▼
19┌───────────────┐       ┌───────────────┐       ┌───────────────┐
20│ ∙ 文件扫描    │       │ ∙ CST连接管理  │       │ ∙ 阻抗验证     │
21│ ∙ 格式验证    │       │ ∙ 项目操作     │       │ ∙ 采样点验证   │
22└───────────────┘       │ ∙ 结果处理     │       └───────────────┘
23                        └───────────────┘
242526┌─────────────────────────────────────────────────────────────────┐
27│                        数据处理流水线                           │
28└─────────────────────────────────────────────────────────────────┘
2930┌───────────────────────┼───────────────────────┐
31│                       │                       │
32▼                       ▼                       ▼
33┌───────────────┐       ┌───────────────┐       ┌───────────────┐
34│  文件预处理    │       │  CST仿真处理   │       │  结果后处理    │
35│ ∙ SNP文件读取  │       │ ∙ Touchstone  │       │ ∙ S参数导出   │
36│ ∙ 参数解析     │       │   配置        │       │ ∙ TDR结果保存  │
37│ ∙ 格式转换     │       │ ∙ 阻抗设置    │       │ ∙ 数据合并     │
38└───────────────┘       │ ∙ 采样设置    │       └───────────────┘
39                        └───────────────┘
 1用户输入
 2 3参数验证 → 错误反馈
 4 5文件扫描 → 文件列表
 6 7CST连接 → 连接状态
 8 9文件处理循环
1011├── Touchstone配置 → 配置状态
1213├── 阻抗设置 → 阻抗参数
1415├── 采样设置 → 采样参数
1617├── 工程保存 → 保存状态
1819├── 结果更新 → 更新状态
2021└── 数据导出 → 导出文件
2223临时文件生成
2425合并处理 → 最终结果文件

三、代码实现环节

开发者根据设计文档,选择合适的编程语言和工具,编写出实现软件功能的代码,并进行单元测试。

这个部分是系统开发的重点,具体我们一条一条来说。

API测试

结合文档及API说明,找出程序运行需要的必要API,明确其操作方法和参数说明。必要时附上API的文档说明信息。

功能模块编写

结合实际需求及开发文档,手动编写关键模块的最小实施案例。如循环内部的动作、处理单个文件的操作等。

最小实施例编写时尽可能写得规范,同时写明详细得注释,供内部人员和LLM参考。

同时,建议内部人员熟知最小实施例的运行逻辑。

AI完善框架

将必要信息作为提示词发送给LLM,利用AI进行代码创作,快速完成框架补充,得到一个相对完整的程序代码。

可选的AI有很多,如DeepSeek、千问、元宝、豆包等,最简单的网页版也可以完成这些内容,在这里就不赘述了。

提示词可包含:客户需求、程序架构、API/Method示例代码片段、最小实施例程序代码片段等。具体提交哪些内容,可以根据工程进行评估。

如果是对CST Studio Suite进行二次开发,只要软件版本大于等于CST 2025 SP3,就可以在帮助文档中找到Python Tutorial页面,里面有完整的脚本案例。

这里的案例可用于最小模块的参考,也可以直接当作最小模块投喂给AI。

代码调试与修改

将局部需求的修改内容作为提示词,并将完整代码文件作为附件,发送给LLM。提示词中包含以下信息:

  1. 目标操作逻辑:如通过API/从磁盘获取数据;
  2. 程序修改方式:如现有数据处理过程是否改变,是否允许引入新的方法和类;
  3. 成果展示方式:直接生成完整代码,或只生成需要修改的部分并一步一步指导如何修改。

代码审核

利用IDE或开发工具提供的文件比较功能,将AI修改后的代码和原始代码进行比较,快速找出差异部分,并对其进行评估。可有效避免代码盲改的后果。

版本控制

使用git或SVN等工具完成代码版本控制,避免版本混乱和代码冲突。除了上GitHub之外,还可以在本地部署私有化的git/SVN服务,如gitlab、gitea等。

四、完整测试环节

对编写好的系统进行全面测试,包括功能测试、性能测试、安全测试等,以发现和修复缺陷,确保软件质量。

由于自己写出的代码自己很难查找出错误(程序员迷之自信~),建议由不同的人进行交叉测试。

五、部署与验收

将测试通过的软件发布到生产环境,包括部署准备、系统安装配置、用户培训和交付验收。

项目验收后,同时完成内部归档工作。

六、运维环节

在软件使用过程中,持续修复发现的问题、根据需求变化更新功能、进行性能优化,直至软件生命结束。

七、一点想法

对于纯软件项目,AI尚可独立完成测试工作;然而,工业软件的二次开发往往涉及功能调用、操作权限等复杂因素,加之通用AI未必能完全理解其特有的操作逻辑(某些场景下还需与硬件联动),因此,完整的测试与运维工作目前仍需人类工程师的深度参与。

因此,可以坦然地得出结论:在工业软件二次开发领域,人类工程师目前还不会很快地被AI大面积取代。

总结

  • 尽可能收集并详细描述软件/系统的具体需求,并获取完整的手动操作流程(文档或视频);
  • 编写代码前,先设计系统架构,并结合实际需求及开发文档,手动编写一个最小实施案例,完成最小功能实现;
  • 将必要信息(客户需求、程序架构、API/Method示例代码片段,最小实施例程序代码片段等)作为提示词发送给LLM,利用AI进行代码创作,快速完成框架补充,得到一个相对完整的程序代码,后续再完善和迭代;
  • 在整个开发过程中,善用软件开发与管理工具,如git/SVN/diff等。