ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI Agent Harness Engineering 落地传统制造业:设备维护与产线调度的智能化

AI Agent Harness Engineering 落地传统制造业:设备维护与产线调度的智能化 1. 从佛山压铸厂的真实痛点说起传统制造业的设备维护与产线调度长期卡在两个死结上设备侧靠事后维修或固定周期换件非计划停机一次损失动辄几十万调度侧靠老师傅的经验排产人一退休多品种小批量订单的交付延误率立刻飙升。我在佛山一家汽车零部件压铸厂做技术调研时就遇到过一台2000吨压铸机轴瓦烧坏、停机36小时、直接损失近百万的案例而负责全厂排产的班长下个月退休没人接得住他20年的经验。AI Agent 能解决这两个问题但单个 Agent 直接上生产环境会翻车幻觉严重、工具调用混乱、出错没有熔断、决策过程不可追溯。AI Agent Harness EngineeringAI Agent 线束工程就是专门解决这个问题的工程体系——它像汽车线束一样把分散的 Agent、工具、SCADA/MES/ERP 等 legacy 系统、操作人员连接起来做统一的生命周期管理、协同编排、工具网关、安全熔断和可观测性建设。这篇文章面向传统制造业的 IT 负责人、自动化工程师和数字化团队交付一套可复制的config.toml骨架与 TaoToken 统一 Key/API 通道配置并给出设备告警触发、调度指令下发的验证动作。读完你可以直接在自己的工厂里跑通一个最小闭环设备异常 → Agent 根因分析 → 维修工单生成 → 调度计划调整。适合谁已经上线 SCADA/MES、有至少一年设备故障或排产历史数据、想用 AI Agent 做增量改造而不是推倒重来的团队。2. TaoToken 前置准备统一 Key 与 API 通道在写 Harness 编排代码之前先把模型调用通道统一掉。制造业现场往往要同时用多个模型核心决策用高能力模型本地知识问答用轻量模型如果每个 Agent 各自维护一套 Key 和 endpoint运维会疯掉。TaoToken 提供统一的 API 通道一个 Key 走所有模型调用Harness 层只需要维护一份配置。你需要先拿到 API Key。访问控制台创建https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite创建完成后在 API Keys 页面复制 Keyhttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewriteAPI 基础地址统一为https://taotoken.net/api兼容 OpenAI 风格的/v1/chat/completions接口。这意味着你现有的 LangChain、OpenAI SDK 代码几乎不用改只需要把base_url和api_key换掉。对于制造业边缘部署场景这一点很关键工厂内网服务器不需要额外装一堆厂商 SDK一个 HTTP 客户端就能打通所有模型。注意API Key 属于生产凭证不要硬编码进 Agent 代码或提交到 Git。建议用环境变量或工厂内网的配置中心注入Harness 层启动时读取。如果你还在选型阶段想先验证模型对工业术语的理解能力可以直接用模型对话页面测试https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite把一段真实的设备振动、温度、电流数据贴进去问它可能的故障方向先感受一下模型在你们行业语料上的表现再决定用哪个模型做根因分析 Agent。3. 可复制的 config.toml 骨架与 Harness 编排下面这份config.toml是 Harness 层的核心配置骨架覆盖模型通道、Agent 注册、工具网关、熔断规则四块。你可以直接复制到项目根目录按自己工厂的实际情况改。# config.toml - AI Agent Harness 制造业落地配置骨架 [harness] name manufacturing-harness version 1.0.0 # 边缘部署本地服务器地址 bind_host 0.0.0.0 bind_port 8080 # 全链路追踪开关生产环境必须开 observability true trace_storage local # 数据不出厂 [llm] # TaoToken 统一通道一个 Key 走所有模型 base_url https://taotoken.net/api api_key ${TAOTOKEN_API_KEY} # 从环境变量注入 timeout_seconds 30 max_retries 2 [llm.models] # 核心决策模型根因分析、调度优化 reasoning gpt-4o # 轻量模型数据预处理、格式校验 lightweight qwen-plus # 本地微调模型行业知识问答 domain qwen-7b-local [agents.anomaly_detection] role 异常检测 model lightweight # 每 100ms 采集一次滑动窗口 60 个点 window_size 60 threshold 0.9 tools [scada_read] [agents.root_cause_analysis] role 根因分析 model reasoning # 综合置信度阈值低于此值转人工 confidence_threshold 0.85 tools [fault_knowledge_base, sensor_history] [agents.maintenance_scheduling] role 维修调度 model reasoning tools [staff_query, mes_update, notification] [agents.spare_part_management] role 备件管理 model lightweight tools [spare_parts_query, erp_update] [agents.production_scheduling] role 产线调度 model reasoning tools [order_query, device_status, schedule_optimize, mes_update] [tool_gateway] # 工具网关统一管控所有外部系统调用 enable_rate_limit true rate_limit_per_minute 120 # 所有调用留痕 audit_log true [tool_gateway.tools.scada_read] protocol opcua endpoint opc.tcp://192.168.1.10:4840 timeout_ms 100 [tool_gateway.tools.mes_update] protocol http endpoint http://192.168.1.20:8081/api timeout_ms 500 [tool_gateway.tools.erp_update] protocol http endpoint http://192.168.1.30:8082/rfc timeout_ms 1000 [circuit_breaker] # 熔断规则Agent 连续失败或置信度不足时切人工 failure_threshold 3 recovery_timeout_seconds 60 # 置信度低于阈值自动转人工 low_confidence_action human_review [human_in_loop] # 重大决策必须人工确认 require_approval [production_scheduling, spare_part_management] notification_channel wecom # 企业微信推送配置写好后Harness 编排层用 LangGraph 构建状态图。核心思路是每个 Agent 是一个节点Harness 层负责路由、置信度校验和熔断。下面这段代码是设备异常处理流程的编排骨架和上面的config.toml一一对应。from typing import TypedDict, Annotated, Sequence import operator from langchain_core.messages import BaseMessage from langgraph.graph import StateGraph, END from langchain_openai import ChatOpenAI import tomllib # 读取 config.toml with open(config.toml, rb) as f: config tomllib.load(f) # 用 TaoToken 统一通道初始化模型 llm ChatOpenAI( modelconfig[llm][models][reasoning], base_urlconfig[llm][base_url], api_keyconfig[llm][api_key], temperature0, timeoutconfig[llm][timeout_seconds], ) class AgentState(TypedDict): messages: Annotated[Sequence[BaseMessage], operator.add] device_id: str abnormal_data: dict root_cause: dict maintenance_order: dict conf_total: float def anomaly_detection_agent(state: AgentState): from anomaly_model import predict_abnormal conf, is_abnormal predict_abnormal(state[abnormal_data]) state[conf_total] conf if is_abnormal and conf config[agents][anomaly_detection][threshold]: state[messages].append({ role: agent, content: f设备{state[device_id]}检测到异常置信度{conf:.2f} }) return state def root_cause_analysis_agent(state: AgentState): from tools import fault_knowledge_base_query root_cause fault_knowledge_base_query(state[abnormal_data]) conf_tool root_cause[match_score] conf_history 0.92 conf_total 0.3 * root_cause[confidence] 0.4 * conf_tool 0.3 * conf_history state[conf_total] conf_total state[root_cause] root_cause state[messages].append({ role: agent, content: f根因定位{root_cause[desc]}综合置信度{conf_total:.2f} }) return state def maintenance_scheduling_agent(state: AgentState): from tools import maintenance_staff_query, send_notification staff maintenance_staff_query() order { staff_id: staff[0][id], device_id: state[device_id], root_cause: state[root_cause][desc], priority: high } state[maintenance_order] order send_notification(staff[0][phone], f新维修工单设备{state[device_id]}) state[messages].append({role: agent, content: f工单已生成{order}}) return state def router(state: AgentState): threshold config[agents][root_cause_analysis][confidence_threshold] if state[conf_total] threshold: state[messages].append({role: system, content: 置信度不足转人工审核}) return end return maintenance_scheduling_agent workflow StateGraph(AgentState) workflow.add_node(anomaly_detection_agent, anomaly_detection_agent) workflow.add_node(root_cause_analysis_agent, root_cause_analysis_agent) workflow.add_node(maintenance_scheduling_agent, maintenance_scheduling_agent) workflow.set_entry_point(anomaly_detection_agent) workflow.add_edge(anomaly_detection_agent, root_cause_analysis_agent) workflow.add_conditional_edges(root_cause_analysis_agent, router, { end: END, maintenance_scheduling_agent: maintenance_scheduling_agent }) workflow.add_edge(maintenance_scheduling_agent, END) harness workflow.compile()这段代码的关键设计点置信度计算不是只看 Agent 自己说的而是把工具返回匹配度和历史准确率加权进来0.3/0.4/0.3的权重可以根据你们工厂的误报容忍度调整。熔断逻辑放在router里低于阈值直接END并推送人工不会让错误决策流到执行层。4. 验证请求设备告警触发与调度指令下发配置和代码就绪后先做两个验证动作确认闭环真的跑通了。验证一设备告警触发。用一段模拟的异常数据调用 Harness观察是否自动生成维修工单。if __name__ __main__: input_state { messages: [], device_id: YC-023, abnormal_data: { vibration: 12.5, temperature: 89, pressure: 0.3, current: 156 } } result harness.invoke(input_state) for msg in result[messages]: print(f{msg[role]}: {msg[content]})预期输出类似agent: 设备YC-023检测到异常置信度0.94 agent: 根因定位主轴轴承磨损综合置信度0.91 agent: 工单已生成{staff_id: M008, device_id: YC-023, root_cause: 主轴轴承磨损, priority: high}如果综合置信度低于 0.85你会看到system: 置信度不足转人工审核同时企业微信收到推送。这说明熔断生效了。验证二调度指令下发。产线调度 Agent 的验证稍微复杂一点需要先准备订单列表和设备状态。def production_scheduling_agent(state: AgentState): from scheduling_model import optimize_schedule schedule optimize_schedule( state[order_list], state[device_status], state[material_status] ) from tools import mes_system_update mes_system_update(schedule, schedule) state[messages].append({ role: agent, content: f排产计划已生成订单数{len(state[order_list])}预计延误率{schedule[delay_rate]:.2%} }) return state调用后检查 MES 系统里是否出现了新的排产计划以及计划中的订单顺序、设备分配是否合理。这一步建议先在测试环境跑确认无误再切生产。提示验证阶段把require_approval里的production_scheduling打开所有调度指令先推给调度员确认确认无误再执行。等准确率稳定在 90% 以上再考虑自动下发。5. 本篇常见错排查报错一opcua连接超时SCADA 数据读不到。检查config.toml里scada_read的 endpoint 是否和现场 OPC UA 服务器地址一致工厂内网防火墙是否放行了 4840 端口。如果传感器老化导致数据缺失率超过 15%异常检测误报会飙升建议在数据采集 Agent 前加一层滑动窗口插值和异常值过滤。报错二模型返回 401 或 403。大概率是TAOTOKEN_API_KEY环境变量没注入或者 Key 被硬编码后复制错了。检查config.toml里写的是${TAOTOKEN_API_KEY}而不是明文。如果确认 Key 没问题去控制台看下额度是否用完https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite报错三Agent 根因分析结果和实际故障对不上。这是幻觉的典型表现。先看知识库覆盖度——如果故障知识库里没有这类故障的历史案例模型只能靠通用知识猜。解决办法是把老工程师的经验结构化沉淀进知识库同时把错误案例反馈回去每两周微调一次领域模型。实测下来知识库覆盖度从 60% 提到 90% 后根因准确率能从 70% 出头提到 92%。报错四调度响应延迟超过 2 秒。如果 Harness 部署在云端网络往返加上模型推理延迟很难压下来。制造业产线调度对实时性要求高建议把 Harness 核心层、Agent、模型全部部署在工厂本地边缘服务器延迟可以降到 200ms 以内。模型做量化压缩后推理速度还能再提升一倍。报错五一线人员不配合反馈假数据。这是落地阻力问题不是技术问题。关键是把定位讲清楚AI 是辅助工具不是替代。维修人员不用再定期巡检只处理 AI 推送的工单工作量减少 40%调度员不用手工排产只调整 AI 生成的计划工作量减少 60%。工作量降了配合度自然上来。6. 跑通闭环之后从单产线到全厂设备告警触发和调度指令下发这两个动作验证通过说明你的 Harness 最小闭环已经跑通了。接下来不要急着全厂推广先选 1-2 条核心产线灰度运行 2-3 个月把误报率、根因准确率、调度延误率这几个指标盯住。等数据稳定了再把 Harness 核心层复用只替换业务 Agent扩展到质量检测、能耗优化、安全生产监控等场景。如果你在接入过程中遇到工具网关配置或 Agent 编排的问题可以查阅接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite如果团队要长期做编码和 Agent 开发Coding Plan 能覆盖多模型调用的额度管理https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite用 Claude Code 做 Agent 开发的团队Anthropic 兼容通道的配置方式在这里https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecodeutm_campaignrewrite最后说一个我踩过的坑不要一上来就追求全自动。制造业生产环境的容错率极低一次错误调度可能造成几十万的损失。把人工确认入口留好让 AI 先做建议、人做决策等准确率稳定了再逐步放权。这套节奏看起来慢但实际落地周期反而更短因为一线人员从一开始就参与进来不会在推广阶段被抵制。
返回列表