梯级水光互补可消纳电量期望优化调度:Python建模与求解
做梯级水光互补调度的人大概率都遇到过这样一个问题光伏出力一波动水电该怎么配合才能不弃水、不弃光还能把电量尽量送到电网里我自己在复现EI那篇经典论文“梯级水光互补系统最大化可消纳电量期望短期优化调度模型”时把整个建模、求解、Python实现的路子重新走了一遍。这个过程里踩了不少坑也总结出一些可以拿来就用的经验。花点时间把核心思路和代码实现讲透希望帮到做电力系统优化调度、做论文复现和研究新能源消纳的朋友。先说清楚这个模型到底解决什么问题梯级水电站有多级水库上游放水会影响下游来水水力和电力是强耦合的再加上光伏出力本身具有随机性调度员很难保证“等到光伏实际出力出来后”再做决策必须在日前就给出机组出力计划。所以关键在于如何在光伏出力不确定的前提下让“可消纳电量”的期望值最大化。注意是“期望”不是某个固定场景的最大值这意味着我们需要把光伏的随机性显式地放进优化模型里而不是简单用预测曲线替代。这篇文章不会只丢一段可运行的代码我会把模型背后的物理逻辑、数学化方法、Python建模技巧、求解器选型、调试避坑全部串起来。无论你是刚接触梯级调度还是已经在做复现但卡在求解器报错上这篇内容应该都能给你实际帮助。1. 项目概述梯级水光互补到底是什么模型又在优化什么1.1 梯级水光互补的基本物理图景先理清物理对象。所谓“梯级水光互补”是指一条河流上上下游串联着多个水电站上游电站的发电用水会流入下游水库形成水力联系同时这些水电站所在地区往往同期配套建设集中式光伏电站两者共用外送通道接入电网。水电的优势是调节能力强光伏的优势是成本低但波动大互补的核心就是用梯级水电去平抑光伏的随机波动。这里有个很关键的工程细节梯级电站之间不只是“水流量守恒”那么简单。上游电站汛期泄洪、发电下泄、弃水下游水库收到的来水时间往往存在几小时的滞时如果调度周期是15分钟或1小时这个滞时可能接近一个时段甚至多个时段。论文里的短期优化调度通常以小时为时段、为期一天或几天所以水流的传播延迟可以按时段数取整放进约束里。忽略这个滞时模型会给出看似可行但实际无法执行的调度方案。1.2 “最大化可消纳电量期望”中的关键词先拆“可消纳电量”。电网能接纳多少电量取决于线路容量、负荷水平、系统调峰能力还有电源本身的技术约束。在水光互补场景下可消纳电量往往被外送通道上限卡住或者被水库水位约束卡住。光伏大发时如果水电不减少出力总出力超过通道限额就必须弃光或者弃水光伏出力小时又需要水电顶上。所以模型的要害在于协调两类电源的出力过程让全天总电量尽可能大同时避免违反物理约束。再看“期望”。光伏预报不可能完全准实际出力是个随机变量。论文用的思路是把光伏出力不确定性刻画成多个场景每个场景有概率然后优化目标是所有场景下“可消纳电量”的数学期望最大化。这不是让某一个场景最优而是让长期平均意义下最优。实践中可以用预测误差的历史统计信息生成场景树也可以简单一点用典型日出力曲线叠加正态扰动生成一批场景。1.3 项目适用人群与前置知识这个项目的学习门槛不算低但也没那么吓人。做这个复现你至少需要三类知识打底电力系统的基础常识知道水电机组出力怎么算、光伏出力特性、弃电产生的原因。数学规划的入门级别能看懂线性约束、目标函数知道什么叫混合整数线性规划MILP。Python基础会安装第三方库能读代码并做简单调试。如果这些你都不太熟建议先跑通一段最简单的单库调度代码再上梯级水光模型。否则一上来就是大量约束和场景加进来报错后很难定位问题。2. 模型设计与数学建模把物理问题翻译成优化问题2.1 梯级水电的物理约束如何抽象建模的第一步是把水电站的物理规则变成数学约束。任何一个梯级电站群绕不开这几条核心约束。水量平衡约束是骨架。对第个梯级电站在时段的水库公式可以写成这里是我记忆中的形式代码实现时需要展开成当前时段末库容 上一时段末库容 本时段入库流量 上游电站出库流量考虑滞时 - 本电站出库流量 - 损失流量。如果水库还有航运、灌溉等综合利用要求还需要加最小下泄流量约束。模型里通常把这些需求变成不等式约束下泄流量不小于某个值或者库容保持在某个区间。水电机组出力方程也需要注意。理想化处理是出力等于出力系数乘以发电流量和水头。但水头会随库容变化短期调度里通常简化成线性函数或者用分段线性化表达。论文里常用一个近似式出库流量包括发电流量和弃水流量。弃水不是“发电”只影响水量平衡不影响电量但模型一定要允许它发生否则约束可能无解。2.2 光伏不确定性的期望值建模光伏出力不确定性是模型区别于确定性调度的核心。常见的做法是场景法。假设我们有组光伏场景每个场景的概率为满足所有场景概率和为1那么“可消纳电量期望”就可以表达成这种表达的好处是可以用期望值目标直接替换随机目标然后整体变成一个大规模线性规划或混合整数线性规划。光伏场景怎么生成我的做法是三步从历史数据中提取预测功率和实际功率的误差分布。以预测曲线为均值按不同时刻的相关性生成多个场景。做场景削减把生成的上百个场景削减到20-50个降低求解规模。场景削减可以简单使用“同步回代削减”算法也可以用聚类方法比如K-means选代表场景。削减的时候一定要保留场景概率否则期望计算就错了。2.3 目标函数与约束体系的完整表达完整的目标函数是最大化可消纳电量期望这里的“可消纳电量”需要拆解成两部分水电上网电量期望加上光伏上网电量期望。前提是外送通道容量约束所有电源总出力扣除厂用电等不能超过通道上限。约束体系大概包含以下四类水量平衡约束每个水库每个时段的库容更新库容与出库流量上下限约束对应死水位、正常蓄水位、泄流能力水电机组出力上下限与爬坡约束出力变化不能太剧烈外送通道容量约束和光伏出力上限约束。如果外送通道容量是灵活可变的比如区域内部可以消纳一部分还要加一个通道约束条件。但论文里通常默认外送通道是常量模型的核心竞争变量在水电出力过程。这里有一个容易被忽略的点光伏出力在场景中是外生给定的随机参数但光伏“上网电量”不能超过“实际可以发出的电量”要么全额消纳要么弃光。所以对每个场景光伏上网出力要满足小于等于该场景下的光伏预测出力弃光量就是这个差值。2.4 为什么选这种建模方案与确定性优化对比很多人会问直接用预测曲线的确定性模型不行吗当然可以但实际调度里预测误差会导致执行偏差。确定性模型给出的优化方案往往在水位和出力上“卡得很紧”一旦光伏实测偏离预测外送通道就容易越限水库水位也可能突破安全范围。期望值模型让人担忧的是“最优期望不等于每个场景都最优”。但作为日前计划它天然比单场景优化更稳健。我们真正要的不是一个场景下的极端收益而是长期运行下来总的消纳效果最好。这也是论文选择期望目标而不是最坏情况目标的现实原因。最坏情况优化鲁棒优化会更保守弃电率会更高期望值优化在实际工程里更常见。3. Python求解实现与代码架构从数学公式到可运行程序3.1 求解工具选型PyomoGurobi还是用别的组合Python生态里做优化建模我的第一推荐是Pyomo加Gurobi其次是PuLP加CBC。再然后才是直接用scipy.optimize.linear_sum_assignment之类的东西——但那基本只适合玩具模型不适合这个规模。为什么选Pyomo因为它把建模语言和求解器解耦写好的约束可以无缝切换Gurobi、CPLEX或者CBC。对论文复现而言你可以先用CBC免费求解器验证逻辑确定没错之后再切到Gurobi跑大场景。Gurobi的学术许可很容易申请如果学生身份可以直接用。水电出力方程的非线性部分我用分段线性化处理。Pyomo支持Piecewise组件可以很方便地把非线性函数近似成一系列线性段。这里建议分段数取5到8段就够了再加密会让约束数量爆炸但对结果提升很小。3.2 代码结构设计与模块划分有质量的复现代码一定不是把所有内容堆在一个文件里。我建议至少分四个模块data_loader.py负责读入流域参数、电站参数、光伏场景数据model.py负责构建优化模型包括所有变量、约束和目标函数solver.py负责配置求解器参数调用求解并把结果保存成结构化数据postprocess.py负责可视化、统计弃电率和可消纳电量等指标。数据用Pandas读进来之后最方便的数据结构是DataFrame加字典嵌套。调度时段索引、电站索引、场景索引分别用整数或字符串表示千万不要直接用浮点数当索引很容易踩坑。3.3 关键代码片段解析用Pyomo建模时核心代码大致是这个骨架import pyomo.environ as pyo model pyo.ConcreteModel() # 集合 model.T pyo.Set(initializerange(n_time)) # 时段 model.I pyo.Set(initializerange(n_reservoir)) # 梯级电站 model.S pyo.Set(initializerange(n_scenario)) # 光伏场景 # 变量 model.V pyo.Var(model.I, model.T, model.S, withinpyo.NonNegativeReals) # 库容 model.Q pyo.Var(model.I, model.T, model.S, withinpyo.NonNegativeReals) # 出库流量 model.H pyo.Var(model.I, model.T, model.S, withinpyo.NonNegativeReals) # 水电出力 model.P pyo.Var(model.S, model.T, withinpyo.NonNegativeReals) # 光伏上网功率 # 水量平衡约束 def water_balance_rule(m, i, t, s): if t 0: return m.V[i, t, s] V_init[i] else: upstream_inflow sum(m.Q[i_up, t - lag[i_up, i], s] for i_up in upstream[i]) return (m.V[i, t, s] m.V[i, t - 1, s] inflow[i, t] upstream_inflow - m.Q[i, t, s] - spill[i, t, s]) model.water_balance pyo.Constraint(model.I, model.T, model.S, rulewater_balance_rule) # 外送通道约束 def transmission_rule(m, s, t): return sum(m.H[i, t, s] for i in m.I) m.P[s, t] trans_capacity[t] model.transmission pyo.Constraint(model.S, model.T, ruletransmission_rule) # 目标函数最大化可消纳电量期望 def objective_rule(m): return sum(prob[s] * (sum(m.H[i, t, s] for i in m.I for t in m.T) sum(m.P[s, t] for t in m.T)) for s in m.S) model.objective pyo.Objective(ruleobjective_rule, sensepyo.maximize)这段代码里最需要注意的是滞时lag[i_up, i]的索引方式。如果滞时为零就是从上游本时段直接流入下游如果滞时大于零就取上游更早时段的出库流量。千万不要让下标出现负数否则求解器不会报错但结果会莫名其妙地错误。3.4 数据准备与参数初始化的注意事项数据质量决定了模型可信度。我整理数据时踩过一个坑库容上下限的单位有的资料用的是百万立方米有的用亿立方米出力系数用的单位又可能是立方米每秒对应万千瓦。单位不统一约束数值差好几个数量级求解器数值稳定性就会很差。建议所有内部计算统一使用标准单位库容用万m³流量用m³/s出力用MW。转换关系在数据加载模块里一次性完成不要把换算散落在建模代码中。光伏场景数据也有讲究每个场景不仅要有不同时刻的功率值还要有对应的概率。生成场景时尽量避免出现某个时刻光伏预测值为负或者超过装机容量。异常值要么截断要么在场景生成时直接过滤掉。4. 实操流程与结果分析从数据到调度方案4.1 从数据到调度方案的五步走跑通一个完整算例我一般遵循下面五步加载流域拓扑和电站参数构建拓扑关系表上游电站列表、滞时矩阵。生成或读取光伏场景数据检查概率和归一化。构建优化模型先用CBC求解器跑一个小规模案例比如5个时段、3个场景确认没有“不可行”报错。切换到大规模案例换Gurobi求解设置合适的MIP gap和求解时间限制。保存结果绘制水位、出力、弃电率曲线计算期望可消纳电量。这五步里最容易跳步的是第3步。很多人上来就直接跑大场景结果模型不可行或者求解非常慢根本搞不清是模型错了还是数据错了。先跑小规模案例是最高效的调试方式。4.2 典型结果解读弃电率、可消纳电量、水位过程跑出来的结果里我一般先看三个指标可消纳电量期望值目标函数直接给出。总体弃电率等于光伏理论发电量 水电最大可发电量 - 实际上网电量/光伏理论发电量 水电最大可发电量。水位过程线观察梯级电站的水库有没有出现大幅震荡或越限。如果外送通道容量很紧张你会在结果里看到光伏大发时段水电出力被压得很低甚至出现弃水。这其实是合理的为了消纳光伏水电必须牺牲一部分发电量。但如果弃水过多说明模型里水电站的出力下限或最小下泄流量约束规定得太松可以在设置中调整允许的弃水惩罚权重。另一个值得观察的结果是“光伏出力与水电出力的互补关系”。理想情况下在光伏出力大时水电出力下降光伏出力低时水电出力上升两者在电力曲线上的形状正好互补。如果模型结果出现光伏大时水电也大一定是约束写错了比如外送通道约束没有生效。4.3 敏感性分析与边界条件检验模型建完后我习惯做两组敏感性分析一是调整外送通道容量比如从80%到120%逐档扫描看可消纳电量期望和弃电率怎么变化。容量越大弃电率下降越快但当水电调节能力受限时可消纳电量会出现饱和这时候再扩通道意义不大。二是调整光伏场景的离散程度比如让预测误差标准差从5%变到15%。你会发现期望目标下的调度方案对误差尺度的敏感程度可以帮你判断“场景削减到多少个才够”。边界条件检验方面最简单的做法是把所有场景设成同一个光伏出力即去掉不确定性看模型是否退化为确定性模型。如果这时候结果和论文里的确定性案例对不上说明约束体系里还有细节没对齐。5. 调试中踩过的坑与排查技巧5.1 模型不可行的常见原因模型不可行是复现时最常遇到的问题。我总结过几个高频原因库容初始水位和末水位区间设置矛盾比如初始水位高于上限最小下泄流量约束和外送通道约束互相打架导致某时段上游需要下泄但下游通道已经满了滞时导致水流还没到下游但下游又必须维持最小入库流量造成局部时段无解。排查不可行问题我的经验是先用Gurobi的IIS不可行子系统功能它会告诉你是哪几条约束冲突。Pyomo里可以通过获取求解器返回的IIS信息或者在Python里人工逐个放开约束来定位。实际项目中我发现大部分情况出在末水位约束上因为论文里会要求调度期末库容恢复到某个值但光伏场景波动大时这个硬约束过强可以把末水位约束改成软约束加一个小的惩罚项模型从不可行变成有解且结果差距不大。5.2 求解时间爆炸怎么办梯级模型加光伏场景后规模很容易变成几十万约束。如果直接求解等待时间会让你怀疑人生。解决办法有几个优先级先用场景削减把场景数量控在20个以内给Gurobi设置MIP gap比如0.5%或1%而不是零把分段线性化的断点数量减少尝试把水电出力变量直接表示成库容和流量的线性函数而不是引入过多辅助变量。在我复现的模型里50个场景、24个时段、3个梯级电站用Gurobi加1%的gap求解时间大约在40秒到2分钟之间这在实际工程里是可以接受的。如果超过10分钟大概率不是规模问题而是约束建模引入了大量整数变量建议检查是否把不该整数的变量定义成了Binary或Integer。5.3 场景削减与期望计算的精度取舍场景削减太少期望估计偏差大场景削减太多模型规模失控。我这里给出的实用建议是先用10个场景调通全流程再用20个场景做正式结果如果项目需要再上50个场景。不要一开始就用上百个场景因为你很难区分到底是模型问题还是数据噪声。场景削减后每个场景的概率会发生细微变化务必重新归一化。我在第一次复现时忘了归一化导致目标函数值整体偏小对不上论文结果找了两天才发现是概率之和只有原来的一半。这件事之后我学乖了写代码时每个场景概率打印出来确认总和为1再跑模型。还有一个细节是期望值的计算对象。目标函数里的“电量期望”是跨场景加权的而不是先把所有场景平均成一条曲线再优化。把场景平均后优化本质上是确定性模型不是期望模型。这两个结果差别可以非常大别搞混。6. 论文复现与工程落地的差别我的一点体会严格复现论文时你会发现在正文里轻描淡写的“假设”落到代码里全是需要处理的细节。光伏场景怎么生成、滞时取几小时、水位库容曲线怎么线性化每一项都对结果有实际影响。我的建议是先复现论文里的一个基础算例确认和发布结果在一个量级再往工程模型扩展。如果把这个模型直接用于生产调度还需要额外加上预测时域的滚动更新。日前计划只是第一步实际执行时每15分钟或1小时要根据最新光伏预测修正水电计划。复现论文可以停在“优化出完整调度计划”这个层面但工程上要记得加闭环反馈。说回代码实现本身我觉得最值得投资的是把数据、模型、后处理解耦。现在很多人复现完就把代码丢在一边下次加一个电站或者改一个约束只能从头开始。模块化之后改梯级数目只需要改拓扑表改目标函数只需要动model.py里一段这样项目才算真正能复用。如果你正在复现这个模型或者准备用类似思路做新能源消纳优化希望上面的内容能帮你少走几天弯路。先从最小案例开始确认每个模块没问题再上大规模场景这个习惯能省下大把调试时间。

