捷翼汽车 · 产供销一体化智能体
技术架构 · 程序算数,模型理解与表达
HOW IT WORKS

求解器负责算,
大模型负责听和说。

销售说一句“一汽要十万件转向节、给了 8% 折扣”,智能体按固定的工具链走完:库存核减 → 产能盘点 → OR-Tools 混合整数规划 → 人/料/机差额 → 利润底线 → 各部门派单。大模型只做两件事:把一句话变成结构化订单,把结果讲成管理层能读的结论;页面上每一个数字都来自程序。

01

部署架构

单容器、单进程、标准库 HTTP 服务;第三方依赖只有 OR-Tools。演示数据与自有数据分开存储,共用同一套解析、校验与求解代码。

浏览器
智能体演示/ · 5 个演示场景 + 我的数据
用我的数据/workspace.html · 上传 Excel / CSV
技术架构/architecture.html
HTTPS · ai5.shadowmotion.cn
公网服务器(阿里云 · 已备案域名)
nginx证书 · 反向代理 · 请求体 ≤ 1 MB
frps端口 8015
frp 隧道 → 内网 127.0.0.1:6014
内网主机 · Docker Compose(jieyi-agent)
jieyi-agent 容器 · Python 3.12 标准库 HTTP + OR-Tools 9.15
编排agent.py工具链 · 规则解析兜底 · 派单模板
核心planner.py净需求 · SCIP 混合整数规划 · 差额 · 利润 · 策略对比
数据tables.py表结构 · 同义词识别 · xlsx/CSV 读写 · 体检
AIllm.pyDeepSeek · 关闭推理 · 每日额度
演示datasets/5 个场景 = 5 份 CSV 主数据
自有workspace.py按访客隔离 · 24 小时自动删除
jieyi-data 卷上传工作区(每访客一个目录)· 访问统计
DeepSeek API只收到:一句话指令、汇总后的计划;上传时仅在规则认不出时收到表头 + 前 3 行
usage-hub(ai9)只读汇总访问统计,不参与业务

任务采用“提交 + 轮询步骤”而不是流式输出:页面每 350 ms 取一次进度,计划算完立刻展示,大模型结论随后替换模板结论,不受代理缓冲与超时影响。

02

智能体工具链

每一步标明由谁负责:程序计算与校验,AI理解与表达,人确认与下发。工具顺序固定,可审计、可复现。

  1. AI程序parse_order理解指令DeepSeek 输出结构化订单 / 调整 / 追问;不可用时规则解析(中文数字、“九五折”“让利 5 个点”“C 厂第 3 个月停产”)
  2. 程序validate_order校验订单零件、客户须在主数据中;数量、折扣、交期范围检查
  3. 程序check_inventory库存核减订单 − 成品库存 − 在制品 + 安全库存 = 净需求;按交付节奏拆成逐月累计需求
  4. 程序load_capacity盘点空闲产能扣除其他在产订单占用后,每厂每月还能挤出多少件、卡在哪种资源
  5. 程序solve_mipOR-Tools 排产见下一节;约 140 个变量,几十毫秒内求得最优
  6. 程序gap_analysis人 · 料 · 机差额扩招人数与到岗月份、物料请购量与最晚下单日、设备台数与要求到厂月份、委外量
  7. 程序profit_check利润与折扣底线完全成本口径毛利;盈亏平衡折扣;守住 12% 毛利的最大折扣
  8. 程序compare_strategies策略对比同一订单在“冻结招聘 / 冻结设备投资 / 不委外不加班”下重解,给出代价
  9. 程序search_lead_time可承诺交期有缺口时逐月放宽交期重解,找到最短可全部交付的周期
  10. 程序人build_dispatch生成派单模板直接引用求解结果,给销售、仓储、各厂、人力、采购、设备供应商、委外厂商;人确认后下发
  11. AIwrite_summary汇总结论DeepSeek 只拿到格式化好的数字(“393.0 万元”“17.4%”),要求照抄、不换算
追问回路:“如果不招人呢?”“C 厂第 3 个月停产”——解析为对上一单的调整,整条链路重跑;“为什么 C 厂要招人?”——不重算,DeepSeek 只依据上一份计划的 JSON 回答,并提示用户可以直接说出新条件。
03

求解模型(OR-Tools · SCIP 混合整数规划)

一次只排一个零件的新订单;其他在产订单以“占用率”的形式进入模型。

决策变量

x[f,m]工厂 f 第 m 月产量连续,事后取整(误差 < 1 件)
ot[f,m]加班工时≤ 在岗人数 × 标准工时 × 20%
hire[f,m]第 m 月到岗新人整数,≤ 月招聘上限,招聘周期 1 个月
buy[f,e]新增设备台数整数,交期之后才计入产能
lots[k,m]物料到货批次受提前期约束,按累计量向上取整到最小批量
out[m]委外数量≤ 委外月上限,第 2 个月起
back[m] / hold[m]累计欠交 / 提前备货欠交计违约金,备货计仓储费

约束

  • 人工 单件工时 × x ≤ 空闲工时 + 新人工时 + 加班
  • 设备 每类设备:单件机时 × x ≤ 空闲机时 + 新设备机时(到货后)
  • 物料 逐月:上月结存 + 到货 − 单耗 × 产量 = 本月结存 ≥ 0
  • 交付 累计(自制 + 委外)+ 欠交 − 备货 = 累计净需求
  • 场景 冻结招聘 / 冻结设备 / 不委外 / 不加班 / 某厂某月停产 → 对应变量上界置 0

目标:边际成本最小

加工费 + 物流 + 加班 1.5 倍工资 + 新人(招聘培训 + 在职月工资)+ 新设备(安装 + 计划期折旧)+ 物料采购 + 委外 + 违约金 + 仓储。现有人员和闲置设备视为沉没成本。

利润:完全成本口径

报给销售的毛利把现有人工也按标准工时计价,库存出货按标准成本,安全库存转回。决策用边际、报利润用完全成本,两种口径分开,避免“用沉没成本做决策”或“少算成本报利润”。

~140变量 / 约束(6 个月 · 3 厂)
20–60 ms单次求解(最优,gap < 0.2%)
×5每次运行求解次数(主方案 + 4 种策略)
总有解允许欠交,不可行订单也能给出“最好能做到什么程度”
04

主数据模型

12 张表,长表格式(一行一个事实),与 ERP / MES / WMS / SRM 的常见导出一致。演示场景与上传模板是同一格式。

表主键关键字段来源系统
工厂工厂编码在岗人数、月招聘上限、人员 / 设备占用率HR · MES必需
零件零件编码目录价、成品库存、在制品、安全库存、委外单价 / 上限ERP · WMS必需
工艺路线零件 × 工厂单件工时、单件加工费(不在表里 = 该厂无资质)MES · 工程必需
设备类型设备编码月有效机时、单价、交期、安装费率、供应商设备台账 · SRM可选
工厂设备台账工厂 × 设备现有台数设备台账可选
设备机时零件 × 工厂 × 设备单件机时MES可选
物料物料编码单价、可用库存、最小批量、提前期、供应商ERP · WMS · SRM可选
BOM零件 × 物料单件用量ERP · PLM可选
客户 / 运费客户;客户 × 工厂名称、别名;单件运费(就近生产)CRM · TMS可选
月度负荷工厂 × 月逐月人员 / 设备占用率(覆盖工厂表)APS · MES可选
参数参数名人工费率、加班上限、招聘培训费、违约金……财务可选

缺可选表时系统按明确的默认处理并在体检里提示:没有设备表 → 只按人工约束;没有 BOM → 不算采购;没有运费 → 不考虑就近。

05

自有数据流程

上传 → 识别 → 确认 → 体检 → 运行。识别可以借助 AI,但只有人确认、程序校验通过的数据才进入求解。

  1. 程序读取.xlsx(一个文件多张表)或 CSV;UTF-8 / GBK、分隔符自动识别;CSV 浏览器先 gzip;只保存解析后的表格
  2. 程序AI识别工作表名 + 表头同义词(“Plant”“Headcount”“MOQ”“采购周期”……)规则优先;规则认不出的表,把表头和前 3 行交给 DeepSeek 建议
  3. 人确认每张表识别成什么、每个字段对应哪一列,逐项可改;标注来源(规则 / AI / 人工)
  4. 程序体检必填、数字(支持 26,000、92%、3.5万)、占用率范围、编码引用、重复;错误精确到“工作表 · 第几行”
  5. 程序运行体检通过后数据源切到“我的数据”,与演示场景走同一条工具链
06

职责边界与失败降级

能算就给数,算不出就说清楚卡在哪;不让大模型补数字。

程序负责
  • 所有数量、金额、日期的计算
  • 排产、差额、利润、策略对比
  • 数据校验与行号定位
  • 派单内容(模板直填)
大模型负责
  • 把一句话变成订单 / 调整
  • 认不出的表头给出映射建议
  • 用业务语言写结论与回答追问
大模型不负责
  • 产生或修改任何数字
  • 补齐缺失的主数据
  • 直接下发派单
出现什么情况系统怎么做
DeepSeek 不可用 / 额度用完规则解析指令、模板结论;排产、派单照常
订单超出产能,按期交不了给出欠交量与违约金,自动搜索可承诺交期(如“放宽到 7 个月”)
设备交期长于计划期不会被选中;改为加班 / 委外,或提示延期
零件没有任何工厂的工艺路线拒绝排产,提示补充工艺路线表
上传数据格式错误 / 引用不存在不进入求解,逐条列出工作表与行号
可选表缺失按明确默认处理(例如运费视为 0),并写进体检提醒
并发运行过多超过 4 个同时运行的任务返回“稍后再试”
07

评估与路线图

改动求解器或数据层后,演示场景的结论必须保持可解释:标准场景要能讲出“扩招 + 补设备 + 采购”的故事,冻结设备投资要能看到延期。

5演示场景(标准 · 旺季满负荷 · 钢材紧缺 · 设备交期延长 · 华南扩产)
28自动化测试(解析、求解约束、取整、场景往返、上传识别与体检;不依赖大模型)
2样例文件:标准模板 + 表头不统一的“脏”样例
3 s一次完整运行(含两次大模型调用)
阶段一内部试点接入捷翼 ERP 订单、WMS 库存、MES 工艺与产能、SRM 供应商;派单对接企业微信 / OA;用实际执行偏差校准工时与占用率。
阶段二闭环优化多订单联合排产、换线与班次、物料替代与多供应商分配、在途库存与质量损耗、滚动重排。
阶段三对外售卖主数据模板与行业工艺库、私有化部署、按工厂 / 订单量计费;保留“数字只来自求解器”的可审计性作为卖点。
第一版明确不做
多订单联合排产日 / 班次级排程实时对接 ERP / MES真实发送派单需求预测账号与权限体系