Kubernetes Pod安全标准(PSS)详解:从特权到限制的三级安全策略
1. 项目概述为什么我们需要 Pod 安全标准在 Kubernetes 集群里跑应用安全配置就像给房子装防盗门。早期大家可能觉得“能跑起来就行”给容器一堆特权privileged: true或者挂载宿主机根目录是家常便短。直到某天攻击者通过一个配置不当的 Pod 拿到了整个节点的控制权大家才惊出一身冷汗。Kubernetes Pod 安全标准Pod Security Standards PSS就是为了解决这种“配置自由度过高”带来的安全隐患而诞生的。简单来说PSS 定义了三种明确的安全策略基线Privileged特权、Baseline基线和Restricted限制。它们不是三个独立的开关而是三个层层递进的安全等级。从 Privileged 的“完全不设防”到 Restricted 的“严格限制”PSS 为集群管理员和应用开发者提供了一套清晰、可执行的“安全配置清单”。这解决了过去安全策略分散在 Pod Security PoliciesPSP已废弃、Security Context 和各种 Best Practices 文档中难以统一落地的问题。对于运维和 DevOps 工程师理解并应用 PSS 意味着你能系统性地提升集群的安全性而不是东一榔头西一棒子地打补丁。对于开发者明确自己应用所需的安全上下文有助于写出更安全、更符合云原生范式的应用。接下来我们就深入拆解这三个等级看看它们具体限制了啥以及如何在实际项目中应用。2. PSS 三级标准深度解析从特权到禁锢PSS 的核心是对 Pod 和容器 Spec 中一系列字段的值进行约束。我们可以把它看作一份“安全检查表”不同等级对应不同的通过标准。2.1 Privileged 等级不受限制的“上帝模式”这个等级几乎不对 Pod 做任何安全限制。它主要服务于系统级或基础设施层的 Pod这些 Pod 需要深度访问宿主机资源才能正常工作。典型特征与使用场景privileged: true这是最显著的标志。容器将拥有几乎所有的 Linux Capabilities内核能力可以执行像加载内核模块、操作网络设备等特权操作。宿主资源访问可以自由挂载宿主机任意目录hostPath使用宿主机网络、PID、IPC 命名空间。场景举例CSI 驱动需要访问宿主机设备目录 (/dev) 和挂载文件系统。CNI 插件需要配置宿主机网络如创建网桥、配置 iptables。节点监控代理如需要读取/proc或/sys下系统级信息的 DaemonSet。安全审计工具某些需要深度检测系统调用或内核事件的工具。注意在生产环境中除了上述系统级组件绝不应将业务应用 Pod 设置为 Privileged 等级。这等同于将容器的安全边界完全拆除。2.2 Baseline 等级兼顾兼容性的最低安全标准Baseline 等级的目标是阻止已知的特权升级路径同时与绝大多数常见应用程序保持兼容。它是新应用或旧应用迁移时应达到的“及格线”。核心限制与配置禁止特权容器强制privileged: false并且禁止添加额外的 Linux Capabilities如CAP_SYS_ADMIN。限制宿主路径挂载只允许挂载特定的、非敏感的宿主路径如EmptyDir,Secret,ConfigMap等卷类型限制hostPath的使用。限制主机命名空间默认禁止共享宿主机的网络、PID、IPC 命名空间。你的 Pod 会有自己独立的网络栈和进程树。要求非 root 用户运行最佳实践虽然 Baseline 未强制但它强烈建议容器以非 root 用户通过runAsNonRoot: true或指定runAsUser运行。这是防止容器内应用漏洞影响宿主机的重要一环。一个典型的 Baseline 等级 Pod 的 SecurityContext 配置片段如下apiVersion: v1 kind: Pod metadata: name: baseline-pod-example spec: securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault containers: - name: app image: nginx:alpine securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL # runAsUser: 1000 # 也可以明确指定一个非0的用户ID兼容性考虑如果你的应用需要绑定 1024 以下的特权端口如 80、443在非 root 情况下会失败。解决方案不是提升权限而是通过 Service 的targetPort或 Ingress Controller 来路由流量让容器监听如 8080 这样的非特权端口。2.3 Restricted 等级强化安全的最佳实践Restricted 等级在 Baseline 的基础上实施了当前 Kubernetes 版本所知的、最严格的安全加固措施。它旨在为面临高安全威胁环境的工作负载提供强有力的保护。在 Baseline 基础上的额外强化强制以非 root 用户运行必须设置runAsNonRoot: true。这是硬性要求。禁止权限提升必须设置allowPrivilegeEscalation: false防止进程通过 SUID 二进制文件等方式提升权限。丢弃所有 Capabilities必须通过capabilities.drop: [“ALL”]丢弃所有内核能力并根据需要显式添加极少数必需的如NET_BIND_SERVICE用于绑定特权端口但应尽量避免。强制使用默认的 Seccomp 配置文件必须设置seccompProfile.type: RuntimeDefault。Seccomp 是一种内核级系统调用过滤机制RuntimeDefault配置文件会阻止一系列危险或不必要的系统调用。只读根文件系统要求将容器的根文件系统挂载为只读 (readOnlyRootFilesystem: true)。这能有效阻止攻击者在容器内植入持久化后门或篡改应用代码。应用需要写入的数据必须存储到挂载的卷如EmptyDir,PersistentVolumeClaim中。一个符合 Restricted 等级的 Pod 配置示例apiVersion: v1 kind: Pod metadata: name: restricted-pod-example spec: securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault containers: - name: app image: myapp:latest securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true volumeMounts: - name: tmp-volume mountPath: /tmp - name: logs-volume mountPath: /var/log/myapp volumes: - name: tmp-volume emptyDir: {} - name: logs-volume emptyDir: {}实操心得迁移到 Restricted 等级最大的挑战通常是“只读根文件系统”。很多应用习惯性地向/tmp、/var/run或应用目录下写文件。你需要系统地审查应用的文件写入行为将所有需要写的路径通过volumeMounts映射到可写的卷上。这虽然增加了配置复杂度但能极大提升安全性。3. 实施 PSS从手动配置到自动化策略理解了标准下一步是如何在集群中实施。Kubernetes 提供了多种机制来强制或审计 PSS 合规性。3.1 使用 Pod 安全准入控制器PSA这是 Kubernetes 1.22 及以后版本Beta in 1.22, GA in 1.25官方推荐的实施方式。它替代了旧的 PodSecurityPolicyPSP。PSA 工作在准入控制阶段可以强制enforce、审计audit或警告warn违反 PSS 的 Pod 创建请求。配置模式PSA 通过命名空间上的标签来配置。这是其最巧妙的设计策略与命名空间绑定而非用户或 ServiceAccount。apiVersion: v1 kind: Namespace metadata: name: my-restricted-namespace labels: pod-security.kubernetes.io/enforce: restricted pod-security.kubernetes.io/enforce-version: latest pod-security.kubernetes.io/audit: restricted pod-security.kubernetes.io/audit-version: latest pod-security.kubernetes.io/warn: restricted pod-security.kubernetes.io/warn-version: latestenforce模式为restricted任何创建不符合 Restricted 标准 Pod 的请求都会被拒绝。audit模式为restricted违反的请求会被记录在审计日志中但允许创建。warn模式为restricted违反的请求会向用户返回警告信息但允许创建。分阶段实施策略评估阶段在所有命名空间设置warnbaseline和auditbaseline。观察日志和警告了解当前工作负载的合规情况。迁移阶段在开发/测试环境命名空间设置enforcebaseline强制应用适配。同时在生产环境保持warn和audit。强化阶段在应用适配后将命名空间策略升级为enforcerestricted。对于确实需要特权的系统命名空间如kube-system可以单独设置为enforceprivileged或豁免。3.2 使用策略即代码工具Kyverno 或 OPA Gatekeeper虽然 PSA 是内置方案但有时你需要更灵活的策略比如跨命名空间的策略、更复杂的条件判断镜像来源白名单、或者自动修复。这时Kyverno 或 OPA Gatekeeper 这类策略引擎是更好的选择。以 Kyverno 为例创建一个要求所有 Pod 必须为 Baseline 等级的 ClusterPolicyapiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: require-baseline-pss spec: validationFailureAction: Enforce background: true rules: - name: check-pod-security match: any: - resources: kinds: - Pod validate: message: Pods must meet the Baseline Pod Security Standard. pattern: spec: securityContext: runAsNonRoot: true containers: - (securityContext): (allowPrivilegeEscalation): false (capabilities): drop: - “ALL”工具选型考量PSA优点是无须安装第三方组件与 Kubernetes 集成度最高简单直接。缺点是策略相对固定只能基于 PSS 三个等级无法自定义复杂规则。Kyverno策略用 YAML 编写学习曲线平缓支持验证、变更自动修复、生成资源社区活跃。适合大多数 Kubernetes 策略管理场景。OPA Gatekeeper基于 Rego 语言表达能力极强可以编写极其复杂的策略。但 Rego 学习曲线陡峭更适合有深厚策略定制化需求的团队。3.3 集成到 CI/CD 流水线安全左移在应用部署前就发现问题。可以在 CI/CD 流水线中加入静态检查工具对 Kubernetes 清单文件进行 PSS 合规性扫描。常用工具kube-score分析 YAML 文件给出包括安全在内的多项评分和建议。kube-score score deployment.yaml --output-format cicheckov或terrascan这些 IaC 安全扫描工具也支持 Kubernetes 资源扫描能检测不符合 PSS 的配置。自定义脚本使用kubeconform验证架构后再用yq或jq提取securityContext字段进行规则检查。在 CI 阶段配置这样的检查可以阻止不安全的配置合并到代码库并教育开发者遵循安全标准。4. 迁移实战将现有工作负载安全地推向 Restricted将集群中成百上千个现有 Pod 从宽松配置迁移到 Restricted 等级是一个系统工程不能一蹴而就。4.1 评估与发现首先你需要知道现状。使用kubectl审计如果你已经配置了 PSA 的审计模式查看 API 审计日志。使用kubectl查询编写脚本或使用kubectl的 JSONPath 输出列出所有 Pod 的安全上下文配置。kubectl get pods -A -o jsonpath“{range .items[*]}{.metadata.namespace}{‘/’}{.metadata.name}{‘\t’}{‘privileged: ’}{.spec.containers[*].securityContext.privileged}{‘\n’}{end}” | grep -v “privileged: false”使用专门工具像Fairwinds Insights、Polaris或kube-bench检查 CIS 基准包含 PSS 相关项这样的可视化工具可以提供更友好的仪表盘和报告。4.2 分类与适配根据评估结果将工作负载分类处理A类可直接应用 Restricted已经是非 root、只读根文件系统的无状态应用。直接为其命名空间打上enforcerestricted标签。B类需少量修改需要写临时文件或日志。修改 Deployment/DaemonSet添加readOnlyRootFilesystem: true并为/tmp,/var/log等路径配置emptyDir卷。C类需架构调整需要hostPath、hostNetwork或特定 Linux Capability。这是难点。需要评估这个 Capability 是否真的必需能否用其他方式替代例如用NET_BIND_SERVICE能力绑定 80 端口可以改为通过 Service 的nodePort或 Ingress 暴露。这个hostPath挂载是否必须能否改为PersistentVolumeClaimPVC这个 Pod 是否应该被归类为“基础设施”而非“业务应用”从而放在一个特权的命名空间D类特权负载如 CSI 驱动、CNI 插件。将它们集中迁移到如kube-system、infra这样的特权命名空间并为这些命名空间配置enforceprivileged或使用 PSA 的豁免Exemption特性。4.3 分阶段实施与回滚计划先在非生产环境实施在开发、测试、预发环境命名空间开启enforcebaseline甚至enforcerestricted进行充分测试。生产环境灰度选择一个影响面小的、非核心的业务命名空间先设置warn和audit观察一段时间无异常后再改为enforce。制定明确的回滚方案在修改命名空间标签或策略引擎规则前确保你知道如何快速回滚。对于 PSA回滚就是删除或修改命名空间的enforce标签。对于 Kyverno/OPA可以临时将策略的validationFailureAction从Enforce改为Audit。实操心得迁移过程中最常见的阻力来自开发团队因为安全限制可能导致原本“能跑”的应用报错。建立清晰的沟通机制提供具体的错误排查指南和修改示例甚至举办内部 workshop比单纯下发一个安全指令要有效得多。安全团队的角色应该是“赋能者”而非“执法者”。5. 常见问题与排查技巧实录在实际落地 PSS 的过程中你会遇到各种报错和兼容性问题。下面是一些典型场景和解决方案。5.1 Pod 创建失败“has forbidden ... violates PodSecurity”这是 PSA 在enforce模式下拦截请求后返回的错误。排查步骤查看完整错误信息错误信息通常会指明违反了哪个标准的具体哪一条。例如“allowPrivilegeEscalation ! false” 或 “runAsNonRoot true”。检查命名空间标签kubectl describe namespace ns-name查看该命名空间上设置的 PSS 等级和模式。检查 Pod 配置使用kubectl get pod pod-name -o yaml查看被拒绝的 Pod 的securityContext配置与 PSS 标准逐条对比。使用kubectl dry-run和--label在应用变更前可以用--dry-runclient和--label模拟在目标命名空间创建或者使用kubectl debug启动一个临时 Pod 进行测试。5.2 容器启动失败“permission denied”或“read-only file system”当容器以非 root 用户运行或根文件系统只读后应用可能因权限不足而崩溃。典型场景与解决场景一应用需要写文件到根目录下。排查查看容器日志找到尝试写入的具体路径如/app/config.json,/tmp/cache.db。解决在 Pod 配置中将该路径通过volumeMounts挂载到一个可写的卷如emptyDir: {}上。确保卷的挂载点权限与容器运行用户匹配。场景二应用需要绑定 1024 以下端口如 80。排查日志报错 “bind: permission denied”。解决最佳实践修改应用配置使其监听 8080 等高端口通过 Service 或 Ingress 进行端口映射。折中方案如果无法修改应用可以给容器添加CAP_NET_BIND_SERVICE能力Restricted 等级下需显式添加但这会降低安全性。securityContext: capabilities: drop: - ALL add: - NET_BIND_SERVICE场景三镜像内二进制文件需要 SUID 位或特定能力。排查某些老旧或特殊软件依赖 SUID 或CAP_DAC_OVERRIDE等能力。解决优先寻找替代软件或更新版本。如果必须使用需评估风险可能只能将其归类到 Baseline 等级并加强其他层面的监控和隔离。5.3 系统组件如 Ingress Controller、监控 Agent兼容性问题这些组件通常由 Helm Chart 部署其默认配置可能不符合 PSS。解决策略查阅官方文档查看该组件的 Helm Chart 文档看是否支持配置安全上下文。现在许多主流 Chart如 nginx-ingress, prometheus-operator都提供了podSecurityContext和containerSecurityContext的配置项。自定义 Values.yaml在安装或升级时通过自定义的values.yaml文件覆盖默认的安全配置使其符合目标命名空间的 PSS 等级。# 例如为 nginx-ingress 配置 controller: containerSecurityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL add: - NET_BIND_SERVICE # Ingress 控制器通常需要这个能力绑定80/443 runAsNonRoot: true runAsUser: 101 # nginx 镜像的默认非root用户 readOnlyRootFilesystem: true podSecurityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault创建特权命名空间如果某个系统组件确实需要hostNetwork或privileged如某些 CNI 插件将其安装在像kube-system这样的特权命名空间中并对该命名空间应用enforceprivileged或设置 PSA 豁免。5.4 性能影响与监控启用 Seccomp 或 AppArmor 等安全配置理论上会引入极微小的性能开销系统调用过滤但在绝大多数应用场景下可忽略不计。更重要的是监控安全策略本身的影响。监控 PSA 审计日志定期检查 API 审计日志中因违反 PSS 被警告或拒绝的请求这可以帮助你发现配置错误或潜在的规避行为。使用 Prometheus 监控Kubernetes API 服务器暴露了pod_security_evaluations_total等指标可以将其纳入监控告警体系跟踪策略执行情况。关注 Pod 启动时间在应用Restricted策略后观察 Pod 的启动成功率和平均启动时间是否有异常变化确保没有引入意外的稳定性问题。迁移到 Pod 安全标准不是一个一劳永逸的动作而是一个持续的安全状态管理过程。它需要运维、安全和开发团队的协同。从设置warn模式收集数据开始逐步教育团队修复不合规的负载最终在关键工作负载上实施enforce这样才能在不妨碍业务敏捷性的前提下系统性地提升 Kubernetes 集群的安全水位。

相关新闻

Kubernetes Network Policy实战:构建微服务白名单网络门禁系统

Kubernetes Network Policy实战:构建微服务白名单网络门禁系统

1. 项目概述:为什么微服务需要“门禁系统”?在Kubernetes集群里跑微服务,就像在一个大型开放式办公区里安排了几十个不同的项目组。起初,大家为了协作方便,所有工位都是打通的,任何一个人都可以随时走到另一…

2026/10/13 16:55:59 阅读更多 →
可视化修改视频字幕,2026年自动加字幕工作流,5款工具怎么选

可视化修改视频字幕,2026年自动加字幕工作流,5款工具怎么选

字幕改到崩溃,问题到底出在哪做口播、课程、直播拆条的人,几乎都经历过同一种崩溃:AI 自动识别出来的字幕,错别字一堆、时间轴错位、专有名词乱码,逐句拖回去改,一条五分钟的视频能折腾半小时。更麻烦的是&…

2026/10/11 20:40:07 阅读更多 →
CALVIN架构演进:语言视觉融合的机器人策略学习技术实践

CALVIN架构演进:语言视觉融合的机器人策略学习技术实践

CALVIN架构演进:语言视觉融合的机器人策略学习技术实践 【免费下载链接】calvin CALVIN - A benchmark for Language-Conditioned Policy Learning for Long-Horizon Robot Manipulation Tasks 项目地址: https://gitcode.com/gh_mirrors/ca/calvin CALVIN&a…

2026/10/11 20:40:05 阅读更多 →

最新新闻

任务书没写清楚目标,后面全在返工?科迅捷AI来立规矩

任务书没写清楚目标,后面全在返工?科迅捷AI来立规矩

本科的课程设计、毕业设计,几乎都从一份任务书开始。任务书看起来只是走个形式,其实它是整项工作的"合同":目标、内容、进度、验收标准,全写在里面。任务书没写清楚,后面每一步都可能返工。反过来&#xff0…

2026/10/13 16:56:48 阅读更多 →
实践报告的核心不是字数,科迅捷AI教你写对重点

实践报告的核心不是字数,科迅捷AI教你写对重点

专科生写实践报告,最常见的误区是"凑字数":实习了一个月,不知道写什么,于是把每天做的事情流水账一样记下来,最后凑够两千字交上去。其实实践报告的核心从来不是字数,而是"从实践中提炼出东…

2026/10/13 16:56:48 阅读更多 →
TC2.0开发环境搭建与避坑指南:ADS、编译器、调试器协同校准

TC2.0开发环境搭建与避坑指南:ADS、编译器、调试器协同校准

简介:本资源为经典Turbo C 2.0 DOS版C语言集成开发环境完整安装包,面向编程初学者、高校计算机基础教学及嵌入式/系统编程入门者,解决早期C语言实践环境缺失、DOS平台开发体验断层等问题。压缩包含51个核心文件,涵盖30个标准头文件…

2026/10/13 16:56:48 阅读更多 →
RH134第1章:从shell机制到vim实操,真正提升命令行效率

RH134第1章:从shell机制到vim实操,真正提升命令行效率

RH134这门课,网上能搜到一大堆资料,但真正把它讲透的笔记不算多。第1章标题是“提高命令行运行效率”,乍一看像是废话——都混到进阶课了,谁还不会敲命令?可实际一到生产环境或者考场,差距立马就出来了&…

2026/10/13 16:56:48 阅读更多 →
STM32驱动MAX7219 8X8点阵显示0-9:SPI时序与字模实战

STM32驱动MAX7219 8X8点阵显示0-9:SPI时序与字模实战

简介:基于STM32F103C8T6与MAX7219芯片的8x8 LED点阵显示工程文件包,面向嵌入式初学者和电子设计爱好者,旨在演示如何利用STM32的SPI外设驱动点阵模块并显示数字0-9。工程包含完整Keil MDK项目,代码涵盖SPI接口初始化、MAX7219寄存…

2026/10/13 16:56:48 阅读更多 →
精仿百度搜索源码搜猫V9.0部署实战:从环境配置到搜索调优

精仿百度搜索源码搜猫V9.0部署实战:从环境配置到搜索调优

简介:精仿百度搜索引擎的搜猫V9.0正式版商业版整站源码,面向网站开发者、PHP学习者以及需要快速搭建搜索类站点的用户,解决从零开发搜索系统成本高、周期长的问题。交付形式为zip压缩包,大小约15.97MB,包内包含完整的站…

2026/10/13 16:55:44 阅读更多 →

日新闻

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

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

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

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/13 16:22:04 阅读更多 →
影刀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/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 阅读更多 →