相关新闻

基于vue的果蔬销售系统[Vue]-计算机毕业设计源码+LW文档

基于vue的果蔬销售系统[Vue]-计算机毕业设计源码+LW文档

摘要‌:随着互联网技术的飞速发展和人们生活水平的提高,果蔬销售行业也面临着数字化转型的需求。本文设计并实现了一个基于Vue的果蔬销售系统,旨在提高果蔬销售的效率、提升用户体验,并解决传统销售模式中的信息不透明、管理混乱等…

2026/10/11 6:35:21 阅读更多 →
能ping通但SSH连不上?一文讲透根源与排查方法

能ping通但SSH连不上?一文讲透根源与排查方法

上周帮组里处理了一台远程服务器的问题,现象非常典型:从办公室电脑ping过去,延迟稳定在十几毫秒,丢包率为0,网络健康得不能再健康了。可只要打开终端执行ssh连接,命令就卡在connecting阶段,一直…

2026/10/11 6:35:21 阅读更多 →
PS5串流全攻略:把主机变随身游戏库,任意屏幕畅玩

PS5串流全攻略:把主机变随身游戏库,任意屏幕畅玩

PS5买回家之后,绝大多数人的使用场景其实都固化在客厅那台电视前。白天上班没时间玩,晚上好不容易坐下,老婆要看综艺,娃要上网课,手柄刚拿起来又得放下。更别提出差、回老家那几天,主机放在家里吃灰&#x…

2026/10/11 6:35:21 阅读更多 →

最新新闻

AnyPS5:基于PS5硬件的跨系统兼容性重构实践

AnyPS5:基于PS5硬件的跨系统兼容性重构实践

项目标题:“AnyPS5”——这个名称本身就很值得玩味。它不是官方命名,没有“PlayStation”字样,也不带任何厂商标识,却在近期多个技术社区、数码论坛和二手交易平台上高频出现。我最早是在一个硬件改造小组里看到这个词的&#xff…

2026/10/11 7:21:46 阅读更多 →
开源掌机完全指南:从系统刷机到模拟器调优的5W拆解

开源掌机完全指南:从系统刷机到模拟器调优的5W拆解

1. 开源掌机到底是个什么东西第一次听到“开源掌机”这四个字,很多人的第一反应是:这不就是小时候玩的那种俄罗斯方块机吗?或者觉得它跟树莓派套个壳差不多。实际上,开源掌机是一个远比想象中复杂、也远比想象中有趣的品类。它既不…

2026/10/11 7:21:46 阅读更多 →
深度学习图像隐写分析:SRNet模型、LSB嵌入检测与PyQt5实战

深度学习图像隐写分析:SRNet模型、LSB嵌入检测与PyQt5实战

简介:基于深度学习的图像隐写分析系统,包含完整Python源码、GUI演示界面与毕业论文,是面向计算机、通信、人工智能、自动化等专业课程设计与毕业设计的一套可运行项目。项目以SRNet完成图像隐写分析、以DDSP实现隐写去除,并额外提…

2026/10/11 7:21:46 阅读更多 →
01-为什么值得自建低延迟直播 CDN:延迟、安全与成本三本账

01-为什么值得自建低延迟直播 CDN:延迟、安全与成本三本账

如果你做过带互动的直播——真人视讯、在线竞拍、连麦游戏、带弹幕反馈的互动课堂——大概率遇到过这种场面:主播这边已经进入下一个环节,观众那边的画面却还停在上一步。弹幕比画面快了一拍,出价和成交对不上号,问答变成了单向播…

2026/10/11 7:21:46 阅读更多 →
VC++调用GT800 USB打印机打印ZPL条形码实战指南

VC++调用GT800 USB打印机打印ZPL条形码实战指南

简介:本资源是一份面向C开发者与工业打印集成工程师的VC USB直连斑马GT800打印机实战项目,聚焦ZPL指令下发与底层设备通信,解决Windows平台下绕过高级打印驱动、直接控制USB接口条形码打印机的核心需求。压缩包含24个文件,涵盖3个…

2026/10/11 7:21:46 阅读更多 →
基于深度学习的图像隐写分析系统:从残差图到GUI部署全解析

基于深度学习的图像隐写分析系统:从残差图到GUI部署全解析

简介:这是一份基于深度学习的图像隐写分析项目源码与论文资料包,面向计算机、通信、人工智能等专业学生、教师及从业者,适合用于课程设计、毕业设计或进阶学习。项目实现隐写分析与隐写去除两大功能,分别采用SRNet网络模型与DDSP网…

2026/10/11 7:20:45 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →