eksctl v0.144.0 发布深度解析:资源型主机名子网、CoreDNS 安全关停与负载均衡器清理修复
云原生容器编排DevOps【免费下载链接】eksctlThe official CLI for Amazon EKS项目地址https://gitcode.com/gh_mirrors/ek/eksctl点击查看免费下载本篇围绕 eksctl v0.144.0 的官方发布说明docs/release_notes/0.144.0.md展开逐项解读该版本引入的核心能力通过vpc.hostnameType创建资源型主机名子网、为 Kubernetes 1.251.27 集群的 CoreDNS 启用ready插件与health.lameduck安全关停机制、更新 aws-load-balancer-controller 的 IAM 策略语句以及针对DescribeUpdate重试逻辑、ALB 清理、Windows 节点默认卷名的多项缺陷修复。读完本文你可以掌握hostnameType的取值与限制条件、CoreDNS 资产按控制面版本加载的原理并能定位到每一处变更对应的源码与集成测试。v0.144.0 变更总览该版本共包含 1 项功能Features、2 项改进Improvements、3 项缺陷修复Bug Fixes、3 项维护Maintenance以及 1 项文档Documentation变更完整清单如下类别变更内容对应 PRFeatures允许创建使用资源型主机名resource-based hostnames的子网#6651Improvements更新 loadbalancer controller 的 IAM policy statement#6655Improvements为 1.25、1.26、1.27 版本的 CoreDNS 移植 ready 插件并启用 health.lameduck 安全关停#6630Bug Fixes调用eks:DescribeUpdate时仅对合适的 API 错误进行重试#6645Bug Fixes基于spec.ingressClassName清理 ALB并覆盖 ALB 安全组#6389Bug Fixes将 Windows 节点默认卷名设置为/dev/sda1#6638Maintenance清理 README 与贡献文档修正格式和拼写#6660Maintenance修复 Trainium 与 Inferentia 集成测试的日志栈事件逻辑#6649Maintenance将 schemer 依赖从 v0.0.0-2021 升级至 v0.0.0-2023#6646Documentation生成 ATTRIBUTIONS.md 文件#6647本节后续将逐项结合仓库源码展开。新功能vpc.hostnameType支持资源型主机名子网v0.144.0 最重要的功能更新#6651是允许 eksctl 在创建集群 VPC 时为子网指定基于 EC2 资源名称的主机名resource-name而不是默认的基于 IP 的主机名ip-name。这样启动在该子网中的实例其私有 DNS 名会形如资源名称.region.compute.internal而非IP 点分十进制.region.compute.internal。配置方式与限制条件该功能通过 ClusterConfig 的vpc段下的hostnameType字段配置。字段定义见 vpc.go// HostnameType is the type of hostname to use for EC2 instances. HostnameType string json:hostnameType,omitempty一个可直接复制的完整示例来自 examples/02-custom-vpc-cidr-no-nodes.yamlapiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: cluster-2 region: eu-north-1 vpc: cidr: 10.10.0.0/16 autoAllocateIPv6: true hostnameType: resource-name # disable public access to endpoint and only allow private access clusterEndpoints: publicAccess: false privateAccess: true nodeGroups: []配置校验逻辑位于 validation.go其中包含两条明确的适用前提与限制if c.VPC.HostnameType ! { if c.HasAnySubnets() { return errors.New(vpc.hostnameType is not supported with a pre-existing VPC) } var hostnameType ec2types.HostnameType found : false for _, h : range hostnameType.Values() { if h ec2types.HostnameType(c.VPC.HostnameType) { found true break } } if !found { return fmt.Errorf(invalid value %q for vpc.hostnameType; supported values are %v, c.VPC.HostnameType, hostnameType.Values()) } }从源码结构看可以归纳出以下使用约束仅适用于 eksctl 托管的新建 VPC如果配置了已有子网vpc.subnets即“已有 VPC”场景会直接报vpc.hostnameType is not supported with a pre-existing VPC错误取值必须合法取值范围由 AWS SDK 的ec2types.HostnameType枚举决定合法值为ip-name与resource-name否则会收到invalid value ... for vpc.hostnameType报错。这些约束在 validation_test.go 中有对应的用例覆盖非法值invalid报错、ip-name与resource-name通过校验、以及在已有 VPC设置了subnets场景下拒绝该字段。底层实现CloudFormation 模板中的 PrivateDnsNameOptionsOnLaunch当hostnameType非空时eksctl 会在生成的 CloudFormation 模板里为每个子网追加PrivateDnsNameOptionsOnLaunch属性。核心调用链是addSubnets→maybeSetHostnameType见 vpc_ipv4.go 与 vpc_ipv4.gosubnet : gfnec2.Subnet{ AvailabilityZone: gfnt.NewString(az), CidrBlock: gfnt.NewString(s.CIDR.String()), VpcId: v.vpcID, } maybeSetHostnameType(v.clusterConfig.VPC, subnet)func maybeSetHostnameType(vpc *api.ClusterVPC, subnet *gfnec2.Subnet) { if hostnameType : vpc.HostnameType; hostnameType ! { subnet.PrivateDnsNameOptionsOnLaunch gfnec2.Subnet_PrivateDnsNameOptionsOnLaunch{ HostnameType: gfnt.NewString(hostnameType), } } }即最终渲染出的AWS::EC2::Subnet资源会带上PrivateDnsNameOptionsOnLaunch: { HostnameType: resource-name }。IPv6 路径同样经过同一函数见 vpc_ipv6.go因此该能力对 IPv4/IPv6 双栈 VPC 一并生效。集成测试如何验证该能力仓库中的集成测试 kms_subnet_test.go 用 kms-subnet-cluster.yaml 创建了一个带hostnameType: resource-name的集群并断言每个节点的主机名等于实例 ID.region.compute.internalIt(should have a resource-based hostname, func() { clientSet : makeClientSet() nodeList : tests.ListNodes(clientSet, mng-1) Expect(nodeList.Items).To(HaveLen(2)) for _, node : range nodeList.Items { instanceID, err : getInstanceID(node) Expect(err).NotTo(HaveOccurred()) Expect(node.Name).To(Equal(fmt.Sprintf(%s.%s.compute.internal, instanceID, params.Region))) } })该测试既验证了node.Name标签来源kubelet 以私有 DNS 名注册也印证了resource-name模式下实例私有 DNS 名确实基于资源标识而非 IP。需要留意的前提resource-name主机名只对创建之后启动的实例生效且受限于 VPC 级默认设置由子网级OnLaunch选项覆盖的行为实际运维中如需修改已有实例的主机名仍需另行调用 EC2 API。改进为 CoreDNS 1.251.27 移植 ready 插件与 lameduck 安全关停#6630 将此前见 0.117.0 首次引入、0.128.0 移植至 1.24的 CoreDNS 改进统一移植到了 Kubernetes 1.25、1.26 和 1.27 的默认 CoreDNS 资产中。仓库内每个受支持 Kubernetes 版本都有独立的 CoreDNS 资产文件例如 coredns-1.27.json其Corefile为.:53 { errors health { lameduck 5s } ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa } prometheus :9153 forward . /etc/resolv.conf cache 30 loop reload loadbalance }两处关键改动的作用可以对照插件语义理解ready插件在/ready端点报告 CoreDNS 是否已具备服务能力配合 Kubernetes 的readinessProbe使用避免 Pod 刚调度就被 Service 转发流量health { lameduck 5s }当健康检查端点收到停止信号时先进入 5 秒“跛行鸭”lameduck排空窗口再真正下线让上游 DNS 客户端有窗口切换到其他副本从而实现滚动重启期间的更安全关停。从源码结构看资产按控制面版本加载coredns.go 的loadAssetCoreDNS会把控制面版本解析为主次版本前缀resolveK8sVersionPrefix再读取assets/coredns-主次版本.jsonfunc loadAssetCoreDNS(controlPlaneVersion string) (*metav1.List, error) { ... version, err : resolveK8sVersionPrefix(controlPlaneVersion) ... manifest, err : coreDNSDir.ReadFile(fmt.Sprintf(assets/%s-%s.json, CoreDNS, version)) ... }资产文件本身可通过 update_coredns_assets.go 脚本从上游 EKS 生成的清单批量刷新coredns_test.go 则校验各版本资产中的 Corefile 与预期一致。因此对 v0.144.0 用户而言创建或eksctl utils update-core-dns管理 1.251.27 集群时CoreDNS 即会携带上述配置。改进更新 aws-load-balancer-controller 的 IAM policy statement#6655 更新了内置的 loadbalancer controller IAM 策略语句。该策略对应 ClusterConfig 中的iam.policies.awsLoadBalancerController开关定义于 well_known_iam_policy.go// AWSLoadBalancerController adds policies for using the // aws-load-balancer-controller. See [Load Balancer // docs](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html). AWSLoadBalancerController bool json:awsLoadBalancerController,inline使用方式参考 examples/13-iamserviceaccounts.yaml 与 iam-policies.mdiam: withOIDC: true serviceAccounts: - name: aws-load-balancer-controller namespace: kube-system # policyARNs: # - arn:aws:iam::aws:policy/... wellKnownPolicies: awsLoadBalancerController: true策略语句的实际内容生成在 statement.go 中其中为 load-balancer-controller 授予了一组较完整的 ELBv2 管理权限包括elasticloadbalancing:ModifyLoadBalancerAttributes、SetSecurityGroups、ModifyTargetGroup、ModifyListenerAttributes等动作见 statement.go并带有Null: aws:ResourceTag/elbv2.k8s.aws/cluster: false的标签条件限定只操作属于当前集群的负载均衡资源。更新后的语句会随创建的 IAM Role 一并写入 CloudFormation 模板iam_test.go 的测试快照中也能看到elasticloadbalancing:ModifyLoadBalancerAttributes出现在生成的策略 JSON 中。这一变更意味着v0.144.0 之后用awsLoadBalancerController: true创建的控制器 Role 会获得与上游控制器要求对齐的权限集合降低因策略缺口导致的Forbidden报错概率。缺陷修复一DescribeUpdate仅对可重试的 API 错误重试#6645 修复了等待集群更新如升级控制面、启用 KMS 加密时的错误重试策略。修复前的行为是任何eks:DescribeUpdate调用错误都会无限重试等待修复后等待器通过 errors.go 的IsRetriableError判断错误是否“可重试”func IsRetriableError(err error) bool { var apiErr smithy.APIError if !errors.As(err, apiErr) { return true } switch { case isBadRequestErrorCode(apiErr), isNotFoundErrorCode(apiErr), isAccessDeniedErrorCode(apiErr): return false default: return true } }也就是说BadRequestException、NotFoundException/ResourceNotFoundException、AccessDenied/AccessDeniedException这类“确定性失败”不再被吞掉重试会立即向上返回。该判断被UpdateWaiter的Retryable闭包使用见 waiter.gooptions.Retryable func(ctx context.Context, input *eks.DescribeUpdateInput, output *eks.DescribeUpdateOutput, err error) (bool, error) { if err ! nil { if apierrors.IsRetriableError(err) { return true, nil } return false, err } switch output.Update.Status { case ekstypes.UpdateStatusSuccessful: return false, nil case ekstypes.UpdateStatusFailed, ekstypes.UpdateStatusCancelled: return false, UpdateFailedError{...} default: return true, nil } }这个等待器正是eksctl upgrade cluster、eksctl utils enable-secrets-encryption等流程的底层实现update.go 中waitForUpdateToSucceed会构造UpdateWaiter并以 30 秒最小、120 秒最大延迟做指数退避轮询DescribeUpdate。修复后的实际收益是当凭证权限不足或更新 ID 不存在时命令会快速失败并给出真实原因而不是等到整个--wait-timeout耗尽。缺陷修复二基于spec.ingressClassName清理 ALB 及其安全组#6389 修复了eksctl delete cluster阶段清理负载均衡器时的两类问题对应实现位于 pkg/elb/ingress.go 与 pkg/elb/cleanup.go1. Ingress class 判定优先使用spec.ingressClassName。在Ingress接口的两个实现中GetIngressClass都优先读取新版字段仅在其为空时回退到旧注解func (i *v1Ingress) GetIngressClass() string { if i.ingress.Spec.IngressClassName ! nil { return *i.ingress.Spec.IngressClassName } return i.ingress.Annotations[ingressClassAnnotation] }这意味着即使 Ingress 只设置了spec.ingressClassName: alb未写kubernetes.io/ingress.class注解Cleanup也能正确识别它为 ALB Ingress 并纳入清理流程识别逻辑见 cleanup.goIngress class 不是alb则跳过是alb但status.loadBalancer无 hostname 则视为未就绪也跳过。2. ALB 安全组一并纳入等待删除的集合。Cleanup对每个负载均衡器不仅记录名称与类型classic/network/application还通过getSecurityGroupsOwnedByLoadBalancercleanup.go解析其挂载的安全组仅保留带集群标签kubernetes.io/cluster/集群名或elbv2.k8s.aws/cluster的安全组 ID。删除 Service/Ingress 之后清理循环每 2 秒轮询一次直到“负载均衡器本身及其安全组全部消失”loadBalancerExists会同时检查两者见 cleanup.go。这一修复针对的是此前 ALB 删除后其安全组残留、导致集群删除卡住或资源残留的问题。缺陷修复三Windows 节点默认卷名设为/dev/sda1#6638 修正了为 Windows 节点组生成启动模板时块设备映射的默认卷名。在 block_device_mapping.go 中const ( rootDeviceForLinux /dev/xvda rootDeviceForWindows /dev/sda1 ) func makeBlockDeviceMappings(ng *api.NodeGroupBase) []gfnec2.LaunchTemplate_BlockDeviceMapping { var ( mappings []gfnec2.LaunchTemplate_BlockDeviceMapping baseVolumeName string ) if ng.VolumeName ! nil { baseVolumeName *ng.VolumeName } else if api.IsWindowsImage(ng.AMIFamily) { baseVolumeName rootDeviceForWindows } else { baseVolumeName rootDeviceForLinux } ...取值优先级清晰显式配置的nodeGroups[].volumeName Windows 镜像默认/dev/sda1 Linux 默认/dev/xvda。Windows Server 的 EBS 根设备名是/dev/sda1而非/dev/xvda此前默认值不匹配会导致volumeSize等 EBS 参数无法正确应用到根卷。修复后Windows 节点组的启动模板 golden 文件 windows.json 中即可看到BlockDeviceMappings: [ { DeviceName: /dev/sda1, Ebs: { Iops: 3000, Throughput: 125, VolumeSize: 200, VolumeType: gp3 } } ]相关单测覆盖了该映射行为见 block_device_mapping 测试 与 ami_test.go。维护与文档变更文档清理#6660整理 README 与贡献指南的格式和拼写属仓库卫生类变更不影响功能行为集成测试日志修复#6649修复 Trainium 与 Inferentia 集成测试在失败时打印 CloudFormation 栈事件的逻辑params.LogStacksEventsOnFailure一类的工具函数可参考 kms_subnet_test.go 中的用法schemer 依赖升级#6646将 schemer 从 2021 年版本升级至 2023 年版本schemer 用于生成 JSON Schema升级会间接影响 assets/schema.json 等 schema 产物的生成工具链ATTRIBUTIONS.md 生成#6647仓库根目录新增自动生成的第三方依赖归属文件 ATTRIBUTIONS.md。小结v0.144.0 的适用前提与升级要点vpc.hostnameType仅对 eksctl 新建的 VPC 生效配置已有子网的集群会在校验阶段直接报错合法取值为ip-name/resource-nameCoreDNS 的readyhealth.lameduck 5s变更随控制面版本加载对应资产1.231.29 各有独立 JSON 资产见 assets 目录在 1.251.27 集群上执行 CoreDNS 更新/新建时生效awsLoadBalancerControllerIAM 策略语句更新影响 v0.144.0 之后新创建的 IRSA Role存量集群可对比 statement.go 中的动作清单自查权限差异DescribeUpdate重试收紧后升级集群、启用 Secrets 加密等长时任务遇到权限类错误会快速失败属于预期行为变化Windows 节点组若显式指定了volumeName仍以显式值为准默认值仅在未指定时回退为/dev/sda1。以上各条变更均可在 docs/release_notes/0.144.0.md 中回溯到原始 PR 编号文中引用的源码路径与测试文件提供了从配置到 CloudFormation 模板、从 CLI 行为到集成断言的完整证据链便于在升级或排查问题时逐一定位。赞分享云原生容器编排DevOps【免费下载链接】eksctlThe official CLI for Amazon EKS项目地址https://gitcode.com/gh_mirrors/ek/eksctl点击查看免费下载相关推荐media-autobuild_suite配置教程3步完成FFmpeg自定义编译选项设置media autobuild_suite配置教程3步完成FFmpeg自定义编译选项设置 media autobuild_suite是一款强大的WindowsWereader测试与部署指南确保浏览器扩展稳定运行的完整流程Wereader测试与部署指南确保浏览器扩展稳定运行的完整流程 Wereader是一款专为微信读书用户设计的浏览器扩展特别适合习惯使用Markdown做笔记前端brpc 客户端负载均衡全解析命名服务、负载均衡算法与健康检查机制brpc 客户端负载均衡全解析命名服务、负载均衡算法与健康检查机制 brpcbetter RPC是百度开源的工业级 C RPC 框架其客户端侧围绕后端RPC框架通信网络上一篇如何快速解密微信聊天数据库WechatDecrypt完整指南下一篇WechatDecrypt终极指南3步快速解密微信数据库免费恢复聊天记录创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

美赛数学建模:模型选择与代码实现速成指南

美赛数学建模:模型选择与代码实现速成指南

1. 美赛数学建模速成指南:模型选择与代码实现数学建模竞赛中,模型选择往往比代码实现更重要。作为参加过多次美赛的老兵,我深刻体会到:优秀的建模思路能让你在有限时间内脱颖而出,而代码只是实现工具。本文将系统梳理美…

2026/10/13 6:30:47 阅读更多 →
AnyPS5:解构PS5技术范式,实现跨平台协议兼容与功能移植

AnyPS5:解构PS5技术范式,实现跨平台协议兼容与功能移植

项目标题:“AnyPS5”这个名称本身带有强烈的指向性与模糊性并存的特征——它既像一个技术代号、产品命名,又像某种非官方生态的统称。在当前主流消费电子语境中,“PS5”是索尼PlayStation 5游戏主机的通用缩写,具有高度辨识度&…

2026/10/13 6:30:47 阅读更多 →
AnyPS5:用ARM开发板打造游戏机家庭自动化方案

AnyPS5:用ARM开发板打造游戏机家庭自动化方案

先给你交个底,这篇写的不是某个官方软件,也不是什么破解向的工具。AnyPS5是我自己琢磨的一套家庭自动化小方案,起这个名字的意思是:不管你这台游戏机放在客厅、书房还是卧室,都能被一套周边辅助工具照顾到。适合谁看呢…

2026/10/13 6:30:47 阅读更多 →

最新新闻

LiteLLM实战:统一大模型API网关的部署、路由与预算控制

LiteLLM实战:统一大模型API网关的部署、路由与预算控制

做AI应用这一年多,我最大的感受是:模型本身其实不是瓶颈,真正让人头大的是怎么把一堆杂七杂八的模型接入、路由、计费、限流这些东西收拾利索。LiteLLM这个开源项目,说白了就是帮你把这件事打包干完——它把市面上主流的大模型API…

2026/10/13 8:38:54 阅读更多 →
大模型Agent技能库设计:从工具调用到编排的工程实践

大模型Agent技能库设计:从工具调用到编排的工程实践

接手 agent-skills 这个选题时,我脑子里马上浮现出前段时间做某客服智能体项目时被技能设计折磨的经历。agent-skills,说白了就是给大模型 Agent 配备的"能力工具箱",让它能按需调用搜索、计算、查库存、发消息这些具体动作。它不是…

2026/10/13 8:38:54 阅读更多 →
CFCA精品可可认证:证书之外,校友网络才是真正的行业入场券

CFCA精品可可认证:证书之外,校友网络才是真正的行业入场券

我见过太多人冲着“证书”去报名,却忽略了证书背后那张真正值钱的关系网。CFCA,一个在精品可可行当里低调但口碑很硬的专业认证项目,它的校友网络是我近几年见过最典型的“证书圈子”组合。精品可可这行,技术固然重要,…

2026/10/13 8:38:54 阅读更多 →
ClickHouse性能调优实战:从system库到工具组合的全链路指南

ClickHouse性能调优实战:从system库到工具组合的全链路指南

1. 调优第一步:把ClickHouse自带的system库当成第一套性能工具箱 接手ClickHouse集群运维的第一年,我踩得最深的一个坑就是:服务变慢之后不知道从哪儿下手抓原因。那时候我习惯先看机器CPU和内存,再翻日志,折腾半小时还…

2026/10/13 8:38:54 阅读更多 →
AI编码工具冲击下,程序员真正的护城河到底是什么?

AI编码工具冲击下,程序员真正的护城河到底是什么?

大约是半年前,我接到一个订单中心模块的重构任务,顺手把一部分“状态流转”的代码丢给了某主流AI编码工具。 当时的心态其实是试探性的,觉得它能生成一个骨架就算成功,毕竟这个模块牵扯到订单取消、超时关单、支付回调、幂等控制…

2026/10/13 8:38:54 阅读更多 →
基于PaddleOCR与PyQt5的GUI车票识别系统设计与实现

基于PaddleOCR与PyQt5的GUI车票识别系统设计与实现

简介:这是一套基于GUI的OCR车票识别完整毕业设计项目,面向计算机视觉、机器学习方向的本科生及入门开发者,重点解决车票日期、车次、座位号等关键信息的自动提取与可视化操作问题。压缩包共82个文件,整体约4.01MB,包含…

2026/10/13 8:37:52 阅读更多 →

日新闻

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

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

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

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/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →