聊一个很实在的话题:程序员怎么用AI把重复工作自动化。过去一年我试过各种方案,也见过团队把自动化做得风生水起,见得更多的是一上来就追求"全自动",最后被各种意外状况折腾到怀疑人生。
先说结论:AI自动化的正确姿势,不是直接把所有重复工作丢给AI全自动运行,而是先设计好人机协作的边界,让AI负责能干的、人负责关键的,等跑稳了再谈扩大自动化范围。这篇文章会围绕几个核心问题展开:哪些工作适合自动化,哪些环节必须留给人,一个可落地的半自动流程长什么样,以及自动化上线后容易踩哪些坑。适合正在尝试用AI提效,但还没找到稳定套路的程序员、测试工程师和技术管理者。
1. 为什么先说"别急着全自动":自动化最大的坑不在技术
1.1 全自动真正的成本是错误被放大
很多人在最开始的想法很简单:我有一堆重复劳动,AI能写代码能处理文本,让它全自动跑起来,我不就解放了吗?这个想法本身没错,但它忽略了自动化的一个本质特征——错误会以极低的成本被批量复制。
举一个真实例子。我之前帮团队做过一个批量代码重构的小工具,逻辑不复杂:扫描所有老接口调用,按新规范生成替换代码。最开始我图省事,让AI直接生成替换脚本,然后批量替换到几十个模块里。第一次跑完发现,AI在某个分支里把参数名搞错了,因为那个接口有历史遗留的别名。由于是自动替换,这个错误在几分钟内复制到了工程里所有调用点,比手工改代码时出错的影响面大了一个量级。
更麻烦的是,全自动流程一旦跑起来,人很容易放松警惕。没有人工确认点,错误可能会绕过你的视野直接进入下游。
1.2 上下文缺失:AI能干活,但它看不见全貌
第二个让全自动翻车的核心原因是:AI大模型天然只看得见你喂给它的那一段上下文,它看不到业务的全貌。
举个例子,做接口自动化测试的时候,让AI根据接口文档生成测试用例,它通常会生成很标准的用例:正常参数、边界值、异常值。但从业务角度看,这个接口返回的金额字段可能只在特定地区生效,某个枚举值在旧版本里还在兼容。这些约束不会写在接口文档里,AI自然也就不知道。如果全自动生成完直接提交、直接执行,生成的用例很可能把业务约束完全不放在眼里。
这不是AI能力不够,而是上下文缺失。任何一个自动化环节,只要缺少"理解业务约束"的人来做判断,最终产物的质量就无法保证。这也是我后来坚持"AI生成+人工确认"的原因。
1.3 维护债务:自动化不是一锤子买卖
还有一个被严重低估的成本:维护。
全自动流程刚开始跑得很欢,但三个月后业务方改了字段,接口换了版本号,你的自动化任务开始频繁报错。这时候如果没人及时改,整个自动化体系就会变成一个不信任的黑洞——大家看到告警都默认"它又坏了",最后自动化变成了一堆没人敢依赖的废弃脚本。这种现象在行业里太常见了,甚至有个专门的说法叫"死亡自动化"。
所以每上一个自动化任务,都要默认它有后续维护成本。不是一个脚本跑一年,而是每季度至少要过一遍,确认输入输出是否还匹配现状。全自动和半自动,在这方面最大的区别是:半自动因为有人反复经过,至少能发现"该维护了"。
2. 正确切入点:先画流程,再决定自动哪里
2.1 用"重复工作清单"找到前三名
别一上来就铺开做自动化平台。我先做一个很笨但非常有效的事:写一周工作日志,列出所有耗时超过两小时、每周至少出现的重复动作。
具体怎么操作?我一般会做这样一张表:
| 工作项 | 频率 | 单次耗时 | 输入是否有固定格式 | 输出是否需要业务判断 | 出错后果 |
|---|---|---|---|---|---|
| 新接口的测试用例编写 | 每天2-3次 | 40分钟 | 是(接口文档) | 部分需要 | 中 |
| 日志中的重复报错归类 | 每天 | 30分钟 | 是 | 否 | 小 |
| 周报数据汇总 | 每周 | 1小时 | 是 | 否 | 小 |
| 线上配置修改 | 偶尔 | 10分钟 | 是 | 强 | 大 |
填完之后,挑出三个交集:耗时多、格式固定、出错后果不太严重的。这三个就是最适合先自动化的项目。自动化测试、接口自动化、数据整理,都是很容易满足这些条件的场景。
2.2 关键判断:什么环节适合交给AI,什么必须留给人
这时候有了项目候选,再逐个环节问三个问题:
- 输入输出是否可以被结构化描述?
- 中间过程是否需要业务判断?
- 出错之后是否可快速恢复?
如果三个答案分别是"是、否、是",那这个环节基本可以交给AI来自动化。如果中间有需要业务判断的部分,比如"这个报错是不是该转给下游团队",那AI只能做到预归类,最终还是需要人来确认。
现实中绝大部分看似重复的工作,中间都会有那么一两个"需要经验"的判断点。这些判断点在自动化设计里绝不能省,省掉就是埋雷。
2.3 半自动人机协作是更稳妥的起点
我推荐的分层是这样的:
- 第一层:全人工,适合低频、高影响的事项;
- 第二层:脚本辅助,用工具把重复动作固化,仍然由人来逐条执行;
- 第三层:AI辅助生成+人工确认,AI负责产出初稿,人在关键点位审核确认;
- 第四层:全自动,只在流程极其稳定、错误成本可控时使用。
大多数程序员日常工作中的重复事项,做到第三层就已经非常理想了。比如接口自动化用例,我先让AI根据接口文档生成完整的用例代码,然后我自己review一遍,挑出来不符合业务约束的地方,再提交到代码库。这一来一回比从零开始写省一半时间,质量也更有保证。
3. 手把手搭建一个"真能用"的AI自动化流程
3.1 先把重复动作固化成脚本骨架
很多人以为自动化是让AI从0到1把工作做完,实际上更靠谱的做法是:你先把重复动作的基本流程梳理清楚并脚本化,然后再让AI补充内容。
我以前常做的场景是新增一个接口后写接口自动化用例。在接AI之前,我先写了一个模板脚本,它做三件事:读取接口定义文档,解析出接口路径、方法、参数、返回字段;按照既有的测试框架模板,生成一个基础测试用例的代码骨架;把生成文件放到指定目录下。这个骨架脚本本身并不复杂,一个Python脚本就能写完,代码量控制在两三百行。
这样做的好处是:流程的边界是我定的,AI只负责填充内容,而不是凭空设计流程。AI可以不稳定,但骨架是稳定的,这就是半自动化里的"确定性"部分。
3.2 让AI替代"从0写代码"的环节
骨架脚本固定之后,把AI请进来填充测试逻辑。我会给AI一个很明确的任务描述,大概长这样:
你是一名测试开发工程师。根据我提供的接口信息,生成一段可用的Python接口自动化测试代码。要求:
- 使用项目既有的requests封装和断言风格;
- 覆盖正常参数、必填参数缺失、字段类型错误、超长字符串、空值五种场景;
- 对每个用例,注明你当前对字段业务含义的所有假设;
- 如果接口信息中有不清楚的地方,直接输出"参数不明确",不要自己编参数。
注意最后一个要求很重要。AI的默认行为是"尽力回答",它会自动脑补缺失信息。为了防止它脑补出和业务不符的字段,我明确要求它遇到不确定就停下来说"不明确"。这就是半自动里"闸门"的雏形:让AI知道自己的能力边界,把不确定的决策主动还给人。
3.3 加一道人工确认的闸门:人机交接点
半自动和全自动最大的区别就在这个"人机交接点"。我的习惯是让自动生成的东西先进git分支,然后人工review之后才合并。
具体做法是:脚本运行完,会自动创建一个feature分支,commit消息写明"AI generated test cases for xxx interface",然后机器人把这个分支推送到远程,在IM里@我,附上本次生成的用例数量和几个关键变更点。我会打开diff,重点看那些AI标注过假设的地方,比如"假设amount字段单位为分"、"假设status枚举包含pending"。这些位置是业务约束最容易出问题的地方。
这道人工闸门不费多少时间,但对于质量问题至关重要。它把"AI可能在细节上出错"变成"AI出错也没关系,因为有人做最后一道体检"。
3.4 效果复盘与持续调优
上线之后要跑数据,不是上线就是成功。我大概跑了两周,每周五做一次复盘:生成一个接口用例平均耗时多少,我review平均耗时多少,提交后被测试环境弹出的缺陷有几个。
两周下来数据是:从原来每接口40分钟降到15分钟,其中AI生成大约30秒,我review大约10分钟,剩下的时间在处理复杂业务场景。缺陷率没有明显上升,甚至因为模板统一后常规分支的遗漏变少了。
复盘之后我会根据数据调整两件事:一是提示词,比如某类接口经常生成不合格用例,我会把约束条件塞进提示词里;二是骨架脚本,比如某些参数需要做额外处理,我会把它写进模板,减少AI自己发挥的空间。这个过程就是自动化的持续调优,不要觉得麻烦,它是整个体系最值钱的部分。
4. 常见问题与排查技巧实录
4.1 AI输出不稳定怎么办:兜底方案设计
AI生成内容天生带有随机性,同一个提示词跑两次,结果可能有差异。这里有几个踩过坑之后的固定动作:
- 第一,要求AI输出严格格式,比如"只输出JSON,不要输出多余解释"。这能省掉不少解析成本;
- 第二,脚本侧做格式校验,解析失败就自动重试一次,换一个采样参数;
- 第三,重试仍然失败,直接标记为"待人工处理",千万别让失败任务静默跳过。
这个兜底链路看着很简单,但很管用。它保证了自动化流程不会因为AI抽风而卡死,也不会因为AI抽风而输出错误结果到下游。
4.2 数据与权限安全:自动化最容易踩的雷
凡是让AI处理业务数据的地方,第一件事就是确认数据能不能出内网。这里面有一个很容易被忽略的点:不要图省事把生产环境的配置、密钥、用户手机号直接贴给AI去分析。
我的做法是两条路:优先使用公司内部部署的大模型接口,所有数据不出内网;如果只能用外部AI,就先做脱敏,把字段名和示例值替换成假数据,等AI生成完了再回填真是字段名。别嫌麻烦,这是一条你踩一次就知道有多重的线。
另外,自动化脚本的权限一定要遵循最小化原则。哪怕自动化任务是帮自己省事的,也不要顺手用一个超管的token。万一脚本出了bug,或者AI被诱导做了一些意外操作,最小权限能最大程度降低爆炸半径。
4.3 维护成本失控的警戒线
怎么判断自动化到底做过了头?我给一个简单的经验数值:如果维护自动化脚本的时间,超过了手工完成同一件事时间的75%,说明这个自动化是负资产。
举个例子,我见过有同事花了一周时间做一个小工具,让AI自动从某个后台页面提取数据并生成报表。工具本身没问题,但后台页面每一两个月改一次版,每改一次,这个工具要花半天到一天去适配。半年下来,维护时间加起来甚至比自己手动点报表还久,这就是典型的过度自动化。
每季度强制做一次"自动化收益复盘"很管用:列出所有自动化任务,统计过去三个月的维护成本和使用频率。那些低频高维护的直接下线,别可惜,下线也是一种优化。
5. 自动化之后,程序员的"第二曲线"往哪走
5.1 从"实现功能"到"定义问题"
当越来越多的重复代码由AI生成,重复测试由脚本自动执行,程序员的稀缺性正在发生肉眼可见的转移:从"写代码实现功能"转向"定义清楚要做什么"。
这个变化很微妙但也很现实。以前面试时看重你背了多少框架API,现在AI对这些API的熟悉程度已经远超大多数人。真正值钱的能力变成了:你能不能在动手之前,把一个问题拆成清晰的输入、处理和输出?能不能定义出完备的验收标准?能不能识别出那些AI看不见的业务约束?
系统设计和业务洞察,正在取代纯编码手艺,成为接下来几年技术人最该补的短板。这也是本篇文章始终强调半自动而不是全自动的另一个原因:你在设计"什么该自动、什么该留给人"的过程中,就是在锻炼这种定义问题的能力。
5.2 做自动化的主人,而不是被替代的人
关于AI会不会替代程序员这个问题,我的观点很明确:短期不会被整体替代,但一定会被"会用AI的同行拉开差距"。
想不被替代,不是去学一堆花哨的AI指令,而是建立自己的自动化思维链。我的建议有三条:
- 主动观察自己每周的重复劳动,每两个月挑一个高频动作做成半自动,搭建自己的工具库;
- 认真review AI生成的结果,把每一次review发现的问题反向补充进提示词或模板,形成数据闭环;
- 刻意培养业务理解能力,多参与需求评审和方案设计,多问"为什么这么做",而不是只问"怎么实现"。
本质上,你在自动化中担任"定义者"和"验收者"的角色,这个角色越熟练,你的价值就越不会被替代。AI是放大器,你定义问题的眼光,决定了放大的是价值还是风险。
我个人在实际操作中的体会是:真正提升效率的,从来不是某个炫酷的AI工具,而是一套"让AI在确定边界内干活、人在关键点位上把关"的工作方式。刚开始改掉"凡事都让AI全自动"的冲动很难,但跑过几个项目之后就会明白,半自动不是妥协,而是更高级的效率设计。
最后再分享一个小技巧:如果你还没想好从哪儿开始自动化,先别急着造平台,就选一个每周耗你两小时以上的小任务,按文章里说的思路给它搭一条"骨架脚本+AI生成+人工确认"的链路。跑通一次之后,你会自然知道下一个该自动什么。这条路,比看一百篇AI工具评测都实在。