行业扩展标准模式(Industry Extension Playbook)
目标:让「机械(高端)之外的第 3、4、N 个行业」能以一份配置驱动、零改代码的方式
完成「知识库 → 结构化 → 基础层治理 → 数字员工业务闭环」全链路落地。
首个落地案例:磷化工(phos_chem),基线见文末。
0. 飞轮总览
① 知识库采集/沉淀 ② 结构化抽取 ③ 基础层治理 ④ 数字员工闭环
kb-pipeline-run.cjs → process/bom 碎片 → kb-govern-base.cjs → kb-staff-loop.cjs
(kb_docs 万级) (110k 级,质量粗) (base 库,零空字段) (7 员工自我运维)
│
└─→ ⑤ 质量规则(R1-R8)注册进规则引擎
统一入口: 数字员工 + 规则引擎双通道
四个阶段各自独立、可单跑;加新行业时第 ③④⑤ 步只需一份 JSON 配置 + 跑脚本。
1. 加一个新行业需要做什么(3 分钟版)
| # | 动作 | 涉及文件 | 说明 |
|---|---|---|---|
| 1 | 建行业配置 | config/industry-ext/ | 8 家族 ×(工序序列 + 层级 BOM + 碎片聚合类型) |
| 2 | 跑治理 | node scripts/kb-govern-base.cjs --industry | 产出 server/data/kb/ 三张表 |
| 3 | 跑闭环 | node scripts/kb-staff-loop.cjs(LOOP_INDUSTRY=) | 7 员工识别/创建/巡检/比对/修复/优化/生成 |
| 4 | 验证 | 下方「验收标准」 | 目标数字达标 + 质量规则零 P0 |
无需改动任何 .js 业务代码。第 ② 步若行业知识库已存在可跳过采集,直接治理。
2. 行业配置(config/industry-ext/.json)
结构
{
"industryId": "phos_chem", // 行业 id,与知识库 industry_id 一致
"seedPrefix": "kb_doc_pc_", // 手工 seed 工艺的 source_ref 前缀(可选,用于优质底座)
"families": [ // 主干家族列表(N 个)
{
"code": "WPA", // 家族编码
"name": "湿法磷酸(二水法)", // 家族名称
"desc": "硫酸分解磷矿制取湿法磷酸…", // 家族描述
"fragTypes": ["氧化","结晶","萃取"], // 碎片聚合:按 process_type 关键词归并真实参数
"steps": [ // 有序工序序列
{
"name": "磷矿粉磨与调浆",
"seed": "湿法磷酸-磷矿粉磨", // 优先匹配 seed 工艺(真实参数),可省略
"domain": { // 标准知识兜底(真实数据缺失时使用,打 domain_std 标签)
"intent": "磨细至-200目",
"equip": ["球磨机","水力旋流器","调浆槽"],
"params": [{ "label": "磨矿细度", "value": "80-100", "unit": "%通过200目" }],
"safety": "防粉尘爆炸"
}
}
],
"bom": { // 层级 BOM:产品线 → 原料/主设备/辅助设备/产品/副产物 → 物料
"RAW": [ { "material": "磷矿石", "spec": "", "qty": 1000, "unit": "吨/天" } ],
"EQ": [ { "material": "萃取反应槽", "spec": "", "qty": 2, "unit": "台" } ],
"AUX": [ { "material": "循环泵", "spec": "", "qty": 4, "unit": "台" } ],
"PROD": [ { "material": "湿法磷酸", "spec": "P2O5 28-32%", "qty": 2500, "unit": "吨/天" } ],
"BYP": [ { "material": "磷石膏", "spec": "", "qty": 5000, "unit": "吨/天" } ]
}
}
]
}
数据纪律
steps[].seed命中 → 用 seed 真实参数(最优)- 否则
steps[].domain→ 标准知识占位(src=domain_std) - 参数不足 2 条时 → 用
fragTypes从碎片库聚合真实参数(src=fragment) - 可选
GOV_USE_LLM=1→ LLM 补全占位(src=llm,deepseek-v4-flash,429 自动退避)
3. 治理脚本(scripts/kb-govern-base.cjs)
把碎片收敛成「行业可用的基础工艺规程 + 层级化基础 BOM」。
node scripts/kb-govern-base.cjs --industry phos_chem # 基础治理(无 LLM,可复现)
GOV_USE_LLM=1 node scripts/kb-govern-base.cjs --industry phos_chem # LLM 增强(补 domain_std 占位)
GOV_OUT=C:/xx/out.db … # 可选:输出到指定路径
产出:server/data/kb/_base.db
| 表 | 内容 | 质量要求 |
|---|---|---|
| base_process_spec | N 条基础工艺规程 | 每条含描述 |
| base_process_step | 每规程的工序序列 | 参数/设备/安全带 src 标签 |
| base_bom | 三级层级 BOM | 用量零空、角色零空、层级零孤立 |
来源标签(可溯源)
| src | 含义 |
|---|---|
| seed | 手工 seed 真实参数(最优) |
| fragment | 从碎片库聚合的真实参数 |
| llm | LLM 补全(deepseek-v4-flash,仅 GOV_USE_LLM=1) |
| domain_std | 标准工程知识兜底(真实数据不足) |
落盘保障:脚本关闭前 wal_checkpoint(TRUNCATE) + 关闭后重开库读真实落盘数打印 [落盘校验]。
若校验数与预期不符(历史出现过 7/8 家族丢 DCP),重跑即可。
4. 数字员工业务闭环(scripts/kb-staff-loop.cjs)
以 base 库为资产输入,跑通 7 大基础数字员工的自我运维闭环:
DS-SCSAI-001 识别 → DS-SCSAI-001 创建 → DS-STAT-001 巡检
→ DS-ECR-001 比对 → DS-PROC-DATA-001 修复 → DS-PROCESS-OPT-001 优化 → DS-CONTENT-001 生成
node scripts/kb-staff-loop.cjs # 只读闭环(识别+巡检+比对+修复+优化+生成)
LOOP_WRITE_BACK=1 node scripts/kb-staff-loop.cjs # 创建员工回写主库(幂等,source_ref=governed_base)
LOOP_INDUSTRY=baijiu node scripts/kb-staff-loop.cjs # 换行业
每个员工做真实的事
| 员工 | 动词 | 真实产出 |
|---|---|---|
| DS-SCSAI-001 | 识别 | 资产清单(规程数/工序数/BOM 项数/来源分布) |
| DS-SCSAI-001 | 创建 | 资产编目 +(LOOP_WRITE_BACK=1)回写主库工艺/BOM,可溯源可回滚 |
| DS-STAT-001 | 巡检 | R1-R8 质量规则扫描(参数/设备/安全/用量/角色/层级/重复/JSON) |
| DS-ECR-001 | 比对 | base 库 vs 主库治理回写层数量一致性 |
| DS-PROC-DATA-001 | 修复 | 用量缺失 → 同家族同角色非零均值建议值(人工确认后落库) |
| DS-PROCESS-OPT-001 | 优化 | 主工序温控联锁/节拍/HAZOP 优化方向 |
| DS-CONTENT-001 | 生成 | (规程明细 + 三级 BOM + 优化建议) |
5. 质量规则接入规则引擎(统一入口)
server/core/industry-quality-rules.js —— 行业无关质量规则,一处定义、双通道消费:
server/core/industry-quality-rules.js
├─ inspectBaseDb(baseDbPath) → R1-R8 巡检,统一 {ruleId,severity,item,count,samples}
└─ suggestRepairs(baseDbPath) → 用量缺失修复推导(同家族同角色均值,autoApply=false)
│
├─ 通道1 CapabilityRuntime.inspect/repair ← 数字员工 DS-STAT-001/DS-PROC-DATA-001
│ 参数带 industry / industry_base_db 即触发
└─ 通道2 RuleEngine.executeInspect ← 规则引擎统一巡检入口
item_type=IndustryBase 或带行业参数即触发,rule_id 对齐规则表
规则集 R1-R8
| 规则 ID | 内容 | 级别 |
|---|---|---|
| inspect-industry-r1 | 工序参数为空 | warning |
| inspect-industry-r2 | 工序设备为空 | warning |
| inspect-industry-r3 | 工序安全约束为空 | warning |
| inspect-industry-r4 | BOM 物料用量缺失 | warning |
| inspect-industry-r5 | BOM 角色缺失 | warning |
| inspect-industry-r6 | BOM 层级孤立 | error |
| inspect-industry-r7 | BOM 物料重复 | warning |
| inspect-industry-r8 | 工序参数 JSON 损坏 | error |
规则已注册进 sciot_rules_v2(scope=inspect,item_type_name=IndustryBase),规则管理界面可见、可启停。
6. 验收标准
| 指标 | 达标线 | 检查命令 |
|---|---|---|
| 基础工艺规程 | ≥ 5 条(主干家族) | SELECT COUNT(*) FROM base_process_spec |
| 工序覆盖 | 每规程 ≥ 3 道工序 | SELECT COUNT(*) FROM base_process_step |
| BOM 用量零空 | 100% | SELECT COUNT(*) FROM base_bom WHERE level=2 AND (qty IS NULL OR qty=0) = 0 |
| BOM 角色零空 | 100% | SELECT COUNT(*) FROM base_bom WHERE role IS NULL OR role='' = 0 |
| BOM 层级零孤立 | 100% | SELECT COUNT(*) FROM base_bom WHERE level=2 AND parent_id NOT IN (SELECT id FROM base_bom WHERE level=1) = 0 |
| 质量规则巡检 | 0 error(R6/R8 不触发) | node -e 调 inspectBaseDb 或跑闭环③ |
| 闭环 | 7/7 成功 | node scripts/kb-staff-loop.cjs 末行 |
| 回写幂等 | 重复跑不涨数 | LOOP_WRITE_BACK=1 跑两次,governed_base 计数不变 |
7. 磷化工基线(首例落地,2026-08-21)
| 项 | 值 |
|---|---|
| 行业 | phos_chem |
| 家族 | WPA/TPA/YP/MAP/DAP/PG/STPP/DCP(8 主干) |
| 基础库 | server/data/kb/phos_chem_base.db:8 规程 / 29 工序 / 127 BOM 行(79 物料项) |
| 来源占比 | seed 49 / fragment 25 / llm 24 / domain_std 65(真实背书 ≈60%) |
| 主库回写 | 29 工艺(source_ref=governed_base:)+ 79 BOM(entry_id=GB-) |
| 报告 | docs/industry-ext/phos_chem-base-report.md |
8. 已知边界 / 下一步
- LLM 端点:
llm-extract.js已修getConfig()优先读LLM_*(sensenova 网关 + deepseek-v4-flash);该端点会 429 TPM 限流,治理脚本已做 25s 指数退避。GOV_USE_LLM=1可常态化跑。 - 碎片层 vs 基础层:110k 碎片层保留(覆盖广),基础层是治理后的可用资产,两者分离。
- 下一步候选:
- 把碎片层按家族做持续归并(LLM 周期性重治理,飞轮转动);
- 数字员工「创建」回写主库后,自动触发知识库检索覆盖(RAG 链路打通);
- 新增白酒(baijiu)/电子(electronics)行业配置,验证模板可复制性。
BossAgents