控制科学如何约束AI:在安全边界内实现智能融合
1. “边界”和“大脑”的相遇控制科学给AI定了什么规矩过去两年我一直在做自动控制与人工智能融合的落地项目从电机调速、机械臂轨迹规划到无人车局部路径规划都碰过。团队里一直有两种声音一种是“AI赋能控制”把神经网络、强化学习堆上去认为数据足够就能替代手动建模另一种是“控制约束AI”强调稳定性、实时性、可验证性这些控制科学的老规矩不能丢AI只能在框好的范围内活动。最开始我把它们当成两条相反的技术路线项目做多了才明白这其实是一枚硬币的两面。控制科学给AI提供的不是阻碍而是一套能让AI真正“上线运行”的责任体系。1.1 控制科学的底层习惯先确保不坏再谈优化控制科学的整套方法论骨子里都写着“先保证不坏再讨论更好”。设计一个PID控制器你要回答闭环系统稳不稳定设计一个模型预测控制MPC你要回答在输入约束下能不能在有限时间内到达目标分析干扰抑制时你要回答输出能控制在什么范围以内。这些回答不是拍脑袋而是可以通过传递函数、状态空间方程、Lyapunov定理、鲁棒性分析推导出来的数学结论。我身边的控制工程师做方案时有个习惯一切指标都尽量写成可验证的数学性质稳定性、收敛性、鲁棒性、约束满足性。他们不愿意说“我感觉应该没问题”而是说“这个结论在哪些假设下成立超出了假设范围我不能保证”。这种习惯看似保守放到真实物理系统里却是保命的底线。控制器输出直接作用于电机、气缸、舵机这些执行机构一个没经过验证的信号就可能造成设备损坏、产线停机甚至人身安全风险。相比之下AI社区的工作方式更接近“结果说话”。你给我海量数据我拟合出隐藏在其中的规律不需要依赖人工指定的物理公式。这让它特别擅长处理那些没有现成解析表达式的复杂关系比如视觉感知、语义理解、高维状态下的决策。但这套方法论有一个短板它很难在部署前给出一个全程有效的安全证明。你只能在训练集和验证集上评估效果而真实运行时的输入分布一旦偏移模型可能给出完全离谱的输出且系统并不会主动告诉你“我越界了”。1.2 AI的强项在没有公式的地方找规律AI工程师的思维是数据驱动的反向归纳收集足够多的输入输出样本让网络自己去逼近那个未知的函数。这正好补上了控制科学的一个短板——很多被控对象的精确动力学模型很难获得。液压系统温度变化带来的参数漂移、机械臂末端柔性与负载耦合、无人机在乱流中的气动效应这些如果你坚持手推精确公式可能要花几周甚至几个月。而用神经网络去学习模型残差不需要先验假设只要激励数据足够充分就能把“理论模型和真实对象之间的误差”学出来。这种能力在感知层面尤其明显。传统控制里的传感器往往是编码器、陀螺仪、电流环信号它们物理含义明确但信息维度低。现在客户动不动就要求摄像头、激光雷达参与感知要识别目标物体、检测障碍物、估计人的意图。这些任务没有一个可以靠解析公式完成只能交给深度网络。换句话说AI充当了一个更高维度的“眼睛”把原始像素变成控制层可以使用的语义信息。1.3 双向融合的真正含义这两套方法论在一起工作而不是互相替代。正向的“AI赋能控制”是把AI当成建模工具、参数估计器、感知理解层、策略搜索器让传统控制器获得更多信息和更强性能。反向的“控制约束AI”是用安全性、稳定性、实时性三大硬约束把AI限制在一个可以被验证的工作范围里。AI可以提出任何有创意的方案但最终这个方案能不能交给执行机构要由控制层决定。我见过太多项目在这一点上模糊处理。有人把强化学习策略直接接到电机驱动上结果动作抖动严重没过多久就烧了驱动器也有人把神经网络当作万能模块塞进系统出问题后才发现没有任何手段界定故障边界只能全部回退到手动控制。反过来如果只抱着传统控制不放又会发现面对复杂感知和高维决策时完全没有招数。现在行业里热议的“多智能体协同”“多模型协作”本质上也是同一个问题的延伸。多个AI节点要想协作先要解决共识问题、通信时延问题、单点故障问题——这些都是控制科学的基本功课。没有边界多个“大脑”各自乱来只会出现系统内部互相打架的局面。2. 落在代码上的“AI赋能控制”三种最值得上手的做法说完了概念讲讲实际可以动手的路径。我不推荐一上来就做端到端神经网络代替控制器那种项目风险太高、链路太长。我更倾向把AI分散到控制系统的局部环节每个环节都能单独验证单独回滚。2.1 用神经网络学习“残差模型”而不是从零学整个对象做控制的人都知道建立一个相对精确的对象模型是王道但现实对象总有一些无法建模的动态。常规做法是把对象拆成两部分已知的线性主模型加上无法解释的残差。神经网络最合适的角色就是拟合这个残差。我在一个电机负载辨识项目里就用过这个思路。项目早期尝试直接用MLP去拟合端到端的转矩-转速关系效果不佳网络对训练数据覆盖不足的区域外推能力很差。后来改成“线性基准模型残差网络”先用实验数据辨识出一个二阶线性模型再用小规模全连接网络去拟合线性模型的预测误差。# 残差模型的核心逻辑示意 # x_next A x B u f_residual(x, u) # f_residual 用神经网络近似只负责预测“线性模型说不清的那部分” class ResidualDynamics(nn.Module): def __init__(self, hidden_dim64): super().__init__() self.fc nn.Sequential( nn.Linear(3, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, 1) ) def forward(self, x, u): return self.fc(torch.cat([x, u], dim-1))这样做的好处是网络学习难度大大降低。它不需要从零学会“这个世界是什么样”只需要回答“我已知的模型在哪些地方有偏差”。训练数据量要求也小很多泛化性能明显更稳。采集训练数据时有一个容易忽略的点输入信号必须“充分激励”。如果你采集的都是恒速运行的数据残差网络学到的只是稳态偏差一旦进入变速阶段就会失准。通常我会在转速、转矩允许范围内叠加伪随机激励信号让对象在各个动态区间都有数据覆盖。部署时再补一步固定化。训练好的残差网络要导出成ONNX或者直接用C重写保证推理时间固定。别在控制周期里跑Python动态图推理时延波动会让整个闭环变脆。2.2 强化学习负责“定目标”传统控制器负责“保执行”第二个我比较推荐的模式是层级拆分强化学习在高时间尺度上决策输出参考轨迹或目标值底层仍然由PID、滑模控制这类传统算法保证动态性能。用无人机悬停任务举例底层是姿态内环和速度内环采样率高带宽要求严这部分我用高带宽PID保证无人机即使在强风干扰下也不会姿态发散。上层是强化学习智能体输入包括当前位置误差、视觉障碍物距离、当前速度输出是一个目标加速度或者期望航向。这个目标值不会直接加到电机PWM上而是先经过速度控制器生成期望姿态再由姿态控制器分配到各电机。这种分层带来两个直接好处强化学习不直接接触执行器高频抖动被底层滤波器抑制底层控制器的物理约束依然生效即使上层AI输出一个不合理的目标执行层也会把它饱和到安全范围。实现时注意奖励函数设计。如果只给“快速到达目标点”的奖励智能体会倾向于输出激进的目标值时间长了机械结构受不了。我会在奖励里加入目标值变化率惩罚项抑制策略输出的大幅跳变。这相当于从训练阶段就给AI套上一层软约束。2.3 让AI更新MPC的预测模型而不是替代优化器模型预测控制是目前工业界最能兼顾约束和性能的算法之一。它在每个控制周期求解一个有限时域的优化问题把未来若干步的状态预测和成本函数放进同一个框架。MPC的短板在于预测模型精度模型越准预测越可靠控制性能越好模型一旦偏差较大输出就会变得保守甚至失稳。AI在这里最安全的角色是“在线参数估计器”。我做过一个重载机械臂项目末端负载未知且随时变化机械臂动力学中的惯性矩阵跟负载质量直接相关。传统做法是设计自适应观测器但参数变化范围大、工况复杂自适应算法收敛慢。改用一个小型神经网络输入是当前关节角度、角速度和力矩指令输出是负载质量估计值再把估计值注入MPC的预测模型参与在线计算。这个设计的精妙之处在于AI没有直接生成控制量只是给MPC提供了一个更准确的参数输入。出了任何问题排查链路非常清晰——要么估计器输出异常要么MPC优化器本身有bug两个环节可以独立隔离验证。安全危害被大大约束。3. 反过来怎样让“控制约束AI”不只是一句口号把AI加进控制回路的下一步就是给AI套上真正能约束住它的技术框架。这不是大脑里的“思想实验”而是有具体数学工具、有明确代码位置、有可靠硬件支持的工程动作。3.1 控制屏障函数把安全要求变成代数条件先讲我最常用的一个工具控制屏障函数Control Barrier FunctionCBF。它的核心思想是为系统定义一个人为规定的“安全集”然后要求控制输入让系统始终留在安全集内。只要下式成立安全集就是正向不变的要求 h(x) 0 描述安全集约束为 Lf h(x) Lg h(x) u -α h(x)其中 α 通常取正数。设计时把当前时刻AI输出的候选动作 u_ai 送进一个二次规划min ||u - u_ai||^2s.t. Lf h(x) Lg h(x) u -α h(x)也就是说我们尽量保留AI的意图但如果它的候选动作会让系统朝不安全方向跑这个数学约束就会把动作修正到安全集合边界上。我用一句话跟团队解释这个逻辑AI可以随便出主意但能不能行动由CBF这个“守门员”说了算。实际使用中要注意模型误差问题。CBF约束依赖系统的动态模型如果模型误差太大守门员本身也会看走眼。一种工程做法是把模型不确定性考虑进控制增益让约束更保守另一种做法是把不确定部分归入一个已知界在约束中额外减去一个安全裕量。两条路都比裸奔好。3.2 影子模型加安全通道AI输出要过两道闸门CBF解决的是“动作是否安全”的问题但真实系统里AI模块还可能抽风、宕机、被异常数据干扰。这就要在系统架构上做文章。我目前的工程标准流程是“AI候选动作→影子模型预测→安全通道校验→执行机构”两道闸门缺一不可。第一道闸门是影子模型用一个高保真但计算代价较高的动力学模型把AI候选动作代入预测未来1到2秒的系统轨迹第二道闸门是安全通道检查预测轨迹是否触碰关节限制、速度限制、加速度限制或者安全工作区域。只要有一项越界AI的输出就被丢弃系统转入降级模式。关键点在于影子模型和安全通道必须独立于AI模块的代码路径。AI模块崩溃、输入特征异常、推理超时安全通道照常工作。我更倾向把安全通道写成一个无外部依赖的独立模块里面甚至不建议使用神经网络全部用显式公式和阈值判断。这样整个安全逻辑可以被审查、被测试、被形式化验证而不是黑盒套黑盒。3.3 实时性是控制约束AI里最硬的一条很多人讨论AI进控制回路时只谈精度不谈时延这是一个巨大误区。控制理论的大量结论都是建立在采样周期固定、计算延迟有界的前提下的。一个神经网络推理在高性能GPU上可能只要几毫秒到了嵌入式板上可能变成20毫秒甚至抖动到40毫秒。这些额外延迟对闭环系统来说相当于在反馈路径上插入了一个可变相位滞后会直接吃掉控制器的相位裕度。我在调试一个伺服系统时就遇到过这问题加入AI目标调整模块之后输出开始缓慢振荡。一开始怀疑控制器参数后来把推理时间记录拉出来一看神经网络推理时间从5毫秒跳变到25毫秒刚好落在谐振频率附近。后来做了两件事一是给AI模块分配固定的时间预算超时立即输出上一周期的安全默认值二是把网络推到板子上时先量化用定点推理把时延压缩到稳定区间。AI模块的不确定性被隔离在物理控制周期之外系统恢复稳定。4. 我在集成调试中踩过的坑和排查思路融合项目跟纯软件项目最大的区别是你没法在办公室里把所有问题都暴露完。真实系统的耦合效应会让很多看似无关的因素一起发作。下面几条都是我自己踩过、并且用了比较长时间才定位到根因的问题。4.1 训练数据与实际工况不一致最典型的是训练数据都在低速工况采集任务却要求高速。比如我做过一个移动机器人局部避障训练数据全在0.5m/s以下录制强化学习策略练得风生水起。结果一上现场机器人跑到1.2m/s时摄像头看到的场景开始出现运动模糊状态分布大幅漂移策略立刻表现出“没见过世面”的样子原地打转甚至撞墙。后来我加了域随机化训练时把传感器噪声水平、状态时延、质量参数、摩擦系数全部随机化逼着策略在更宽的分布上学习。虽然单次训练收敛变慢了但部署后泛化能力明显提升。数据分布问题不是模型问题是数据集设计的问题这个观念得从一开始就立起来。4.2 控制目标与AI目标互相对撞另一个坑是AI目标和控制层目标不一致。AI层为了拿到高奖励倾向于让机械臂快速到达目标底层控制器却在努力平滑轨迹、抑制振动。两边目标方向相反表现就是系统动作奇怪AI不断给出大幅度目标修正底层不断将其平滑掉执行器既累又振荡。解决思路是把奖励函数和控制层的软性约束对齐。我会把控制层的动作变化率惩罚、加速度限制翻译成奖励函数里的正则项。更简单的做法是让AI不要直接输出控制量而是输出阶段性的中间目标点轨迹的平滑和插值完全交给底层算法双方各管一摊冲突自然减少。4.3 模式切换时的手感和毛刺自动化系统通常要支持“手动/传统自动/AI增强”多种模式切换。如果你直接从传统模式切到AI增强模式极易出现输出跳变因为AI模块没有继承当前闭环状态。比如电机正在以1000rpm运行AI规划的目标速度却是500rpm切换瞬间力矩会突然反向冲击很大。工程上要做无扰动切换。我的做法是在AI模式启动时把AI模块内部的状态变量初始化到与当前传统控制器输出一致然后设置一个短过渡周期让混合比例从0线性增加到1。切换过程被主动控制而不是等待系统被冲击后再自行恢复。4.4 仿真到实机的距离完美假设的陷阱仿真环境里默认你能拿到干净、无损、无时延的状态量实际系统里这是不可能的。我在Gazebo仿真里训练好的机械臂拣选策略一搬到真机就开始颤振。原因归纳起来就三条视觉识别有量化误差目标位姿估计有几十毫秒延迟电机实际响应比仿真模型慢。处理方式是给仿真加“脏东西”视觉加噪声、状态加通信时延、执行器响应加一阶惯性环节。然后再加一个保守策略AI输出的目标要经过低通滤波和目标偏置处理避免对测量噪声过度反应。最后也是最重要的一环保持手动干预优先级最高AI系统再聪明也不能剥夺操作员的安全权限。5. 我的融合路线图小步快跑以安全为核心如果现在让我给一个团队重新设计一条从零开始的融合路线我不会让他们去冲一个全端到端的自动驾驶或者全自主机械臂而是建议分成三个阶段逐步推进。5.1 第一步从“感知”而非“决策”切入AI最安全的价值入口是感知层。目标检测、状态估计、语义分割、异常监测这些模块的输出本身不产生运动风险天然可控。就算识别错了顶多是被后级逻辑拒绝不会直接导致执行器动作失控。视觉引导AGV的路径识别就是这样的模式AI输出路径几何参数控制算法根据这些参数做速度规划和转向控制降低风险的同时快速验证AI在真实数据上的表现。5.2 第二步AI给出的目标先过“栅栏”当感知模块稳定之后再让AI参与决策但要给它加一道“目标栅栏”。所有AI输出先经过规则过滤目标点超出工作空间直接拒绝速度参考超过当前安全限速做饱和处理靠近障碍物时AI绕障结果与安全策略冲突安全策略优先级更高。这不是限制智能而是给AI建立一个现实世界的边界认知让它只能在自己被验证过的工作域里发挥。5.3 第三步验证、回滚、日志当“一等公民”真实部署不是演示一定要把回滚能力当产品功能来设计。每一个网络版本都要记录训练数据分布范围、特征归一化参数、验证通过场景清单。运行时决策日志必须完整保留包括AI原始输出、影子模型预测信号、安全通道是否介入、最终执行量。出问题的时候回溯链路要在几分钟内定位到是数据问题、模型问题还是约束配置问题。部署流程我通常会卡四道关大规模离线仿真、硬件在环测试、受限场景无人运行、有人监管试运行。任何一关没有达到预设通过标准都要回到上一环节修整不要硬着头皮往前推。5.4 工具选型的个人参考工具上我比较务实。训练环节用PyTorch和Stable-Baselines3这类成熟框架快速迭代策略原型导出时转ONNX再用ONNX Runtime部署到嵌入式平台控制主逻辑建议用C或具备实时保证的编程环境不要跟AI推理混在一个非实时进程里。仿真环境MuJoCo和Gazebo都够用关键是务必注入传感器噪声和通信时延否则仿真精度带来的只是虚假安全感。安全屏障函数方面有开源实现可以借鉴但一定要自己推导一遍约束条件理解它在你的对象模型下成立的前提。抄代码很容易抄不到的是对系统安全边界的理解。我个人现在给团队立了一条规矩AI可以提方案控制层必须有能力拒绝方案。每次评审项目时先问“如果AI完全失控系统是否还能保持安全”这个问题通过之后再谈性能提升。把AI放在驾驶席把控制科学放在守门员位置这段融合之路会走得远得多。

相关新闻

OneAPI 1.2.0 接口计费系统开源版:把 settings 改到 TaoToken 的本地部署与计费验证

OneAPI 1.2.0 接口计费系统开源版:把 settings 改到 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/9 9:30:42 阅读更多 →
WebGIS全链路解析:从坐标系、瓦片到前端选型实战

WebGIS全链路解析:从坐标系、瓦片到前端选型实战

很多人刚接触WebGIS,第一反应是去搜Leaflet、OpenLayers或者GeoServer的教程,结果学完还是懵的:这块到底是一套什么体系?为什么前端、后端、数据库、坐标系、切片、协议这些名词全搅在一起?我印象最深的一次&#xff0…

2026/10/9 9:30:42 阅读更多 →
亚马逊FBA分仓、库存与清关三大痛点:供应链重构实战解析

亚马逊FBA分仓、库存与清关三大痛点:供应链重构实战解析

做亚马逊这几年,我最大的感受就是:平台规则一变,卖家就得跟着换血。最近圈子里聊得最多的,不是单量,不是广告费,而是三个字——“分仓、库存、清关”。这三个词每一个单拎出来都能写一篇吐槽,放…

2026/10/9 9:30:42 阅读更多 →

最新新闻

基于Python+MILP的风光储联合调度:电池与废弃矿井抽蓄互补优化

基于Python+MILP的风光储联合调度:电池与废弃矿井抽蓄互补优化

这两年搞新能源消纳的调度研究,有个词绕不开:互补。风电场最常见的情况是深夜大风、负荷却躺在地板上,光伏正好相反,正午出力冲顶、电网一时间吃不下。单靠任何一种电源都没法把这条曲线磨平,于是风电、光伏和储能组成…

2026/10/9 10:58:44 阅读更多 →
深度聚类开源代码库实战指南:从DEC到对比学习的工程落地

深度聚类开源代码库实战指南:从DEC到对比学习的工程落地

在无标注数据这块,很多人习惯性地打开sklearn直接跑一个KMeans,但凡是真正做过几年聚类项目的人都有体会:高维图像、文本向量、用户行为序列这类数据,传统聚类几乎每次都会翻车。原因不是聚类算法本身不行,而是输入特征…

2026/10/9 10:58:44 阅读更多 →
微网虚拟电厂多场景随机规划与CVaR风险优化调度策略

微网虚拟电厂多场景随机规划与CVaR风险优化调度策略

开场:为什么风险量化成了微网调度的硬需求做调度的人,不管是在传统电力系统还是园区级微网,现在绕不开一个词:风险。风光出力天生不稳定,负荷预测也不可能百分之百准,以前我们做确定性调度习惯了&#xff0…

2026/10/9 10:58:44 阅读更多 →
数理统计大作业实战:从假设检验到Python实现的全流程指南

数理统计大作业实战:从假设检验到Python实现的全流程指南

简介:这是一份面向数理统计课程学习者与机器学习初学者的完整大作业报告,围绕鸢尾花数据集展开多方法分析。报告以花萼与花瓣的四个属性为输入,使用马氏距离度量样本相似性,通过混合高斯模型实现聚类,借助主成分分析与…

2026/10/9 10:58:44 阅读更多 →
硅基流动+Chatbox:零成本长期运行DeepSeek-R1的本地AI工作流

硅基流动+Chatbox:零成本长期运行DeepSeek-R1的本地AI工作流

简介:本资源是一份面向初级开发者与个人AI实践者的低成本大模型应用搭建指南,聚焦如何利用硅基流动平台的DeepSeek API与开源跨平台AI助手Chatbox,构建稳定、免费且响应流畅的本地化AI应用。内容覆盖硅基流动高额度免费Token(新用…

2026/10/9 10:58:44 阅读更多 →
基于JWT/JWE的跨系统安全数据透传方案详解

基于JWT/JWE的跨系统安全数据透传方案详解

先说结论:这套“基于JWT/JWE的跨系统安全数据透传方案”,解决的是两个不同域、不同技术栈、甚至不同运维体系的服务之间,如何安全地把一段结构化数据从A端交付到B端——既保证数据在“路上”不被看、不被改,又保证接收方能够验证数…

2026/10/9 10:57:43 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

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/8 15:26:32 阅读更多 →
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/8 15:26:40 阅读更多 →
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/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/9 6:17:20 阅读更多 →