江中智能助手 · 项目复盘
关键取舍
为什么不让模型任意调用方法?
- 原因:车间查询和场景操作需要限制可调用范围,不能让模型自行拼方法名或参数。
- 处理:本轮只向模型提供已登记的知识、中台和场景方法;调用名称须命中目录,参数须通过 Zod 校验。参数校验失败最多修正两次,不能借修正更换方法。
多步问题的执行顺序是固定的吗?
- 处理:不是。每一步执行后先读取结果,再由模型判断下一步;例如查询告警后,再根据结果查规程并请求设备定位。
- 取舍:只有前一步结果会影响后续选择时才继续规划,不把中台、知识和场景写成固定顺序。
遇到的问题与处理
模型选了不存在的方法,或规划失败怎么办?
- 方法不在目录:拒绝该调用,不执行未登记方法。
- 规划超时、限流或空回复:返回对应的失败说明,不伪装成“没有业务数据”。
用户说“这个设备”时,如何确定指代?
- 沿用上下文:本轮没有提供新设备编号时,参考会话中的工作上下文、近期对话和短事实。
- 以本轮输入为准:用户本轮明确说出新编号时,使用新编号,不沿用旧编号。
目前的边界
助手怎样触发三维场景动作?
- 执行边界:助手只返回
{ name, params }形式的场景动作,由孪生宿主执行已登记的方法;助手服务端不运行三维场景,也不直接控制真实设备。 - 能力缺失时:没有对应的已登记场景动作,就向用户说明当前未提供该动作。
如何限制有副作用的操作?
- 权限控制:viewer 不能发起模拟控制;operator 的模拟控制需要确认,并使用幂等键处理重复提交。
- 项目范围:真实关阀门等物理设备控制不在项目范围内。
下游故障时如何避免错误重试?
- 请求时限:整轮请求共享截止时间;客户端断开后取消后续处理。
- 重试策略:只读 MCP 网络失败可有限重试;终答、Dify 流和场景动作不盲目重试。
当前部署还有什么限制?
- 部署形态:当前为单实例,多副本水平扩展尚未完成。
- 中台访问:中台查询通过 MCP 提供的只读工具执行,助手服务端不直接访问中台 SQL。
经验总结
- 先限制能力,再规划步骤:把可调用方法和参数约束在服务端可验证的目录与契约内。
- 根据执行结果决定后续动作:多步流程需要观察前一步结果,不能只凭原始问句预设后续结论。
- 把系统边界说清楚:查询失败、权限不足和能力未提供要分别反馈;场景动作由宿主执行,模拟控制不等于真实设备控制。