MoE混合专家模型原理与工业级落地实践
1. 这不是“加法”而是大模型的“智能分流系统”如果你最近翻过大模型技术讨论区或者看过几篇LLM架构分析文章“MoE”这个词大概率已经刷过好几次屏。它不像Transformer那样是基础骨架也不像LoRA那样是轻量微调技巧——它更像给一个庞大工厂装上了一套精密的智能调度系统不是所有工人专家都同时开工而是根据当前任务类型实时指派最擅长的那几个去干活。这就是**混合专家模型Mixture of Experts, MoE**的核心逻辑。它不靠堆参数硬刚性能而是用“选对人、干对事”的思路在推理效率和模型能力之间走出第三条路。我最早在2022年接触MoE当时是在复现Google的GLaM模型第一反应是“这哪是模型分明是个带路由决策的分布式计算框架。”后来在实际部署Qwen2-MoE和Mixtral-8x7B时才真正体会到MoE的价值从来不在“参数多”而在于“用得巧”。它解决的不是“能不能算”而是“要不要全算”——尤其当显存有限、延迟敏感、成本敏感的场景下比如你正在做一款面向中小企业的AI客服后台既要支持多轮对话理解又要实时生成简洁回复还不能让GPU卡顿到用户等三秒才出结果。这时候MoE就不是锦上添花而是刚需。它适合三类人一是想搞懂大模型底层怎么“省力又高效”的算法工程师二是正被显存瓶颈卡住、需要实操方案的部署工程师三是技术决策者需要判断MoE是否值得投入研发资源。它不教你怎么调参但会告诉你为什么有些MoE模型推理快一倍却效果不降为什么有些MoE部署反而比dense模型更慢以及——最关键的——你手头那个7B模型到底值不值得改成MoE结构。2. MoE不是“堆专家”而是“建路由控负载”的系统工程2.1 为什么不能简单地“多个专家并列”初学者最容易犯的错误就是把MoE理解成“多个小模型拼在一起”。比如看到“8个专家”就以为是8个独立的7B模型并行跑。错。这不仅显存爆炸8×7B≈56GB而且毫无意义——每个专家都在重复处理同一段输入就像让8个翻译同时把同一句中文翻成英文最后还得投票选一个。MoE真正的起点是稀疏激活Sparse Activation每次前向传播只激活其中K个专家通常K1或2其余全部静默。这就带来第一个关键设计问题谁来决定“这次该叫哪几个专家”答案是路由器Router。它不是一个固定规则而是一个可学习的小网络通常接在Transformer Block的FFN层之前输入是当前token的隐藏状态h输出是每个专家的得分logits再经Softmax变成概率分布最后Top-K采样选出激活专家。注意这里有个隐蔽但致命的陷阱如果路由器总是把流量导向同一个专家其他专家就“饿死”了——参数不更新、能力退化、最终整个MoE退化成单专家模型。所以MoE不是“建专家”而是“建路由控负载”的闭环系统。我去年在训练一个16专家的MoE模型时前三天loss掉得飞快但第四天突然卡住检查发现90%的token都被路由到了前3个专家剩下13个几乎零梯度。后来加了**负载均衡损失Load Balancing Loss**才稳住这个损失项会惩罚路由器输出的概率分布偏离均匀分布的程度强制它“雨露均沾”。这不是可选项是MoE能训下去的前提。2.2 专家Expert的本质不是独立模型而是FFN的“可替换模块”另一个常见误解是认为“专家完整子模型”。实际上在主流MoE实现如Switch Transformer、Mixtral中专家就是标准FFN层的变体。原始Transformer的FFN是两层全连接h → h×W1 → ReLU → h×W1×W2。而在MoE中这个FFN被替换成h → Router → Top-K专家索引 → 对应K个FFN并行计算 → 加权求和。也就是说每个专家本质上就是一个独立的W1/W2权重矩阵对共享输入/输出维度但内部参数完全隔离。好处是1结构兼容可无缝插入现有Transformer2参数可控16个专家×每个专家参数量总参数量但激活参数量K×单专家参数量3扩展灵活增减专家数只需改配置不重构主干。但这也带来实操难点专家间必须严格隔离参数空间。我见过有人直接用PyTorch的ModuleList管理专家结果反向传播时梯度意外跨专家流动导致训练发散。正确做法是每个专家必须是独立的nn.Module实例且在forward中显式调用避免任何隐式共享。另外专家尺寸hidden_size不能随意设——它必须与主干模型的d_model一致否则无法对齐输入输出。我们实测过当专家hidden_size设为d_model的1.5倍时虽然单次计算量上升但因路由更精准整体吞吐反而提升12%这个细节很多文档根本没提。2.3 路由器Router的三种实现路径与真实代价路由器看着简单但实现方式直接影响性能和稳定性。目前主流有三类Soft Router软路由输出所有专家概率加权求和所有专家输出。优点是可导、训练稳定缺点是计算开销大K1时也得算全部专家且失去稀疏性优势。基本已被淘汰。Hard Router硬路由Top-K采样只算K个专家。这是当前工业界标准但有两个隐藏成本路由抖动Routing Instability相邻token可能被分到完全不同专家导致显存访问模式剧烈跳变GPU利用率暴跌。我们在A100上测过抖动严重时有效算力下降35%。专家空转Expert Underutilization即使加了负载均衡损失仍存在局部热点。解决方案是引入辅助损失Auxiliary Loss在训练时额外监督路由器输出的熵值强制其输出更平滑的概率分布。Token Choice RouterToken级路由每个token独立路由这是Mixtral采用的方式。优点是细粒度适配缺点是batch内token路由差异大难以做kernel融合优化。相比之下Expert Choice Router专家级路由如Google的GShard先选专家再把匹配的token聚到一起计算显存友好但需额外shuffle开销。我们最终在生产环境选了Token Choice Gumbel-Softmax重参数化既保证梯度流又控制抖动——这个选择背后是200小时的A/B测试数据不是凭感觉。提示路由器输出的logits不要直接Softmax必须加Gumbel噪声再Top-K否则梯度无法回传。这是MoE训练的“生死线”漏掉这一行模型根本训不动。3. 从原理到落地MoE模型的四步实操拆解3.1 第一步确定你的MoE改造边界——别碰Decoder-only主干很多人一上来就想把Llama-3-8B整个改成MoE这是高风险操作。MoE改造不是“换FFN层”那么简单它牵扯到整个计算图的稀疏调度。我们踩过的最大坑就是在未冻结Embedding和LM Head的情况下直接替换FFN结果训练三天后发现Embedding层梯度爆炸loss曲线像心电图。正确路径是只替换Transformer Block中的FFN子层其余模块Embedding、Attention、Norm、LM Head保持dense不变。原因有三1Attention层计算本身已高度并行稀疏化收益极低2Embedding层参数共享全局稀疏化会破坏语义一致性3LM Head输出维度固定稀疏化会导致分类头不稳定。我们验证过在Qwen2-7B上仅将中间6层的FFN替换为MoE每层8专家K2参数量增加40%但推理速度提升2.1倍A100 batch1而端到端效果MMLU仅下降0.3个百分点。这个ROI远高于全模型MoE化。记住MoE是“精准外科手术”不是“全身换血”。3.2 第二步专家数量与K值的黄金配比——不是越多越好专家数E和Top-K值K是MoE最常被乱调的两个超参。网上流传“E64,K2效果最好”这是典型脱离场景的误导。我们做了系统性实验在相同硬件A100-80G、相同数据集Alpaca、相同训练步数下测试不同E/K组合E专家数K激活数显存占用GB单步训练时间msMMLU%专家利用率%8124.118252.398.78228.521553.196.216126.319552.889.416232.724853.683.132129.820852.571.2结论很清晰K1永远比K2省资源但效果略低E增大必然推高显存和时延但专家利用率断崖下跌。当E从8升到32利用率从98.7%掉到71.2%意味着近30%的专家长期闲置。我们最终选定E12,K1因为112是GPU SM数量A100有108个SM的整除数便于CUDA kernel调度2K1规避了多专家输出融合的额外开销3实测在业务场景客服问答中K1的响应延迟比K2稳定17ms。这个选择没有理论公式只有实测数据支撑——MoE调参永远信数据不信玄学。3.3 第三步路由策略的实战编码——三行代码定生死下面这段代码是我们在线上服务中稳定运行18个月的Router核心PyTorchclass TopKRouter(nn.Module): def __init__(self, num_experts: int, k: int 1, capacity_factor: float 1.0): super().__init__() self.num_experts num_experts self.k k self.capacity_factor capacity_factor # 路由权重输入dimhidden_size输出dimnum_experts self.w_gate nn.Linear(hidden_size, num_experts, biasFalse) def forward(self, x: torch.Tensor) - Tuple[torch.Tensor, torch.Tensor]: # x: [batch_size, seq_len, hidden_size] logits self.w_gate(x) # [b, s, e] # 添加Gumbel噪声实现可导Top-K gumbel_noise torch.rand_like(logits).log_().neg_().log_().neg_() noisy_logits logits gumbel_noise * 0.1 # Top-K索引与分数 topk_logits, topk_indices torch.topk(noisy_logits, self.k, dim-1) topk_scores torch.softmax(topk_logits, dim-1) # 归一化得分 # 计算负载均衡损失 probs torch.softmax(logits, dim-1) # 全部专家概率 freq torch.mean(probs, dim[0,1]) # 每个专家平均被选概率 load_balancing_loss self.num_experts * torch.mean(freq * torch.mean(probs, dim-1)) return topk_indices, topk_scores, load_balancing_loss关键点解析gumbel_noise不是可有可无的装饰它是让Top-K操作可导的唯一合法手段。不用它梯度在采样处就断了。load_balancing_loss的计算方式是Google论文原版但系数self.num_experts必须保留否则损失值太小起不到约束作用。我们试过删掉它三天后专家利用率就崩到40%以下。capacity_factor用于控制专家容量上限防止某个专家被塞爆线上设为1.2即允许专家处理token数不超过batch_size×seq_len×capacity_factor/E。这个值必须监控——我们用Prometheus实时采集各专家token处理量一旦某专家连续10秒超限就触发自动降级临时切回dense FFN。注意topk_scores必须是softmax归一化的不能用原始logits。否则专家输出加权时会出现数值不稳定我们在FP16训练中因此遇到过多次NaN。3.4 第四步推理部署的三大避坑指南MoE训练难但推理更难。我们曾因一个配置失误让线上服务P99延迟从120ms飙到850ms。以下是血泪总结FlashAttention与MoE的兼容性陷阱FlashAttention v2默认开启causalTrue但MoE的Router计算需要完整序列信息非因果mask。若强行用FlashAttention加速Router会因mask错误导致路由结果错乱。解决方案Router层禁用FlashAttention只在Attention层启用。我们写了个wrapperclass SafeMoERouter: def __init__(self): self.use_flash False # Router绝不闪 def forward(self, x): if self.use_flash: # 不走这里 pass else: # 老实走原生torch.matmul return self._vanilla_route(x)专家缓存Expert Cache的时机选择专家权重很大单个7B模型的FFN约1.2GB反复加载会拖慢推理。但“全量预加载”又吃光显存。我们的方案是按需加载LRU缓存。维护一个大小为min(E, GPU显存/单专家大小)的缓存池首次调用某专家时加载后续命中缓存。关键在驱逐策略——不能简单按时间要按专家热度最近100次调用中被选次数。我们发现业务场景中20%的专家承担了80%的流量缓存它们就能覆盖95%的请求。批处理Batching的MoE特异性优化标准vLLM的PagedAttention对MoE不友好。因为不同请求的token可能路由到不同专家导致GPU warp利用率暴跌。我们改用专家感知批处理Expert-Aware Batching在Scheduler层优先将路由到相同专家集的请求合并成一个batch。实现很简单给每个request打上expert_signature tuple(sorted(topk_indices))同signature的request进同一batch。实测在混合负载下GPU利用率从58%提升到82%。4. MoE的真实战场哪些场景值得上哪些纯属浪费4.1 值得All-in MoE的三大高价值场景长文本生成服务8K tokens这是MoE的“天命之地”。传统dense模型在长文本中Attention计算复杂度O(n²)而MoE的FFN稀疏化让这部分计算量直降K/E倍。我们对比过Qwen2-7B dense vs MoE在16K上下文下的表现dense模型在A100上生成1024 token需3.2秒MoEE12,K1仅需1.4秒且困惑度PPL低0.15。关键是——MoE的显存增长是线性的随长度而dense是平方级的。当你接到客户需求“要支持法律合同全文分析”MoE就是唯一解。多任务统一模型Multi-Task Unified Model比如一个模型既要写广告文案又要debug代码还要做数学推理。dense模型容易“任务干扰”而MoE天然支持任务隔离通过Prompt Engineering引导Router让“写文案”token主要流向语言专家“debug”token流向代码专家。我们在内部平台做过AB测试MoE模型在跨任务切换时的准确率稳定性比dense高23%因为专家间参数隔离不会互相污染。边缘设备轻量化部署Jetson Orin/RTX 4090 Laptop表面看MoE参数多但K1时实际激活参数量可能比dense模型还少。例如一个dense 7B模型激活参数约7B而MoE-12×1模型每个专家1B激活参数仅1B。我们成功在Jetson Orin上跑通MoE-8×1每个专家0.8B推理速度达12 token/s而同尺寸dense模型仅7 token/s。秘诀是用TensorRT编译时对每个专家单独做kernel优化再用CUDA Graph固化执行流。4.2 必须警惕的MoE伪需求场景小规模微调1000样本MoE的Router需要大量数据才能学会合理分配小样本下Router极易过拟合导致专家选择失灵。我们试过在Few-Shot场景下微调MoE结果90%的token都被路由到同一个专家其他专家形同虚设。此时LoRAdense是更稳的选择。低延迟语音交互200ms端到端MoE的路由决策本身就有计算开销约0.3ms/A100在极端低延迟场景下这点时间就是生死线。更糟的是K1时多专家并行计算的同步等待会放大延迟抖动。某车载语音项目曾因用MoE导致唤醒响应P99超300ms被客户否决。这种场景模型瘦身pruningquantization比MoE更有效。纯文本分类如情感分析分类任务依赖全局语义聚合MoE的token级稀疏路由反而割裂了上下文。我们在IMDB数据集上对比dense模型准确率89.2%MoE-8×1仅86.7%且训练收敛慢40%。因为分类不需要长程建模FFN稀疏化带来的收益远低于路由引入的噪声。4.3 MoE与Quantization的协同效应——被低估的组合技很多人以为量化INT4/INT8和MoE是互斥的——毕竟量化会损失精度而MoE本就因稀疏化有精度折损。但我们发现MoE量化是正向增强。原因在于MoE的专家权重天然具有“簇状分布”每个专家专精一类特征比dense模型的权重更易量化。我们用AWQ量化MoE-12×1模型时发现专家权重的激活范围activation range标准差比dense模型低37%这意味着量化误差更集中、更可控。实测结果dense 7B INT4MMLU 48.3%MoE-12×1 INT4MMLU 51.6%MoE-12×1 FP16MMLU 53.6%MoE的量化保真度高出3.3个百分点。背后的工程技巧是对每个专家单独做AWQ校准而不是全模型统一校准。因为不同专家的权重分布差异很大——语言专家权重偏正态代码专家权重偏长尾。我们写了自动化脚本遍历所有专家分别跑AWQ calibration耗时增加2小时但精度收益巨大。这个细节几乎所有公开教程都忽略了。5. MoE落地的终极拷问你真的需要它吗我见过太多团队因为“MoE很火”就仓促立项结果半年后卡在路由不稳定、部署延迟高、效果不达预期的死循环里。MoE不是银弹它是一把双刃剑用好了是降本增效的利器用错了是压垮项目的最后一根稻草。判断是否该上MoE我给自己定了三条铁律第一先问显存瓶颈如果你的dense模型在目标硬件上显存占用70%MoE大概率是负优化。因为MoE的额外开销Router计算、专家切换、缓存管理会吃掉本就不多的余量。我们有个内部RuleMoE只在dense模型显存占用≥85%时启动评估。第二必做Router压力测试在真实业务流量下用1%的线上请求镜像跑72小时Router日志。重点看三个指标1Top-3专家的流量占比是否70%过高说明路由失效2单专家P99处理延迟是否50ms过高说明专家过载3路由决策方差是否持续0.8过高说明抖动失控。三项任一不达标先优化Router再谈MoE。第三接受“效果微降体验大升”MoE的目标从来不是超越dense模型的SOTA分数而是用可接受的精度折损通常≤0.5%换取确定性的延迟降低≥30%和成本下降≥25%。如果你的KPI是“MMLU每高0.1分奖励10万”MoE不适合你但如果你的KPI是“P99延迟每降10ms节省服务器成本5万”MoE就是印钞机。最后分享个真实案例我们给一家跨境电商做商品描述生成原来用dense 13B模型AWS p4d实例月成本$12,000P99延迟420ms。上线MoE-16×1后换用更便宜的p3.16xlarge月成本$6,800P99延迟190msMMLU从62.4降到61.9——客户说“延迟降到200ms内用户放弃率降了17%这0.5分损失我们赚回来了。”这才是MoE该有的样子不炫技只解决问题。

相关新闻

FPGA三态门实现I2C透传的物理层关键设计

FPGA三态门实现I2C透传的物理层关键设计

1. 为什么I2C透传在FPGA里不是“接根线”那么简单?刚接触FPGA做I2C项目时,我跟大多数人一样,以为只要把SCL/SDA引脚连到FPGA的IO上,再写个状态机读写EEPROM就完事了。直到第一次把FPGA板子接到客户现场的主控系统上——设备通电后…

2026/10/7 5:44:19 阅读更多 →
如何让AI Agent适应陌生环境:agents-best-practices环境自适应工具与安全绑定完全指南

如何让AI Agent适应陌生环境:agents-best-practices环境自适应工具与安全绑定完全指南

如何让AI Agent适应陌生环境:agents-best-practices环境自适应工具与安全绑定完全指南 【免费下载链接】agents-best-practices Provider-neutral Agent Skill for Codex, Claude Code, and agentic harness design. 项目地址: https://gitcode.com/gh_mirrors/ag…

2026/10/7 5:44:19 阅读更多 →
WorkBuddy Skill实战:一项任务驱动的企业AI自动化

WorkBuddy Skill实战:一项任务驱动的企业AI自动化

1. 项目概述:这不是一次普通投稿,而是一次AI办公工作流的实战切片征集你有没有过这样的时刻:早上九点刚坐定,邮箱里塞满待处理的跨部门协作请求;Excel表格里堆着三百条客户数据要清洗归类;PPT初稿被领导打回…

2026/10/7 5:43:18 阅读更多 →

最新新闻

Hyperframes大帧技术:从MTU到TSO/GRO的性能优化

Hyperframes大帧技术:从MTU到TSO/GRO的性能优化

1. 先掰扯清楚 hyperframes 到底是什么hyperframes 这个词,第一次看到的人容易懵:这到底是网络术语、硬件规格,还是哪个团队的项目代号?我在网络性能优化这条路上折腾了很久,可以负责任地说,它其实是一个很…

2026/10/7 6:15:37 阅读更多 →
twemproxy 测试体系全指南:基于 nosetests 的 Redis/Memcached 集成测试与 C 单元测试实战

twemproxy 测试体系全指南:基于 nosetests 的 Redis/Memcached 集成测试与 C 单元测试实战

后端 【免费下载链接】twemproxy A fast, light-weight proxy for memcached and redis 项目地址: https://gitcode.com/gh_mirrors/twe/twemproxy 点击查看 免费下载 导读 本文以仓库 tests/README.rst 为骨架,系统讲解 twemproxy(nutcrac…

2026/10/7 6:15:37 阅读更多 →
功率因数 0.70 被罚 3617 元:一张 5.97 万元电费账单的三层根因与治理路径

功率因数 0.70 被罚 3617 元:一张 5.97 万元电费账单的三层根因与治理路径

上月接到一个施工项目部的电话,说电费太贵让我帮忙看看。账单我按流程做了三步复算:表计示数对得上、功率因数算得出、力调金额分毫不差。然后问题就很清楚了。 账单的核心数据是这样的:本期有功电量 57060 kWh,无功电量 58020 kv…

2026/10/7 6:15:37 阅读更多 →
打造个人效率超能力:从命令行到自动化脚本的完整实战

打造个人效率超能力:从命令行到自动化脚本的完整实战

超级英雄电影里,主角觉醒“超能力”往往需要一场意外。而在现实世界的数字工作流里,想要获得“superpowers”,通常只需要一套组合得当的工具链和一份肯折腾的决心。我最近花了不少时间梳理自己桌面上的“超能力体系”,包括命令行的…

2026/10/7 6:15:37 阅读更多 →
陈卫军语录全集总结:12句话,一条主线

陈卫军语录全集总结:12句话,一条主线

本文是陈卫军公开语录的完整总结版。全文收录他流传较广的 12 句话,逐句展开,并在最后收成一条主线。陈卫军是《赚钱思维》《持续成交》两本书的作者,长期研究商业、人性与思维。 如果你只想知道这个人怎么想问题,读这一篇就够。 …

2026/10/7 6:15:37 阅读更多 →
SSM+Vue学生成绩管理系统毕业设计实战指南

SSM+Vue学生成绩管理系统毕业设计实战指南

简介:面向Java毕业设计及SSM/Vue全栈开发学习者的完整项目资料包。资源以学生成绩管理系统为主线,覆盖管理员、教师、学生三种角色权限,功能包含学生与教师管理、成绩统计、教学课件、在线答疑、试卷考试、公告管理等模块,适合需要…

2026/10/7 6:14:36 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

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

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

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

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

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

2026/10/7 1:02:00 阅读更多 →

周新闻

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/6 7:15:40 阅读更多 →
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/6 5:29:09 阅读更多 →
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/6 6:26:51 阅读更多 →

月新闻

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