第一届多彩贵州 · 贵客松 AI 应用场景共创大赛 · 赛道二(企业命题 · 先进制造) 线上 Demo:https://qiangwall.cn/tiaoji
制造现场每天都在产生调参经验,但这些经验落地即蒸发。 这套系统让产线自己把每一次调整记下来,在下一次要动手的那一刻自动摆到眼前。
小微制造厂调一台设备,靠的是老师傅的手感。真正的麻烦不是"老师傅不在"—— 小厂里他通常在——而是:
- 同一个问题在同一台机上反复出现,每次都从零试一遍。 上次动了哪个参数、动了多少、 几小时后回归的,没人记。老师傅自己记得的也只是"大概修一下砂轮"这句结论,不是过程。
- 经验里最贵的那部分是失败,而失败从来不会被记录。 进给连降两档结果椭圆度没降、 反而带出圆度超差返工;精磨段提进给直接报废十几件——没人会主动把自己搞砸的事写进知识库, 可下一个人最需要知道的恰恰是这个。
所以我们做的不是知识库,是动作的留痕:师傅本来就要在手机上点一下「采纳 / 改数 / 驳回」, 那一下就是记录。系统记的不是他的知识,是他的动作。
- 不是"AI 帮你算出更好的参数"。 真问题不是没人知道最优参数,是知道的人的知识留不下来。 这套系统的主张是:AI 不比老师傅懂工艺,只是记性好、在对的时刻开口。
- 不是"让老师傅去录知识库"。 那是这类项目最常见的死法——真正掌握核心知识的老技术员 对录入这件事最抵触。所以整套设计里没有任何一步需要他额外配合。
AI 回答里出现的每个数字都带来源(R0612 这样的记录号、产线号、规则编号)。
事实需要出处,建议需要辩护——我们只做前者。
四块,一个页面里切换:
| 模块 | 干什么 | 代码 |
|---|---|---|
| 产线看板 | 各产线瓶颈节拍、各工序等效节拍、瓶颈工序高亮 | src/components/dashboard-view.tsx |
| 调试经验库 | 参数调整记录的录入与浏览,超工艺卡范围当场标红 | src/components/debug-view.tsx |
| 系统管理 | 设备类型 / 型号 / 产线的增删改,工厂自己维护,不依赖开发 | src/components/admin-view.tsx |
| AI 调机参谋 | 右下角浮窗,自由提问,检索三类数据后回答 | src/components/ai-assistant-widget.tsx |
不是把问题直接丢给大模型,是先在自己的数据里检索,再把检索结果作为上下文交给模型:
flowchart LR
Q[用户提问] --> S[剥掉界面上下文前缀]
S --> R1[产线瓶颈节拍表]
S --> R2[规则层匹配]
S --> R3[调试记录检索]
S --> R4[节拍数据检索]
R1 & R2 & R3 & R4 --> C[拼装上下文]
C --> L{LLM 通道}
L -->|可用| A[带出处的回答]
L -->|断网/无 key| F[预置问答兜底]
四路检索各管一件事,都在 src/app/api/ai/chat/route.ts:
computeLineBottlenecks()—— 产线级 ≠ 设备级。问"这条线整体多快"要的是瓶颈节拍 =最慢那道工序的等效节拍,不是列每台设备。 并联组等效节拍 =1 ÷ Σ(1/各台节拍),不是"单台 ÷ 台数"—— 两台节拍不同时后者会算错,且瓶颈会错误地指到单台上。searchRules()—— 规则层,老师傅的通用手感("椭圆度超差先怀疑砂轮钝化"这类)。searchDebugLogs()—— 历史调试记录,含失败案例,按关键词打分取前 6 条。searchCycleData()—— 节拍数据。没点名具体产线就当全局问题查所有线, 点名了才收窄(早期版本反过来做,导致用户在看板上选中过任何产线后,AI 就被锁死在那条线上)。
断网也能演:没配 key 或接口挂了会落到预置问答,界面照常。车间网络不稳是常态, 这条降级链是按"现场一定会断一次"设计的。
三类数据源,prisma/schema.prisma:
| 表 | 是什么 |
|---|---|
Channel / EquipmentType / Equipment / Model |
产线拓扑:哪条线、哪道工序、几台设备、并联关系、做什么型号 |
EquipmentParam |
工艺卡:每个可调参数的当前值与上下限——录入超范围当场标红就靠它 |
CycleRecord |
节拍记录,按 产线 × 设备 × 型号 × 年月 |
DebugLog |
调试记录:动了什么参数、节拍怎么变、质量结果、成功还是失败 |
Rule |
规则层:现象 → 判断 → 动作 |
npm install
cp .env.example .env # 不填 key 也能跑,AI 走预置问答
npx prisma db push # 建库(默认 SQLite,落在 db/custom.db)
npm run seed # 导入 upload/ 下的演示数据
npm run dev # http://localhost:3000upload/ 里三份 JSON 是演示样例数据(一条虚构的微型轴承磨加工→装配产线),
改完重跑 npm run seed 即可同步,不用动代码。
AI 要真回答的话,.env 里填任意 OpenAI 兼容通道:
LLM_BASE_URL=https://api.openai.com
LLM_API_KEY=sk-...
LLM_MODEL=claude-opus-4-8
引擎不认"轴承",只认五样输入:
- 工序与节拍(产线拓扑)
- 可调参数与工艺卡上下限
- 质量指标与公差带
- 经验规则(现象 → 判断 → 动作)
- 历史案例
这五样都在数据里,不在代码里。换成注塑线(保压压力 / 模温 / 冷却时间,指标缩水率+件重) 是同一套引擎——规则指到的参数这台机没有就跳过;一条规则都匹配不上时不硬套,空手交回人工。
写在这儿,不等被问:
- 该不该调,是人拍的,系统只负责"要调的时候把该看的摆出来"。
- 新型号首件无历史 → 系统明说不知道,不编。
- 设备异响、机械故障 → 不是参数问题,不归它管。
- 调完连续两次仍超警戒 → 升级人工,不再给建议。
这是参赛作品的开源版:前端、接口、检索编排、数据模型、演示数据全在这儿,
git clone 下来能跑起来看到完整效果。
不在本仓的:生产部署与运维配置、接入真实工厂后的经验库数据、以及赛后继续做的商业化模块。
| 分工 | |
|---|---|
| 李骁翰(Evan) | 系统实现、部署 |
| 张文讯 | 工艺与现场口径(三年机加工现场)、需求定义 |
| 郑轶凡 | 视觉、路演 |
AGPL-3.0。版权归作者所有,商业授权另议—— 要把它用在自己厂里或做二次商业化,联系我们谈授权,别自己闭源改一版。