AI工业控制系统落地指南:老PLC与DCS如何接入AI能力
2026年AI工业控制系统已经不是PPT上的概念了。我在自动化行业摸爬滚打十几年这两年接到最多的问题反而不是“AI能干什么”而是“我这套老PLC、老DCS到底怎么和AI接起来”。这个问题问得特别实在因为绝大多数工厂不会真的把控制柜砸了重来他们要的是在现有设备基础上把AI的预测、优化、视觉、决策能力安全地嵌进生产控制环路里。我就把这套搭建方法一层层拆开讲从系统架构、数据采集、模型选型到现场部署顺便把我在车间里踩过的坑也一并整理出来。想照着落地的人不管是搞自动化的、搞算法的还是带产线的都能找到对应的那一段。1. 先想清楚AI到底坐在控制系统的哪个位置1.1 传统控制的“稳”和AI的“准”不是一回事传统工业控制的核心是PLC/DCS闭环里跑的PID、联锁、顺序控制。它的优点是可预期、可复现一个PID调好了几万小时的运行曲线几乎不变这是“稳”。但它也有明显边界遇到强耦合、大滞后、强非线性、机理不清晰的工况PID参数很难调甚至一个工况就得一套参数。这时候AI的强项就出来了——它能从海量数据里自动学出一个黑箱模型把那些难以用物理公式描述的关系拟合出来。但这里必须说一句泼冷水的话AI的输出是一个概率判断而不是一个确定性结果。让它直接去替代PID控制阀等于让一个擅长“预测趋势”的人去接手需要“毫秒级精确响应”的活风险很高。所以2026年真正被工厂接受的AI工业控制系统普遍是“AI计算大脑确定性控制底座”的结构AI负责预测、推荐、优化、判断PLC/DCS负责执行、联锁、保护。两者的边界如果划分清楚这套系统既聪明又可靠。1.2 四个常见的AI切入方向我梳理过大量落地案例比较成熟能带来实际价值的切入方向基本集中在四类。这里我用表格列出来方便你对照自己的产线找位置。场景AI做的事情执行端闭环等级预测性维护根据振动、温度、电流预测设备剩余寿命和故障概率工单系统、状态指示、触发预警半闭环工艺参数优化推荐最优温度、压力、配比等设定值PLC/DCS设定值写入闭环机器视觉质检缺陷检测、定位引导剔除机构、机器人控制器闭环生产调度与Agent排产优化、SOP问答、异常处置建议MES/SCADA、操作员半闭环为什么要区分闭环等级这直接决定你的安全设计。全闭环意味着AI的输出直接改变执行机构一出错就是生产事故半闭环则由人做最终确认容错空间大很多。我的建议是第一次做AI控制系统尽可能从半闭环起步把AI当成“经验丰富的老师傅”在旁边提建议而不是让它直接取代安全联锁。等数据积累、模型验证充分了再逐步放开自动执行的范围。2. 搭建数据闭环传感器、边缘计算和PLC安全联动2.1 感知层先把“摸脉”的传感器装对AI控制系统的第一个问题不是算力而是数据。很多项目死在第一步数据没有时间戳、质量戳缺失、采样频率不够。感知层设计的核心是把AI需要的“脉搏”摸准。设备侧如果做预测性维护至少要有振动、温度、电流这几类信号。振动采样频率建议不低于10kHz否则轴承早期故障特征根本看不清温度、电流这种缓变量每秒采一次或者更慢都行。工艺侧的温度、压力、流量、液位模拟量通常能从DCS/PLC里通过OPC UA或者Modbus TCP读出来但前提是你得确认每个点的数据类型、字节序、量程和工程单位处理不好读出来的全是乱码。另外新增的AI服务器不要直接插在控制网里正确做法是把AI系统放在独立工业网段通过工业防火墙或者单向网闸从控制网取数。这既是安全要求也是避免AI系统被攻击后反向威胁PLC的底线。2.2 平台层边缘优先云只是配角AI工业控制系统里数据从传感器出来之后往哪去决定了你的时延、带宽和可靠性。我的经验是能边缘算的绝不丢上云。举个视觉质检的例子一台高速相机每秒出几十张图原图一张可能就是几MB16路相机如果全部传云端光纤都扛不住更别说每张图等云端返回结果产线早就停完了。所以感知数据要在边缘节点先完成AI推理只把“OK/NG、缺陷类型、坐标”这些结构化结果传上去。平台的另一半是数据存储。工业时序数据量非常大一台空压机每秒采集10个点一年下来就是几亿条如果做振动分析数据量还要翻几个数量级。建议落地的技术栈是边缘用MQTT做轻量消息转发中心用Kafka做缓冲存储用TDengine、InfluxDB这类时序数据库。选时序库的原因很简单它自带降采样、聚合和过期策略查一万条历史趋势比关系库快得多。云端的角色是模型训练、全局比对和远程运维而不是实时控制链路的一部分。2.3 控制层AI输出怎么“递”给PLC才安全这是整个系统里最容易出事也最值得花时间设计的一环。AI输出到控制层的方式常见就三种写PLC保持寄存器、写OPC UA节点、调MES/SCADA接口。不管用哪种都要做三层保护限幅AI建议的设定值只能在工艺允许的上下限内超出直接丢弃。限速设定值每次变化不能超过固定步长比如温度设定值每周期最多改0.5℃防止模型抖动导致阀门来回震荡。降级一旦AI输出NaN、模型置信度低于阈值、通信超时系统必须自动切回DCS原控制策略或者保持最后一次安全输出。这三层保护不是软件层做做样子而是要写进控制逻辑或者网关固件里。我见过不止一次模型在线调参时输出一个离谱数值要不是限幅生效整个反应釜的温度就飞了。还有一点和安全相关真正的安全联锁包括超压泄放、急停、高温跳闸必须保留在独立的硬接线安全PLC里绝对不要被AI当参数改掉。这是红线没什么好商量的。3. 模型选型与训练2026年在工业现场真正能用的AI技术3.1 小模型打底大模型做副驾驶一提到AI很多人第一反应是大模型。但在工业控制这种对时延和确定性极其敏感的场景小模型依然是绝对主力。做视觉检测实际工程里大量用YOLO系列、PatchCore这类异常检测模型做时序预测和故障诊断LightGBM、孤立森林、LSTM都能打做工艺参数优化贝叶斯优化和基于仿真环境的强化学习更常见。这些模型参数量小、延迟低、可解释性强出了问题也能快速定位。那大模型和Agent放哪儿2026年最务实的用法是把大模型放在“副驾驶”位。比如设备报警了模型先判断是哪个部件异常接着大模型结合设备手册和维修SOP生成一条让操作员能看懂的处理建议再比如多AI协作一个Agent负责解析产线数据一个Agent负责检索检修知识库另一个Agent负责起草工单最后由人工确认后执行。这种方式不直接进控制回路但实实在在地提高了现场决策效率。别指望哪个大模型直接生成一个控制量让PLC跑至少在2026年任何敢这么干的系统我都劝你三思。3.2 数据治理模型上线前最耗时的三步工业AI项目里数据清洗的时间通常占70%以上。第一件事是处理缺失值Modbus通信中经常读到异常值寄存器返回0xFFFF或者超过量程这类数据要标记而不是直接喂给模型第二件事是工况分段设备有启动、停机、空载、满载几种状态温度和振动特征完全不同不分开训练模型会学出一堆互相矛盾的东西第三件事是标签标注故障样本稀少是常态我常用的策略是“事件登记时间窗口”维修人员每次处理故障时登记时间程序自动把故障前24小时的数据标记为“隐患样本”这样标签成本能降一大半。模型验证也要注意时间序列数据不能随机划分训练集和测试集。你要是把某一天的样本随机抽一半做训练、另一半做测试测试精度可能很高但上线后因为时间推移、数据分布一变立刻崩盘。正确做法是按时间顺序切分前80%训练后20%验证并且留出一段“影子运行期”让模型和现场真实信号并行跑一段时间再决定要不要接入控制。3.3 边缘部署把模型压到能实时响应为止模型训练是Python的事部署到现场则完全是另一回事。2026年的主流做法是把训练好的模型导出成ONNX或者TensorRT格式放到边缘端的推理框架里跑。这里有个关键动作量化。把FP32模型转成INT8推理显存占用和延迟通常能下降一半甚至更多精度损失在工业场景一般可以接受。其次能做的是剪枝和蒸馏把大模型压缩成适合现场的小模型。部署时先算算算力账。举个例子一个512×512输入的YOLOv8s模型在Jetson Orin NX上用TensorRT INT8推理单帧延迟大约在5到15毫秒完全够视觉定位用如果用CPU跑可能需要几十毫秒甚至几百毫秒就得考虑降分辨率、缩小检测范围或者换硬件。我建议在方案评审时把“5倍余量”这条写进去设计推理延迟按照实际平均延迟的5倍去做硬件规划给现场突发流量留出空间别等峰值帧率上来以后掉链子。4. 动手实操AI工业控制系统的最小落地项目怎么做4.1 需求与硬件清单以空压机预测性维护为例空压机几乎是每个工厂都有振动和温度信号容易测故障机理相对清晰预测出来以后节省的停机时间也能量化非常适合作为AI工业控制系统的第一个项目。硬件清单大致如下边缘网关一台Jetson Orin NX或者i7工控机装Ubuntu 22.04。振动传感器IEPE加速度传感器加采集模块采样率10kHz以上。温度、电流变送器现场已有的4-20mA信号通过模块转Modbus。PLC或者网关支持Modbus TCP负责把寄存器数据读给AI系统。网络与安全工业交换机加防火墙AI系统和控制网分开部署。软件方面Python 3.10、pymodbus、numpy、scikit-learn、influxdb-client、fastapi、uvicorn就够了。不要一上来就堆微服务最小系统能跑通数据闭环比什么都重要。4.2 数据采集从Modbus读到时序库先讲代码逻辑。用pymodbus定时去读保持寄存器寄存器地址、字节序按设备手册确认每次读到原始整数后要除以对应系数变成实际工程值给每条数据打上时间戳和设备标签然后写入时序库。重点是要加异常处理和断线重连不然Modbus通信一个超时采集程序就可能崩掉你半夜就得爬起来重启。from pymodbus.client import ModbusTcpClient import time from influxdb_client import InfluxDBClient, Point modbus_client ModbusTcpClient(192.168.1.50, port502, timeout3) influx_client InfluxDBClient(urlhttp://127.0.0.1:8086, tokenyour-token, orgfactory) write_api influx_client.write_api() while True: try: rd modbus_client.read_holding_registers(0, count10, slave1) if rd.isError(): print(f[{time.time()}] 读取失败: {rd}) time.sleep(30) continue values rd.registers temp values[0] / 100.0 current values[1] / 1000.0 vibration_rms values[2] / 1000.0 ts time.time_ns() point Point(compressor) \ .tag(device, comp_01) \ .field(temp, temp) \ .field(current, current) \ .field(vibration_rms, vibration_rms) \ .time(ts) write_api.write(bucketfactory_iot, recordpoint) except Exception as e: print(f[{time.time()}] 异常: {e}) time.sleep(5) time.sleep(1)上面只是示意真实项目里一个采集进程往往同时读几百个寄存器需要做线程池和批量读取不能每秒都串行阻塞。还有一个小技巧采集程序的日志一定要带上时间戳否则出问题时根本没法对齐现场时序。4.3 特征提取与模型训练从波形到故障评分原始振动波形不能直接进模型必须先做特征工程。对一个1秒滑动窗口的振动数据我一般算这些特征时域上的RMS、峰值、峰峰值、峭度频域上的频谱能量分段、主频位置、边频带能量。关键特征不用多十几个足够。然后把这些特征和电流、温度合并成一个样本用于训练。故障预测模型可以分两步先做无监督异常检测用孤立森林把明显偏离历史分布的样本标出来再做有监督分类用LightGBM结合维修记录标注的健康、隐患样本。代码流程大概是这样的import numpy as np from sklearn.ensemble import IsolationForest # window_samples: 一维振动数组, 长度10000 rms np.sqrt(np.mean(window_samples ** 2)) peak np.max(np.abs(window_samples)) kurtosis np.mean((window_samples - np.mean(window_samples)) ** 4) / (np.std(window_samples) ** 4 1e-12) fft np.fft.rfft(window_samples) freq np.fft.rfftfreq(len(window_samples), d1 / 10000) band_energy np.sum(np.abs(fft[(freq 1000) (freq 5000)])) features np.array([rms, peak, kurtosis, band_energy]) # 训练孤立森林, 用历史正常样本 model IsolationForest(contamination0.01) model.fit(history_features) score model.decision_function(features.reshape(1, -1))这里要解释一下decision_function得分越低越异常。实际部署时不要只看单次得分我会对连续5个周期取滑动平均低于阈值并且持续3个周期以上才触发预警这样能挡掉不少偶发噪声。训练数据量至少要收集正常运行数据1个月以上建立“正常包络”故障样本有多少用多少不够就靠无监督异常检测兜底。模型上线后每季度重训一次要记录模型版本和数据分布变化。4.4 预警与联动只报警还是直接干预模型输出健康度0到100接下来怎么联动我的推荐等级是分三步走等级一健康度偏低时在Web看板标黄提示检查等级二低于阈值连续3次自动生成维修工单同时给值班人员发消息等级三只有当设备本身已经带有独立安全保护逻辑时才考虑由AI触发“建议停机”并且这个信号必须送给人确认而不是直接给执行机构。为什么不敢让AI直接跳机因为预测模型本质是“大概率”大概率不等于100%一旦误报造成非计划停机代价不是模型精度那点提升能弥补的。我见过有工厂把预测模型接成直接停机结果一个月内误跳两次整个项目直接被车间主任封杀掉。稳妥的路线是上线前三个月开影子模式只记录“如果当时介入会发生什么”三个月统计下来误报率和漏报率都给老板看清楚了再谈自动干预。5. 现场掉链子常见问题与排查实录5.1 连不上、读不对协议和网络的坑做工业AI一半时间在跟通信较劲。OPC UA连不上先查网段和防火墙很多工厂的控制网和办公网做了VLAN隔离AI服务器不在同一VLANOPC UA广播发现根本过不去Modbus TCP时好时坏先看端口有没有被防火墙限制再看PLC的Modbus连接数有些老PLC只允许两三路连接第四路一上来就被拒。读出来的数据不对优先怀疑寄存器地址偏移、数据类型解析、字节序大小端。同样的0x1234大端和小端读出来天差地别。到现场不要对着电脑猜直接用调试工具直接读原始值和仪表盘比对很快就能定位。这里再补充一个容易踩的坑很多仪表返回的寄存器值是原始整数要除以量程系数才是工程值系数没写对后面所有模型都会学歪。5.2 模型一上线就误报数据分布变了训练时准确率95%上线当天狂报故障这种问题我遇到过好几次。最典型的两个原因第一训练数据里混入了不同工况模型分不清“正常满载”和“异常过热”一遇到正常但没见过的工况就报第二模型上线前没有做特征分布监控现场环境温度一变、负载一变特征分布漂移模型阈值就失效。排查方法把误报时刻的特征值拉出来和训练集特征分布对比看是不是工况标签缺失然后重新聚类工况、缩小训练范围或者对特征做标准化。另外对模型失效要建立监控每N小时记录推理结果在特征空间的分布漂移超过一定程度主动报警提醒重训。这个过程一开始觉得麻烦但真能救命。5.3 推理延迟超标别急着加GPU视觉检测一旦延迟超标先别急着换GPU把开销最大的三个环节列出来算账图像传输、预处理、推理。很多时候延迟都耗在图像从相机到算法的链路上或者CPU解码上。用OpenVINO、TensorRT加速推理当然有效但先把图像尺寸缩小、画幅裁剪、帧率降到实际需要往往立竿见影。工业现场的实时性要求是分级的温度趋势预测允许几百毫秒视觉定位要求几十毫秒安全联锁是毫秒级且绝不能靠AI。把需求吃透再定方案能省一大笔钱。很多供应商一上来就推荐顶配GPU实际上对8ms延迟和80ms延迟需求来说硬件成本能差出好几倍。5.4 操作员不信任最大的坑是“人”最后说一个技术之外但极其要命的坑。再好的模型如果操作员看不懂AI为什么给出这个建议他们就不敢用。我的办法是让AI建议“可视化可追溯”界面上不只显示“建议降低温度”还要显示历史趋势、模型判断依据、该建议的历史命中率。一旦点击采纳系统记录下操作员、时间、建议值和实际结果。这样跑两三个月积累出几百条可核对记录信任度自然上来。可解释性不是给论文看的是给车间老师傅看的。如果他们不理解就不要急着谈自动干预。先让人工把模型当“参考消息”用一段时间比任何口号都管用。6. 写在最后一点个人实操体会最后分享三个建议。第一千万别从“全厂智能化”这种大蓝图开始先找一条产线、一种设备、一个高频痛点做成最小闭环。第二AI工业控制系统的本质不是“AI替代控制”而是“AI扩展控制系统的感知和决策能力”把边界画清楚安全兜底留下来。第三2026年做这个方向可以大胆用Agent辅助流程但每一步输出都要留痕、可回退这样现场才会给你试错的机会。我个人踩过很多坑之后最大的感受是AI模型再先进最后能不能落地拼的还是工程细节是数据干不干净、网络稳不稳定、人有没有被吓到。搭建这套系统慢就是快先把一个点打透再谈复制到整条产线。

相关新闻

从66页工业手册到知识库Agent:RAG与工程实践全解析

从66页工业手册到知识库Agent:RAG与工程实践全解析

“知识库Agent这条主线,是从一份66页工业库长出来的。”这句话我到现在都记得,是项目启动会上拍板时说的原话。当时我们手头最值钱的资产,是一本66页的设备维护手册,内容覆盖空压机点检、液压系统参数、报警代码和备件清单。车间老…

2026/10/5 9:00:46 阅读更多 →
隔离内网AI Agent实战:离线部署、LangGraph编排与高并发改造

隔离内网AI Agent实战:离线部署、LangGraph编排与高并发改造

做了两年多隔离内网环境下的AI Agent项目,说实话,这个活跟你在公网上联个模型API做个demo完全是两码事。隔离内网里没有公网模型接口可达,pip install直接超时,连权重文件都得提前打好包扛进去,所有事情都得在两个网络…

2026/10/5 9:00:46 阅读更多 →
AI应用架构图不是PPT,而是责任切片地图

AI应用架构图不是PPT,而是责任切片地图

1. 这不是画PPT,而是给AI系统“搭骨架”“图解AI应用架构设计”——这六个字一出来,很多人第一反应是:哦,又要学画流程图了?配色怎么选?箭头用实线还是虚线?UML还是C4?其实完全想偏了…

2026/10/5 9:00:46 阅读更多 →

最新新闻

安卓逆向学习路线:从应用层分析到Native层对抗

安卓逆向学习路线:从应用层分析到Native层对抗

这几年时不时就有人跑来问我:安卓逆向怎么学?是不是得会汇编?要不要先学破解?也有人直接在搜索框里敲“android 逆向学习路线”“安卓逆向教程”,然后被一堆零散的资料劝退。作为常年在这行折腾的人,我太清…

2026/10/5 9:45:38 阅读更多 →
STC8H硬件IIC驱动OLED屏:主从关系、初始化与实战排错指南

STC8H硬件IIC驱动OLED屏:主从关系、初始化与实战排错指南

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

2026/10/5 9:45:38 阅读更多 →
如何读懂芯片时序图并写出可靠驱动代码?从时序图到嵌入式驱动开发实战

如何读懂芯片时序图并写出可靠驱动代码?从时序图到嵌入式驱动开发实战

1. 为什么时序图是驱动开发的“翻译蓝本”干了这么多年嵌入式驱动,我见过太多人拿到芯片手册直接翻寄存器表,抄一段网上的例程就跑,跑不通就抓瞎。说句实在话,芯片手册里最值得反复琢磨的既不是引脚定义,也不是寄存器位…

2026/10/5 9:45:38 阅读更多 →
从Q-Learning到DQN:深度强化学习实战解析与代码实现

从Q-Learning到DQN:深度强化学习实战解析与代码实现

1. 为什么深度学习能在决策问题上发力:从Q-Learning到DQN的认知跃迁先纠正一个常见的误区:DQN不是"用神经网络替换Q表"这么简单。如果你只把它理解成查表方式的升级版,后面遇到的收敛困难、训练震荡、奖励炸掉这些问题,…

2026/10/5 9:45:38 阅读更多 →
AgentKit模型网关实战:统一多模型接入、路由与治理

AgentKit模型网关实战:统一多模型接入、路由与治理

我最早接触模型网关这个概念,不是因为赶时髦,而是被真实的混乱逼的。当时手头一个项目要同时接三家模型服务——对话用一家,轻量任务用另一家,偶尔还要切到第三家做对比评测。结果就是代码里堆满了分支判断,每个模型一…

2026/10/5 9:45:38 阅读更多 →
OpenRig 开放式机架主机,从选材到组装的完整 DIY 指南

OpenRig 开放式机架主机,从选材到组装的完整 DIY 指南

组装过几台 OpenRig 之后,我发现这个项目比想象中成熟得多。OpenRig 不是什么新概念,它是一套开源的开放式机架主机方案,简单说就是把传统机箱的侧板、前面板和顶盖全部去掉,用铝型材搭出一个开放测试平台,让主板、显卡…

2026/10/5 9:44:38 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

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

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

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

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/5 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 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/4 11:40:45 阅读更多 →
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/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练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/4 20:14:29 阅读更多 →