VB项目拆解OPC UA客户端:连接、读写与订阅全流程
简介这份压缩包提供基于VBVisual Basic编写的OPC UA客户端示例并附带“OPC Helper 2.02”连接工具面向工业自动化开发者与上位机编程学习者帮助理解并实践OPC UA标准协议下的数据读写、订阅与安全认证机制。包内共181个文件以122个dll运行库、6个vb源码、7个xml配置、4个exe可执行程序及若干pdb调试符号为主整体约15.26MB结构完整可直接参考工程。已有482人学习下载。示例工程涵盖连接与认证参数配置、节点信息模型浏览、订阅数据变化、读写单个及数组值、异常处理、多线程异步通信以及OPC UA SDK常见API调用等关键知识点配合OPC Helper工具可快速连接服务器进行操作验证适合希望从零上手OPC UA客户端开发的读者借鉴。1. OPC UA客户端没那么玄一个VB项目就能把协议看明白很多做上位机的人一听到OPC UA就头大以为要啃完上百页规范才敢动手。我最早也这么想直到拿到一份用VB写的客户端工程才发现OPC UA客户端其实就是“连接、读点、写点、订阅”四件事。这个工程把那些封装好的API拆开让你能看到每个调用背后在做什么非常适合刚接触OPC UA、想快速做原型验证的人。我从拿到源码到连上模拟器只用了一个下午下面把整个过程重新走一遍顺便把我在调试里遇到过的坑都写出来。2. 先从协议说起OPC UA客户端要干什么选什么库2.1 OPC UA是什么为什么说它比OPC DA靠谱OPC UA是工业场景里一套数据交换标准和早期的OPC DA经典OPC相比它摆脱了COM/DCOM这套依赖Windows本机配置的技术栈。以前用OPC DA客户端和服务器经常因为DCOM权限、防火墙规则连不上远程连接尤其痛苦。OPC UA用面向连接的Socket通信默认端口是4840可以不依赖Windows域环境跨平台能力也强很多。OPC UA把数据建模成“节点”组成一棵地址空间树。每个节点用NodeId定位NodeId由命名空间索引NamespaceIndex和标识符Identifier组成有点像数据库里的“库名表名”。客户端要做的核心操作就是围绕这些节点进行读属性、写值、订阅变化。这东西听起来高深其实和数据库客户端差不多先建立连接再操作数据只是多了安全策略、证书校验、数据类型映射这些环节。我自己早期接触OPC DA时候被DCOM配置坑过不少次换到OPC UA以后前面几次连接不上基本都是证书和Endpoint的问题反而没有DCOM那种玄学弹窗。所以对新手来说OPC UA的学习曲线虽然更陡但一旦跨过证书门槛后面的路径很清晰。2.2 VB环境下可选的客户端库官方SDK、开源库还是自己拼报文在VB特别是VB.NET环境下做OPC UA客户端常见的路线有三条使用标准化组织发布的官方.NET库。这个库功能全跨平台但有明显的“底层感”很多参数需要开发者自己理解比如Endpoint描述、安全策略、节点类型。VB.NET可以直接引用它只是文档里的示例大多是C#需要自己翻译一下。使用第三方封装的客户端库。有些开源项目专门做了简化和示例有的还带VB版本代码。这路人最轻松也是我拿到这个VB项目后第一反应它的API明显是被二次封装过的调用名称简单跳过了很多底层细节。自己拼报文。OPC UA底层的二进制协议和UA Secure Conversation通道非常复杂除非是研究协议本身否则不推荐。即便只是把HelloMessage和OpenSecureChannel拼出来也要处理非对称加密工作量非常玄学。这三条路的适用场景差异很大。用官方库适合做长期生产项目因为后面可以考虑把采集服务独立部署用封装库适合快速验证、写工具类Demo自己拼报文基本只适合学习协议格式。我拿到的这个VB项目走的是第二条路连接、读、写、订阅都封装成了几个函数新手可以直接在界面上调用不会一上来就陷进证书堆栈里。2.3 这个VB项目的整体结构从连接、读写到订阅打开这个VB工程的解决方案文件以后我看到的模块划分大概是这样客户端核心类负责管理Session打开通信通道发送请求和接收响应。配置模块保存服务器URL、安全模式、账户密码通常是个配置文件或单独的类。业务封装层把读点、写点、订阅操作封装成窗体可以直接调用的方法。界面层或测试代码演示这些方法的参数和返回值。这套结构比把所有代码堆在窗体按钮里要清晰得多。以后不管是换服务器地址还是换认证方式都只需要改动配置模块。实际项目里我看到不少老工程把所有OPC UA调用都写在Button_Click里改起来非常痛苦。写任何OPC UA调用之前命名空间引用是第一步。这段代码看起来简单但决定了后面所有API是否可用Imports Opc.Ua Imports Opc.Ua.Client Imports Opc.Ua.ConfigurationImports Opc.Ua提供核心数据结构比如NodeId、DataValue、Variant。Opc.Ua.Client提供客户端Session、Session、Subscription这些高层对象。Opc.Ua.Configuration负责应用配置和证书管理。Visual Basic工程里如果漏掉了其中一个引用编译的时候会报很多红色下划线这时候优先检查NuGet包是否还原完整而不是去看代码逻辑。3. 把客户端跑起来安装、配置和连接模拟器3.1 环境准备安装依赖库和测试服务器在Windows上用VB.NET跑这个工程第一步是在IDE里打开解决方案检查目标框架是.NET Framework还是.NET Core。老一点的OPC UA库用.NET Framework 4.6.2以上新写法的库可能要求.NET 6或.NET 8。我一般用IDE打开后先执行“还原NuGet包”把依赖重新拉下来再重新生成方案确保程序集版本和运行环境匹配。然后准备一个OPC UA服务器来测试客户端。没有真实PLC的时候最方便的是本地模拟服务器。这类模拟器会在opc.tcp://localhost:4840上启动一个地址空间里面预置几个变量节点有的还带模拟的点位比如温度、压力这些变化数据。正确连接代码如下Dim client As New OpcUaClient(opc.tcp://localhost:4840) client.Connect()这段代码的工作量比表面看上去大很多。它要先通过DiscoveryEndpoint拿到服务器支持的所有Endpoint描述再从列表里选一个安全策略匹配的Endpoint之后生成客户端证书或加载已有证书最后才发起创建Session的请求。如果服务器没有开启匿名访问Connect内部还需要使用用户名密码或证书进行用户身份验证。所以调试时先确认模拟器是否开了匿名模式连接失败时优先看服务器日志里的原因而不是反复改客户端参数。从URL格式看opc.tcp是传输协议4840是OPC UA默认端口但不同服务器端口可能不一样有的还带路径段比如opc.tcp://localhost:4840/UA。路径段不能漏漏掉以后连到服务器根路径服务器返回BadTcpEndpointUrl错误。我第一次调试模拟器的时候就是漏了后面的斜杠路径卡了半个小时才从日志里发现原因。3.2 连接配置Endpoint、安全策略、证书到底怎么填很多人在连接这一步卡住根本原因是没有理解握手协商的三层内容。第一层是Endpoint选择。服务器可以暴露多个Endpoint每个Endpoint对应一个URL、安全策略、消息模式UABinary或UAXml。客户端从DiscoveryEndpoint获取列表后要选一个自己支持的Endpoint。如果代码里不指定库默认选第一个或选加密最强的。这会导致你配置的URL和实际Endpoint不一致尤其是当服务器同时开了None和Basic256Sha256两种策略时客户端容易选到加密策略而证书又没过。第二层是安全策略。调试阶段最简单是None也就是不加密。但很多商用服务器默认关闭None只允许Basic256或者Basic256Sha256。在服务器配置里打开None或者客户端改用服务器支持的策略两者要对应。安全策略名看起来是字符串其实底层决定了密钥长度和签名算法选错会直接握手失败。第三层是证书校验。OPC UA的安全机制要求客户端和服务器互相验证证书。第一次连接时客户端会收到服务器证书默认不信任服务器也会收到客户端证书第一次会弹确认框。调试阶段最简单的处理是跳过证书校验代码如下Dim config As New ClientConfiguration() config.SecurityMode SecurityModes.None config.UpdateBeforeConnect True config.CertificateValidator New CertificateValidator(True) client.SetConfig(config)SecurityMode设为None意味着消息不加密也不签名只能用于开发和测试环境。CertificateValidator(True)表示接受所有服务器证书这会让OPC UA的加密体系形同虚设生产环境绝对不要用。我一般调试时先把这两项改成宽松模式等通信通了再收紧。提示很多连接问题不是代码问题而是服务器日志里明写了拒绝原因。连接失败时先去看服务器端是否收到连接请求它返回的错误描述比客户端这边提示更具体。3.3 第一次读点和写点代码走读与参数说明连接建立后最快验证方式就是读一个变量。模拟器里随便找一个节点右键查看节点属性记录它的NodeId。读点代码Dim nodeId As New NodeId(2, Demo.Variable1) Dim value As Object client.ReadValue(nodeId) Console.WriteLine($当前值: {value})NodeId构造函数第一个参数是命名空间索引第二个是字符串标识符。很多初学者把两个参数搞反或者直接把整个字符串传进去结果请求返回BadNodeId。命名空间索引可以在模拟器的地址空间树里找到通常是类似“NamespaceIndex: 2”的数值标识符是在该命名空间下的唯一名称。有的服务器还支持用带namespaceUri的方式构造NodeId但要小心同一个变量在不同服务器里的namespaceUri可能不同。写点比读点更容易踩类型坑。服务器上的每个节点都有严格的DataType属性。比如模拟器里节点是Double类型你在VB里写了一个Integer可能返回BadTypeMismatch也可能被服务器自动转换具体看库的实现。我的做法是先读一次节点属性确认类型再构造DataValueDim dataValue As New DataValue(New Variant(23.5F)) client.WriteValue(nodeId, dataValue)DataValue除了值还可以带状态码和时间戳甚至可以只写入时间戳而不改值这在某些数据补偿场景里有用。写完以后最好立刻读一次验证写进去的值和源类型是否正确。这一步能发现很多隐式转换问题尤其是从VB的Object类型转成Variant时类型容易丢失。4. 深入一点订阅数据变化和批量读写4.1 订阅模型从轮询到事件驱动的必要性如果客户端只是偶尔读一次数据用上面的读点方法就够了。但实际采集场景需要持续跟踪变量变化这时用循环轮询会很快遇到瓶颈。我做过一个对比订阅500个节点CPU占用率可能只有5%左右而用500ms轮询读同样这批点CPU占用经常冲到40%以上而且还没算网络报文开销。OPC UA订阅模型的核心是Subscription和MonitoredItem。客户端创建一个Subscription往里添加需要监控的MonitoredItem每个MonitoredItem对应一个节点。服务器按发布间隔PublishingInterval周期性检查节点值变化并把变化通知打包推给客户端。也就是说数据推送节奏由服务器控制不是客户端一次次去拉。订阅模型适合高频率变化的数据但并不是所有点位都适合走订阅。比如一个设备状态位一天可能就变一次用订阅反而要常驻一份订阅资源。低频信号用定时器轮询更直观也方便写日志。后面第6章我会给出选型建议。4.2 实现一个简单的订阅者回调函数和发布间隔订阅的代码流程是创建Subscription、创建MonitoredItem、注册回调、把监控项加入订阅。一个最小例子Dim subscription As Subscription client.CreateSubscription(1000) subscription.PublishingEnabled True Dim item As New MonitoredItem item.StartNodeId nodeId item.AttributeId Attributes.Value item.SamplingInterval 500 AddHandler item.DataValueChanged, AddressOf OnDataChanged subscription.AddItems(item)这里的1000是发布间隔单位毫秒。服务器聚合变化通知的时间窗口也可以理解为“最慢多久推一次”。如果发布间隔设得太大比如30000ms数据变化的延迟会很明显设得太小比如10ms服务器压力大网络也会被塞满。我一般调试先设1000ms确认回调通了再调整。SamplingInterval是采样间隔服务器用这个周期检测节点值是否变化。它和发布间隔是两回事SamplingInterval是采样粒度PublishingInterval是推送粒度。如果采样间隔大于发布间隔那这次发布窗口里可能什么都没采到订阅看起来像是失效了。通常SamplingInterval要小于或等于PublishingInterval。回调函数格式是固定的Private Sub OnDataChanged(item As MonitoredItem, value As DataValue) If value.StatusCode.IsGood Then Console.WriteLine(${item.DisplayName}: {value.Value}) Else Console.WriteLine($节点状态异常状态码: {value.StatusCode.Code}) End If End Sub这里必须先检查StatusCode.IsGood再使用数据。服务器可能因为节点暂时不可用、权限被收回、服务区切换等原因返回非Good状态码。如果回调里直接拿value.Value做运算可能拿到一个默认值而且问题非常隐蔽因为订阅连接还是健康的只有单个节点的状态变了。另外要注意Subscription和MonitoredItem在整个订阅生命周期内不能被GC回收。VB里如果把它定义成过程内的局部变量过程结束以后订阅可能被垃圾回收回调就再也不触发了。我建议把subscription定义成类级别的字段保持强引用。4.3 批量读写一条请求处理多个节点实际项目里很少只监控一两个节点。逐个读的效率太低OPC UA支持批量读写VB封装后可以一次传一组NodeIdDim nodeIds As New List(Of NodeId) nodeIds.Add(New NodeId(2, Tag1)) nodeIds.Add(New NodeId(2, Tag2)) nodeIds.Add(New NodeId(2, Tag3)) Dim results As List(Of DataValue) client.ReadValues(nodeIds) For i As Integer 0 To results.Count - 1 If results(i).StatusCode.IsGood Then Console.WriteLine(${nodeIds(i)} {results(i).Value}) Else Console.WriteLine(${nodeIds(i)} 读取失败: {results(i).StatusCode}) End If Next批量读的结果保持入参顺序results(0)对应Tag1results(1)对应Tag2。这里最隐蔽的问题在于如果其中一个节点不存在服务器不会让整个请求失败而是在对应结果里放一个BadNodeId的状态码其他节点仍然正常返回。所以循环里必须逐个检查状态码不能只看整体成功与否。批量写的逻辑也一样Dim writes As New List(Of WriteValue) For Each tag As String In tagList Dim wv As New WriteValue wv.NodeId New NodeId(2, tag) wv.AttributeId Attributes.Value wv.Value New DataValue(New Variant(valueMap(tag))) writes.Add(wv) Next Dim writeResults As List(Of StatusCode) client.WriteValues(writes)批量写时WriteValue对象的AttributeId通常设为Attributes.Value但也可以写其他属性比如StatusCode或SourceTimestamp。写入结果的StatusCodes列表也是按顺序对应每个WriteValue。注意如果某个节点权限不足返回BadNotWritable这不会影响其他节点的写入。5. 避坑指南OPC UA客户端开发中的五个常见问题5.1 无法连接到服务器证书校验和Endpoint匹配现象调用Connect()时抛出异常提示“服务器证书验证失败”或者返回“No matching endpoint found”。原因我第一次连模拟器就碰到这个最后发现是两件事叠加。第一客户端默认不信任服务器证书OPC UA的证书体系要求客户端有一个受信任的证书存储区模拟器的自签名证书不在这个存储区里。第二客户端自动选择了服务器支持的某个Endpoint但这个Endpoint要求的是Basic256Sha256安全策略而我只提供了匿名访问证书不匹配导致握手失败。解决先说调试期的快捷办法在配置里把证书校验设为接受所有证书然后把安全策略设为None。这样能最快打通通路。但要注意这不是“正规做法”只是绕过了安全机制。生产环境必须导入服务器证书到信任列表并且使用正式的安全策略。工程配置里有证书信任目录的话把服务器证书放进去重启客户端也能解决问题。还有一个细节服务器可能暴露多个Endpoint有的使用同一个端口但URL路径不同。客户端通过Discovery获取列表后要选择与应用层配置一致的Endpoint别让库自动选第一个。5.2 读到的值是错的数据类型映射和值转换现象读一个PLC浮点型变量程序显示一个很大的整数或者一个看起来完全不对的对象。原因OPC UA的Variant会自动携带数据类型但调用封装方法时如果返回值被赋给了ObjectVB会保留原始Variant类型。如果你把它直接显示出来或者转换成整数就可能触发隐式转换。另一个常见情况是节点本身的数据类型不是你以为的Single而是Double或Int64这时用Single去接收就会精度丢失或者范围溢出。解决读值以后先打印value.GetType().ToString()确认实际类型再做转换。写值之前通过ReadTypeDefinition或ReadDataTypeAttributes获取节点DataType再用VB的CType或DirectCast匹配类型。我有一个习惯写一个通用的TypeConverter函数专门把Variant里的值按DataType映射成VB原生类型。这样即使以后换服务器或者改点位也不至于在表达式里到处写强制转换。5.3 订阅不回调订阅参数和发布间隔的坑现象订阅创建成功了服务器也在正常更新值但DataValueChanged一直不触发。原因这种问题一般有三个来源。第一是发布间隔设置太大比如塞了30000ms变化通知被服务器聚合成一批或者因为队列溢出被丢弃了。第二是SamplingInterval比发布间隔还要大服务器还没采样到变化发布周期已经到了推送的数据自然没变化。第三是Subscription对象被GC回收了VB里如果只把订阅定义成局部变量过程结束后托管引用释放事件自然就停了。解决发布间隔和采样间隔调整到匹配数值我常用发布1000ms、采样500ms的组合。同时把Subscription和MonitoredItem提升为模块级变量确保引用稳定。还可以订阅Subscription.StatusChanged事件观察服务器是否因为队列溢出而降低发布频率。若回调还是不触发在服务器端开启诊断日志看看Publish请求有没有正常到达、Notification有没有生成。5.4 性能翻车在大点量下如何减少开销现象订阅了几百个点后程序界面卡顿数据接收延迟明显CPU和内存持续走高。原因最典型的问题是把数据处理逻辑放在回调线程里刷新UI导致线程被界面渲染阻塞。另一个原因是MonitoredItem数量增加后每个Publish通知里包含的NotificationMessage结构变大如果客户端解析和排序不及时会造成队列积压。解决回调里只做轻量操作把DataValue放入线程安全的队列UI侧用DispatcherTimer每200ms批量取一次队列刷新界面。同时调整订阅的MaxNotificationsPerPublish参数限制一次Publish携带的通知条数避免超大报文连续到达。还有把每一条数据变化都写数据库是常见性能瓶颈。我一般会做数据清洗和去重同一个点在短时间内只保留最新值减少写入次数。5.5 崩溃在断开重连会话恢复和重新订阅现象服务器重启后客户端不报错但收不到数据过一会儿调用读写方法开始抛异常。原因服务器重启后会话状态丢失所有Subscription也被服务器销毁。客户端的会话对象虽然还存在本地但底层连接已经失效。库的自动重连机制可能会重新建立连接但不会自动重建旧的Subscription必须手动重新添加监控项。解决我后来每次写OPC UA客户端都强制把“重连并重建订阅”写成一个独立方法Private Sub ReconnectSession() Try _client.Reconnect() RebuildSubscriptions() Catch ex As Exception _client.Connect() RebuildSubscriptions() End Try End Sub同时监听SessionReconnectComplete事件在这个事件里调用RebuildSubscriptions()把所有配置表里的点位重新AddItems。那一次血泪教训让我意识到断线重连不是简单调一个Reconnect就完事订阅重建是最容易漏掉的一步。只要漏了数据源看着链接正常实际上已经静默丢失。6. 进阶用法用这个VB客户端做数据采集的几种变体6.1 把读取器封装成类供其他模块调用学完这个VB项目第一步是把客户端封装成一个采集服务类。界面不接触OPC UA细节只订阅一个事件拿数据。Public Class Collector Private _client As OpcUaClient Public Event DataChanged(tagName As String, value As Object) Public Sub Start() _client New OpcUaClient(opc.tcp://localhost:4840) _client.Connect() Dim sub As Subscription _client.CreateSubscription(500) For Each tag As String In _tagList Dim item As New MonitoredItem item.StartNodeId New NodeId(2, tag) AddHandler item.DataValueChanged, AddressOf HandleValue sub.AddItems(item) Next End Sub Private Sub HandleValue(item As MonitoredItem, val As DataValue) RaiseEvent DataChanged(item.DisplayName, val.Value) End Sub End Class这样业务层只关心DataChanged事件不需要知道NodeId怎么构造也不用处理证书配置。以后换测量点或者换库只改Collector内部上层浑然不觉。6.2 结合定时器做轮询并记录到文件或数据库订阅适合高频变化的数据但低频信号用定时器轮询更简单而且方便打日志。我一般开一个后台定时器每30秒读一次全部点位把值和时间戳写入CSV或数据库表。数据特点推荐模式典型间隔高频周期变化订阅模式发布间隔100-500ms低频稳定量定时轮询30-60s告警信号事件通知立即用哪种模式不是越高级越好而是取决于数据变化频次和下游消费方式。定时轮询的好处是逻辑直观数据落库自然断网补采也容易订阅模式的好处是实时性和带宽占用更优。混合使用是最常见的关键数据走订阅普通能耗数据走轮询。我把这个VB项目当模板用每次新项目都强制走一遍“先None模式测通、再开证书、再上订阅、最后补重连和写入”的顺序。这套顺序帮我省掉了大半OPC UA排障时间。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

.NET6生产级WebAPI:SQL Server+JWT+事务+软删除实战

.NET6生产级WebAPI:SQL Server+JWT+事务+软删除实战

简介:本资源是一套基于.NET 6构建的完整Web API实战项目,面向C#后端开发初学者与进阶者,聚焦企业级API开发核心能力训练——SQL Server数据库集成、JWT无状态身份认证及标准CRUD接口实现。项目采用分层架构(含Model、Service、BLL…

2026/10/17 3:34:53 阅读更多 →
文件I/O与存储优化:从page cache到io_uring的实践指南

文件I/O与存储优化:从page cache到io_uring的实践指南

文件I/O与存储优化,这话题我这些年反复碰到。早年间帮某在线交易系统查问题,数据库明明没几条数据,写磁盘却慢得像蜗牛,后来发现是日志文件写了几十个G,还是同步写。还有一次是某消息队列组件,吞吐死活上不…

2026/10/17 3:34:53 阅读更多 →
千笔AI降AI率实战指南:原理、实操与避坑全解析

千笔AI降AI率实战指南:原理、实操与避坑全解析

最近好多学弟学妹跑来问我:“千笔AI到底能不能降AI率?我看好多人都说它是本科生神器,是不是真的?”说实话,这个问题我太有发言权了。我刚读研那会儿,第一次查AI率就被标了40%多,当时整个人是蒙的…

2026/10/17 3:33:53 阅读更多 →

最新新闻

AI论文降重工具怎么选?从原理到实操的完整指南

AI论文降重工具怎么选?从原理到实操的完整指南

从选题到交稿,我把论文降重这件事彻底聊透如果你正被毕业论文、期刊投稿或者课程结课论文反复折磨,这句话应该能引起你的共鸣:查重报告飘红的日子,比吃火锅烫了舌头还难受。市面上所谓“AI论文改写工具Top10”一搜一大把&#xff…

2026/10/17 4:23:08 阅读更多 →
SpringBoot+Vue3+MyBatis打造农家乐数字化管理平台实战

SpringBoot+Vue3+MyBatis打造农家乐数字化管理平台实战

现在很多做乡村旅游、开办民宿和农家乐的经营者,都在为传统的手工记账和电话预约发愁。订单容易漏记、房态经常冲突、会员信息散落在各个聊天记录里,旺季的时候尤其手忙脚乱。这个“Java SpringBootVue3MyBatis 数字化农家乐管理平台系统”针对的就是这类…

2026/10/17 4:23:08 阅读更多 →
Tomcat 8.0.47 生产环境并发调优与连接池故障排查实践

Tomcat 8.0.47 生产环境并发调优与连接池故障排查实践

简介:Tomcat 8.0.47 是一份基于 Java 的 Web 服务器资源包,面向 Java Web 开发人员、运维工程师以及入门学习者,实现了 Servlet 与 JSP 规范,适合部署小型到中型 Web 应用、搭建本地学习环境,也可作为理解容器原理的参…

2026/10/17 4:23:08 阅读更多 →
SpringBoot+Vue3农家乐管理系统全栈开发实战:从数据库设计到部署上线

SpringBoot+Vue3农家乐管理系统全栈开发实战:从数据库设计到部署上线

做农家乐管理系统这套东西,最早是因为一位做旅游行业的朋友找上我。他们那边几十家农家乐还在用Excel记房态、记订单,旺季的时候前台忙得脚不沾地,还经常出现一房多订、退房时账目对不上的问题。后来我用 Java SpringBoot Vue3 MyBatis 这套…

2026/10/17 4:23:08 阅读更多 →
AI系统嵌入拐点:边缘实时控制、LLM编译式交付与视觉减法哲学

AI系统嵌入拐点:边缘实时控制、LLM编译式交付与视觉减法哲学

1. 这份“AI早报”标题里藏着三个被严重低估的技术拐点看到“2026年8月23日 AI 早报|人形机器人百米破纪录、Anthropic 重塑软件交付、DeepSeek 补齐视觉”这个标题,第一反应不是点开——而是停顿两秒,把每个分句拆开重读一遍。这不是又一份流…

2026/10/17 4:23:08 阅读更多 →
Grok Bot 实战指南:从零部署可拉群干活的任务型机器人

Grok Bot 实战指南:从零部署可拉群干活的任务型机器人

1. Grok Bot 不是“另一个聊天机器人”,它是你手边的自动化协作者最近在几个技术社群里,看到不少开发者朋友发问:“Grok Bot 跟 ChatGPT 的 bot 有什么区别?”“装完发现根本没法拉群?是不是我环境没配对?”…

2026/10/17 4:22:07 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/16 14:23:36 阅读更多 →