新闻详情

新闻详情

首页 / 资讯中心 / 详情

MQTT与SNMP双协议组合:破解工业设备接入与数据上云难题

发布时间:2026/9/28 19:10:57来源:尧图网络
MQTT与SNMP双协议组合:破解工业设备接入与数据上云难题
我做工业设备管理这块有十几年了打交道最多的就是两类问题一是现场的设备数据怎么采出来二是采出来的数据怎么送到该去的地方。早年间我们做车间设备联网常用的套路是Modbus串口轮询、OPC协议中转或者干脆派运维人员定时抄表。后来设备种类越上越多数控机床、PLC柜、变频器、温控器、电能表各家的通信方式都不一样网关拆了一堆线缆拉得密密麻麻数据却还是各回各家、各找各妈。这几年我在项目里逐步验证了一套组合方案MQTT SNMP 双协议。MQTT负责把设备数据往上送SNMP负责从设备里把数据掏出来中间用一个轻量网关做协议转换。这套组合已经在多个车间改造和能效管理项目里落地稳定跑了两年多。这篇文章就把我的完整思路、部署步骤和踩过的坑一次讲清楚适合正在做工业设备接入、物联网平台对接、边缘采集网关的工程师参考也适合刚入门想理解MQTT和SNMP怎么配合的初学者。1. 双协议组合的思路从哪来工业设备接入的痛点1.1 传统设备管理的几个“卡脖子”环节做设备管理的人都知道最难的不是设备的机械故障而是设备的数据根本拿不到。市面上大量的工业设备尤其是一些老型号的PLC、仪表、交换机、UPS电源本身并没有以太网口或者只有串口和厂家私有协议。就算设备有网口也常常只支持SNMP这类传统网管协议不支持MQTT或者其他现代物联网协议。设备数据拿不出来上层的数字化系统就成了无米之炊。就算数据能拿出来还有第二个卡点网络环境太差。车间里电磁干扰强有些点位在远端的弱电间、配电房里网络不稳定动不动就断线。早期我试过直接把设备数据通过HTTP上报到服务器结果断一次网就丢一截数据运维天天在排查日志。HTTP这种一对一、你问我答的模式天然不适合弱网、长连接、大量小报文的工业场景。第三个卡点更隐蔽数据格式五花八门。同样是“温度”这个数据A厂家给你返回一个十六进制寄存器值B厂家的SNMP代理返回一个整数C厂家的网关又给你一份JSON。数据采集上来之后还要花大量力气做格式清洗和协议适配。这个环节做得不好后面的大屏展示、告警计算、报表统计全部跟着出错。1.2 MQTT与SNMP各自的优势与短板SNMP全称Simple Network Management Protocol已经活了几十年。它的核心模型是“管理端 代理端”管理端发请求去问设备“你现在CPU负载多少”设备里的SNMP Agent把结果返回给你。这个协议最大的优点是标准化程度极高几乎所有网络设备、服务器、部分工业设备都内置了SNMP Agent只要知道OID对象标识符就能像查字典一样拿到设备数据。很多老设备的最后一条数字化出路就是SNMP。但SNMP的短板也明显。它是为“点对点查询”设计的管理端要不停地去轮询设备设备数量一多轮询周期拉长实时性就打了折扣。而且SNMP默认用的UDP 161端口报文很轻但在跨公网、跨防火墙的场景下基本走不通更别提把数据推到云平台上。MQTT则是为物联网而生的消息协议。它的核心是发布/订阅模型设备端或者采集网关把数据发布到Broker消息代理服务器订阅方按需取数据发送者和接收者完全解耦。MQTT基于TCP长连接支持QoS消息质量等级还自带遗嘱消息和保留消息机制专门应对断网重连和设备掉线这些真实场景。缺点是设备硬件本身基本不认MQTT你需要一个中间件去把设备数据“翻译”成MQTT消息。1.3 双协议组合解决什么问题适合什么场景把两者的优势一拼接思路就清晰了SNMP负责“下沉”把老设备、存量设备的数据掏出来MQTT负责“上行”把采集到的数据稳定地送到服务器、云平台、监控系统。中间加一个协议转换网关对内用SNMP轮询设备对外用MQTT发布消息。这套组合尤其适合这几类场景一类是工厂车间里存在大量带有SNMP接口的老设备包括工业交换机、UPS、环境传感器、精密配电柜你想做一套统一的远程监控但又不想动设备本身的接线和配置另一类是分布式的站点比如污水处理厂的多个泵房、光伏电站的多个逆变器点位每个站点本地用SNMP采集再通过MQTT汇总到中心机房还有一类是边缘计算场景网关设备本身既做SNMP采集又做MQTT转发数据在边缘侧先做一轮清洗和缓存再上送云平台。说白了这套组合的定位就是“老设备、新网络”之间的桥梁。2. MQTT与SNMP核心机制详解2.1 MQTT发布/订阅模型下的轻量传输MQTT设计之初就考虑了低带宽、高延迟、网络不稳定的物联网环境协议报文头非常精简一个连接报文也就几十字节。理解MQTT只需要抓住三个角色发布者、订阅者、Broker。发布者产生数据把消息扔给Broker订阅者告诉Broker自己关心哪一类消息Broker负责转发匹配。这里最核心的概念是Topic也就是消息的主题结构类似文件系统的层级目录。比如factory/plantA/machine01/temperature就是一个典型的主题。发布者往这个主题发消息订阅者只要订阅了factory/plantA/#就能收到这台机器乃至整个车间A的所有消息。#是通配符代表匹配任意层级这是MQTT做批量监控的重要基础。实际部署中Topic的规划直接影响后续可维护性。我常用的设计方式是第一层级放项目/厂区标识第二层级放设备类型第三层级放设备唯一ID第四层级放数据点名称。比如shanghai_plant/cnc/machine_003/temperature。这样无论是人工排查还是程序自动订阅都能快速定位数据来源。QoS是MQTT的另一个关键参数分三个等级QoS 0最多一次消息可能丢失适用于温度、湿度这类周期性上报且允许缺失的数据QoS 1至少一次Broker确认收到但可能出现重复适用于告警信息宁可重复不能丢QoS 2只有一次保证消息不重不丢但握手开销大工业场景中慎用一般只在关键控制指令中使用。我在项目中默认选QoS 1兼顾可靠性和性能。另外两个机制值得专门提一下保留消息让新订阅者上线就能拿到设备最后一次上报的状态不会因为错过消息而两眼一抹黑遗嘱消息用来通知其他系统“某台采集网关掉线了”这是做设备在线状态监控的利器。实际测试中现场网络抖动时遗嘱消息能在一两秒内把网关离线状态推送到告警平台比轮询TCP连接可靠得多。2.2 SNMP轮询与陷阱通知的标准管理体系SNMP工作模型和MQTT截然相反它更像传统的“你问我答”。管理端主动发起GetRequest设备的Agent返回Response。一次查询只能拿一个或一组OID的值所以批量采集几十个指标时通常用GetNext或GetBulk来遍历取数。这里必须理解OID和MIB。OID是一串数字标识符比如1.3.6.1.2.1.1.5.0代表设备主机名1.3.6.1.4.1.318.1.1.1.1.2.1这类带企业私有编号的OID代表具体厂家的私有数据项。MIB则是OID的“字典”用文本形式描述每个OID的含义和数据类型。实际调试中你不需要背OID而是要用MIB浏览器或snmpwalk工具去扫描设备支持的整个MIB树找到你关心的数据点。SNMP还有一个重要机制叫Trap陷阱通知设备主动向管理端发送告警消息比如风扇故障、温度越限、链路断开不需要管理端一直轮询。不过Trap是单向不可靠的设备发完就完管理端收没收到设备不管。所以生产环境里我通常把Trap和轮询结合使用Trap做实时告警定期轮询做状态校准和数据记录。SNMP有三个主要版本v1和v2c使用明文community string相当于密码安全性差但配置简单适合内网环境v3增加了用户认证和数据加密安全性高但配置复杂度也高很多老设备甚至只支持到v2c。我的建议是在纯内网环境可以先用v2c如果设备需要跨网段传输且涉及敏感数据优先启用SNMPv3。强烈不建议把SNMP直接暴露到公网别的不说社区里扫一遍凡是开了161端口且community是public的设备基本十有八九能被直接读光信息。2.3 协议转换网关两个协议之间的桥梁双协议组合的核心技术点在于协议转换网关。网关一边是SNMP管理端角色定时去轮询设备另一边是MQTT客户端角色把采集结果发布到Broker。这个网关可以是独立硬件也可以是在服务器或边缘盒子上运行的软件服务。协议转换的本质是数据映射。你需要维护一张配置表把设备的OID映射到MQTT Topic和JSON字段。比如设备: 车间配电柜UPS OID: 1.3.6.1.4.1.318.1.1.1.2.2.1.0 - Topic: powered_plant/ups_01/battery/voltage OID: 1.3.6.1.4.1.318.1.1.1.4.2.1.0 - Topic: powered_plant/ups_01/input/voltage OID: 1.3.6.1.4.1.318.1.1.1.8.1.1.0 - Topic: powered_plant/ups_01/status/temperature转换过程中还要处理数据类型差异。SNMP返回值可能是Integer、Gauge32、Counter64、OctetString而MQTT通常以字符串形式传输JSON数据。你需要在网关层统一做单位换算和类型转换。比如SNMP返回的电量值Counter32换算成千瓦时要除以某个系数OctetString类型的字符串可能首尾带空格和换行符也要统一清洗避免脏数据污染上层数据库。在设计这个网关时我强烈建议采用“采集线程池 消息队列 发布循环”的结构。采集线程并发执行多个设备的snmpget请求结果写入队列发布线程从队列取出数据并聚合为一批消息按固定周期发布到MQTT。这样既能控制轮询的并发度避免设备响应不过来又能保证MQTT消息的节奏稳定不会突然打出一波大流量。3. 从零搭建环境部署与配置实操3.1 MQTT Brokermosquitto搭建与本地服务化MQTT生态里最常用的Broker是Eclipse Mosquitto轻量、稳定、跨平台单机支持上万连接毫无压力。安装方式上Linux直接apt install mosquitto mosquitto-clients或yum install mosquitto即可Windows下则有两种方案一是用官方安装包二是下载zip压缩包手动部署。很多人在Windows上遇到的问题是下载了zip包解压后只能在前台运行mosquitto.exe一旦关掉命令行窗口服务就停了没法做成开机自启的Windows服务。这里给出我实测过的手动服务化步骤把zip包解压到一个固定目录比如D:\mosquitto编辑mosquitto.conf设置listener 1883、allow_anonymous true或配置用户名密码、日志路径等以管理员身份打开PowerShell或cmd执行sc create mosquitto binPath D:\mosquitto\mosquitto.exe -c D:\mosquitto\mosquitto.conf start auto然后启动服务sc start mosquitto执行完sc query mosquitto能看到服务状态为RUNNING。这里有个坑binPath中如果带空格要用引号把整条命令包好sc create后面的等号右边必须有个空格否则命令直接报错。还有一点如果解压目录里缺dll文件服务可能启动后立刻退出建议先在前台跑一次mosquitto.exe确认控制台不断报错再注册服务。Linux端更简单但要注意mosquitto新版默认监听localhost你需要在配置文件中显式加上listener 1883 0.0.0.0否则局域网内的采集网关连接不上。配置完成后用mosquitto_sub -t # -v就能在命令行订阅全部消息验证链路这个命令是我做调试使用频率最高的工具。3.2 SNMP Agent启用与常用采集命令要让设备能被SNMP采集先得确保设备侧开启了SNMP服务并配置了正确的community string。以Linux设备为例安装并启动snmpdapt install snmpd snmp -y vim /etc/snmp/snmpd.conf # 配置 agentAddress、rocommunity 等 systemctl restart snmpd配置文件中最重要的就是rocommunity比如rocommunity public 192.168.1.0/24限定只允许内网某网段的读取请求。社区里大量设备被扫描就是因为把public开放给了整张公网这条红线绝对不能碰。采集端最常用的命令是snmpwalk和snmpgetsnmpget -v2c -c public 192.168.1.100 1.3.6.1.2.1.1.5.0 snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.2.1.1第一条命令查设备的主机名第二条命令遍历系统信息整个子树。当你不知道设备支持哪些数据时用MIB浏览器或者snmpwalk -v2c -c public 设备IP .1去遍历整个MIB树看返回的结果慢慢找。实际操作中遍历整棵MIB树可能会有大量输出有些老设备还会因为OID不连续导致响应超时建议把目标锁定在几个常用子树系统信息、接口信息、设备厂家私有节点。我在做设备接入时习惯于先做一次全量扫描把设备IP、OID、返回值类别、更新时间记到一张Excel表里然后整理成网关的配置文件。这一步虽然繁琐但能避免后续反复上线测试的折腾。3.3 双协议网关Python轮询SNMP并发布MQTT网关的代码实现我用Python写过一个很精简的版本核心依赖pysnmp和paho-mqtt。逻辑非常简单按配置表循环采集每个OID把结果转成JSON发布到MQTT Broker。一个最小可运行的示例import json import time from pysnmp.hlapi import * from paho.mqtt import client as mqtt # 设备配置表: (设备IP, community, OID, MQTT Topic) DEVICES [ (192.168.1.100, public, 1.3.6.1.2.1.1.5.0, factory/rack01/ups/hostname), (192.168.1.100, public, 1.3.6.1.4.1.318.1.1.1.2.2.1.0, factory/rack01/ups/battery_voltage), ] def snmp_get(ip, community, oid): iterator getCmd( SnmpEngine(), CommunityData(community), UdpTransportTarget((ip, 161), timeout2, retries1), ContextData(), ObjectType(ObjectIdentity(oid)) ) errorIndication, errorStatus, errorIndex, varBinds next(iterator) if errorIndication or errorStatus: return None return varBinds[0][1].prettyPrint() def on_connect(client, userdata, flags, rc): print(MQTT 连接成功rc%s % rc) client mqtt.Client(snmp-gw-01) client.on_connect on_connect client.connect(192.168.1.200, 1883, 60) client.loop_start() while True: payload_list [] for ip, community, oid, topic in DEVICES: value snmp_get(ip, community, oid) if value is not None: payload_list.append({topic: topic, value: value, ts: time.time()}) for item in payload_list: client.publish(item[topic], json.dumps(item[value]), qos1) time.sleep(30)这段代码只是骨架但已经具备完整的收发链路。实际项目中我还会加上断线重连逻辑、采集结果的本地缓存、不同设备不同采集频率的支持以及对SNMPv3的适配。要特别注意的一点snmp_get里的timeout2, retries1这两个参数很关键。默认的5秒超时加3次重试在设备数量多时会让采集线程卡很久我调到2秒超时、1次重试后整体采集周期缩短了一倍以上。再看看MQTT订阅端的验证。在一台装了mosquitto-clients的机器上执行mosquitto_sub -h 192.168.1.200 -t factory/# -v只要网关在跑就能看到类似下面的输出factory/rack01/ups/hostname UPSRACK01 factory/rack01/ups/battery_voltage 53.7到这里一条SNMP采集 - 协议转换 - MQTT发布 - 订阅消费的数据链路就算完全打通了。4. 生产环境问题排查与避坑实录4.1 MQTT连接和消息可靠性的坑项目上线初期我遇到最多的就是“网关明明在跑但服务器收不到数据”这类问题。排查的时候先分三层看第一层看网关到Broker的TCP连接是否建立可以用netstat -an | grep 1883或者Broker日志确认第二层看是否Topic订阅错误常见错误是订阅了精确Topic而网关发布时带有多级目录两边对不上第三层看QoS配置如果发布端用的QoS 0而网络又抖动丢消息很正常。还有一个隐蔽的坑Broker的max_keepalive和客户端的心跳间隔不一致。有些采集网关设置了keepalive为300秒但Broker默认或配置的keepalive上限更小一旦网络空闲超过上限网关就会被Broker断开。我现在的做法是客户端统一设置keepalive为30~60秒同时开启自动重连并在重连后重新订阅所有需要的Topic。实测这样能扛住车间里频繁的交换机重启和网线松动网关可以自愈恢复不需要人工介入。关于遗嘱消息一定要记得设置“遗嘱主题”的保留标志。否则设备掉线的那条遗嘱消息发出去之后如果没有订阅者在线告警就丢了。我都是把遗嘱发布到monitor/gateway_status主题并设置保留这样任何新的订阅者上线第一眼就能看到所有网关联机的当前状态。4.2 SNMP采集超时与数据不全的问题SNMP采集超时十个里面有八个出在设备本身。老设备的SNMP Agent性能很差你一次性GetBulk整个MIB树设备要计算半天超过2秒就放弃响应了。解决方式是缩小采集范围只Get需要的OID而不是整棵子树。另外一个办法是降低轮询频率比如把1分钟一次的采集改成5分钟一次给设备足够的处理时间。数据不全还有一个容易忽视的原因community string权限不够。很多设备默认只给只读权限但又把某些OID划分为私有读写节点你读不到不代表设备没数据而是被权限挡住了。这时候要去设备管理界面的SNMP配置里确认或者干脆问设备厂家要完整MIB文件加载到MIB浏览器里做全套查询对比。比较诡异的是SNMP的Counter类型溢出问题。Counter32是32位计数器达到最大值后会回绕归零。如果你拿它做流量统计和总电量累加就会在某个时刻看到“数值暴跌”。正确做法是上层做差值计算而不是直接存储绝对值。我一开始没注意导致电量报表出现过一天晚上用电量变成负数的乌龙。4.3 Topic设计与Payload规范Topic设计不当后期改起来非常痛苦。我见过有项目把所有设备数据都发到同一个Topic比如data/allPayload里用JSON的device_id字段区分来源。结果数据一多订阅方要把所有消息都接收下来再自己过滤分发浪费带宽和计算资源遇到下游系统需要按设备订阅的时候完全没办法。我给出的建议是Topic一定要按“区域/设备类型/设备ID/数据点”的四层结构设计这套规范和很多云平台的物模型映射关系也吻合后面接云平台时几乎不用改。Payload方面统一用JSON字符串字段名规范为deviceId、value、timestamp、quality。quality字段用来标记数据质量比如SNMP超时时发一个{value: null, quality: invalid}让上层平台知道这不是正常数值避免误告警。下面是我整理的常见问题和对应排查方向表现象可能原因排查与解决MQTT客户端连不上Broker防火墙未放行1883端口listener未监听0.0.0.0先telnet测端口连通性再查broker配置订阅收不到消息Topic前缀不匹配订阅方向反了QoS不一致用mosquitto_sub通配符验证全量消息断网后网关不自动恢复未开启自动重连keepalive配置过短设置reconnect和keepalive60确认遗嘱主题SNMP一直超时设备性能低OID访问范围太大缩小OID范围降低轮询频率增加timeout采集值偶尔为空community权限不足OID不存在加载MIB文件核对换只读权限和正确的版本计数器数值回绕Counter32溢出上报差值使用Counter64或改作状态量处理5. 应用扩展与后续演进方向5.1 从设备接入到边缘计算双协议组合只是解决了设备接入的第一公里数据上来之后更值得做的是边缘计算。我现在的部署架构里MQTT Broker旁边通常还会挂一个轻量级的规则引擎负责对原始数据进行阈值判断、趋势分析和格式重组。比如SNMP采集到的UPS电池电压值先在边缘侧判断是否低于48V如果是就生成一条告警消息再发布到告警主题。这样上层平台不用处理每秒几百条原始数据只接收有意义的压缩结果。热词里也有朋友在问“egg.js mqtt动态订阅”和“app inventor mqtt插件”说明很多人在尝试让应用层直接消费MQTT数据。我的经验是如果业务系统本身就复杂直接用Node.js这类技术做动态订阅完全可行但一定要把Topic的订阅关系纳入配置管理别在代码里写死。动态订阅意味着设备的接入、变更、下线都通过配置中心动态下发而不是每次改代码重新部署这在设备数量几百台以后会节省大量运维成本。5.2 与物联网平台和纵向上层系统的对接现在主流的物联网平台像ThingsBoard、EMQX Cloud、阿里云IoT、腾讯云IoTMQTT都是第一等公民。SNMP采集的数据经过网关转换成MQTT消息之后直接就能接入这些平台几乎不用写额外的适配器。我做过一个光伏电站项目现场二十多台逆变器通过SNMP采集网关转换成MQTT几分钟内数据就同步到了云端大屏。不过接到云端平台后要注意两个额外问题一是MQTT消息的Topic和Payload必须符合平台定义的物模型。很多平台要求每个属性有固定的标识符和数据类型比如电量字段必须是数值型单位是kWh你如果没转换就直接发平台会拒绝解析。第二是云端的连接安全建议使用TLS加密连接并配置用户名密码或证书认证避免设备密钥泄露的风险。实际上凡是涉及企业生产数据的平台对接我都会在网关层启用TLS并在Broker侧限制客户端的来源IP白名单多一道防线总比事后补救强。还有一点扩展思路这套双协议组合不仅适用于工厂车间楼宇自控里的温湿度传感器、冷机群控系统、数据中心的PDU和UPS、甚至污水处理厂的液位计和水泵状态只要是支持SNMP的设备都可以用同样的网关方案接入MQTT。相当于一套代码换一张设备配置表就能接入另一个行业复用价值非常高。在生产环境里跑了两年的体会是协议不是越新越好关键是在合适的场景用合适的协议。SNMP这套老家伙虽然抄起来不快、报文也简陋但它就是稳定、就是兼容性强几万台存量设备都在用它MQTT虽然年轻但它把弱网传输、消息解耦、事件通知这些物联网几十年踩坑经验都沉淀下来了。两个协议组合在一起一个保设备接入的下限一个拉高数据传输的上限恰好互补。最后再分享一个小技巧协议转换网关的部署位置尽量靠近设备侧别把SNMP流量跨公网远距离传输。网关放在车间里的边缘盒子上SNMP只在局域网内短跑采集结果再走MQTT长传到中心。这样既能减少SNMP超时又能降低公网暴露风险。数据链路里每一个环节都做到“各司其职”整套系统才能长时间稳定运行。这才是设备管理真正需要的那份踏实感。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

重庆AI落地实践:用TaoToken统一Key跑通agentsdk-go多Agent编排 2026/9/28 20:00:10

重庆AI落地实践:用TaoToken统一Key跑通agentsdk-go多Agent编排

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Datawhale速通AI编程开发:Roo Code + DeepSeek 第4章 MCP 配置与 settings.json 骨架笔记 2026/9/28 20:00:10

Datawhale速通AI编程开发:Roo Code + DeepSeek 第4章 MCP 配置与 settings.json 骨架笔记

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
把 Codex 用到极致!OpenAI 官方最佳实践完整解读:config.toml 与 AGENTS.md 骨架配置 TaoToken 实战 2026/9/28 20:00:10

把 Codex 用到极致!OpenAI 官方最佳实践完整解读:config.toml 与 AGENTS.md 骨架配置 TaoToken 实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OpenClaw 配 TaoToken:从“聊天”到“干活”的 Agent 配置骨架 2026/9/28 20:00:10

OpenClaw 配 TaoToken:从“聊天”到“干活”的 Agent 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
nRF54LC10A超低功耗设计:50nA休眠电流实现原理与工程落地 2026/9/28 20:00:10

nRF54LC10A超低功耗设计:50nA休眠电流实现原理与工程落地

1. 项目概述:一颗把“省电”刻进芯片DNA的蓝牙新秀你有没有算过,一块纽扣电池驱动一个蓝牙传感器,到底能撑多久?我以前做智能门锁项目时,客户提了个看似简单的要求:“希望换一次电池用两年”。当时团队里一…

阅读更多 →
面向AI Agent的机器可执行Install文档设计 2026/9/28 20:00:04

面向AI Agent的机器可执行Install文档设计

1. 这不是给程序员看的 Install 文档,是给 Agent 看的“执行说明书”“给 Agent 看的 Install 文档应该怎么写”——这句话乍一听像句玩笑,但如果你正在调试一个反复报错agent execution terminated due to error.的智能体,或者发现你的pi ag…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