news 2026/9/3 2:40:13

手把手教你用ComfyUI搭建krea-2turbo图像生成工作流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你用ComfyUI搭建krea-2turbo图像生成工作流

最近在折腾 ComfyUI 工作流的时候,被 krea-2turbo 这个模型卡了好几次:要么节点加载不出来,要么报“请安装缺失的包”,要么生成结果和预期完全不一样。网上资料虽然多,但大部分是零散截图,很难照着完整跑通一套。这篇文章我从零开始整理了一套“搭建 krea-2turbo 工作流”的完整思路,包含 ComfyUI 环境准备、模型放置、节点连接、参数调优和常见报错排查。无论你是刚接触 ComfyUI 的新手,还是想把手头模型整理成可复用工作流的进阶用户,都可以直接参考。

1. 背景与核心概念

1.1 krea-2turbo 是什么

krea-2turbo 可以理解为 Krea 生态中面向“快速生成”场景优化的图像生成模型。它和普通 SD 类大模型最大的区别在于:生成速度更快,对硬件资源的消耗相对更可控,比较适合需要反复调参、批量出图的场景。

很多刚接触的朋友会把它和 Krea 云端界面里的模型搞混。云端界面通常是一套封装好的产品,而在 ComfyUI 中,krea-2turbo 是一个可以自由连接的模型节点。我们使用 ComfyUI 手工搭建工作流,本质上就是把“加载模型 → 输入提示词 → 采样 → 解码 → 保存图片”这一条链路,用可视化的节点重新拼装一遍。

有一点需要提前说明:不同来源的 krea-2turbo 模型文件封装形式可能不一样。有的是单个.safetensorscheckpoint 文件,有的则是 diffusers 格式目录,甚至有的是需要配合在线 API 的插件节点。本文以最常见的“单文件 checkpoint + ComfyUI 原生节点”为例,如果你手里的版本不同,只需要替换加载节点即可,整体流程思路完全一致。

1.2 ComfyUI 工作流是什么

ComfyUI 是一个基于节点图的 AI 图像生成工具。用户通过拖拽多个节点,把提示词、模型、采样器、图片保存等环节连接起来,形成一条完整的“工作流”。

ComfyUI 工作流有几个很实用的特点:

  • 节点化:每一个处理环节都是一个独立节点,方便调试和复用。
  • 可视化连线:模型从哪个节点输出、图片从哪个节点输入,一眼就能看清。
  • 工作流可保存:整个连线关系可以导出为一个 JSON 文件,下次直接加载。
  • 灵活度高:相比传统 WebUI 的固定页面,ComfyUI 可以自由组合节点,满足各种自定义需求。

对 krea-2turbo 这类模型来说,工作流的价值在于:你可以把一组经过验证的提示词、参数和节点连接保存下来,后续生成同类图片时一键复用,不用每次重新拼装。

1.3 为什么要徒手搭建工作流

“徒手搭建”听起来比直接下载别人做好的工作流麻烦,但它有几个明显好处:

  1. 你能理解每一个节点在做什么,出现问题能定位。
  2. 工作流更容易适配自己的显卡显存和模型版本。
  3. 后续扩展时,比如接入 Lora、ControlNet、高清放大,你可以自己添加节点,而不是被别人的固定流程限制。

对新手来说,最忌讳的就是“下载了一个复杂工作流,但完全不知道哪里连哪里”。所以本文建议先徒手搭一个最基础、可运行的工作流,再逐步扩展。

2. 环境准备与 ComfyUI 安装

2.1 硬件与运行环境建议

ComfyUI 本身跨平台,Windows、Linux、macOS 都可以运行。不过如果要用 krea-2turbo 这类图像生成模型,建议尽量满足以下条件:

  • 独立显卡,显存建议 8GB 及以上。
  • 系统内存建议 16GB 及以上。
  • 磁盘剩余空间建议预留 30GB 以上,模型文件和工作流会占用不少空间。
  • Python 环境建议使用 3.10 或 3.11 版本。

显存不高的用户也不用完全放弃,ComfyUI 提供了--lowvram--medvram启动参数,可以降低显存占用。但生成速度和最大分辨率会受影响。

2.2 安装方式对比

主流的 ComfyUI 安装方式有三种:

安装方式适合人群优点缺点
整合包新手、Windows 用户开箱即用,自带 Python 和依赖版本可能较旧,升级繁琐
Git 源码安装开发者、进阶用户灵活,升级方便,可自定义需要手动准备 Python 环境
Docker 部署Linux 服务器用户隔离性好,迁移方便硬件直通和显存配置有学习门槛

如果你之前用过秋叶整合包这类一键安装方案,其实底层同样是 ComfyUI,只是帮你提前装好了运行环境。本文以 Git 源码安装为例,因为这种方式最容易看清依赖关系,后续排查环境问题时也更方便。

2.3 通过 Git 安装 ComfyUI

下面给出一个最小可运行的源码安装流程。假设你已经在系统里安装了 Python 3.10/3.11 和 Git。

打开命令行,依次执行:

git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI python -m venv venv

创建虚拟环境后,根据操作系统激活它。

Windows 下执行:

venv\Scripts\activate

Linux/macOS 下执行:

source venv/bin/activate

然后安装依赖:

pip install -r requirements.txt

启动 ComfyUI:

python main.py

启动成功后,命令行会出现类似下面的内容:

Starting server To see the GUI go to: http://127.0.0.1:8188

在浏览器访问http://127.0.0.1:8188,就能看到 ComfyUI 的节点操作界面了。

这里提醒一下:不同系统、不同 Python 版本,依赖的编译情况会略有差异。如果安装过程中出现某个包编译失败,先检查 Python 版本是否在项目要求范围内,再尝试升级 pip:

pip install --upgrade pip

2.4 启动参数与显存优化

如果启动后默认加载工作流报显存不足,可以尝试按需调整启动命令:

python main.py --lowvram

或者:

python main.py --medvram

这两个参数分别对应低显存和中等显存优化模式。需要注意的是,开启后会减少显存占用,但采样时会多出部分模型加载/卸载开销,整体速度会有所下降。

3. 获取 krea-2turbo 模型并放到正确位置

3.1 检查模型文件格式

在搭建工作流之前,我们需要先确认你拿到的 krea-2turbo 模型到底是什么格式。常见情况有三种:

  1. 单个.safetensors文件:可以直接放到ComfyUI/models/checkpoints/目录,然后使用CheckpointLoaderSimple节点加载。
  2. diffusers 格式文件夹:需要放到ComfyUI/models/diffusers/目录,并使用DiffusersLoader节点加载。
  3. 插件或 API 节点:这类情况通常需要额外安装对应的 ComfyUI 自定义节点。

判断方法很简单:看文件后缀。如果是.safetensors,走 checkpoint 路线;如果是一整个文件夹,里面有model_index.json,走 diffusers 路线。

3.2 放置模型文件

把 krea-2turbo 模型文件放到英文路径下,避免中文和空格可能带来的加载问题:

ComfyUI/models/checkpoints/krea-2turbo.safetensors

完成后,启动 ComfyUI 或点击界面上的“刷新”按钮,在CheckpointLoaderSimple节点的模型列表中就应该能找到krea-2turbo.safetensors

如果你拿到的是 diffusers 目录结构:

ComfyUI/models/diffusers/krea-2turbo/ ├── model_index.json ├── text_encoder/ ├── tokenizer/ ├── unet/ └── vae/

那就在工作流中使用DiffusersLoader节点。

3.3 安装 ComfyUI-Manager 管理器

搭建工作流过程中,经常需要安装自定义节点。ComfyUI-Manager 是目前最常用的节点管理插件,可以帮我们快速查找、更新、修复节点。

进入custom_nodes目录并克隆:

cd ComfyUI/custom_nodes git clone https://github.com/ltdrdata/ComfyUI-Manager.git cd ComfyUI-Manager pip install -r requirements.txt

然后重启 ComfyUI。启动后,界面右侧会出现一个管理器按钮,可以用来安装缺失节点、查看更新、检查 Python 包。

3.4 如何确认模型是否被识别

打开 ComfyUI 界面,添加一个CheckpointLoaderSimple节点,点击模型名称下拉框,输入kreaturbo进行筛选。如果能找到对应模型,说明模型放置位置正确。

如果找不到模型,优先检查:

  • 文件是否真的在checkpoints目录下。
  • 文件是否完整下载,.safetensors文件是否几 GB 以上。
  • 文件名是否包含特殊字符,建议改成简单英文名。
  • 是否点击了刷新按钮。

4. 手把手搭建 krea-2turbo 工作流

4.1 核心节点拆解

一个最基础的 krea-2turbo 图像生成工作流,需要以下几个节点:

节点类型作用
CheckpointLoaderSimple加载模型权重,输出 MODEL、CLIP、VAE
CLIPTextEncode将正向提示词转为模型可理解的向量
CLIPTextEncode将负向提示词转为模型可理解的向量
EmptyLatentImage创建空白潜空间图像,设置宽高和批次
KSampler核心采样器,执行去噪生成过程
VAEDecode将潜空间图像解码为像素图像
SaveImage保存生成结果

4.2 节点连接关系

我们可以用下面的简化图来表示节点之间的连线关系:

┌──────────────┐ CheckpointLoaderSimple │ │ │ MODEL ──────►│ │ CLIP ──────►│ KSampler │ VAE ──────►│ └──────────────┘ │ CLIPTextEncode(正) ──► positive CLIPTextEncode(负) ──► negative EmptyLatentImage ────► latent_image KSampler ──► VAEDecode ──► SaveImage

实际连接时,只需要从CheckpointLoaderSimple的对应输出口拖出连线,连接到目标节点的输入口。ComfyUI 会根据参数类型判断连线是否有效。

4.3 工作流 JSON 示例

下面是一份完整的最小工作流 JSON,使用 ComfyUI API 格式。如果你希望在界面中手动搭建,可以直接参考节点名称和连接关系;如果你熟悉 API 方式,也可以直接提交运行。

{ "1": { "class_type": "CheckpointLoaderSimple", "inputs": { "ckpt_name": "krea-2turbo.safetensors" } }, "2": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["1", 1], "text": "masterpiece, best quality, a beautiful lakeside mountain at sunset, highly detailed" } }, "3": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["1", 1], "text": "lowres, bad anatomy, bad hands, watermark, blurry" } }, "4": { "class_type": "EmptyLatentImage", "inputs": { "width": 768, "height": 512, "batch_size": 1 } }, "5": { "class_type": "KSampler", "inputs": { "model": ["1", 0], "positive": ["2", 0], "negative": ["3", 0], "latent_image": ["4", 0], "seed": 42, "steps": 25, "cfg": 6.5, "sampler_name": "dpmpp_2m", "scheduler": "karras", "denoise": 1.0 } }, "6": { "class_type": "VAEDecode", "inputs": { "samples": ["5", 0], "vae": ["1", 2] } }, "7": { "class_type": "SaveImage", "inputs": { "images": ["6", 0], "filename_prefix": "krea2t" } } }

["1", 1]这类写法表示引用节点 1 的第 2 个输出。比如CheckpointLoaderSimple有三个输出,索引分别是:

  • 0:MODEL
  • 1:CLIP
  • 2:VAE

所以正向提示词节点的clip输入填["1", 1],而 VAE 解码节点的vae输入填["1", 2]

如果你在界面中徒手搭建,不需要关心这个索引,直接拖线即可。

4.4 在界面中导入或手动搭建

如果你想直接导入上面的 JSON,可以在浏览器中上传到 ComfyUI 的队列接口;不过更推荐的方式是手动搭建一次,熟悉节点分布。

手动搭建的步骤:

  1. 双击空白处,搜索CheckpointLoaderSimple,添加节点。
  2. 再分别添加两个CLIPTextEncode、一个EmptyLatentImage、一个KSampler、一个VAEDecode、一个SaveImage
  3. 按 4.2 的连接关系依次连好线。
  4. CheckpointLoaderSimple的模型名切换为krea-2turbo.safetensors
  5. 在文本节点填入正负向提示词。
  6. 点击右侧的“执行”按钮,开始生成。

执行完成后,图片会自动保存到ComfyUI/output/目录。

4.5 运行结果说明

如果一切正常,你会在output目录看到一张根据提示词生成的图片。图片分辨率默认是768x512。如果生成速度慢,可以把EmptyLatentImage的尺寸调低,比如512x512

这里有一个常见误解:很多人认为把steps调高就一定更清晰。实际上当采样步数超过一定范围后,画面细节提升非常有限,反而会明显拖慢速度。对于 krea-2turbo 这类面向快速生成的模型,建议从 20 到 30 步开始尝试。

5. 参数含义与调优思路

5.1 采样器核心参数

KSampler节点是工作流中最重要的参数集中地。我们逐项来看:

  • seed(随机种子):控制初始噪声。固定 seed,可以在其他参数不变时复现同一张图。
  • steps(采样步数):去噪迭代次数。步数越高,通常细节越丰富,但耗时越长。
  • cfg(提示词引导系数):控制生成结果对提示词的遵循程度。过低会偏题,过高会过饱和甚至产生伪影。
  • sampler_name(采样器名称):不同采样器有不同风格,常见有eulereuler_ancestraldpmpp_2muni_pc等。
  • scheduler(调度器):影响每一步噪声强度的变化方式,常见有normalkarrasexponential
  • denoise(去噪强度):如果是局部重绘或图生图场景,低于 1.0 可以保留原图结构。

5.2 krea-2turbo 调参建议

由于 krea-2turbo 偏向快速生成,很多场景下我们追求的是“短时间出效果”。下面是几组比较通用的起点参数,你可以在此基础上微调:

场景stepscfgsampler_nameschedulerdenoise
文生图初稿206dpmpp_2mkarras1.0
快速验证构图125eulernormal1.0
图生图变体226.5dpmpp_2mkarras0.6
高清放大前采样256euler_ancestralkarras0.5

需要注意的是,这些参数只是经验起点。不同来源的模型微调版本可能对参数敏感度不同,建议在一个固定场景下做小范围对比,再形成自己的参数组合。

5.3 提示词组织方式

提示词的质量对生成结果影响很大。一个通用做法是分层组织:

  1. 画质词:masterpiece, best quality, highly detailed。
  2. 主体描述:包括主体、动作、位置。
  3. 环境描述:光线、背景、气氛。
  4. 风格词:如果有指定风格,可以放在后面。

负向提示词建议包含常见瑕疵词,比如lowres,bad anatomy,bad hands,extra fingers,blurry,watermark。如果模型本身对负向提示词不敏感,也不用堆太多,够用即可。

5.4 随机性与批量生成

使用同一个种子、同一组参数,每次生成结果完全一致。如果希望探索不同构图,可以固定采样器只改种子,或者每次生成时把 seed 设置为随机。

EmptyLatentImage节点中,batch_size设置为大于 1,可以一次生成多张候选图。但这会成倍增加显存消耗,建议先在batch_size=1下调试,再决定是否增大。

6. 常见问题与排查思路

6.1 启动后界面空白

可能原因:

  • ComfyUI 后端还没完全启动完成。
  • 浏览器访问地址不对。
  • 前端静态资源加载失败。

排查步骤:

  1. 回到命令行,确认是否有报错信息。
  2. 确认控制台显示的地址是http://127.0.0.1:8188
  3. 尝试强制刷新页面,清除浏览器缓存。
  4. 如果使用远程服务器,需要确认端口映射和防火墙。

6.2 提示“请安装缺失的包以使用此工作流”

这个提示通常出现在你导入别人分享的工作流时。它表示当前 ComfyUI 缺少某个自定义节点或 Python 包。

解决方案:

cd ComfyUI/custom_nodes git clone <对应节点仓库地址> cd <节点目录> pip install -r requirements.txt

如果你安装了 ComfyUI-Manager,可以点击右侧管理器按钮,选择“Install Missing Custom Nodes”或“Install Missing Python Packages”,按提示操作即可。安装完成后必须重启 ComfyUI,节点才会被正式扫描加载。

6.3 模型加载失败

常见表现:

  • 模型列表里找不到 krea-2turbo。
  • 点击执行后报错could not open file
  • 加载到一半卡住。

排查思路:

问题现象常见原因解决思路
模型列表中无对应名字文件放错目录移动到 checkpoints 目录
打开文件失败文件名包含中文或空格改名为简单英文
加载到一半卡住文件损坏或下载不完整重新下载完整文件
提示格式不支持模型不是 checkpoint 格式改用 DiffusersLoader 节点

6.4 节点执行过程中发生错误

当工作流节点以黄色或红色状态显示错误时,先点击该节点查看下方错误日志。常见原因有:

  • 节点连线类型不匹配,比如把图片接到了潜空间输入。
  • 某一输入端口缺少连线。
  • 当前环境缺少该节点依赖的 Python 包。

建议把报错信息复制到文本分析,先定位是“连接问题”还是“依赖问题”。大多数情况下,错误日志会明确指出是哪个节点、哪个输入引发的异常。

6.5 显存不足

显存不足的典型报错是 CUDA out of memory。解决思路按先后顺序尝试:

  1. 降低EmptyLatentImage的分辨率。
  2. batch_size改回 1。
  3. 使用--medvram--lowvram启动 ComfyUI。
  4. 关闭其他占用显存的软件。
  5. 如果是 Windows 系统,更新显卡驱动。

6.6 生成图片偏灰或偏色

这种情况常见于 VAE 未正确加载。在 ComfyUI 中,如果CheckpointLoaderSimple自带的 VAE 与模型不匹配,画面会出现灰蒙蒙的效果。

解决办法是单独添加一个VAELoader节点,选择合适的 VAE 文件,并把它的输出连接到VAEDecodevae输入。不同模型的 VAE 文件通常可以在对应模型页面找到。

7. 最佳实践与工程建议

7.1 养成保存工作流的习惯

搭建好可用的工作流后,点击界面右上角的保存按钮,导出为 JSON 文件。建议按日期和用途命名,例如:

krea2turbo_text2img_20260101.json krea2turbo_img2img_v2.json

将工作流文件纳入 Git 管理,方便回溯版本。重点调整参数时,建议每次保存前复制一份带版本号的文件。

7.2 常用工作流模板化

在实际项目中,我们会发现“文生图”和“图生图”是两种最常用的工作流形态。可以在默认的基础上,把以下部分提前固定:

  • 固定正向、负向提示词的基础起手式。
  • 固定常用的采样器与调度器。
  • 固定图片输出前缀。

这样每次新项目只需要改主体提示词和分辨率,不需要每次都从空画布开始。

7.3 模型文件的目录规范

随着模型越来越多,建议按模型用途分子目录管理:

ComfyUI/models/checkpoints/ ├── base/ ├── realistic/ ├── anime/ ├── style/ └── krea-2turbo.safetensors

CheckpointLoaderSimple里通常可以直接看到子目录文件名。目录规范能让团队协作时减少沟通成本,也方便脚本批量处理。

7.4 注意提示词与参数的可复现性

需要批量出图、做实验时,建议把每次的 seed、steps、cfg、提示词记录到一个 CSV 或 Markdown 文件里。这样如果某张图效果特别好,可以根据记录完整复现,而不是下次凭感觉瞎试。

一个简单的记录结构:

时间seedstepscfgsamplerscheduler分辨率结果
2026-01-01 10:0042206.0dpmpp_2mkarras768x512构图好,但光影偏暗

7.5 合规与安全边界

使用模型生成图像时,需要注意几点:

  • 只使用正规渠道获取的模型文件。
  • 不要使用模型生成涉及敏感人物、公共事件或侵犯他人权益的内容。
  • 如果工作流中涉及图生图,请确认素材来源合法。
  • 不发布和传播带有恶意目的或误导性质的生成内容。

ComfyUI 本身是开源工具,但模型训练数据和使用条款各有差异,生产环境使用前应查看模型授权说明。

7.6 性能优化方向

如果你的 krea-2turbo 工作流已经能稳定运行,可以进一步做性能优化:

  • 使用--fast参数配合低步数采样器。
  • 在支持 TensorRT 的环境下,考虑使用 TensorRT 节点加速推理。
  • 如果只需要局部改图,优先使用小分辨率生成再高清放大,而不是从一开始就生成大图。
  • 使用队列批量出图时,把批量拆成多个小批次,避免单次显存爆炸。

8. 总结与下一步学习路线

搭建 krea-2turbo 工作流,本质上是从“使用工具”走向“理解链路”的过程。本文从 ComfyUI 环境准备、模型放置、节点搭建、参数解读、报错排查到工程化管理,完整走了一遍最小闭环。现在你应该已经掌握:

  • krea-2turbo 模型在 ComfyUI 中的基本加载方式。
  • 从模型检查点到最后保存图片的完整节点链路。
  • 采样器、调度器、种子、步数等关键参数的含义。
  • 遇到“缺失节点”“模型加载失败”“显存不足”时的通用排查顺序。
  • 工作流保存、参数记录和模型目录规范等工程经验。

接下来的学习可以分三条线:

  1. 扩展节点:尝试加入 Lora 加载器、ControlNet 应用、高清放大节点,让工作流覆盖更多创作场景。
  2. 深入原理:学习潜空间、噪声调度、采样器差异等底层知识,这会对调参有本质帮助。
  3. 自动化部署:把 ComfyUI 部署到服务器,通过 API 提交便携脚本批量生成图片,实现工作流的产品化。

如果你在搭建过程中遇到本文没覆盖到的报错,建议先看控制台日志,再结合官方文档和社区实践逐步拆解。刚开始搭建工作流时慢一些没有关系,把每个节点的作用都弄清楚,后面扩展复杂流程会顺利得多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 2:40:07

AI人声分离实操:用Demucs和UVR提取干净伴奏与纯BEAT

很多人找《峠の恋人》的原版伴奏、纯BEAT、带和声版本&#xff0c;与其到处求文件&#xff0c;不如自己用 AI 人声分离工具把伴奏提取出来。这次我们来看一套可以完整跑通的人声分离方案&#xff1a;以本地部署为主&#xff0c;覆盖环境准备、模型选择、单曲分离、批量任务和效…

作者头像 李华
网站建设 2026/9/3 2:40:06

MATLAB车牌识别工程实践:可调试可落地的传统图像处理方案

简介&#xff1a;本资源是一套基于MATLAB实现的完整车牌识别系统源码&#xff0c;面向图像处理初学者、计算机视觉课程设计者及智能交通方向实践者&#xff0c;解决从图像采集到字符识别的全流程技术落地问题。压缩包共57个文件&#xff0c;含53张真实车牌与字符模板图像&#…

作者头像 李华
网站建设 2026/9/3 2:39:33

电赛单相逆变测试:从原理到实战的性能优化指南

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

作者头像 李华
网站建设 2026/9/3 2:39:16

网络电台DJ Set直播全指南:从信号链搭建到混音推流实战

打开这期ISABEL | Techno DJ Set | tension/release 017 Newtown Radio的时候&#xff0c;很多人看到的是 60 分钟连贯的 Techno 混音&#xff0c;听到的是不断推进的鼓组与合成器层次。但在信号链层面&#xff0c;这场演出的本质是一条完整的音频直播链路&#xff1a;从 DJ 播…

作者头像 李华
网站建设 2026/9/3 2:38:48

Avalonia+ReactiveUI实战:跨平台MVVM开发从搭建到避坑

简介&#xff1a;一份面向 .NET 桌面开发者的 Avalonia 跨平台 MVVM 示例工程&#xff0c;聚焦如何用 ReactiveUI 构建响应式 ViewModel 与数据绑定&#xff0c;适合从 WPF 迁移或初学 Avalonia/ReactiveUI 的开发者参考。压缩包采用 ZIP 格式&#xff0c;共 2000 个文件&#…

作者头像 李华
网站建设 2026/9/3 2:36:34

Robotaxi数据闭环实战:车载录制系统设计与ROS 2实现

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

作者头像 李华