蓝鲸配置平台(bk-cmdb)四大核心使用场景:事件推送、模型管理、拓扑管理与主机管理实战解析
后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载导读本文基于蓝鲸智云配置平台BlueKing CMDB下称 bk-cmdb官方文档 使用场景 展开深入解析平台最核心的四个能力面事件推送、模型管理、拓扑管理与主机管理。你将了解到如何通过订阅与 Watch 两种机制实时获取配置数据变更事件如何自定义企业架构与 IT 基础设施模型如何用主线关联描述业务拓扑以及如何通过集群/模块划分与云区域实现主机的精细管理和跨云管理。全文结合仓库源码事件服务、CoreService、TopoServer、HostServer 等模块给出实现层面的印证方便你在实际集成与二次开发中直接落地。一、事件推送把 CMDB 的每一次变更实时送达1.1 什么是事件推送当 CMDB 管理的资源主机、业务、集群、模块、进程、模型实例等发生变化时系统会产生相应的事件。这些事件可以由 CMDB 主动推送给订阅方使下游系统如监控、变更管理、自动化运维平台无需轮询数据库即可感知配置变化。从 事件服务模块说明 可以看到bk-cmdb 提供了两种事件获取方式基于回调模式的事件订阅与推送Subscribe / Push基于 Watch 模式的事件监听长轮询 / 游标回溯。两种方式对应的 API 文档分别位于 订阅事件 与 监听资源变化事件Watch。1.2 方式一回调式事件订阅Subscribe订阅模式的核心思想是业务方先在 CMDB 登记一个回调地址CMDB 在资源产生事件后主动向该地址推送。订阅接口的核心参数如下字段定义来源于 订阅事件 API字段类型必选描述subscription_namestring是订阅的名字system_namestring是订阅事件的系统的名字callback_urlstring是回调地址confirm_modestring是事件发送成功校验模式可选1-httpstatus、2-regularconfirm_patternstring是callback 的 httpstatus如 200或正则表达式subscription_formstring是订阅的事件类型多个以逗号分隔timeoutint是发送事件超时时间一个完整的订阅请求示例如下{ bk_app_code: esb_test, bk_app_secret: xxx, bk_username: xxx, bk_token: xxx, subscription_name: mysubscribe, system_name: SystemName, callback_url: http://127.0.0.1:8080/callback, confirm_mode: httpstatus, confirm_pattern: 200, subscription_form: hostcreate, timeout: 10 }订阅成功后返回subscription_id后续可通过 更新订阅事件、查询订阅信息 与 取消订阅事件 对订阅进行生命周期管理。参数说明confirm_mode决定了推送方如何判断回调是否成功——httpstatus模式按 HTTP 状态码判断如confirm_pattern填200regular模式则用正则匹配回调响应体内容。subscription_form支持的事件类型如hostcreate、hostupdate等以逗号分隔组合可同时订阅多种事件。1.3 方式二Watch 模式事件监听Watch 模式面向需要主动拉取、支持断点续传的集成场景v3.8 以上版本提供其设计特性见 resource_watch.md在有限时间内目前为 3 小时勿依赖该时长提供高可用的数据变更 watch 服务支持按游标cursor回溯事件适用于异常数据回溯或系统变更后的数据补录支持按时间点回溯、按游标回溯、从当前时间点开始监听三种起始方式支持按事件类型增/删/改过滤事件中携带全量数据支持主机与主机关系两类资源的事件 watch采用短长链设计游标 watch 时若无新事件则保持连接20 秒内有变更立即推回既避免频繁请求又保证时效支持批量事件 watch 与按需定制返回字段。Watch 接口的核心请求参数字段类型必选描述bk_event_typesarray string否关注的事件类型create/update/delete空为全部bk_fieldsarray string看情况返回的事件字段列表监听 host 资源时必填主机关系可置空bk_start_fromInt64否监听起始时间Unix 秒与 bk_cursor 二选一bk_cursorstring否游标代表开始或继续监听的事件地址bk_resourcestring是资源类型枚举host、host_relation、biz、set、module、process、object_instance、mainline_instance、biz_set、biz_set_relation、plat、project 等bk_supplier_accountstring是开发商账号bk_filterobject否过滤条件其中bk_sub_resource仅在资源为 object_instance / mainline_instance 时指定要监听的模型bk_obj_id监听主机资源的请求示例{ bk_app_code: esb_test, bk_app_secret: xxx, bk_username: xxx, bk_token: xxx, bk_event_types: [create, update, delete], bk_fields: [bk_host_innerip, bk_mac], bk_start_from: 12345678999, bk_cursor: MQ0yDTE1ODkyMDcyODENMQ01ZWI3ZWZjNTBiOTA5ZTYyMGFmYWQzZGY, bk_resource: host }返回结构示例{ result: true, code: 0, message: success, request_id: e43da4ef221746868dc4c837d36f3807, data: { bk_watched: true, bk_events: [ { bk_cursor: MQ0yDTE1ODkyMDcyODENMQ01ZWI3ZWZjNTBiOTA5ZTYyMGFmYWQzZGY, bk_resource: host, bk_event_type: update, bk_detail: { bk_cpu: 2 } } ] } }Watch 的使用流程官方 使用说明确定起始方式从某一时间开始 / 从当前时间开始 / 从指定游标开始然后发起请求处理返回若bk_watched为 truebk_events为事件详情列表取数组中最后一个事件的 cursor作为下一次请求的bk_cursor继续 watch若为 false则用bk_events中唯一事件的 cursor 继续下一次 watch。注意事件有 3 小时过期时间过期后事件释放、游标失效需改用时间点或当前时间重新开始监听。1.4 源码视角事件服务的实现链路从 事件服务模块说明 可以看清整体架构拉取数据源基于资源控制层 CoreService 的事件机制将底层数据库数据事件同步到全局缓存队列事件服务基于游标进行 watch 拉取写入事件队列事件服务整体为主从模式除主机身份事件处理逻辑外Master 节点的事件源 watcher 将事件同步到事件队列分发到订阅者事件队列事件处理协程按订阅者关系把事件分发到各订阅者队列再由 Pusher 协程发送到目标订阅者。服务入口在 watch.goWatchEvent从 URL 路径解析resource参数将请求体解码为watch.WatchEventOptions随后调用缓存服务CacheService的WatchEvent完成事件查询。事件参数的校验逻辑见 watch.go 的Validate方法关键约束包括bk_event_types中的事件类型必须合法监听host、biz、set、module资源时必须携带 bk_fieldsbk_start_from与bk_cursor不能同时使用只有object_instance、mainline_instance、inst_asst、kube_workload资源允许携带bk_sub_resource。事件类型常量定义在 types.gocreate新增、update更新、delete删除、unknown。资源类型CursorType的完整枚举定义在 cursor.go除上述文档列出的 host、biz 等之外还包括host_identifier、inst_asst、kube_cluster、kube_node、kube_namespace、kube_workload、kube_pod等容器相关资源——这意味着容器集群、节点、命名空间、工作负载、Pod 的变更同样纳入事件体系可作为容器场景集成的依据。二、模型管理自由定义企业的 IT 资源模型2.1 模型管理的定位通过模型管理可以对企业架构、业务拓扑以及 IT 基础设施中的各种元素和元素的各种属性进行自定义以满足生产管理需要。模型Model / Object是 bk-cmdb 一切数据组织的基石主机是模型、业务是模型、集群和模块也是模型甚至你可以自定义“交换机”“数据库实例”等任意新模型并为它们补充属性字段。2.2 模型体系中的几类核心操作从源码看模型管理覆盖的 API 分布在资源控制层CoreService与场景层TopoServer模型分类Classification管理将模型按大类组织。CoreService 的 model.go 提供了CreateManyModelClassification、CreateOneModelClassification、SetOneModelClassification、SetManyModelClassification、UpdateModelClassification等接口对应 创建分类、查询分类、删除分类 等 API模型Object管理定义模型本身即bk_obj_id、bk_obj_name、所属分类、图标等。TopoServer 的 object.go 中CreateObjectBatch支持批量创建模型并且在写操作前会通过AuthManager.AuthorizeByObjectIDs做权限校验随后在**事务AutoRunTxn**中完成属性与模型的创建保证批量导入模型的数据一致性模型属性Attribute管理为模型增删改属性字段对应 创建模型属性、查询模型属性、删除模型属性 等 API模型实例Instance管理定义好模型后即可创建实例数据见本文第三部分的实例与拓扑接口。从项目内置模型文档 built-in_model.md 可以看到bk-cmdb 预置了业务、集群、模块、主机、进程、云区域等基础模型在此基础上用户可以按需扩展自定义模型与属性从而把配置平台的抽象能力覆盖到企业内部任意资源对象上。三、拓扑管理用模型关系描绘业务拓扑3.1 拓扑管理的定位拓扑管理用于描述已定义的各种模型之间的关系。其中**主线关联Mainline**用于描述业务的拓扑结构——最典型的即“业务 → 集群Set→ 模块Module”这样的层级主线主机最终挂载在模块下形成完整的业务视图。3.2 主线模型与实例拓扑CoreService 的 mainline.go 提供了两个核心能力SearchMainlineModelTopo查询主线模型拓扑以with_detail参数控制是否返回模型详情对应 API 获取主线模型拓扑SearchMainlineInstanceTopo按bk_biz_id查询某业务下的主线实例拓扑即该业务下完整的层级实例树。场景层 TopoServer 的 association.go 则负责主线对象的维护CreateMainLineObject新增主线对象、DeleteMainLineObject删除主线对象、SearchMainLineObjectTopo查询主线拓扑同时提供业务拓扑查询接口SearchBusinessTopo、SearchBusinessTopoWithStatistics带主机数与服务实例数统计以及GetTopoNodeHostAndSerInstCount等。3.3 实例关联Association与实例操作除了主线层级模型之间还可以建立任意关联关系如“服务器 → 部署 → 应用”。实例层面的接口见 inst.go覆盖了完整 CRUD 链路创建/批量创建实例CreateInst、CreateManyInstance、CreateInstsByImport导入删除/更新实例DeleteInsts、DeleteInst、UpdateInsts、UpdateInst查询实例SearchInsts、SearchObjectInstances、SearchInstTopo查询实例拓扑、SearchInstChildTopo查询子拓扑节点、SearchInstByObject、SearchInstByAssociation等关联查询SearchInstAssociation、SearchInstAssociationUI、SearchInstAssociationWithOtherObject、SearchInstAndAssociationDetail。关联类型AssocKind本身也是可管理的元数据CreateAssociationType、UpdateAssociationType、DeleteAssociationType、SearchAssociationType见 association.go。对应 API 文档还包括 新增实例关联、查询实例关联、查询对象关联 等。小结主线关联解决“业务纵向分层”的问题实例关联解决“模型横向互连”的问题两者共同构成 bk-cmdb 拓扑管理的能力底座。四、主机管理从资源池到业务的精细运维4.1 主机管理的定位通过模型管理功能定义主机及其属性再结合拓扑管理功能对已定义的主机进行管理。典型做法是在某个业务下划分集群和模块将主机与对应模块关联以此明确该业务下主机的分布情况主机与云区域Cloud Area关联后还能方便地实现跨云管理。4.2 主机生命周期与模块流转HostServer 的 module.go 提供了主机在业务内外的完整流转能力关键接口包括TransferHostModule主机转入/转出指定模块MoveHost2IdleModule主机移至空闲机模块MoveHost2FaultModule主机移至故障机模块MoveHost2RecycleModule主机移至待回收模块MoveHostToResourcePool主机移回资源池AssignHostToApp主机分配至业务TransferHostAcrossBusiness主机跨业务转移GetHostModuleRelation、GetHostRelationsWithMainlineTopoInstance查询主机与模块、主线拓扑实例的关系。此外host.go 中的DeleteHostBatchFromResourcePool支持从资源池批量删除主机主机搜索能力见 findhost.go支持按拓扑、条件等多维度查询主机。4.3 云区域与跨云管理云区域Cloud Area即plat用于抽象不同网络/云环境。HostServer 的 cloudarea.go 提供FindManyCloudArea批量查询云区域CreatePlatBatch/CreatePlat批量或单个创建云区域UpdatePlat、DeletePlat更新与删除云区域UpdateHostCloudAreaField更新主机的云区域字段即调整主机所属云区域实现主机在云区域间迁移FindCloudAreaHostCount统计云区域下主机数量。对应 API 见 创建云区域、查询云区域、更新主机云区域字段、删除云区域 等。主机属性中的bk_cloud_id即主机所属云区域标识见 主机资源 watch 事件详情示例 中 host 的bk_cloud_id字段。通过将主机关联到不同云区域再结合业务下的集群/模块划分即可在同一配置平台内实现多数据中心、多云环境下的统一主机视图与跨云调度管理。4.4 主机与事件体系的联动主机管理的每一次变更新增、转移模块、改云区域等都会产生事件可通过第一部分介绍的事件推送机制实时获取。例如订阅hostcreate、hostupdate事件或使用bk_resourcehost、host_relation的 Watch 接口监听主机详情与主机-模块关系的变化host_relation事件的bk_detail包含bk_biz_id、bk_host_id、bk_module_id、bk_set_id、bk_supplier_account等关键关系字段。这一联动使“配置变更 → 事件通知 → 下游自动响应”成为可能正是 CMDB 作为运维数据中枢的核心价值。五、场景落地建议事件同步类系统监控、审计、自动化优先使用 Watch 模式借助游标实现断点续传与数据补录注意 3 小时事件有效期与单次返回 200 条上限勿依赖该数值对时效要求不高、希望 CMDB 主动送达的场景使用订阅模式并配置好confirm_mode与confirm_pattern以保障推送可靠性自定义资源建模先规划模型分类再定义模型与属性最后通过实例关联与主线拓扑组织数据善用批量创建与事务保障见 object.go 中的AutoRunTxn保证大规模建模的一致性与导入效率主机治理按“资源池 → 业务 → 集群 → 模块”的路径设计主机归属配合空闲机/故障机/待回收等默认模块规范主机状态流转借助云区域抽象多云环境最终通过事件订阅把主机变更同步给下游平台。以上四大使用场景彼此联动模型与拓扑定义数据的“形”主机管理维护数据的“实”事件推送则让数据的每一次变化“活”起来——这也是 bk-cmdb 支撑复杂运维体系的基础能力框架。赞分享后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载相关推荐蓝鲸配置平台 bk-cmdb 云主机管理 API 实战add_cloud_host_to_biz 批量导入与原理剖析蓝鲸配置平台 bk cmdb 云主机管理 API 实战add_cloud_host_to_biz 批量导入与原理剖析 本文以 bk cmdb 官方 API 文后端企业应用运维蓝鲸配置平台bk-cmdb推送主机身份接口详解push_host_identifier 使用与实现原理蓝鲸配置平台bk cmdb推送主机身份接口详解push_host_identifier 使用与实现原理 本文以蓝鲸智云配置平台bk cmdb官方 AP后端企业应用运维蓝鲸配置平台bk-cmdbOpenAPI「find_host_by_topo」详解按拓扑节点查询主机的用法与实现原理蓝鲸配置平台bk cmdbOpenAPI「find_host_by_topo」详解按拓扑节点查询主机的用法与实现原理 本文以 bk cmdb 配置中心C后端企业应用运维上一篇proc-macro-workshopRust 过程宏的终极学习指南下一篇A-Mem对比分析与传统记忆系统相比Agentic Memory的10大优势创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Word VBA正则匹配:选择题一键转多列表格

Word VBA正则匹配:选择题一键转多列表格

前阵子帮一个常年整理题库文档的朋友处理选择题排版,几十道题要全部改成“题号一列、ABCD四列”的多列表格。手动复制粘贴最折磨人的不是慢,而是错:题目串行、选项错位、题干被截断,来回核对反而比从头排版更耗时。后来我用 Word …

2026/10/15 20:31:06 阅读更多 →
春节祝福贺卡新年动画PPT模板:拆包改稿与批量生成全流程

春节祝福贺卡新年动画PPT模板:拆包改稿与批量生成全流程

简介:这是一款由锐普设计出品的春节祝福贺卡新年动画PPT模板,面向需要在春节、商务答谢或亲友问候等场合快速制作电子贺卡的职场人士与PPT初学者。模板将梅花飘落动画与倒挂福字等传统元素融入现代设计,兼顾专业度与易用性,新手也…

2026/10/15 20:31:06 阅读更多 →
代码静态验证工具实战:从选型到落地的完整指南

代码静态验证工具实战:从选型到落地的完整指南

接手过几个跑了两三年的业务系统之后,我对“代码静态验证工具”的看法发生了很大变化。以前总觉得它只是“锦上添花”的辅助检查,直到有一次线上故障让我彻底改观——某个老模块在用户并发不高的时候一切正常,可一旦某个异常分支被触发&#…

2026/10/15 20:31:06 阅读更多 →

最新新闻

目标检测后处理:IOU与NMS从原理到工程化实战

目标检测后处理:IOU与NMS从原理到工程化实战

做目标检测的朋友都知道,模型跑通只是第一步,真正决定最终效果上限的,往往是两段看起来很不起眼的计算:IOU与NMS。IOU负责衡量两个检测框到底重合成什么样,NMS负责把同一目标周围那些重复的、多出来的框“压”下去。无…

2026/10/15 21:19:30 阅读更多 →
Docker Compose部署WeKnora:从环境规划到上线运维的完整指南

Docker Compose部署WeKnora:从环境规划到上线运维的完整指南

我第一次帮人部署WeKnora时,对方给的服务器上已经跑了七八个业务,系统里Python和Node版本乱成一锅粥。当时我们几乎没有犹豫,直接用Docker部署WeKnora,把服务、数据库、缓存全部容器化隔离,不到半天就正常跑起来&#…

2026/10/15 21:19:30 阅读更多 →
500k长上下文实战:Codex与ChatGPT Work工作流重构指南

500k长上下文实战:Codex与ChatGPT Work工作流重构指南

直接说结论:从16k到128k,再到200k,然后跳到500k,这个数字看着只是“变大了”,但真正用起来你会发现,这根本不是同一个物种。我花了几个晚上把 Codex 和 ChatGPT Work 里的长上下文工作流重新跑了一遍&#…

2026/10/15 21:19:30 阅读更多 →
TxBENCH硬盘检测全攻略:性能测试、SMART健康与翻新盘识别

TxBENCH硬盘检测全攻略:性能测试、SMART健康与翻新盘识别

简介:TxBENCH 电脑及硬盘检测工具是一套面向电脑 DIY 爱好者、硬件评测人员及普通用户的 SSD 检测资源,覆盖基础读写测试、大文件拷入高级测试、安全擦除与驱动信息查看等核心功能,可帮助判断硬盘性能是否达到预期,并兼顾旧盘数据…

2026/10/15 21:19:30 阅读更多 →
Halcon+MFC工业模板匹配实战:从环境搭建到产线鲁棒部署

Halcon+MFC工业模板匹配实战:从环境搭建到产线鲁棒部署

简介:本资源是一个基于Halcon与MFC联合开发的模板匹配实战Demo,面向具备C基础和图像处理入门经验的Windows桌面应用开发者,解决工业视觉中目标定位、多尺度形状识别与灰度匹配等典型需求。项目完整实现形状匹配、形状缩放匹配及灰度匹配三类核…

2026/10/15 21:19:30 阅读更多 →
MySQL零基础入门:从安装到增删改查实战教程

MySQL零基础入门:从安装到增删改查实战教程

写这篇教程的初衷很简单——我见过太多人一上来就啃官方文档,结果被术语劝退;也见过不少人背了一堆命令,却连数据库都没装好。MySQL作为最流行的开源关系型数据库,它其实没有传说中那么难,难的是没人告诉你第一步该干嘛…

2026/10/15 21:18:29 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →