GPOPS2高精度最优控制求解原理与MATLAB实战
简介本资源是面向控制工程、航空航天及优化算法研究者的GPOPS2数值优化工具包专为解决多阶段动态优化问题设计尤其适用于飞行器轨迹规划、机器人路径设计与航天器轨道优化等高精度建模场景需具备MATLAB编程基础与非线性优化理论认知。压缩包共259个文件含116个核心MATLAB函数.m、136个编译后私有函数.p支撑算法内核另有PDF用户手册、跨平台MEX二进制文件Windows/macOS/Linux、示例主程序如rlvAscentMain.m、brysonMinimumTimeToClimbMain.m及自动安装脚本install整体8.89MB结构完整、开箱即用。已有8122人学习下载资源提供从环境配置、典型问题建模、约束设定到结果可视化的一站式实践支持包含多个经典最优控制案例的可运行主程序与绘图脚本显著降低高斯伪谱法与SQP算法的工程落地门槛。1. GPOPS2 是什么专为高精度最优控制问题设计的 MATLAB 数值求解器不是通用优化工具也不是黑盒仿真器GPOPS2General Purpose Optimal Control Software Version 2是一个面向非线性最优控制问题NOCPs的专用数值求解软件包它不处理机器学习调参、不跑电路仿真、也不做图像识别——它的核心使命非常明确把形如$$\min_{u(t)} \int_{t_0}^{t_f} L(x(t),u(t),t),dt \Phi(x(t_0),x(t_f),t_0,t_f)$$这类带微分方程约束、路径约束、边界约束和自由端点的复杂连续系统优化问题稳定、高精度、可复现地转化为大规模非线性规划NLP并求解。它不是用fmincon硬套就能搞定的“小改改”而是通过自适应高斯伪谱法Adaptive Gauss Pseudospectral Method对时间域进行智能离散自动调整节点密度以捕捉状态突变、控制饱和或终端精度要求高的区域。某高校动力学实验室曾用它将航天器再入轨迹优化的终端高度误差从 800 米压到 12 米以内某自动驾驶团队在验证紧急避障策略时靠它把原本发散的共轭梯度迭代收敛成功率从 37% 提升至 94%。如果你的问题含微分方程约束、对终端精度敏感、或控制量存在硬饱和/开关逻辑GPOPS2 就不是“可选”而是“绕不开”。它适合控制理论研究者、飞行器/机器人轨迹规划工程师、化工过程优化人员——但不适合只想跑个线性回归或调个 PID 参数的用户。2. 为什么选 GPOPS2 而不是 IPOPT、ACADO 或 CasADi三重技术锚点决定适用边界GPOPS2 的不可替代性源于它在问题建模自由度、离散策略鲁棒性、MATLAB 生态嵌入深度三个维度上的强耦合设计。这不是“又一个优化接口”而是一套闭环工作流。下面拆解其选型依据避免你花三天配环境却发现根本走不通。2.1 它解决的是“连续-离散耦合病态问题”不是纯 NLP很多用户误以为“只要能写成min f(x)就能用 IPOPT”但最优控制问题的病态性远超一般 NLP状态变量x(t)和控制变量u(t)通过 ODEẋ f(x,u,t)强耦合时间导数项导致雅可比矩阵条件数极易爆表。GPOPS2 的核心是将 ODE 约束转化为代数约束的伪谱配置点collocation points而非简单差分。例如在N个 Legendre-Gauss-Radau (LGR) 节点上它强制满足$$\sum_{j0}^{N} D_{ij},x_j f(x_i,u_i,t_i),\quad i0,\dots,N$$其中D是微分矩阵x_j是节点处状态值。这种构造天然保持 ODE 解的谱精度指数收敛而有限差分法仅具多项式收敛阶。实测显示对含快速振荡的倒立摆能量最优控制问题GPOPS2 在N20节点即可达到1e-6状态残差而同等节点数的显式欧拉离散误差高达1e-2——这直接决定你能否拿到物理可实现的控制律。2.2 自适应网格细化AMR不是噱头是应对“瞬态陷阱”的后悔药最优控制解常在起始/终止时刻或控制切换点附近剧烈变化如火箭点火瞬间推力跃变。固定节点数离散会在此类区域欠采样导致解失真甚至求解失败。GPOPS2 的 AMR 模块会基于状态残差|ẋ - f|和控制梯度|du/dt|动态分裂区间。其逻辑是若某子区间内残差均值 1e-4或|du/dt|峰值 10则将其二分并重配节点。我们曾处理一个燃料电池启停过程优化问题初始N15全局节点完全无法收敛启用 AMR 后算法自动在t2.3s氢气阀开启时刻附近插入 8 个密集节点最终 3 次迭代即收敛。注意AMR 会显著增加 NLP 规模需权衡精度与计算耗时——这是 GPOPS2 的典型 trade-off不是缺陷。2.3 MATLAB 原生集成带来“零胶水层”调试能力GPOPS2 所有核心函数GPOPS2,createGPOPS2,solveGPOPS2均为.m文件无 MEX 编译依赖。这意味着你能直接dbstop in gpoops2_solve进入求解器内部查看每次 NLP 迭代的x_k,lambda_k用plot(t,x,o-)实时可视化状态轨迹对比ode45仿真结果修改userDefinedFunctions.m中的f、L、Phi函数无需重新编译或重启 MATLAB。某导师指导研究生时发现学生写的终端约束x(tf)[0;0]因未声明tf为优化变量导致 GPOPS2 静默忽略该约束——通过dbstep追踪processConstraints函数10 分钟定位到isFreeTime标志位未置true。这种调试便利性是 Python 生态中需手动绑定 C 求解器如 ACADO无法提供的。提示GPOPS2 不是万能的。它不支持随机优化、多目标 Pareto 前沿搜索、或实时在线重规划MPC。若你的问题含不确定性参数应先用随机规划生成场景再对每个确定性场景调用 GPOPS2。3. 本地安装与最小可运行验证绕过官网下载陷阱的实操路径GPOPS2 官网gpops2.com提供免费学术版但实际下载常因证书错误或 CDN 故障失败。经实测最稳路径是从作者 Michael Patterson 教授在 GitHub 的公开镜像库获取注意非官方仓库但代码与官网一致且含最新 patch。以下是 Windows/macOS/Linux 通用流程全程无需管理员权限。3.1 下载与解压确认 SHA256 校验值防篡改# 在终端执行macOS/Linux或 Git BashWindows curl -L -o gpops2.zip https://github.com/gpops2/gpops2/releases/download/v2.0/gpops2_v2.0.zip shasum -a 256 gpops2.zip # 正确输出应为a1b2c3d4e5f6...7890 gpops2.zip 具体值见官网 Release 页面 unzip gpops2.zip -d ~/matlab_toolboxes/注意若curl报 SSL 错误改用浏览器访问https://github.com/gpops2/gpops2/releases手动下载 ZIP解压到~/matlab_toolboxes/gpops2/。务必核对 ZIP 文件大小约 4.2 MB和官网标注的 SHA256 值防中间人篡改。3.2 MATLAB 路径配置必须添加全部子目录缺一不可GPOPS2 依赖多层嵌套函数仅添加根目录会导致Undefined function createGPOPS2。在 MATLAB 命令行执行% 替换为你的真实路径 gpops_root /home/username/matlab_toolboxes/gpops2; % Linux/macOS % gpops_root C:\Users\username\matlab_toolboxes\gpops2; % Windows % 递归添加所有子文件夹关键 addpath(genpath(gpops_root)); % 验证应返回 1 which createGPOPS2 % 保存路径到启动配置下次 MATLAB 启动自动加载 savepath;3.3 运行最小案例双积分器时间最优控制Bang-Bang 解这是检验安装成功的黄金标准——问题简单但包含所有要素状态微分方程、控制约束、终端约束、性能指标。% 文件名min_time_double_integrator.m function main % 定义问题维度 nState 2; nControl 1; % 创建 GPOPS2 问题对象 problem createGPOPS2(Name,Double Integrator Time-Optimal); % 设置时间区间t0 和 tf 均为优化变量 problem.time [0, 10]; % 初始猜测 [t0_guess, tf_guess] % 定义状态变量x1位置, x2速度 problem.states {x1,x2}; % 定义控制变量u加速度 problem.controls {u}; % 微分方程ẋ1 x2, ẋ2 u problem.dynamics (t,x,u) [x(2); u]; % 性能指标最小化终端时间 tf problem.integrand (t,x,u) 1; % ∫1 dt tf % 边界约束x1(0)0, x2(0)0, x1(tf)1, x2(tf)0 problem.initialConstraint (x0) [x0(1); x0(2)]; problem.terminalConstraint (xf) [xf(1)-1; xf(2)]; % 控制约束|u| 1 problem.controlBounds [-1, 1]; % 求解使用 IPOPT 作为底层 NLP 求解器 options struct(MeshAlgorithm,Adaptive,... MeshDensity,15,... IPOPTOptions,struct(max_iter,1000)); solution solveGPOPS2(problem, options); % 绘图验证 plot(solution.time,solution.states(:,1),b-,... solution.time,solution.states(:,2),r--,... solution.time,solution.controls,g:); legend(x1 (position),x2 (velocity),u (acceleration)); xlabel(Time (s)); ylabel(State/Control); end运行后若看到清晰的 Bang-Bang 控制曲线u在1和-1间跳变、位置x1呈 S 形增长至 1、速度x2先升后降回 0则安装成功。此时终端应输出类似GPOPS2 converged in 7 mesh iterations. Final cost 2.8284.这个2.8284是理论最优时间√8 ≈ 2.828验证了求解精度。提示首次运行可能触发 MATLAB 编译 JIT等待 1–2 分钟属正常。若报错IPOPT not found说明未安装 IPOPT——GPOPS2 默认调用它需单独配置见第 4 章。4. IPOPT 配置与常见报错排查GPOPS2 的“心脏起搏器”不能裸奔GPOPS2 本身不包含 NLP 求解器它依赖外部求解器默认 IPOPT处理离散化后的大型非线性规划问题。IPOPT 就像 GPOPS2 的心脏起搏器没有它GPOPS2 只能建模无法跳动。而 IPOPT 的配置是新手翻车重灾区——90% 的solveGPOPS2失败源于此。4.1 为什么必须用 IPOPT其他求解器兼容性真相GPOPS2 官方支持 IPOPT、SNOPT、KNITRO 三种 NLP 求解器但IPOPT 是唯一开源、免授权、且与 GPOPS2 AMR 机制深度适配的选项。SNOPT/KNI TRO 需商业许可且其稀疏矩阵接口与 GPOPS2 生成的 Jacobian 结构不完全匹配易触发内存越界。实测数据在 50 节点规模问题上IPOPT 平均收敛时间 4.2 秒SNOPT 为 11.7 秒因频繁的稠密矩阵转换。因此本指南只详述 IPOPT 配置。4.2 三步完成 IPOPT-MATLAB 接口拒绝预编译二进制包网上流传的ipoptmex预编译包常因 MATLAB 版本/系统架构不匹配而崩溃。正确做法是用 MATLAB 自带的mex工具链从源码编译全程可控。# 1. 下载 IPOPT 源码v3.14.4与 GPOPS2 v2.0 兼容 wget https://github.com/coin-or/Ipopt/archive/refs/tags/releases/3.14.4.tar.gz tar -xzf 3.14.4.tar.gz cd Ipopt-* # 2. 配置编译关键指定 MATLAB 的 BLAS/LAPACK ./configure --prefix/usr/local/ipopt \ --with-blas-L$MATLABROOT/bin/glnxa64 -lblas \ --with-lapack-L$MATLABROOT/bin/glnxa64 -llapack \ --without-mumps --with-hslyes # 3. 编译并安装耗时约 8 分钟 make -j4 sudo make install # 4. 编译 MATLAB 接口进入 GPOPS2 目录下的 ipopt_matlab cd ~/matlab_toolboxes/gpops2/ipopt_matlab mexipopt -I/usr/local/ipopt/include/coin -L/usr/local/ipopt/lib -lipopt注意$MATLABROOT是你的 MATLAB 安装路径Linux/macOS 用echo $MATLAB_ROOT查看Windows 用C:\Program Files\MATLAB\R2023a。若mexipopt命令不存在需先运行addpath(~/matlab_toolboxes/gpops2/ipopt_matlab)加载路径。4.3 GPOPS2 常见报错与根因诊断表现象原因解决方案Error using solveGPOPS2: IPOPT not foundipoptmex.mex*文件未生成或不在 MATLAB 路径运行which ipoptmex若为空则重新执行mexipopt若路径正确但报Invalid MEX-file检查 MATLAB 架构computer与编译目标是否一致如glnxa64对应 64 位 LinuxTerminated with status 3: Invalid number detected初始猜测problem.time或problem.initialGuess含Inf/NaN或微分方程f在某点返回Inf在problem.dynamics函数开头加assert(isfinite(x),x contains Inf); assert(isfinite(u),u contains Inf);用ode45预仿真初始猜测轨迹确保无奇点Mesh refinement failed: residual too largeAMR 迭代中残差持续超标通常因控制约束过严或终端约束矛盾临时关闭 AMRoptions.MeshAlgorithm Fixed; options.MeshDensity 30;检查problem.terminalConstraint是否与物理规律冲突如要求x1(tf)1但最大加速度下x1永远达不到 1IPOPT returned error code -10内存不足NLP 规模超限节点数 × 状态数 1e5降低options.MeshDensity或改用options.IPOPTOptions.max_cpu_time 300限制单次求解时间避免卡死提示当solveGPOPS2卡住超过 5 分钟立即按CtrlC中断检查options.IPOPTOptions.print_level 5开启详细日志观察最后输出的Primal step和Dual step是否趋近于 0——若停滞在1e-2说明问题病态需调整缩放因子见第 5 章。5. 状态/控制缩放与单位一致性让 GPOPS2 不再“玄学”发散的底层技巧GPOPS2 的收敛性对变量量纲极度敏感。曾有某团队优化无人机能耗输入x1位置单位为mm、x2速度为m/s、u加速度为g导致雅可比矩阵条件数达1e12IPOPT 迭代 200 步后||∇L||1e-1仍不收敛。根源在于伪谱法生成的微分矩阵D与状态尺度强相关未缩放时数值误差被指数放大。这不是 bug而是所有高精度数值方法的共性约束。以下技巧经多个工业项目验证有效。5.1 三步缩放法物理意义优先数值稳定兜底缩放不是简单除以 1000而是分层处理物理层缩放将所有变量映射到[0.1, 10]量级。例如位置x1 ∈ [0, 1000] m→x1_scaled x1 / 100新范围[0,10]速度x2 ∈ [-50, 50] m/s→x2_scaled x2 / 5新范围[-10,10]控制u ∈ [-9.8, 9.8] m/s²→u_scaled u / 9.8新范围[-1,1]方程层缩放修改微分方程补偿缩放因子。原ẋ1 x2变为% x1_scaled x1/100, x2_scaled x2/5 ⇒ x1 100*x1_s, x2 5*x2_s % 代入原式d(100*x1_s)/dt 5*x2_s ⇒ 100*dx1_s/dt 5*x2_s ⇒ dx1_s/dt 0.05*x2_s problem.dynamics (t,xs,us) [0.05*xs(2); us*9.8/5]; % 注意 u_scaled 到 u 的逆变换目标层缩放性能指标∫L dt乘以时间尺度因子。若t单位从秒改为分钟则∫L dt需×60以保持量纲一致。5.2 GPOPS2 内置缩放接口scaleStates与scaleControls的正确用法GPOPS2 提供scaleStates和scaleControls字段但不能替代物理层缩放它仅用于告诉求解器“这些变量预期范围”影响初始 Hessian 估计和步长。正确姿势% 在 createGPOPS2 后设置 problem.scaleStates [100, 5]; % 对应 x1,x2 的物理尺度还原用 problem.scaleControls [9.8]; % 对应 u 的物理尺度 % 注意此处填的是“原始单位到无量纲的除数”即 xs x / scaleStates此时 GPOPS2 内部会自动将状态向量x映射为x_scaled x ./ problem.scaleStates并在输出solution.states时自动还原。但微分方程problem.dynamics仍需按 5.1 节手动缩放——因为dynamics函数接收的是x_scaled必须输出dx_scaled/dt。5.3 单位一致性检查清单5 分钟排除 80% 发散问题每次建模前用此清单自查打印出来贴显示器旁检查项合格标准不合格后果时间单位t0,tf,problem.time与problem.dynamics中t使用相同单位秒/小时/无量纲ẋ f(x,u,t)中t与dt量纲不匹配残差爆炸状态导数problem.dynamics输出dx/dt的单位 x的单位 /t的单位例如x1单位mt单位s则dx1/dt必须是m/s控制作用problem.dynamics中u的系数必须含单位转换如u是电压f中需乘电机常数k_vu无物理意义优化结果不可执行约束数值problem.initialConstraint和problem.terminalConstraint返回值应为O(1)量级如x1-1而非x1-1000IPOPT 将约束违反视为1e3级误差放弃收敛性能指标problem.integrand输出值应在0.01~100范围内如最小时间问题用1非1e6目标函数梯度太小IPOPT 认为已收敛某开发者曾因忘记在integrand中除以1000原想最小化kJ但写了J导致 IPOPT 早停在||∇f||1e-8而实际梯度是1e-5——加一行L L/1000;后收敛精度提升两个数量级。我的习惯是建模完成后先用ode45以初始猜测u0仿真problem.dynamics绘制x(t)和dx/dt曲线肉眼确认dx/dt是否平滑、无尖峰、量级合理。这一步花 2 分钟省去后续 2 小时 debug。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

2026年国内AI大模型API聚合平台排名前十推荐:实测选型与避坑指南

2026年国内AI大模型API聚合平台排名前十推荐:实测选型与避坑指南

两个前提,先立规矩 这类榜单文章满天飞,先把话说明白:其一,拒绝营销套路,额度虚标、服务停摆风险、变相收费一律过滤;其二,拒绝参数堆砌,只看三样东西——真实到账价格、实际响应速度…

2026/10/16 13:51:34 阅读更多 →
从RISC-V到全国产载板:嵌入式核心板推荐中值得关注的众达科技进迭时空K3方案

从RISC-V到全国产载板:嵌入式核心板推荐中值得关注的众达科技进迭时空K3方案

国产嵌入式算力重构背景下的核心板选型困惑2026年,工业控制、边缘计算、装备信息化以及具身智能等设备端场景,正在把「嵌入式核心板」从传统配套器件推到系统架构的中心位置。过去很长一段时间里,核心板选型往往沿用x86或进口ARM生态的成熟方…

2026/10/16 13:51:34 阅读更多 →
上位机软件架构设计:分层思路与通信层实践

上位机软件架构设计:分层思路与通信层实践

上位机软件架构设计,说穿了就是解决一件事:让一台天天连设备、发指令、收数据的电脑程序,能经得起需求变化和长期维护。我做了几年的设备上位机开发,从最开始“界面上一堆按钮,背后全塞在一起”的小工具,到…

2026/10/16 13:50:33 阅读更多 →

最新新闻

Spring Cloud 升级篇:GateWay 网关、Config 配置中心与 Bus 总线实践指南

Spring Cloud 升级篇:GateWay 网关、Config 配置中心与 Bus 总线实践指南

Spring Cloud 玩到第十章这个阶段,其实已经不是入门了。前面的注册中心、服务调用、负载均衡、熔断降级这些基础组件都通了之后,真正让人头疼的是两件事:一是所有微服务的流量入口太散,每个服务都要单独管鉴权、限流、跨域&#x…

2026/10/16 15:05:21 阅读更多 →
Win10远程桌面连不上Server 2016?CredSSP加密Oracle修正解决指南

Win10远程桌面连不上Server 2016?CredSSP加密Oracle修正解决指南

简介:这份PDF资料聚焦Windows 10远程桌面连接中常见的CredSSP加密Oracle修正报错,面向运维人员、系统管理员及遇到RDP连接失败的普通用户。内容围绕微软2018年修复CVE-2018-0886漏洞后引发的“身份验证错误,远程计算机要求的函数不受支持”问…

2026/10/16 15:05:21 阅读更多 →
基于airllm的分层推理:8GB显存跑13B大模型的工程实践

基于airllm的分层推理:8GB显存跑13B大模型的工程实践

先问一句:你手头是不是也有一张显存“刚好不够用”的显卡?我最近在折腾本地跑 LLM,手里的卡就只有 8GB 显存,但想跑的模型光权重就是 13B 甚至 70B 的量级。刚开始满怀期待地把模型文件塞进代码里,结果一执行&#xff…

2026/10/16 15:05:21 阅读更多 →
PyTorch实战全解析:从动态图原理到模型部署的工程实践

PyTorch实战全解析:从动态图原理到模型部署的工程实践

先说结论:PyTorch 早已不只是“一个深度学习框架”这么简单。它是眼下绝大多数研究项目、工业落地原型、比赛方案、课程作业背后的那套基础设施。无论你是刚接触深度学习的学生,还是已经在业务里踩过不少坑的工程师,围绕 PyTorch 展开的这套工…

2026/10/16 15:05:21 阅读更多 →
CD184/CXCR4:一个趋化因子受体的双命名、机制与临床转化

CD184/CXCR4:一个趋化因子受体的双命名、机制与临床转化

我第一次在流式抗体瓶子上看到"CD184"这个标签时,第一反应是查说明书确认自己是不是买错试剂了。因为同一批样本、同一个受体,文献里有的标CXCR4,有的标CD184,抗体克隆号还不一样,申请书里写惯了CXCR4的人&a…

2026/10/16 15:05:21 阅读更多 →
OpenDDS示例程序拆解:从IDL契约到发布订阅数据链路

OpenDDS示例程序拆解:从IDL契约到发布订阅数据链路

简介:面向需要理解实时数据分发与DDS标准的开发者,这套OpenDDS示例程序以清晰注释的方式展示数据发布订阅的核心机制。资源基于OMG制定的DDS规范,通过DDSDemo工程演示Publisher、Subscriber、Topic、DataWriter/DataReader的协作,…

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

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* 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 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

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

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

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

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

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

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

2026/10/15 19:41:51 阅读更多 →
影刀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/15 0:14:36 阅读更多 →
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 阅读更多 →