作业指令编排平台:从自然语言到可校验执行计划
输入一句自然语言作业指令,输出一份能逐步执行的计划。现场点位、设备与地形适配统一建成注册表,prompt 与校验器共用同一份数据;计划经结构、动作、目标三层校验后下发,高危步骤转人工审批。前端使用 Vue3 + TypeScript,手写 SSE 流式渲染对话、编排与设备三个视图。
意图分流(Agent 路由):服务端以纯规则判定请求属于「编排」还是「问答」,不额外消耗一次模型调用;中文动名词同形——「巡检要注意什么」里的「巡检」是名词性——所以强咨询句式的判定必须排在动作动词之前,否则会把提问误判成指令;问答轮不产出任务计划、不触发 JSON 解析,前端同步隐藏时间轴与执行面板;system prompt 按意图分两套下发,问答模式不塞动作白名单,单次省约 1000 token。
现场知识结构化(站点注册表):把 12 个现场点位与 8 台设备建成注册表,点位带地形、风险等级、是否可燃气体环境与口语别名,设备带类型及其所属点位;「地形 → 载体」适配规则(平地三种载体可达,楼梯、管廊、夹层仅四足可达)同时写进 prompt 与校验器,改一处两处生效。原本是自由文本的目标字段因此变成可校验字段——此前模型完全可以吐出格式完美、动作合法、参数合规、但目标写「火星基地 3 号舱」的计划并一路放行。
目标语义校验三档:目标不在注册表内记 warn,放行但挂提示交人工复核;载体到不了该地形判 error,执行前预检直接拦下、不下发;动作与设备类型不匹配(如把声波检测打在储罐上)记 warn,界面可见。执行层预检共五项检查,不信任上游任何结论,下发前重验一遍。
大模型流式对话与解析:以 fetch + ReadableStream 手写 SSE 客户端(POST 场景不适用 EventSource),按分隔符切分缓冲区并把不完整残片回填至下一分片,以 TextDecoder 的 stream 模式处理跨分片的多字节汉字;边收边解析模型输出中的 JSON 代码块,闭合即上屏,无需等待整条流结束;Pinia 维护全平台唯一数据源,问答与编排页面复用同一份流式数据。
工程化与质量门禁:Vue3 + TypeScript 全量类型契约(先定数据接口再写页面,vue-tsc 类型检查零错误);Vite 手动分包把 Element Plus / ECharts / Vue 拆为独立 vendor chunk,业务代码 14 kB;命令式冒烟脚本覆盖 7 类场景 62 条断言,含意图分流与目标点位的正负例;真实 API 调用需三个开关同时成立才放行,默认全程走 Mock 剧本。