Ansible Playbook tags 实战:从全量执行到精准任务选择
1. 为什么 tags 是 Playbook 从能跑到好用的分水岭刚接触 Ansible 那会儿我写 Playbook 的习惯特别粗暴一个site.yml从头写到尾装包、改配置、推模板、重启服务、验证端口全塞在一个文件里。几十行的任务量还能忍等到一个 Playbook 膨胀到三五百行、覆盖十几台机器的初始化流程时问题就来了——我只想改一个 Nginx 的配置文件结果一执行整个 Playbook 从头跑到尾装包任务重新跑一遍数据库初始化又跑一遍中间某个幂等性没写好的任务还报了个错整个流程直接中断。那种感觉就像你只想从冰箱里拿瓶水结果触发了整个厨房的重新装修。tags就是解决这个痛点的东西。它给 Playbook 里的任务、角色、甚至整个 play 打上标签让你在运行时用--tags精确指定我这次只跑哪些或者用--skip-tags排除这次别碰哪些。听起来简单但真正把它用顺手需要理解它的作用范围、继承规则、特殊标签always、never的行为以及和--list-tags、--list-tasks这些调试参数的配合。这些细节文档里都有但散落在不同章节实际踩坑的时候才会一个个撞上去。这篇文章适合两类人一类是已经能写 Playbook、但每次执行都全量跑、效率低下的运维或开发同学另一类是想把 Playbook 做成可复用、可分层执行的基础设施代码、正在设计标签体系的工程师。我会从设计思路讲到具体写法再到实际执行时的参数组合和排查技巧尽量把我在真实项目里踩过的坑都摊开说。核心关键词就是Ansible、Playbook、tags、标签、任务选择、幂等执行这些会贯穿全文。2. tags 的核心机制与设计思路拆解2.1 tags 到底解决了什么问题先把这个概念说透。Ansible 的 Playbook 本质是一份任务清单默认行为是从上到下、一个不落地全部执行。这在首次部署时没问题但在日常运维里绝大多数操作都是局部修改改一个配置、重启一个服务、更新一个二进制包。如果每次都全量跑除了浪费时间更大的风险是误触发不该跑的任务——比如某个清理任务、某个数据迁移脚本本来只想改配置结果它也跟着跑了。tags提供了一层任务筛选机制。你可以把它理解成给每个任务贴便利贴执行时告诉 Ansible这次只撕下贴了config标签的便利贴其他的别动。 这个机制的价值在于三点执行效率只跑需要的任务、操作安全避免误触发危险任务、流程复用同一份 Playbook 支持多种执行场景比如只部署、只配置、只验证。2.2 标签的三种作用层级很多人以为 tags 只能打在 task 上其实它有三个层级理解这个层级关系是设计标签体系的前提。作用层级写法位置影响范围典型用途Play 级play 的tags字段该 play 下所有任务默认继承整组机器按环境打标Role 级role 引用时的tags该 role 内所有任务继承按功能模块打标Task 级单个 task 的tags仅该任务精细控制单个操作这里有个关键点标签是向下继承的。给一个 play 打了tags: [web]那么这个 play 里所有任务都自动带上web标签除非任务自己又加了别的标签。Role 级同理。这个继承机制让标签体系可以分层设计——顶层用大颗粒度标签环境、角色底层用细颗粒度标签具体操作执行时按需组合。2.3 为什么不用 include 拆分文件代替 tags有人会问我直接把 Playbook 拆成多个文件用include_tasks按需引入不就行了为什么还要 tags这是个好问题两者其实是互补而非替代关系。拆文件解决的是代码组织问题让 Playbook 结构清晰、便于维护tags 解决的是运行时选择问题让你在同一个入口下灵活选择执行范围。实际项目里我通常两者都用文件按功能模块拆install.yml、config.yml、deploy.yml每个文件里的任务再打上细粒度标签。这样既保证了代码可读性又保留了执行时的灵活性。如果只用拆文件你想只跑所有模块里的配置类任务就很别扭得写一堆 include 逻辑而 tags 一行--tags config就搞定了。2.4 标签命名的设计原则标签命名看着是小事但项目一大命名混乱会直接导致执行时记不住、打错字、跑错范围。我总结了几条实践原则用短横线或下划线统一风格别一会儿web-config一会儿web_config容易混。按维度分层命名比如env-prod、role-web、action-config一眼能看出这个标签属于哪个维度。避免和内置标签冲突always、never、all、tagged、untagged这几个是 Ansible 保留的别拿来当业务标签。标签数量控制在合理范围一个任务打三五个标签是正常的打十几个就说明设计有问题了。提示标签是大小写敏感的Config和config是两个不同的标签。团队协作时最好约定全小写减少沟通成本。3. tags 的实操写法与关键细节3.1 单个任务打标签的基础写法最基础的用法就是给单个 task 加tags字段值可以是字符串也可以是列表。- name: 安装 Nginx ansible.builtin.yum: name: nginx state: present tags: - install - web - name: 推送 Nginx 主配置 ansible.builtin.template: src: nginx.conf.j2 dest: /etc/nginx/nginx.conf tags: - config - web这里安装 Nginx同时带了install和web两个标签意味着--tags install、--tags web、--tags install,web都能选中它。这种多标签写法很实用因为它让同一个任务可以从不同维度被筛选——按操作类型install/config或按业务模块web/db。3.2 Play 级和 Role 级标签的继承Play 级标签写在 play 的顶层- hosts: webservers tags: - web tasks: - name: 启动 Nginx ansible.builtin.service: name: nginx state: started这个 play 下所有任务都自动继承web标签。Role 级标签在引用 role 时指定- hosts: webservers roles: - role: nginx tags: - web - nginx-roleRole 级标签的好处是你不需要进到 role 内部去改每个 task就能给整个 role 打上统一标签。这在引入第三方 role 时特别有用——你没法改人家的代码但可以在引用时加标签。3.3 特殊标签 always 和 never 的行为这两个是 Ansible 内置的特殊标签行为很反直觉必须单独说。always标签的任务无论你用--tags指定什么它都会执行。典型场景是那些必须保证执行的任务比如收集事实、检查前置条件、记录执行日志。- name: 记录本次执行时间 ansible.builtin.debug: msg: 执行于 {{ ansible_date_time.iso8601 }} tags: - alwaysnever标签则相反除非你显式用--tags never指定否则它永远不执行。这个标签适合那些平时不跑、只在特定场景手动触发的任务比如清理缓存、重建索引、执行数据修复脚本。- name: 清理旧日志仅手动触发 ansible.builtin.file: path: /var/log/old state: absent tags: - never - cleanup注意always和never同时存在时always优先级更高。另外--skip-tags always是无效的你没法跳过always标签的任务这是设计上的强制保证。3.4 用 --list-tags 和 --list-tasks 摸清标签全貌写标签容易记住标签难。尤其是接手别人写的 Playbook或者自己隔了几个月回头看根本想不起来有哪些标签。这时候两个参数就是救命的ansible-playbook site.yml --list-tags ansible-playbook site.yml --list-tasks--list-tags列出 Playbook 里所有标签--list-tasks列出所有任务及其标签。我习惯在改 Playbook 前先跑一遍--list-tags确认标签体系没乱再动手。这两个参数还有个隐藏价值它们会做语法检查如果 Playbook 有 YAML 语法错误这两个命令会直接报错比跑到一半才发现问题强得多。3.5 标签与 when 条件的区别新手容易把 tags 和when搞混觉得都是控制任务是否执行。其实两者维度完全不同对比项tagswhen决策时机运行时由命令行参数决定执行时由变量/事实决定决策依据用户手动指定系统状态自动判断典型用途选择执行范围条件性执行是否可预测完全可预测依赖运行时状态简单说tags 是我想跑哪些when 是系统允许跑哪些。实际项目里两者经常配合先用 tags 圈定范围再用 when 做条件判断。比如只跑配置类任务tags但只在配置文件不存在时执行when。4. 完整实操流程与执行参数详解4.1 一个可复现的示例 Playbook光说理论没意思我搭一个完整的示例你可以直接抄去改。假设我们要部署一个 Web 服务Playbook 结构如下- hosts: webservers become: true tags: - web tasks: - name: 安装基础依赖 ansible.builtin.yum: name: - nginx - curl state: present tags: - install - name: 创建应用目录 ansible.builtin.file: path: /opt/myapp state: directory mode: 0755 tags: - install - config - name: 推送应用配置 ansible.builtin.template: src: app.conf.j2 dest: /opt/myapp/app.conf tags: - config notify: 重启应用 - name: 启动并设置开机自启 ansible.builtin.service: name: nginx state: started enabled: true tags: - service - name: 验证端口监听 ansible.builtin.wait_for: port: 80 timeout: 10 tags: - verify - name: 清理临时文件手动触发 ansible.builtin.file: path: /tmp/myapp-deploy state: absent tags: - never - cleanup handlers: - name: 重启应用 ansible.builtin.service: name: nginx state: restarted这个 Playbook 覆盖了install、config、service、verify、cleanup五类标签加上 play 级的web一共六个标签维度。4.2 各种执行场景的参数组合有了上面的 Playbook我们来看不同场景下怎么执行。场景一首次全量部署。直接跑什么都不加never标签的任务不会执行ansible-playbook site.yml场景二只装依赖不碰配置。用--tags installansible-playbook site.yml --tags install场景三只更新配置并触发重启。用--tags config注意 handler 会被触发ansible-playbook site.yml --tags config这里有个细节--tags config会选中推送应用配置任务它notify了重启应用 handler。handler 默认会执行即使它自己没打config标签。这是很多人踩过的坑——以为只跑配置结果服务被重启了。如果你不想让 handler 跑得用--skip-tags配合或者给 handler 也打上标签。场景四跳过安装跑其他所有。用--skip-tags installansible-playbook site.yml --skip-tags install场景五只跑验证。用--tags verifyansible-playbook site.yml --tags verify场景六手动触发清理。用--tags cleanup或--tags neveransible-playbook site.yml --tags cleanup场景七组合标签。多个标签用逗号分隔表示或关系ansible-playbook site.yml --tags install,config4.3 标签组合的逻辑关系这里必须说清楚--tags多个值的逻辑。--tags a,b是或关系选中带a或带b的任务。那与关系怎么实现答案是用嵌套标签——给任务同时打a和b然后--tags a,b会选中它但也会选中只带a的任务。真正的与筛选Ansible 原生不支持需要靠标签设计来规避。我的做法是用组合标签名代替逻辑运算。比如需要web 环境下的配置任务不要指望--tags web,config能精确筛选而是直接给这类任务打一个web-config标签。标签名本身就是组合语义执行时一个标签搞定清晰又可靠。4.4 参数速查表把常用参数整理成表方便对照参数作用示例--tags只执行指定标签的任务--tags config--skip-tags跳过指定标签的任务--skip-tags install--list-tags列出所有标签--list-tags--list-tasks列出所有任务及标签--list-tasks--tags all执行所有任务含 never--tags all--tags tagged只执行有标签的任务--tags tagged--tags untagged只执行没标签的任务--tags untaggedtagged和untagged这两个特殊值很实用。--tags tagged可以快速检查哪些任务被打了标签--tags untagged则能揪出漏打标签的任务——这在做标签体系规范化时特别有用。5. 常见问题与排查技巧实录5.1 handler 被意外触发这是最高频的坑。前面提过--tags config会触发notify的 handler即使 handler 没打config标签。原因是handler 的执行不受--tags过滤只要它被 notify 了就会跑。解决办法有两个一是给 handler 也打上对应标签然后用--skip-tags排除二是在 handler 里加when条件用变量控制是否执行。我一般用第一种简单直接。handlers: - name: 重启应用 ansible.builtin.service: name: nginx state: restarted tags: - service - config5.2 标签继承导致的误伤Play 级标签会继承给所有任务这本来是好事但如果你给 play 打了web又用--tags web执行那这个 play 下所有任务都会跑包括你不想跑的。这时候细粒度标签就失效了。我的经验是play 级标签只用于整组执行场景比如只跑 web 组的全部任务。如果需要细粒度控制就别在 play 级打太具体的标签把控制权留给 task 级。5.3 标签拼写错误导致任务不执行--tags confg少个 i不会报错Ansible 会安静地什么都不执行然后告诉你没有任务匹配。这种静默失败最坑人因为你以为跑了其实啥也没干。排查方法执行前先--list-tags确认标签名或者用--tags时故意写错看是否有警告。更稳妥的做法是在 CI 流程里加一步--list-tags的校验把标签清单固化下来。5.4 动态 include 与标签的交互用include_tasks动态引入任务时标签行为有个特殊点include 语句本身的标签会传递给被引入的任务但被引入文件内部任务的标签需要单独处理。如果 include 是动态的带when标签过滤会在 include 执行后才生效可能导致预期外的行为。我的建议是动态 include 尽量配合静态标签使用别在动态引入的任务上做复杂的标签筛选。如果确实需要用apply关键字给整个 include 块统一打标签- name: 引入配置任务 ansible.builtin.include_tasks: file: config.yml apply: tags: - config tags: - config5.5 常见问题速查表问题现象可能原因解决方法任务没执行标签拼写错误--list-tags核对handler 意外执行handler 不受 tags 过滤给 handler 打标签或加 when全量任务都跑了play 级标签继承检查 play 级 tags 设置never 任务跑了用了--tags all改用具体标签always 任务跳不过always 强制执行设计上无法跳过需改任务动态 include 标签失效include 时机问题用 apply 统一打标5.6 我踩过的两个真实坑第一个坑是标签名和变量名撞车。有次我定义了一个变量叫config又给任务打了config标签结果在模板里引用变量时脑子一抽以为是标签排查了半天。教训是标签和变量用不同的命名前缀区分比如标签统一加tag-前缀虽然啰嗦但清晰。第二个坑是在 role 里用--tags时忘了 role 级标签。我引用了三个 role只想跑其中一个的配置任务结果--tags config把三个 role 里所有带config的任务都跑了。后来改成给每个 role 加独立前缀标签nginx-config、db-config执行时精确指定问题解决。提示标签体系一旦定下来最好写进团队规范文档并在 CI 里做校验。人脑记不住几十个标签靠工具兜底才靠谱。6. 标签体系的分层设计与规模化实践6.1 三层标签模型当 Playbook 规模上去之后标签不能随便打得有体系。我实践下来比较顺手的是一套三层模型环境层env-prod、env-staging、env-dev标识目标环境。角色层role-web、role-db、role-cache标识机器角色。操作层action-install、action-config、action-deploy、action-verify标识操作类型。执行时按需组合比如生产环境 Web 角色的配置任务就是--tags env-prod,role-web,action-config。虽然前面说过多标签是或关系但在这个模型下因为每个任务通常只带一个环境标签、一个角色标签、一个操作标签组合筛选的实际效果接近与足够用了。6.2 用标签实现灰度发布标签还能玩出灰度发布的思路。假设你有 10 台 Web 机器想先在一台上验证配置再全量推。可以给机器分组打标签或者用--limit配合标签ansible-playbook site.yml --tags action-config --limit web-canary--limit限制目标主机--tags限制任务范围两者组合就是在灰度机器上只跑配置任务。验证没问题后去掉--limit全量推。这套组合拳在真实发布流程里非常好用比写两套 Playbook 优雅得多。6.3 标签与 CI/CD 流水线的结合在流水线里标签是阶段划分的天然载体。比如一个部署流水线分四步安装依赖、推送配置、重启服务、健康检查。对应四个标签流水线每个阶段调一次ansible-playbook用不同--tagsansible-playbook site.yml --tags action-install ansible-playbook site.yml --tags action-config ansible-playbook site.yml --tags action-service ansible-playbook site.yml --tags action-verify这样做的好处是每个阶段独立可重试。配置阶段失败了修完直接重跑配置阶段不用从头来。而且每个阶段的日志清晰排查问题快。6.4 标签的维护与演进标签体系不是定完就不动的。项目演进过程中任务会增删标签也得跟着调整。我的做法是每季度做一次标签审计跑--list-tags导出当前标签清单对照任务清单找出三类问题——没人用的僵尸标签、语义重复的冗余标签、该打没打的遗漏标签。清理一轮体系就清爽一轮。另外标签变更要谨慎。删掉一个标签前先全局搜索哪些地方在用包括 CI 配置、文档、脚本确认没有依赖再删。我吃过一次亏删了个以为没人用的标签结果某个定时任务里还在用第二天凌晨任务静默失败早上才发现。7. 一些零散但实用的经验补充关于--tags和--skip-tags同时使用行为是先按 tags 选中再按 skip-tags 排除。比如--tags action-config --skip-tags env-dev就是跑配置任务但跳过开发环境的。这个组合在需要排除特定环境时很好用。关于标签的调试-vvv配合--list-tasks能看到每个任务的标签归属排查为什么这个任务被选中/没被选中时特别有效。我习惯在复杂 Playbook 上先跑--list-tasks -vvv把任务和标签的映射关系看清楚再执行。关于never标签的替代方案其实用when: false加变量控制也能实现默认不跑、手动触发但never更语义化而且不依赖变量传递在跨 Playbook 调用时更可靠。我现在的习惯是纯手动触发的任务用never需要条件判断的用when。最后分享一个我常用的技巧给所有危险操作任务删文件、停服务、清数据统一打一个danger标签然后在日常执行时默认--skip-tags danger。这样即使手滑跑了全量危险任务也不会被触发。需要执行时再显式--tags danger多一道确认少一次事故。这个习惯帮我避免过至少两次生产环境的误操作强烈推荐你也加上。

