夜雨聆风学习资料网

ARTICLE · 996311

我不懂代码,却开始用两个AI做软件工程了

我不懂代码,却开始用两个AI做软件工程了

我不懂代码,却开始用两个AI做软件工程了

—— 我正在尝试用AI,做一套自己根本不会写的软件

写这篇文章的时候,电脑上的软件工程还在继续。65个实施任务中,A00“实施基线与风险冻结”已经完成,A01“项目骨架与本地配置”已经完成,A02“统一领域数据规范”正在运行。

所以,这不是一篇成功总结。软件最后究竟能不能按照我的设想完整跑起来,我现在也不知道。

但过去这几天发生的事情,已经让我相当震撼。因为我第一次发现:一个其实不会写现代代码的人,也可能借助AI,把一个复杂的软件想法,按照真正的软件工程方式一步一步做出来。注意,我说的是“软件工程”,不只是“让AI帮我写代码”。

一、先说实话:我现在其实不会写代码

我本科是学计算机的。但那已经是三十多年前的事情了。今天让我面对一个现代Python项目,里面的自动测试、进程管理、沙箱、接口、签名验证、版本控制,我很多代码根本看不懂。

但是偏偏,我现在的研究越来越离不开软件。我想做的是一套茶叶加工在线参数采集与智能分析软件。它不是一个简单的小工具。它需要连接现场的VOC、温湿度、氧气、二氧化碳等传感器;需要接入摄像头;需要运行机器视觉模型;需要对茶叶加工过程进行实时判断;需要显示实时曲线;需要保存和查询历史数据;需要PC版、大屏版和手机版;以后还要考虑云端同步、模型升级、数据反馈和持续优化。

前面我已经做过几个版本。也正因为真正用过,我越来越知道旧版本的问题在哪里。哪些功能必须保留,哪些地方不好用,哪些技术方案应该放弃,新版真正应该增加什么。

所以我现在处在一个很有意思的状态:我要什么,我越来越清楚;但是怎么把它写成程序,我不会。过去,这中间需要一支开发团队。现在,中间多了AI。

二、这一次,我没有让AI一上来就写程序

这是我这次做软件最大的变化。以前用AI修改程序,很容易陷入一种模式:“这里加个按钮”“这里增加一条曲线”“这里报错了,帮我改一下”。一个小程序这样干问题不大,但是软件越来越复杂以后,今天改一点,明天补一点,很快就会乱。

所以这一次,我决定先不写代码。我花了几个小时,和电脑端的AI编程工具反复讨论新版到底要做什么。我把前面几个版本的情况一点一点告诉它:现场设备是什么、实际使用流程是什么、哪些数据要采、哪些旧功能必须继续保留、原来的哪些方案已经证明不合适、机器视觉准备怎么接入、过程模型以后输出什么、PC端、大屏端、手机端分别需要看到什么、云端以后又准备做到什么程度。

有些需求,我自己一开始也没有完全想清楚。所以这个过程实际上不是我单方面“发命令”,而是来回讨论。几个小时以后,需求才逐渐变得清楚。我后来越来越觉得:这一阶段可能比写代码本身还重要。因为AI现在写代码已经很快。如果需求本身是错的,它只会更快地把一个错误的想法变成程序。

三、第一个AI开始做设计,我第一次看到“软件工程”到底是什么

需求逐渐稳定以后,我让第一个AI开始设计整个新版软件。这时候,它做的事情已经不是简单的“生成代码”了。它开始拆系统、拆模块、拆依赖关系、拆任务顺序。设备怎么接、数据怎么定义、多个传感器之间怎么对齐、数据怎么保存、机器视觉怎么独立运行、模型怎么升级、模型升级失败以后怎么回滚、网络断开怎么办、设备掉线怎么办、历史数据怎么兼容、PC、大屏和手机三端的数据结构怎么统一。

然后继续往下拆:每一步做什么,先做哪一步,哪一步依赖前面的结果,做到什么程度算完成,失败以后怎么办,后面应该怎么验收。最开始,整个新版软件大概被拆成45个比较大的任务。后来经过进一步设计和质检,又继续拆分,最后变成65个实施任务。

这个数字对一个专业软件团队也许很普通,但对我来说非常震撼。因为在我脑子里原来只是“我要做一个新版茶叶监测软件”,到了AI这里,它竟然逐渐被拆成65件明确的事情。这时候我第一次很直观地感觉到:AI给我的可能不仅是“编程能力”,它还在补我缺少的软件工程能力。

四、但马上出现一个最麻烦的问题:AI说自己做对了,我凭什么相信?

我不会代码,这是整个项目绕不过去的问题。第一个AI完全可以告诉我:“已经设计完成”“测试全部通过”“可以开始实施”。问题是,我没有能力自己逐行检查。

如果仍然让同一个AI来告诉我“我写得很好,我检查过了,没有问题”,本质上就是自己出题、自己答题、自己阅卷,最后自己宣布满分。显然不行。

所以我想了一个最朴素的办法:再找一个AI。我另外开了一个完全独立的AI对话。它不参与前面的设计。我给它安排了一个非常明确的身份:质检工程师。第一个AI是“施工队”,负责设计、写代码、整改;第二个AI是“质检”,只做一件事:找问题。而且只允许检查,不允许帮施工队修改代码。发现问题就打回去,由原来的施工AI重新改。改完再送回来质检。

五、第一次独立质检,直接给了一个NO-GO

第一次真正进行独立质检以后,我本来以为最多就是提一些修改意见。结果完全不是。质检AI直接给出了NO-GO:不能启动。一次找出了18个问题。

里面很多技术细节,说实话我根本看不懂。但是我要求AI必须把关键问题翻译成普通人能理解的语言。比如一个问题大概是:两个程序有可能同时去抢一个资源。原来的设计相当于两个人进一个房间之前,都先看看里面有没有人;两个人几乎同时看,都发现没人,于是两个人一起进去了。后来修改成:谁先拿到唯一的一把钥匙,谁才能进去。

还有一个问题我一听就明白。原来的施工AI离自己的验收规则太近,理论上它既可以写答案,也可能影响“考试题”。那这样的测试有什么意义?所以后来把关键验收标准单独放出去,做成一个独立裁判。施工AI可以修改自己的代码,但是不能修改裁判的标准。这些代码我不会写,但这里面的逻辑我完全能理解:施工的人不能自己决定自己合格。

六、质检以后,45个任务被重新拆成了65个

第一轮质检以后,施工AI根据18个问题重新整改。在整改过程中,一些原来太大的任务又被继续拆分。最后整个软件实施计划变成了65项。

为了让手机阅读舒服一些,我不在正文里放一张非常宽的六列表格,而是按阶段拆开。这样导入公众号以后,即使在手机上看,也不需要左右拖来拖去。

第一阶段:工程基线、设备和采集

任务

内容

状态

A00

实施基线与风险冻结

✅

A01

项目骨架与本地配置

✅

A02

统一领域数据规范

🔄

A03

设备与校准配置规范

A04

协议事实结构与未知项冻结

A04F

录制帧夹具格式与来源清单

A04D

驱动与适配器抽象契约

A04E

驱动异常语义与诊断边界

A05

便携版VOC适配器

A06

高级版VOC适配器

A07

外置温湿度与RS485总线

A08

采集生命周期状态机

A08R

单设备重连与身份恢复

A08I

多设备采集隔离与快照

A09

数据质量与跨设备时间对齐

第二阶段:存储、工艺事件与时间体系

任务

内容

状态

A10

本地存储模式与版本边界

A10T

事务写入与幂等服务

A10R

存储检查点与崩溃恢复

A10C

历史CSV导入导出与迁移验证

A11

工艺事件模型与修订审计

A11R

批次轮次阶段状态机

A12

真实时间与有效工艺时钟

A12S

断裂数据段与轮次时间投影

第三阶段:摄像头、模型与过程判断

任务

内容

状态

A13

摄像头发现与稳定身份选择

A13V

摄像头有效帧与故障隔离

A14

模型包规范与注册表

A14P

模型影子运行、批准切换与回滚

A15

过程特征与统一文字判断规范

A15Q

推理证据强度与质量规则

A15H

养花香气发展成熟度输出规范

A15S

窨制边际效应输出规范

A15P

统一文字判断与在线投影

A15X

过程输出序列化与版本兼容

A24

过程模型在线适配契约

A24V

视觉推理进程隔离

A24D

推理不可用与局部降级

第四阶段:历史数据与三端界面

任务

内容

状态

A16

历史查询曲线分组与点选

A17

同步历史动画回放

A17V

三端共享只读视图模型契约

A18

PC监测运行基础界面

A19

PC数据中心与工艺事件编辑

A20

大屏焦点布局

第五阶段:云端和手机版

任务

内容

状态

A20C

旧云端接口契约只读审计

A21

本地云同步outbox与幂等

A21Q

云端频率额度与429策略

A21D

云同步降级与状态展示契约

A22

旧云端后端兼容迁移

A23

手机版认证与只读数据API

A23V

手机版焦点界面与响应式布局

第六阶段:模型管理、集成、测试和最终验收

任务

内容

状态

A25

系统管理与模型中心壳层

A25F

反馈服务与标注审计

A25Q

训练数据质量规范

A25M

模型成熟度与升级决策规范

A26

双设备与三端集成测试矩阵

A26R

集成问题定向修复

A27

故障注入矩阵与断言

A27S

连续运行工具与现场说明

A28

本地构建与依赖锁定

A28F

首次启动与数据目录向导

A28M

配置数据库迁移、备份与回滚

A29

最终全局只读审查

A29R

最终审查P0风险修复

A29R1

最终审查P1可靠性修复

A29R2

最终审查P2与三端修复

A29V

独立最终复验

七、比65个任务更让我意外的,是AI又给我设计了6道“人工作业闸门”

我原来想得很简单:既然已经有65个任务,那就让AI一个接一个自动跑下去。结果经过质检以后,系统又多了一套机制:人工闸门。意思是,即使AI自己认为“前面全部通过”,到了某些真正关键的位置,它也必须停下来,等人批准。

这六道闸门不是为了拖慢进度,而是为了把关键决策重新交回人。AI可以越来越多地执行,但最终责任不能交给AI。

G01|实施基线确认                  位置:A00之后。我要确认新版工程目录、实施基线和版本起点都已经确定,工作区处于干净状态。批准以后,才允许A01以及后面的通用实施任务开始。

G02|设备协议事实确认                  位置:A04E之后。我要确认真实设备的通信协议、通道含义、地址设置、摄像头清单和有效样本都已经明确。批准以后,才允许AI真正开始生成现场设备和摄像头适配程序。

G03|过程输出规范确认                  位置:A15H、A15S、A15X之后。我要确认“香气发展成熟度”“窨制边际效应”、证据强度、评估时间窗以及数据不足时怎么表达,这些规则已经确定。批准以后,才允许把过程模型和视觉模型真正接入在线推理。

G04|云端兼容与认证确认                  位置:A20C、A21D之后。我要确认旧系统接口是否兼容、云端调用额度怎么控制、身份认证是否安全、测试环境是否合格。批准以后,才进入云端兼容层和手机版认证开发。

G05|真实现场连续运行验收                  位置:A29V之后。我要确认设备真实接入后已经按要求完成规定时长连续运行,并保留人工签字结果。批准以后,才进入最终发布评审。

G06|最终发布批准                  位置:G05通过以后。我要确认独立审查、现场验收、备份测试、回滚演练全部通过。批准以后,才允许人工发布;编排器本身永不自动部署正式版本。

八、两个AI能干活以后,我又发现:难道我还要一直守在电脑边?

施工和质检的机制建立起来以后,还有一个现实问题。两个AI在那里干活,我怎么办?难道我必须一直坐在电脑前看着?如果还要这样,自动化的意义其实就少了一半。

前一天,我其实很早就回家了。但是电脑上的工程还在继续。半夜醒来,我又想知道:现在跑到哪一步?有没有卡住?有没有触发重试?是不是需要我再发一条指令?这时候,我把豆包加进来了。

它在整个软件工程里并不是“第三个程序员”,也不是核心质检。它更像一个远程值班员。因为我发现,它连接手机端和电脑端这件事情做得比较顺。于是出现了一个挺有意思的场景:我人在家,电脑还在跑。半夜醒来以后,我拿手机问一句“现在运行到哪里了?”豆包去看电脑端状态。如果没问题,我不用做任何事情;如果需要新指令,我直接在手机上说几句,再让它把指令传到电脑端,然后继续睡。

而且还有一点很重要:豆包如果只是帮我读取状态、看日志、传递指令,本身并不需要频繁调用真正负责写程序的高成本AI。这样,那些宝贵的额度就可以尽量留给真正需要复杂推理的事情:设计、写代码、整改和独立质检。

九、这么新的事情,哪能一帆风顺呢

整个过程当然遇到了不少问题。但我并不觉得奇怪。我要做的是一件自己以前从来没有做过、身边也很少有人这样干的事情,哪能一帆风顺呢。

中间有不少挺有意思的小插曲。AI额度突然用完,那就等额度恢复以后继续。质检会话跑得太久,上下文塞得太多,最后自己“想爆了”,那就重新开一个干净的会话,只给它真正需要检查的材料。

还有一次,为了安全,我们把AI启动的子程序网络权限限制得非常严格。结果限制过头了,顺手把负责施工的AI自己的网络也断了。第一个任务连续三个30分钟都超时。最后查了半天才发现:不是AI不会干,是施工队根本进不了工地。

现在回头看挺好笑。但是这种事情也让我越来越理解:AI工程真正难的地方,并不是让AI写出几行代码,而是让整个系统在真实环境里稳定、可控、能够发现问题、失败以后能够恢复,而且关键时候能够停下来等人。每解决一个这样的问题,整个项目就更像真正的软件工程。

十、我第一次真正理解:软件工程和写代码,根本不是一回事

过去我很容易觉得:做软件,就是会编程。现在越来越觉得不是。代码只是其中一个环节。真正的软件工程至少还包括需求分析、系统设计、任务拆分、版本管理、测试、质量控制、异常处理、安全边界、失败恢复、现场验证、发布,以及出了问题以后怎么退回去。

我不会写现在这些程序。但是借助AI以后,我竟然第一次比较系统地接触到了这些事情。这反而是这几天最让我震撼的地方。AI给我的,并不只是一个“代替我写代码的人”。它开始让我有机会去做过去因为不会编程,根本不敢想的软件工程。

十一、现在,才完成两个半任务

写这篇文章的时候:A00完成,A01完成,A02还在运行。后面还有六十多个任务。所以现在远远不到宣布成功的时候。

最后的软件到底会变成什么样?设备能不能真正稳定运行?机器视觉能不能正常工作?模型输出能不能真正帮助茶叶加工?PC、大屏和手机三个端能不能顺畅配合?跑几天以后会不会又出现以前没想到的问题?我都不知道。也许后面还有很多坑。

但我现在反而很期待。因为这已经变成了一次很有意思的实验:一个几乎不会写现代代码的人,加上几个各司其职的AI,到底能不能真正完成一套复杂软件?

我负责提出需求;一个AI负责施工;一个AI负责质检;豆包帮我远程值守;自动测试负责提供证据;到了关键节点,AI停下来,我签字,然后再继续。

如果最后真的能跑通,我觉得最值得记录的,也许还不是这套茶叶监测软件本身,而是:不会写代码的人,也开始有机会用软件工程的方法,把自己的想法真正做出来。65个任务,现在才刚刚开始。希望后面还有更多惊喜,也希望一切顺利。等软件真正跑起来以后,我再写第二篇,看看这65个任务,最后究竟做出了什么。

附:如果你也想用这种方法做项目,我觉得最关键的是四件事

·先把需求说清楚,不要急着让AI动手。

·让不同AI承担不同角色,最好把“施工”和“验收”分开。

·高成本模型留给设计、编码、复杂质检;状态监控、消息传递尽量交给低成本助手。

·关键节点一定要有人签字,最终责任不要完全交给AI。

相关学习资料