去年秋天,一家苏州的电子线束组装厂找到了我们。工厂规模不算小——6条组装线、200多人——但管理上有个老毛病一直解决不了。

他们的车间用了一套国产MES系统(自己找人开发的,功能比较基础),但财务和库存管理用的是金蝶ERP。这两个系统之间的数据是断开的。每天,车间文员要把前一天的实际产量、物料消耗、不良品数量从MES打印出来,再逐条录入金蝶。3个人,每天花2-3小时做这件事。

听起来好像也不是大问题?但实际的情况是:产量数据经常输错(少一位数字、串行、漏行),库存账实不符是常态,每个月对账都要折腾好几天。最严重的一次,一个型号的端子库存账面显示还有5000个,实际只剩200个——生产线差点停产。

他们想找一个方案,让MES的数据自动流到ERP里。但这并不像"加一根网线"那么简单。这篇文章记录我们是怎么一步步做到的,以及中间踩了哪些坑。

一、现场情况摸底

去工厂蹲了三天,主要摸清了几个事情:

核心问题:两个系统之间没有标准的集成方案。MES的数据格式和ERP的要求不完全对齐——物料编码规则不同、单位换算要手工处理、异常业务场景(返工/报废/补产)没有自动化的处理逻辑。

方案的前提条件也清楚了:不能改动金蝶的数据库(金蝶服务商不允许),不能影响MES现有的业务流程,预算有限(几万块)。

二、方案设计

我们需要一个介于MES和ERP之间的"翻译层"——读取MES的生产数据,按金蝶的业务规则转换格式,再调用金蝶的API写入。看起来简单,但实际上要处理的问题不少。

为什么用AI Agent而不是传统ETL?

一开始我们想的是标准的ETL工具——写几个Python脚本定时跑就行。但深入了解后发现,MES到ERP的数据映射不是简单的字段对字段:

这些逻辑如果用传统ETL硬编码,维护成本会很高。每次MES或者金蝶的版本更新,脚本就要跟着改。所以最终选择了AI Agent的方式——让大模型理解MES的数据内容和金蝶的业务规则,动态生成ERP操作指令。

架构三层

数据层(MES侧):在MES服务器旁边部署一台边缘AI网关。网关通过ODBC直连MES的SQL Server数据库,每5分钟拉取最近的生产数据(完工记录、质检记录、物料消耗记录)。同时读入"映射表"——物料编码对照、BOM结构、仓库信息——这些作为AI Agent的知识库。

业务层(AI Agent):在网关本地运行一套AI Agent工作流:

监控层:一个轻量级的Web看板,展示:

关键的实现细节

AI Agent的提示词(Prompt)设计花了挺多功夫。最核心的是两点:

业务规则注入:把金蝶的业务规则写进提示词的System Prompt里。比如"金蝶的生产入库单要求:单据头必须包含日期、工单号、仓库、部门;分录明细必须包含物料代码、数量、单价来源为移动平均"。这些规则是从金蝶的用户手册和现场调研中提取的,写成了结构化的条款。

异常兜底策略:如果AI Agent遇到判断不了的情况(比如一条MES记录的质检结果标记为"待判定"但质检员还没签字),不抛出错误,而是把这条记录放到"待处理"队列里,在看板上高亮显示,由文员手工确认后再继续。

踩坑小插曲:第一个版本的Agent遇到任何不确定就直接拒绝执行,把全部数据丢到异常队列。结果运营第一天下午3点,异常队列里堆了80多条记录——文员崩溃了。后来改成"能处理的自动处理,不确定的挂起",异常比例降到约5%。

三、实施过程

第一周:数据摸底和映射表整理

这是最花时间的一步。要搞清楚MES里的每个字段对应金蝶的什么字段,中间需要什么转换。

具体做了几件事:

教训:物料编码映射是整件事的基石。如果映射不准确,后面所有数据都是错的。但做这个映射本身很枯燥也很容易出错——两个人的工作量,做了一周。

还发现了一个意料之外的问题:MES里有17个物料编码在金蝶中找不到对应记录。后来查明,这些是试验性的新物料号,只在MES里开了还没来得及在金蝶中创建。要么补创建,要么在Agent里加一条规则——找不到映射时跳过该记录并告警。

第二周:MES数据读取和校验

部署边缘网关,配置ODBC连接到MES的SQL Server。写了一套数据校验规则:

这些规则看起来基础,但在第一轮跑数据时,发现了30多条异常数据——有的是MES里的脏数据(操作工没填完就提交了),有的是系统Bug(重复生成了相同的完工记录)。这些数据如果直接灌进金蝶,后果很严重。

第三到四周:AI Agent开发和调优

这是最核心的开发阶段。用了一个轻量级的LLM模型在本地运行(量化版本,不需要GPU),主要是为了数据主权——工厂的数据不允许传到外部API。

开发过程中迭代了3个版本:

V1 - 全自动模式:Agent直接读取MES数据→转换成金蝶API请求→调用→返回结果。结果:正确率约70%。主要问题:Agent对金蝶API的字段格式理解有偏差(比如日期格式要求"YYYY-MM-dd"但Agent输出了"YYYY/MM/dd"),还有一些业务规则没覆盖到(比如返工品需要创建单独的单据类型)。

V2 - 半自动+人工复核:Agent处理完成后,在推送到金蝶前先经过看板预览,由文员点击确认后再推送。结果:正确率提升到约90%,但文员每天还是要花20-30分钟审核。虽然不是理想的全自动,但比之前3个人2-3小时好太多了。

V3 - 基于规则的Agent:在V2的基础上,把最常见的错误模式写成了硬编码规则(类似"如果物料编码以S-开头,金蝶端对应的是半成品类")。AI Agent负责处理模糊判断(比如判断业务类型),精确转换由规则层执行。结果:正确率约95%,每日需要人工干预的记录降到5条以内。

我的体会:在这个场景里,AI Agent最大的价值不是替代规则,而是处理"规则写不清楚但人一看就懂"的判断。几类典型的业务场景(正常入库、返工、报废、补料)之间有一些模糊地带——MES里的"部分报废部分返工"这样的情况,写if-else会陷入组合爆炸,但Agent能准确判断。而精确的字段格式转换和数据校验,还是规则更可靠。

第五周:金蝶API对接和测试

金蝶K/3 Wise的WebAPI有几个让人头疼的地方:

这周主要就是和金蝶的WebAPI"搏斗"——处理各种边界情况。金蝶服务商的态度还算不错,配合修改了部分校验逻辑(比如允许负库存暂估入库的配置)。

第六周:试运行和调优

试运行两周,文员那边的反馈主要集中在这几个点:

这两周的调优很关键。到第二周结束时,人工干预量从一开始的每天10条降到了3条左右。文员的工作从"录入数据"变成了"审核异常"——工作强度明显下降。

四、实际效果

系统上线稳定运行3个月后,我们统计了几个数据:

数据同步时效:从24小时降到约5分钟
MES的完工记录在车间扫码后,约5分钟就能出现在金蝶的库存账上。月底盘点再也不用等文员补录数据。
月末对账时间:从5天缩短到约4小时
以前每月31号到次月4号,财务和车间都在对账。现在数据实时同步,差异基本上当天就能发现和处理。
人工录入时间:从3人×2.5小时降到0.5人×0.5小时
文员不需要再逐单录入了,每天只需要花30分钟左右审核异常记录和补录少数Agent无法处理的特殊业务。
数据准确率:从约85%提升到约98%
人工录入的出错率约15%(主要是串行、漏行、数量输错),AI Agent的处理准确率约95%,加上人工审核后达到约98%。

还有一些不太好量化的改善:

五、遇到的问题和解决办法

坑1:物料编码不一致

MES中有4200个物料编码,金蝶中3800多个。一对多的情况有40多组——同一个物料在MES中拆成了多个编码(按规格细分),但在金蝶中是同一个物料代码。还有12个MES物料在金蝶中完全没有对应记录。解决方案:建立完整的映射表,并设计了"未映射物料"的处理规则——Agent跳过并告警。

坑2:金蝶API的事务缺失

金蝶的API是一口一个调用的,没有批量事务。如果创建单据头成功但添加分录失败,没有自动回滚。Agent需要自己检测失败并调用删除接口清理。这个补偿逻辑花了不少精力调试——因为删除接口本身也可能失败(比如单据已经被人为审核了)。

坑3:MES中的脏数据

操作工有时候会误操作——比如扫错了工单号、数量多输了一个0、或者提交了重复记录。这些脏数据如果不加校验直接推给金蝶,入库单就错了。最终在Agent里加了多层数据校验——包括和BOM标准用量做对比、和工单总量做对比、和同工位历史产量做对比——偏差超过设定阈值就挂起等待人工确认。

坑4:业务场景的无限多样性

"正常完工入库"只占约70%的业务量。剩下的30%包括:部分报废加部分返工、跨月工单、紧急插单补料、模具试模入库、委外加工回库……每种场景在MES和金蝶之间的数据映射逻辑都不同。Agent不可能覆盖全部,所以设计了一个"处理不了的交给文员手工补录"的兜底机制——不是所有问题都能用自动化解决。

坑5:文员的信任建立

上线第一周,文员非常紧张。每次Agent自动提交后,她都要打开金蝶去查一遍,确认数据真的进去了。这种"手工验证自动化"其实抵消了自动化的效率提升。解决办法是把"预览+确认"模式延长了一周,并且在看板上加了"同步历史"(每一笔同步记录都可以追溯到MES原始数据),让文员能随时核验。约两周后,她开始信任Agent了,预览时间明显减少。

信任曲线:第一周全程疑心→第二周抽查→第三周开始接受→一个月后完全依赖。跟工厂IoT项目的运维信任曲线一模一样。

六、个人的思考

MES-ERP集成是个被低估的痛点。以前我们主要做设备层的IoT项目(传感器、数据采集、预测维护),但发现更让工厂老板头疼的往往是系统层面的数据孤岛。设备数据能不能用是"锦上添花",但库存账能不能对上是"燃眉之急"。后者的付费意愿比前者强很多。

AI Agent在这个场景里的定位有点特别。它不是替代了某个岗位,而是改变了工作方式——从"录入数据"变成了"审核数据"。文员的角色没有消失(也不需要消失),但她的工作体验完全不同了。我觉得这是AI在制造业主业中比较理想的落地方向——不是取代人,而是让人的工作更有价值。

数据标准化比技术选型重要得多。整个项目最花时间的环节不是开发Agent,而是整理物料编码映射和业务规则。这个环节没有捷径——有多少物料就要对多少条,有多少种业务场景就要梳理多少种。技术方案可以复用,但业务数据的清理必须每个客户重新做一遍。

ERP厂商的开放性差异很大。金蝶的WebAPI本身还算标准,但文档质量参差不齐、错误信息不够友好。如果是用SAP或者Oracle,可能接口更完善但成本更高。如果是用自研的老旧ERP系统,可能连API都没有。方案的可迁移性取决于目标ERP的系统架构——中大型企业用SAP的、小微企业用Excel的、中间段用金蝶用友的——每个层次的方案都不一样。

最有价值的倒不一定是自动化本身。项目做完后,财务主管说了一句让我印象很深的话:"以前月底对账是'吵架时间'——车间说账不对是财务的问题,财务说账不对是车间的问题。现在数据都是自动同步的,谁也别甩锅了。" 自动化带来的流程透明化,有时候比效率提升本身更有意义。

七、给你的建议

如果你也在考虑做MES和ERP的数据打通,几点实际的建议:

  1. 先从最痛的点开始——不要想着一次把所有业务场景都自动化。生产入库和物料消耗通常是最容易出问题的两个环节,先做这两个。
  2. 物料编码映射是地基——这个环节至少预留一周时间,让熟悉两边系统的人参与。不要试图用AI自动匹配所有编码,错误成本太高。
  3. 接受"不全自动"——MES→ERP的流程中一定会有10-20%的异常场景无法自动化。设计一个清晰的人工处理流程,比硬撑着100%自动化靠谱。
  4. 前两周做"预览模式"——让最终用户(文员、会计)有时间建立对系统的信任。强制全自动反而会让他们抵触。
  5. 选对ERP接口方式——如果ERP有标准API(如金蝶、用友的WebAPI),用API调用。如果没有,考虑通过数据库中间表或者文件导入的方式(CSV/Excel导入)。后者虽然不优雅,但可行。
  6. 保留审计追踪——每一笔从MES同步到金蝶的数据都要能追溯到原始记录。这不仅是为了对账,也是出了问题时能定位原因。