相关新闻

FTN超奈奎斯特通信:用可控码间干扰提升频谱效率

FTN超奈奎斯特通信:用可控码间干扰提升频谱效率

简介:本资源是一套面向通信工程高年级本科生、研究生及无线通信研发工程师的超奈奎斯特(Faster-than-Nyquist, FTN)信道容量仿真分析工具包,聚焦突破传统奈奎斯特速率限制的核心问题,助力理解FTN信号在带宽受限场景下的…

2026/10/12 23:16:42 阅读更多 →
DDE-BIFTOOL实战:时滞系统Hopf分岔分析与周期解延拓

DDE-BIFTOOL实战:时滞系统Hopf分岔分析与周期解延拓

简介:这份资源围绕延迟微分方程的分支理论展开,配套ddebiftool工具集,面向从事动力系统、生物数学、神经网络与控制理论等方向的研究生和科研人员,帮助解决DDEs平衡点、周期解及Hopf、鞍结等分支点的数值求解与可视化问题。压缩包…

2026/10/12 23:16:42 阅读更多 →
京东淘宝竞品分析全解:从商业模式到运营策略

京东淘宝竞品分析全解:从商业模式到运营策略

简介:一份面向互联网产品与运营从业者的电商竞品分析报告,聚焦京东APP与淘宝APP的综合对比。报告从产品定位、核心功能、交互体验、运营策略等维度梳理两款头部应用的设计思路与商业逻辑,既适合产品新人学习竞品分析方法,也可作为…

2026/10/12 23:15:40 阅读更多 →

最新新闻

从防御视角理解签名算法与风控机制

从防御视角理解签名算法与风控机制

抱歉,我无法按该标题生成此类内容。这个标题对应的具体场景,是绕过小红书的风控和签名机制做非法逆向,属于针对在线服务的未授权破解类操作。这类内容在中国法律框架下可能涉及非法获取计算机信息系统数据、破坏计算机信息系统或规避网络安全…

2026/10/13 1:39:10 阅读更多 →
22 个免费开箱即用的宝藏项目,全部来自中国独立开发者清单

22 个免费开箱即用的宝藏项目,全部来自中国独立开发者清单

22 个免费开箱即用的宝藏项目,全部来自中国独立开发者清单 【免费下载链接】chinese-independent-developer 👩🏿‍💻👨🏾‍💻👩🏼‍💻👨&#x1…

2026/10/13 1:39:10 阅读更多 →
TinyBase 数据写入完全指南:Store 的 Values 与 Tables 写入、编码与删除机制

TinyBase 数据写入完全指南:Store 的 Values 与 Tables 写入、编码与删除机制

数据库后端前端 【免费下载链接】tinybase A reactive data store & sync engine. 项目地址: https://gitcode.com/gh_mirrors/ti/tinybase 点击查看 免费下载 TinyBase 是一个轻量级的响应式数据存储与同步引擎,其核心 Store 承担着数据读写的全部…

2026/10/13 1:39:10 阅读更多 →
VB.NET WinForms实战:Excel数据读取、去重与Listbox绑定全解析

VB.NET WinForms实战:Excel数据读取、去重与Listbox绑定全解析

1. 从Excel到Listbox:一个看似简单却暗藏玄机的需求做过WinForms桌面开发的人,几乎都绕不开一个经典场景:用户手里有一份Excel表格,想把其中某一列的数据读出来,塞进界面上的Listbox控件里,而且还要自动去掉…

2026/10/13 1:39:10 阅读更多 →
AnyPS5跨平台串流实战:低延迟游戏串流架构与优化指南

AnyPS5跨平台串流实战:低延迟游戏串流架构与优化指南

1. 从“AnyPS5”这个标题说起:一个跨平台串流工具的设计野心第一次看到“AnyPS5”这个命名,我的直觉是:这大概率是一个围绕主机游戏串流展开的跨平台工具项目。名字里的“Any”是核心——它暗示的不是单一平台、单一设备,而是“任…

2026/10/13 1:39:10 阅读更多 →
VirtualBox虚拟机与主机互通,并且虚拟机又能上网

VirtualBox虚拟机与主机互通,并且虚拟机又能上网

## 四种网络模式1、NAT 网络地址转换模式(NAT,Network Address Translation) 2、Bridged Adapter 桥接模式 3、Internal 内部网络模式 4、Host-only Adapter 主机模式 版本一:## 设置1、关闭虚拟机,VirtualBox->偏好设置->网络NAT网络,…

2026/10/13 1:38:10 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →