kubectl --generator弃用全解析:从原理到迁移避坑指南
如果你最近在跑 K8s 部署脚本时终端里突然冒出一行kubectl run --generatordeployment/v1 is DEPRECATED...的警告先别慌这不是集群坏了而是你手里的命令还在用几年前的旧写法。kubectl 的--generator参数从 1.12 开始被标记为弃用到 1.18 版本被彻底移除从那时起kubectl run默认创建的对象已经从 Deployment 变成了 Pod。很多旧教程、面试题和线上脚本里的命令语义其实已经完全变了。这篇文章想把这件事一次讲透--generator是什么、为什么被弃用、你会在哪些场景撞上它、旧命令该怎么迁移再附一个完整的脚本改造过程和避坑清单。无论你是还在用老命令写流水线的运维还是刚从教程入门 K8s 的开发都能直接照着改。1. 先搞清楚 --generator 是什么为什么会被判死刑1.1 客户端生成器kubectl 内置的预制模板在 Kubernetes 早期的设计里kubectl 不只是一个往 API Server 发请求的瘦客户端。当你敲下kubectl run nginx --imagenginx --replicas3这行命令时kubectl 并不会直接把“我要一个 nginx3 个副本”翻译成一个 API 请求而是先在客户端本地调用一个叫 generator 的内部组件由它生成一份完整的 Deployment 对象可以理解成一坨 JSON/YAML然后再把这坨对象 POST 给 API Server。generator 在代码里就是一组函数每种资源类型对应一个比如deployment/v1、deployment/apps.v1beta1、run-pod/v1、job/v1、cronjob/v1beta1。命令行参数镜像、副本数、端口、环境变量会被填进模板的对应字段用户没填的字段则由生成器写入默认值。这就是为什么当年你kubectl run nginx --imagenginx出来的 Deployment 自带一堆默认配置。用生活类比的话generator 就像餐厅后厨的预制菜单你只说了要一份什么口味的套餐后厨按固定配方出菜省得每道菜都从头现配。对命令行用户来说确实方便但对代码维护者来说这意味着 kubectl 要内置一份把所有资源类型的结构和默认值写死的“知识库”。1.2 弃用不是拍脑袋背后有三层原因第一层原因是版本维护成本。generator 是写死在 kubectl 二进制里的而集群 API 版本一直在演进。集群升级了、API 版本变了老版本的 kubectl 用老 generator 生成出来的资源结构可能就不再合规。为了保证命令行为稳定只能不断往 kubectl 里塞新 generator于是代码里堆满了各种历史版本的兼容分支维护量越来越大。第二层原因是 API 版本收敛之后客户端生成失去了存在价值。早期很多资源没有稳定版本extensions/v1beta1、apps/v1beta1、apps/v1beta2并存客户端生成还能起到一定的兼容作用。后来以apps/v1为主的标准 API 稳定下来服务端返回的 OpenAPI schema 也可以直接辅助客户端做字段校验生成器这种“手写一套资源结构”的做法就变成了重复造轮子。第三层原因更核心客户端生成意味着“命令行为长在客户端的版本上”这和运维需要的可预期、可审计是冲突的。同样一行kubectl run不同 kubectl 版本可能创建出不同 label、不同默认值的资源。官方希望把默认行为固定下来让资源创建逻辑尽量简单、可预测。所以弃用 generator 是主动卸掉一个越来越沉重的历史包袱。1.3 弃用时间线从警告到移除用了整整六个版本kubectl 版本关键变化1.9 及更早kubectl run默认生成 Deploymentgenerator 类型以deployment/v1beta1为主1.10新增kubectl create deployment、kubectl create cronjob等命令作为正式替代方案1.12kubectl run --generator开始标记 DEPRECATED命令仍可执行但会打印警告1.15警告语气强化明确提示未来版本会移除1.18--generator参数彻底移除kubectl run默认只创建 Pod看懂这个时间线你就能判断自己遇到的是哪种情况警告文本里带DEPRECATED说明命令执行成功了但写法已过时如果报unknown generator type说明当前 kubectl 版本里这个 generator 已经不存在命令直接失败。这两种情况处理方式不同在下一节具体展开。2. 报错现场你会在哪些地方撞上这个弃用2.1 两种典型输出警告和硬报错先看最常见的老教程写法kubectl run nginx --imagenginx --replicas3 --generatordeployment/apps.v1beta1在 1.12 到 1.17 之间的 kubectl 版本上命令能执行成功但会输出类似这样的警告Flag --generator has been deprecated, Use kubectl create instead. kubectl run --generatordeployment/v1 is DEPRECATED and will be removed in a future version. Use kubectl create instead. deployment.apps/nginx created注意第三行资源确实创建成功了所以很多人选择无视警告。但在 1.18 及以后的版本上同一个命令很可能直接变成error: unknown generator type: deployment/apps.v1beta1这时候创建就失败了。同一个命令跨一个大版本从“能跑但有噪音”变成“直接中断”这是最坑人的地方。尤其对于无人值守的脚本来说升级 kubectl 的时机你没法精准控制等发现的时候往往是线上任务已经挂了一排。2.2 受影响场景清单别以为只有老古董才会碰从旧博客、旧书、培训视频里复制出来的命令这类内容很多写于 1.10 之前。团队交接留下的部署脚本里面藏着早已忘光的--generator参数。CI/CD 流水线里初始化测试环境的步骤每次都打印警告日志被污染。shell 的 alias 或函数比如alias krunkubectl run --generatordeployment/v1。显式在kubectl create deployment等子命令上继续传--generator的写法。一些面试题、模拟环境里的旧命令跟着敲一遍就触发弃用提示。这里要特别提醒警告虽然没有让命令失败但很多 CI 系统会把 stderr 里出现的任何内容都当作异常信号或者流水线脚本里开启了严格输出检查一行警告就可能让整个 Job 标红。而且警告会一直叠加等于每次部署都在给后续的升级埋雷。2.3 快速定位你的代码里有多少旧写法想知道自己受影响有多大直接在项目目录里扫一遍就行grep -rn -- generator --include*.sh --include*.yaml --include*.yml . grep -rn kubectl run scripts/ configs/ 2/dev/null再配合kubectl version看客户端版本。如果你手里的 kubectl 已经到 1.18 以上那--generator字段只要出现基本就是硬伤。扫出来的结果越多越说明需要整体迁移而不是临时改一两个命令。3. 迁移方案新写法与旧写法一一对照3.1 主力替换kubectl create 系列命令这是最核心的一步。旧的kubectl run之所以能创建各种资源本质上靠的就是 generator 在背后切换模板。现在这个机制没了不同资源的创建就得各自归位用更明确的子命令。创建目标旧写法已弃用新写法Deploymentkubectl run nginx --imagenginxkubectl create deployment nginx --imagenginxDeployment 指定副本数kubectl run nginx --imagenginx --replicas3kubectl create deployment nginx --imagenginx后执行kubectl scale deployment nginx --replicas3Deployment Servicekubectl run nginx --imagenginx --expose --port80kubectl create deployment nginx --imagenginx后执行kubectl expose deployment nginx --port80一次性 Podkubectl run debug --imagebusybox --restartNeverkubectl run debug --imagebusybox --restartNever保留去掉--generatorJobkubectl run job1 --imagebusybox --restartOnFailure --command -- sh -c echo hikubectl create job job1 --imagebusybox --command -- /bin/sh -c echo hiCronJobkubectl run cron1 --imagebusybox --restartOnFailure --schedule*/5 * * * * --command -- sh -c datekubectl create cronjob cron1 --imagebusybox --schedule*/5 * * * * --command -- /bin/sh -c date按 YAML 创建任意资源kubectl create -f xxx.yamlkubectl create -f xxx.yaml不受影响显式指定 generator 的 createkubectl create deployment nginx --imagenginx --generatordeployment/v1beta1kubectl create deployment nginx --imagenginx删除参数即可对照表里最值得留意的两行是 Job 和 CronJob。以前kubectl run靠--restartOnFailure区分 Job靠--schedule区分 CronJob这种方式非常隐晦不查文档根本猜不到。现在kubectl create job和kubectl create cronjob把意图直接写在命令名上可读性好很多。另外kubectl create -f和kubectl apply -f从头到尾都不涉及 generator。如果你手里已经有成型 YAML其实最简单的方案就是绕开命令生成直接kubectl apply -f后面我会专门说这个习惯。3.2 迁移时最容易忽略的三个差异第一个差异是标签从run:变成了app:。旧版kubectl run nginx创建的 Deployment标签是run: nginxPod 的 label selector 也是run: nginx新版kubectl create deployment nginx创建的 Deployment标签是app: nginx。如果旧脚本里还有一个 Service它的 selector 写的是run: nginx新 Deployment 创建的 Pod 就完全选不中Service 的 Endpoints 会是空的。这个问题表面上看不出来要等流量打过去才发现没有后端。第二个差异是副本数不再写在创建命令里。新版kubectl create deployment没有--replicas参数原因是官方希望创建和扩缩容职责分明。想要副本数要么创建后补一条kubectl scale deployment nginx --replicas3要么先生成 YAML在 YAML 里改好spec.replicas再 apply。第三个差异是--expose这类组合式操作被拆开了。旧命令一个kubectl run --expose同时搞定 Deployment 和 Service新命令要两条kubectl create deployment负责工作负载kubectl expose负责暴露端口。这不是退步而是让每一次操作都更可控尤其是在需要审计的线上环境里。3.3 临时调试 Pod 的高频用法这条建议保留虽然--generator没了但kubectl run并没有消失只是职责收窄成创建 Pod。日常排查问题、临时起一个调试容器仍然推荐这个用法kubectl run debug --imagebusybox --rm -it --restartNever -- /bin/sh这里--restartNever表示一次性 Pod-it进入交互终端--rm在退出时自动删除 Pod。在 1.18 之后的版本里这是最干净的临时调试方式用完即走不留垃圾资源。注意这类命令不要在 CI 的无 TTY 环境里裸跑很可能会一直卡在那里等输入后面踩坑环节会再展开。4. 实操把一份旧脚本完整改造成新写法4.1 改造前的脚本长什么样假设你接手了一个三年前的环境初始化脚本内容大概是这样的#!/usr/bin/env bash set -e # 一个命令创建 Deployment 和 Service kubectl run web --imagenginx:1.14 --replicas3 \ --generatordeployment/apps.v1beta1 --port80 --expose # 创建一个 Job kubectl run pi --imagebusybox \ --generatorjob/v1 --restartOnFailure \ --command -- /bin/sh -c echo hello # 创建一个 CronJob kubectl run cron --imagebusybox \ --generatorcronjob/v1beta1 --restartOnFailure \ --schedule*/5 * * * * --command -- /bin/sh -c date这个脚本在 1.12 之前能流畅跑通但现在跑就会先看到一堆 DEPRECATED 警告升级到 1.18 之后直接报unknown generator type。更麻烦的是脚本里混合了三种资源类型全部挤在kubectl run一个命令上可读性也很差。4.2 一步步替换成新命令按上一节的对照表改成这样#!/usr/bin/env bash set -e # Deployment 与副本数、Service 分开处理 kubectl create deployment web --imagenginx:1.14 kubectl scale deployment web --replicas3 kubectl expose deployment web --port80 # Job 用 create job kubectl create job pi --imagebusybox --command -- /bin/sh -c echo hello # CronJob 用 create cronjob kubectl create cronjob cron --imagebusybox \ --schedule*/5 * * * * --command -- /bin/sh -c date这里有个小细节kubectl create job和kubectl create cronjob里我特意写了--command -- /bin/sh -c。如果镜像入口本身不是 shell或者命令里带管道、重定向这类符号必须用--command显式声明后面的内容是命令不加的话后面的参数会被当成镜像 entrypoint 的普通参数行为会和预期差很多。4.3 处理 Service 标签不一致的问题如果这个环境之前已经存在一个 Serviceselector 是旧的run: web那上面的改造还不够——新 Deployment 的 label 是app: webPod 选不上。我常用的办法是把新 Deployment 的标签对齐到旧 Service 上分三步走# 第一步用 dry-run 生成 YAML不实际创建 kubectl create deployment web --imagenginx:1.14 --dry-runclient -o yaml web.yaml # 第二步把所有 app: web 改成 run: web保持 label 和 selector 一致 sed -i s/app: web/run: web/g web.yaml # 第三步apply 后再扩副本、暴露服务 kubectl apply -f web.yaml kubectl scale deployment web --replicas3 kubectl expose deployment web --port80为什么用 sed 敢全局替换因为在kubectl create deployment生成的 YAML 里app: web这个标签会同时出现在 Deployment 的 metadata、selector.matchLabels 和 Pod template 三处全局替换能让三处保持一致。反过来如果你更愿意让 Service 适配新的app: web标签也可以直接改 Servicekubectl patch svc web -p {spec:{selector:{app:web}}}两种方案都能通我的建议是如果 Service 也是脚本新创建的直接统一用新标签如果 Service 是历史遗留且有很多关联配置优先改 Deployment 标签少动 Service。4.4 改造后如何验证命令替换完不等于改造完成跑一遍验证才有底kubectl get deploy,rs,pods -l appweb kubectl get svc web kubectl get endpoints web kubectl rollout status deployment/web kubectl get job pi kubectl get cronjob cron kubectl logs job/pi重点看kubectl get endpoints web只要这里出现了 Pod IP说明 Service 和 Deployment 的标签对上了流量能正常转发。再看 Job 的日志确认一次性任务真的执行成功。最后确认整个过程没有任何 DEPRECATED 字样才算真正迁移干净。5. 常见问题与排查实录5.1 高频问题速查表现象原因处理方法命令输出 DEPRECATED 但资源创建成功使用了已被标记弃用的 generator按对照表改写成 create 系列命令报error: unknown generator type当前 kubectl 版本已移除该 generator删除--generator改用新命令kubectl run nginx --imagenginx创建出的是 Pod 而不是 Deployment1.18 之后 kubectl run 默认只创建 Pod创建 Deployment 用kubectl create deploymentService 有定义但 Endpoints 为空Deployment 标签从run:变成app:选择器不匹配统一标签或 patch Service selector新 Deployment 副本数不是 3新版 create deployment 没有--replicas用kubectl scale deployment扩缩容CI 里命令明明成功却标红弃用警告打印到了 stderr被流水线捕获从源头改写命令不要用2/dev/null掩盖5.2 我踩过的几个坑第一个坑是用2/dev/null屏蔽警告。刚开始觉得反正命令能执行成功警告又不会造成实际影响就顺手在脚本里把 stderr 丢了。结果 kubectl 一升级警告直接变成硬报错而且报错信息也被一起屏蔽了日志里什么都看不到排查了半天才发现是 generator 的问题。正确做法永远是改命令而不是掩盖警告。第二个坑是天真地以为“把--generator删掉就行”。如果旧命令是kubectl run nginx --imagenginx --replicas3 --generatordeployment/v1把 generator 删掉后在 1.18 版本上执行的是kubectl run nginx --imagenginx --replicas3语义已经变成创建 Pod。Pod 没有副本概念--replicas要么报错要么被忽略实际效果和原来的 Deployment 天差地别。所以删参数不等于迁移必须连命令名一起换。第三个坑是标签不一致导致的“静默故障”。有一次迁移后看 Deployment、Pod 都正常Service 也显示web存在但访问就是 503。查到最后是 Service selector 还在选run: nginx而新 Pod 的标签是app: nginx。这类问题不报错、不警告只能靠查 Endpoints 才能发现很容易被忽略。第四个坑和旧 YAML 有关。除了命令里的 generator很多老项目还留着 2018 年前后的 YAML 文件里面的apiVersion可能还是extensions/v1beta1。这类资源即使绕过 generator 问题新版集群也可能直接拒绝。建议统一改成apps/v1不确定字段的话先kubectl create deployment --dry-runclient -o yaml生成一个标准模板做参照。第五个坑是交互式命令在 CI 里卡死。kubectl run -it --rm在本地终端很好用但放进没有 TTY 的流水线里会因为无法分配终端而一直等待。排查类任务在 CI 里做建议改用 Job 加日志轮询的方式或者至少把-it去掉避免任务挂死。6. 几个值得长期养成的习惯我自己经历过几次集群和 kubectl 大版本升级后慢慢总结出几条习惯不一定适合所有人但确实帮我少踩了很多坑。第一项目里的 kubectl 命令不要散落在每个人的笔记里统一收口到 Makefile、脚本或者 GitOps 仓库。同一套命令模板通过版本管理统一演进升级时只改一处所有人拉最新代码就跟着更新了。这是治本比每次报错再修命令高效得多。第二养成了“先 dry-run 生成 YAML再 apply”的工作流。kubectl create deployment xxx --imagexxx --dry-runclient -o yaml并不会真的创建资源只是把 kubectl 内部会生成的清单打印出来。任何不确定的命令先这样看一遍默认值再手动改字段最后kubectl apply -f比直接在集群上试错安全得多。第三升级 kubectl 之前先全局扫描一遍老写法。两个 grep 就能完成grep -rn kubectl run --include*.sh . grep -rn generator --include*.sh --include*.yaml .把扫出来的结果在前面几节的对照表里过一遍提前把命令改好再升级客户端版本这样能把“升级即事故”的概率降到最低。最后分享一个小技巧如果你手里还压着一批旧 API 版本的 YAML别急着手工逐行改。先用kubectl create deployment --dry-runclient -o yaml生成一份当前版本的标准结构基于它做字段迁移比对着老文档硬改快得多。踩过几次坑之后你会认同一个结论在 K8s 的世界里跟着版本主动改脚本永远比等报错来了再被动修要省心。

相关新闻

WoSignCode代码签名证书更换实战:时间戳、证书链与批量签名全流程

WoSignCode代码签名证书更换实战:时间戳、证书链与批量签名全流程

这几天刚帮项目把一批到期代码签名证书换完,整个流程走下来,顺手把沃通代码签名工具WoSignCode的用法从头到尾重理了一遍。这个工具看着不起眼,真到证书临期、用户那边开始报“未知发布者”的时候,它就是那个能少熬夜的救急设备。…

2026/10/14 3:01:31 阅读更多 →
Abaqus中水力压裂裂缝交互模拟技术解析

Abaqus中水力压裂裂缝交互模拟技术解析

1. 水力压裂模拟中的裂缝交互难题在油气田开发领域,水力压裂技术已经成为非常规储层增产的核心手段。但实际作业中经常会遇到一个棘手问题:当人工水力裂缝在扩展过程中遭遇天然裂缝网络时,其扩展路径和开度会发生怎样的变化?这个问…

2026/10/14 3:01:31 阅读更多 →
Django电商订单分析系统:智能处理与可视化优化

Django电商订单分析系统:智能处理与可视化优化

1. 项目背景与核心价值电商行业每天产生海量订单数据,但大多数中小商家缺乏专业数据分析能力。这套基于Django的Python电商订单分析系统,正是为解决这个痛点而生。我在实际电商项目中发现,原始数据中藏着大量金矿——用户购买时段分布、热销商…

2026/10/14 3:01:31 阅读更多 →

最新新闻

一张图微调YOLOv11:自然栖息地鸟类检测的流程与扩充

一张图微调YOLOv11:自然栖息地鸟类检测的流程与扩充

简介:面向 YOLOv11 模型验证需求,这份精简版鸟类目标检测数据集包含一张真实野外鸟类图像及配套标准标注,可用于快速原型验证、轻量级部署测试与小样本检测基线建立。压缩包共五个文件,包含三张 JPG 图像、一个数据配置文件与一个…

2026/10/14 3:39:38 阅读更多 →
ASP.NET + SQLServer葡萄酒商城源码:从数据库还原到下单事务全攻略

ASP.NET + SQLServer葡萄酒商城源码:从数据库还原到下单事务全攻略

简介:一套基于ASP.NET与SQL Server的葡萄酒网上商城销售系统,面向ASP.NET WebForm学习者、毕业设计学生以及需要搭建在线商城教学演示的开发者。系统围绕普通会员、商户会员和管理员三类角色展开,覆盖商品管理、购物车、订单处理、发货、商户…

2026/10/14 3:39:38 阅读更多 →
LangChain项目代码拆解:Chain、Agent、Memory与Retrieval四大核心组件实战指南

LangChain项目代码拆解:Chain、Agent、Memory与Retrieval四大核心组件实战指南

简介:这是一份LangChain入门与实践的项目代码包,面向正在学习大模型应用开发的Python开发者,旨在帮助读者快速理解LangChain的模块化设计与核心用法。包内共3个文件,包含一个HTML格式的入门讲解页、一个项目运行配置文件以及一个版…

2026/10/14 3:39:38 阅读更多 →
C++学习日记 Day21:C++11(下)lambda表达式和function包装器

C++学习日记 Day21:C++11(下)lambda表达式和function包装器

## 今天学了什么今天学习C11的lambda表达式和function包装器。## 可调用对象概念:在C中有一类对象可像函数一样调用;分类:①函数指针using prt void(*)(int, string); prt f1 fun; f1(1, "函数指针");②仿函数 --有 operator&am…

2026/10/14 3:39:38 阅读更多 →
一人公司AI工作流:6步实现内容生产去体力化

一人公司AI工作流:6步实现内容生产去体力化

1. 一人公司的内容困局与破局思路一个人做内容,最怕的不是没灵感,而是灵感来了却卡在“执行”上。写一篇长文要三小时,做一张配图要半小时,剪一条短视频要一整个下午,排版发布又要来回切换四五个平台。一天下来&#x…

2026/10/14 3:39:38 阅读更多 →
8765平台前后摄DVDD电压不一致排查与修复指南

8765平台前后摄DVDD电压不一致排查与修复指南

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

2026/10/14 3:38:38 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →