从 0 到 22 篇:工业 Agent 的六项设计原则

时间:2026-07-03 08:27:48 来源:互联网

系统全貌首先呈现技术栈构成:Java 21、Spring Boot 3.3、LangChain4j 0.35、DeepSeek、TDEngine、Milvus、EMQX、H2。这六条原则源于实践,指导构建高效工业AI Agent。

系统全貌

img_6a470203c971230.webp


原则 1:Tool 是真正的产品

多数 AI Agent 项目以选择模型为起点,而工业 Agent 则优先思考 Tool 的设计。

模型会迭代,但 Tool 的接口设计、数据质量、错误处理才是系统长期价值的载体。 笔者更换过两次底层模型,但 Tool 代码未作任何修改。

Tool 设计遵循三条准则:

准则反例正例
Tool 做数据处理,LLM 做推理queryRaw() 返回 100 行原始数据queryDeviceHistory() 返回 avg/max + latest
Tool 带领域知识让 LLM 判断「振动 4.8 正常吗」Tool 标注 vibrationStatus: "CRITICAL"
Tool 描述 = 契约@Tool("查询数据")@Tool("查询过去1小时的统计摘要和最新数据点")

相关文章:03、04、21


原则 2:数据进入 Agent 前先「瘦身」

工业设备每秒产生大量数据点,直接喂给 LLM 会导致灾难性结果。

原始数据 100   2000 token    LLM 看不清趋势
聚合统计 + 最新值  200 token     LLM 准确判断

压缩比 10:1,判断准确率反而提升。 LLM 不适合处理逐行数字,但对异常比例和变化趋势极为敏感。

实现方式:

  1. TDEngine 超级表 + SQL 窗口函数完成预聚合
  2. DeviceDataTool 只返回三个字段:latest / stats / alarms
  3. 正常范围标注(normalRange, status)写在 Tool 代码里

相关文章:19、21


原则 3:CoT 不是锦上添花,是必需品

缺少 CoT 时 Agent 的表现:

  1. 同时查告警 + 查数据 + 检索知识,但结论跳跃
  2. 数据不足时编造数值(例如「振动大概 4.5」)
  3. 无论设备是否有故障,每次都创建工单

引入 CoT 后:

@SystemMessage("""
    思考路径:
    1. 数据采集:queryDeviceAlarms + queryDeviceHistory
    2. 知识检索:searchKnowledgeBase(如有异常)
    3. 诊断分析:generateDiagnosis
    4. 工单决策:仅在确认硬件故障时调用 createWorkOrder
    5. 最终输出:状态 → 异常 → 诊断 → 建议 → 工单
    """)

CoT 的价值不在于让 LLM 更聪明,而在于使推理过程可追溯、可调试、可修正。 工业场景中,不知道判断依据比判断错误更危险。

相关文章:21


原则 4:约束比能力更重要

最初 CoT 只写了「1→2→3→4→5」步骤,未加约束。LLM 每次都创建工单——无论有无故障。

加入一句话后行为收敛:

这条规则没有一行代码——仅是提示词中的一句中文。但它比任何 if (alarmCount > 0) 更灵活,因为 LLM 能理解「正常」的语义边界。

在工业 Agent 中,告诉 LLM 不做什么,比告诉它做什么更有效。 三条必加的约束:

  1. 数据不足时,输出「无法判断」而不是编造
  2. 无告警不创建工单
  3. 涉及停机操作时,标注「需人工确认」

相关文章:07、21


原则 5:持久化是闭环的终点

第一版 WorkOrderTool 用 ConcurrentHashMap 存储工单,存在三个缺陷:

  1. 重启丢失
  2. 无法查历史
  3. 无状态流转

改为 H2 + JdbcTemplate 后:

工单生命周期:PENDING → IN_PROGRESS → COMPLETED
                ↓                    ↓
            CANCELLED             CLOSED
版本存储重启后历史查询状态流转
V1ConcurrentHashMap丢失
V2H2 (JdbcTemplate)保留

Agent 的交付物不是正确回答,而是产出可追溯的交付物。 诊断是对白,工单是交付成果。

相关文章:22


原则 6:RAG 填补 LLM 的工业盲区

通用 LLM 无法区分「轴承温度高」和「齿轮箱温度高」的差异。工业知识库恰好弥补这一短板。

用户:「轴承温度过高」
  → Embedding 检索 → 轴承温度过高 → 润滑油劣化/轴承磨损/负载过大
  → BM25 检索    → "轴承" 精确命中维修手册
  → RRF 融合      → Top-3 最相关维修方案
  → LLM 推理      → 结合实时数据给出根因

关键决策:

  • Embedding 模型选型AllMiniLmL6V2 384 维,ONNX 本地运行,无需 API
  • 混合检索:Dense + BM25 → RRF 融合,比纯向量检索命中率提高 20%+
  • 分块实验:500 chars 平衡了上下文完整性和检索精度

相关文章:12、13、14、15、16、17、18


六条原则总结

#原则一句话关键实现
1Tool 是产品模型会换代,Tool 是长期资产@Tool 设计准则
2数据瘦身压缩 10:1,判断更准TDEngine 预聚合
3CoT 必需可追溯比「猜对」重要ReAct 提示词
4约束 > 能力告诉 LLM 不做什么负面约束句
5持久化闭环Agent 交付物要留下来H2 + 状态流转
6RAG 补盲区LLM 不懂工业,知识库补Milvus + 混合检索

下一步

本文六条原则从 Tool 设计到 RAG 补盲区,完整构建了工业 Agent 的可靠性闭环。Phase 2 的完结标志着 MVP 达成,Phase 3 将迈向多 Agent 协作与自主推理链的进阶模式。