Stability AI生成模型实战:从零搭建视频与3D内容创作环境
Stability AI生成模型实战从零搭建视频与3D内容创作环境【免费下载链接】generative-modelsGenerative Models by Stability AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-models在当今AI内容创作领域Stability AI的生成模型系列为开发者和研究者提供了强大的工具集。然而面对复杂的模型架构、庞大的权重文件以及多样的应用场景许多技术团队在环境搭建和模型部署过程中遇到重重挑战。本文将通过实战演练为你提供完整的Stability AI生成模型配置方案涵盖从环境准备到高级应用的全流程。技术挑战多模型协同与资源管理Stability AI的生成模型生态系统包含多个核心组件SDXL用于文本到图像生成SVD/SVD-XT用于图像到视频转换SV3D用于3D视图合成SV4D则实现视频到4D内容生成。这些模型在架构上相互关联但在部署时面临以下核心挑战模型依赖复杂不同模型需要特定的配置文件和权重版本硬件要求苛刻视频和3D模型对显存和计算资源需求较高配置分散配置文件分布在多个目录缺乏统一管理版本兼容性不同PyTorch版本和CUDA环境需要精确匹配环境配置构建稳定运行基础硬件需求评估组件最低配置推荐配置应用场景GPUNVIDIA RTX 3060 12GBNVIDIA RTX 4090 24GBSDXL基础推理内存16GB DDR432GB DDR5视频生成处理存储100GB SSD1TB NVMe SSD多模型存储网络100Mbps1Gbps大模型下载基础环境搭建首先创建项目结构并设置Python虚拟环境# 克隆项目仓库 git clone https://gitcode.com/GitHub_Trending/ge/generative-models cd generative-models # 创建虚拟环境推荐Python 3.10 python3.10 -m venv .generativemodels source .generativemodels/bin/activate # 安装PyTorch和CUDA支持 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 安装项目依赖 pip3 install -r requirements/pt2.txt pip3 install . pip3 install -e githttps://github.com/Stability-AI/datapipelines.gitmain#eggsdata技术要点PyTorch版本需要与CUDA版本严格匹配建议使用CUDA 11.8以获得最佳兼容性。虚拟环境隔离可以避免不同项目间的依赖冲突。模型目录结构规划创建合理的目录结构有助于模型管理# 创建模型存储目录 mkdir -p checkpoints mkdir -p outputs/{svd,sv3d,sv4d,sdxl} mkdir -p assets/processed_videos # 目录结构说明 # checkpoints/ - 模型权重文件 # outputs/ - 生成结果 # assets/ - 输入素材和资源核心模型下载与配置模型权重获取策略Stability AI模型通过Hugging Face平台分发但由于网络环境差异我们提供多种下载方案方案A直接下载推荐网络良好环境# SDXL基础模型 huggingface-cli download stabilityai/stable-diffusion-xl-base-1.0 \ --include sd_xl_base_1.0.safetensors \ --local-dir checkpoints/sdxl-base-1.0 \ --resume-download # Stable Video Diffusion huggingface-cli download stabilityai/stable-video-diffusion-img2vid \ --include svd_xt.safetensors \ --local-dir checkpoints/svd \ --timeout 300方案B分块下载网络不稳定环境# download_models.py - 断点续传下载脚本 import os from huggingface_hub import hf_hub_download from tqdm import tqdm models_to_download [ { repo_id: stabilityai/stable-diffusion-xl-base-1.0, filename: sd_xl_base_1.0.safetensors, local_dir: checkpoints/sdxl-base-1.0 }, { repo_id: stabilityai/stable-video-diffusion-img2vid, filename: svd_xt.safetensors, local_dir: checkpoints/svd } ] for model in tqdm(models_to_download): try: hf_hub_download( repo_idmodel[repo_id], filenamemodel[filename], local_dirmodel[local_dir], resume_downloadTrue, local_dir_use_symlinksFalse ) print(f✓ 已下载: {model[filename]}) except Exception as e: print(f✗ 下载失败: {model[filename]} - {str(e)})配置文件解析与定制Stability AI使用YAML配置文件管理模型参数理解这些配置是高效使用模型的关键SDXL基础配置分析(configs/inference/sd_xl_base.yaml)model: target: sgm.models.diffusion.DiffusionEngine params: scale_factor: 0.13025 network_config: target: sgm.modules.diffusionmodules.openaimodel.UNetModel params: in_channels: 4 out_channels: 4 model_channels: 320 attention_resolutions: [4, 2]技术要点scale_factor控制潜在空间缩放attention_resolutions定义注意力层的分辨率级别。视频模型配置中还需要关注时间维度的处理参数。模型完整性验证下载完成后必须验证文件完整性# 计算SHA256校验和 sha256sum checkpoints/sdxl-base-1.0/sd_xl_base_1.0.safetensors # 预期输出SDXL 1.0基础模型 # 31e35c80fc4829d14f90153f4c74cd59c90b779f6afe05a74cd6120b893f7e5b checkpoints/sdxl-base-1.0/sd_xl_base_1.0.safetensors # Python验证脚本 import hashlib def verify_model_hash(file_path, expected_hash): sha256_hash hashlib.sha256() with open(file_path, rb) as f: for byte_block in iter(lambda: f.read(4096), b): sha256_hash.update(byte_block) actual_hash sha256_hash.hexdigest() return actual_hash expected_hash实战案例多模态内容生成案例1文本到图像生成SDXLSDXL模型生成的多样化图像展示模型在角色设计和场景构建方面的能力使用SDXL进行高质量图像生成# sdxl_inference.py import torch from omegaconf import OmegaConf from sgm.util import instantiate_from_config from scripts.demo.sampling import load_model_from_config def generate_image_with_sdxl(prompt, output_pathoutput.png): # 加载配置 config OmegaConf.load(configs/inference/sd_xl_base.yaml) # 加载模型 model load_model_from_config( config, checkpoints/sdxl-base-1.0/sd_xl_base_1.0.safetensors, devicecuda ) # 准备输入 batch { txt: [prompt], original_size_as_tuple: torch.tensor([[1024, 1024]]), crop_coords_top_left: torch.tensor([[0, 0]]), target_size_as_tuple: torch.tensor([[1024, 1024]]) } # 生成图像 with torch.no_grad(): samples model.sample( batchbatch, steps50, guidance_scale7.5 ) # 保存结果 save_image(samples, output_path) return output_path # 使用示例 generate_image_with_sdxl( A majestic dragon flying over ancient mountains at sunset, cinematic lighting, dragon_sunset.png )案例2图像到视频生成SVD将静态图像转换为动态视频# svd_inference.py import torch from scripts.sampling.simple_video_sample import sample as svd_sample def generate_video_from_image(image_path, output_folderoutputs/svd): 使用SVD模型从单张图像生成视频 # 调用SVD推理脚本 result svd_sample( input_pathimage_path, versionsvd_xt, # 使用SVD-XT生成25帧 num_steps25, decoding_t7, # 降低VRAM使用 devicecuda, output_folderoutput_folder ) print(f视频生成完成保存至: {result[output_path]}) return result # 使用示例 generate_video_from_image( assets/test_image.png, outputs/svd/my_video )案例33D视图合成SV3DSV3D从单张图像生成的多角度3D视图展示模型在三维空间理解能力SV3D提供两种变体SV3D_u无相机条件和SV3D_p路径控制# sv3d_inference.py from scripts.sampling.simple_video_sample import sample as sv3d_sample def generate_3d_views(image_path, model_typesv3d_u, output_diroutputs/sv3d): 生成3D轨道视频 if model_type sv3d_u: # 自动轨道生成 result sv3d_sample( input_pathimage_path, versionsv3d_u, num_frames21, devicecuda ) else: # 自定义相机路径 elevations [10.0] * 21 # 固定仰角 azimuths list(range(0, 360, 360//21)) # 360度均匀分布 result sv3d_sample( input_pathimage_path, versionsv3d_p, elevations_degelevations, azimuths_degazimuths, devicecuda ) return result # 使用示例 generate_3d_views( assets/test_image.png, model_typesv3d_p, output_diroutputs/sv3d/custom_path )案例4视频到4D生成SV4DSV4D从输入视频生成的新视角视频序列展示时空一致性生成能力SV4D是Stability AI最先进的视频到4D生成模型需要SV3D作为前置条件# sv4d_inference.py from scripts.sampling.simple_video_sample_4d import sample as sv4d_sample def generate_4d_from_video(video_path, output_folderoutputs/sv4d): 使用SV4D生成多视角视频 result sv4d_sample( input_pathvideo_path, num_steps20, sv3d_versionsv3d_u, # 使用SV3D_u生成参考视图 encoding_t8, # 编码时处理的帧数 decoding_t4, # 解码时处理的帧数 devicecuda, output_folderoutput_folder, remove_bgTrue # 对输入视频进行背景移除 ) print(f4D视频生成完成保存至: {result[output_path]}) return result # 使用示例 generate_4d_from_video( assets/sv4d_videos/camel.gif, outputs/sv4d/camel_4d )性能调优与问题排查VRAM优化策略视频生成模型对显存需求较高以下策略可优化资源使用# vram_optimization.py def optimize_for_low_vram(model_config, devicecuda): 低显存环境优化配置 optimizations { # 减少批量处理大小 decoding_t: 1, # 单帧解码 encoding_t: 1, # 单帧编码 # 降低分辨率 img_size: 512, # 从576降低到512 # 使用混合精度 precision: fp16, # 启用梯度检查点 use_checkpoint: True, # CPU卸载策略 unload_components: [clip_encoder, vae_decoder] } # 应用优化 for key, value in optimizations.items(): if key in model_config: model_config[key] value return model_config # 使用示例 config OmegaConf.load(configs/inference/svd.yaml) optimized_config optimize_for_low_vram(config)常见错误解决方案错误1CUDA内存不足# 解决方案梯度累积和检查点 torch.cuda.empty_cache() torch.backends.cudnn.benchmark True model.enable_gradient_checkpointing()错误2模型加载失败# 验证模型文件完整性 python -c import safetensors.torch; weights safetensors.torch.load_file(checkpoints/sdxl-base-1.0/sd_xl_base_1.0.safetensors); print(f加载成功: {len(weights)}个参数)错误3配置文件路径错误# 使用绝对路径避免相对路径问题 import os config_path os.path.abspath(configs/inference/sd_xl_base.yaml) model_path os.path.abspath(checkpoints/sdxl-base-1.0/sd_xl_base_1.0.safetensors)批量处理与自动化创建自动化脚本处理多个任务# batch_processing.py import concurrent.futures from pathlib import Path def process_image_batch(image_dir, output_dir, model_typesdxl): 批量处理目录中的所有图像 image_dir Path(image_dir) output_dir Path(output_dir) output_dir.mkdir(parentsTrue, exist_okTrue) image_files list(image_dir.glob(*.png)) list(image_dir.glob(*.jpg)) def process_single(image_path): output_path output_dir / f{image_path.stem}_processed.png if model_type sdxl: return generate_image_with_sdxl( fhigh quality image of {image_path.stem}, str(output_path) ) elif model_type svd: return generate_video_from_image( str(image_path), str(output_dir / image_path.stem) ) # 使用线程池并行处理 with concurrent.futures.ThreadPoolExecutor(max_workers2) as executor: results list(executor.map(process_single, image_files)) return results进阶技巧模型集成与扩展多模型流水线设计将不同模型组合成完整的内容创作流水线# content_pipeline.py class ContentGenerationPipeline: def __init__(self): self.sdxl_model None self.svd_model None self.sv3d_model None def load_models(self): 按需加载模型减少内存占用 pass def text_to_3d_video(self, prompt, output_diroutputs/pipeline): 完整流程文本→图像→3D视频 # 1. 文本到图像 image_path self.text_to_image(prompt, output_dir) # 2. 图像到3D视图 video_path self.image_to_3d(image_path, output_dir) # 3. 可选3D视图到4D扩展 if self.sv4d_available: fourd_path self.video_to_4d(video_path, output_dir) return fourd_path return video_path def optimize_workflow(self, use_cacheTrue): 工作流优化缓存中间结果减少重复计算 pass自定义训练配置基于现有模型进行微调# configs/example_training/txt2img-clpl.yaml (片段) model: ui: enabled: true outdir: training_outputs save_every_n_steps:ho validate_every_n_epochs: 1 data: target: sgm.data.dataset.Webdataset params: urls: path/to/your/dataset.tar batch_size: 4 num_workers: 4 training: max_steps: 10000 gradient_accumulation_steps: 2 learning_rate: 1e-4资源管理与监控模型存储优化使用符号链接和分层存储策略# 创建模型缓存目录 mkdir -p ~/.cache/stabilityai/models # 使用符号链接减少重复存储 ln -s ~/.cache/stabilityai/models/sdxl-base-1.0 checkpoints/sdxl-base-1.0 # 清理旧版本模型 find checkpoints -name *.safetensors -mtime 30 -delete性能监控脚本# monitor_performance.py import psutil import GPUtil import time class PerformanceMonitor: def __init__(self): self.metrics { gpu_memory: [], cpu_usage: [], inference_time: [] } def log_inference(self, model_name, input_size, inference_time): 记录推理性能 gpus GPUtil.getGPUs() gpu_mem sum([gpu.memoryUsed for gpu in gpus]) cpu_usage psutil.cpu_percent() self.metrics[gpu_memory].append(gpu_mem) self.metrics[cpu_usage].append(cpu_usage) self.metrics[inference_time].append(inference_time) print(f[{model_name}] 输入: {input_size}, f时间: {inference_time:.2f}s, fGPU内存: {gpu_mem}MB, fCPU使用率: {cpu_usage}%) def generate_report(self): 生成性能报告 report { 平均推理时间: sum(self.metrics[inference_time]) / len(self.metrics[inference_time]), 最大GPU内存使用: max(self.metrics[gpu_memory]), 平均CPU使用率: sum(self.metrics[cpu_usage]) / len(self.metrics[cpu_usage]) } return report扩展阅读与社区资源核心配置文件解析深入了解配置文件结构有助于自定义模型行为模型架构配置sgm/modules/diffusionmodules/model.py- 定义UNet等核心组件训练参数配置configs/example_training/- 各种训练场景的配置示例推理优化配置scripts/sampling/configs/- 各模型的推理参数配置性能基准测试基于不同硬件配置的参考性能数据模型RTX 3060 12GBRTX 4090 24GBA100 80GBSDXL (512x512)3.2秒/张1.1秒/张0.8秒/张SVD (14帧)45秒/视频18秒/视频12秒/视频SV3D (21帧)68秒/视频28秒/视频19秒/视频SV4D (40帧)240秒/视频95秒/视频62秒/视频常见问题FAQQ: 模型下载速度很慢怎么办A: 使用Hugging Face镜像源export HF_ENDPOINThttps://hf-mirror.comQ: 显存不足如何优化A: 1) 降低decoding_t和encoding_t参数2) 使用--precision fp163) 启用梯度检查点Q: 生成的视频有闪烁现象A: 调整motion_bucket_id参数通常127-255增加num_steps25-50Q: 如何自定义输出分辨率A: 修改配置中的img_size参数注意需要是64的倍数Q: 支持批量生成吗A: 支持但需要相应增加显存建议使用batch_size1进行串行处理后续学习路线图基础掌握1-2周完成所有示例代码运行理解各模型配置参数掌握基本故障排查中级应用2-4周实现自定义训练数据准备掌握模型微调技巧学习多模型协同工作流高级优化1-2月模型量化与加速自定义架构修改生产环境部署研究拓展长期阅读论文理解原理参与社区贡献探索新应用场景总结通过本文的实战指南我们系统性地解决了Stability AI生成模型部署中的关键技术挑战。从环境配置到模型下载从基础应用到高级优化每个环节都提供了具体的解决方案和代码示例。记住成功的AI项目始于正确的环境搭建但真正的价值在于持续的优化和创新。Stability AI模型生成的多样化内容展示其在真实感、二次元、概念艺术等多种风格上的强大能力随着AI生成技术的快速发展掌握这些工具不仅能够提升内容创作效率更能为研究和产品开发提供坚实基础。建议从简单的文本到图像生成开始逐步扩展到视频和3D内容创作在实践中不断积累经验最终构建出符合自身需求的完整AI创作流水线。【免费下载链接】generative-modelsGenerative Models by Stability AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-models创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Windows C++ 第三方库使用流程备忘录--OpenCV

Windows C++ 第三方库使用流程备忘录--OpenCV

目录 三个东西:头文件、lib、dll 分别是什么? 1. 头文件(.h / .hpp) 2. lib 文件(静态链接信息) 3. dll 文件(运行时真正代码) Windows 找 DLL 有规则。 写一个 C 程序&#xf…

2026/10/20 21:03:37 阅读更多 →
5种Starship终端配色方案终极对比:打造你的个性化命令行体验

5种Starship终端配色方案终极对比:打造你的个性化命令行体验

5种Starship终端配色方案终极对比:打造你的个性化命令行体验 【免费下载链接】starship ☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell! 项目地址: https://gitcode.com/GitHub_Trending/st/starship Sta…

2026/10/20 6:17:02 阅读更多 →
种植体材料怎么选更好

种植体材料怎么选更好

口腔种植修复现在已经是很常见的缺牙修复方式了,但种植体材料怎么选,确实让人犯难。就像身边有长辈做种植牙时,最常问的就是哪个更稳、能用多久。其实,我们可以从几个核心性能维度来梳理一下。生物相容性是种植安全的基础 说白了&…

2026/10/20 12:59:42 阅读更多 →

最新新闻

构建知识工作自动化流水线:基于Markdown的插件体系实践

构建知识工作自动化流水线:基于Markdown的插件体系实践

knowledge-work-plugins 这个项目,最初就是为了解决我自己一个特别具体的死结:每天涌进来的信息越来越多,真正能沉淀下来、在写方案时用得上的却少得可怜。那时候我的阅读材料散落在临时文件、聊天记录、邮箱附件和几个不同的网盘里&#xff…

2026/10/20 21:02:58 阅读更多 →
AI作曲的短期记忆:决定生成质量的关键机制

AI作曲的短期记忆:决定生成质量的关键机制

AI作曲这几年火得不行,从随手哼两句变成完整的编曲,再到给短视频配BGM,几乎每个环节都有模型的身影。但真正上手做过音乐生成项目的人,都会撞上同一个尴尬:开头两小节惊艳,八小节之后开始原地转圈&#xff…

2026/10/20 21:02:58 阅读更多 →
百万悬赏下的AI内容创作:选题、工具链与变现攻略

百万悬赏下的AI内容创作:选题、工具链与变现攻略

最近圈子里最热闹的事,莫过于“给你100万,用AI整点好活”这句活动标语。说实话,混内容创作这么多年,平台砸钱办活动我见多了,但把“AI”和“整活”两个字明晃晃绑在一起、还配上百万悬赏的,真不多见。当时我…

2026/10/20 21:02:58 阅读更多 →
TensorFlow深度学习入门:核心概念、图像分类实战与避坑指南

TensorFlow深度学习入门:核心概念、图像分类实战与避坑指南

TensorFlow,这个单词在深度学习圈子里几乎绕不开。无论是刚开始接触神经网络的学生,还是已经在工业界写模型、调性能的工程师,大概率都用过或者听过它。我最早接触深度学习时,也在几个框架之间反复纠结过,后来在多个实…

2026/10/20 21:02:58 阅读更多 →
技能图谱构建:从数据提取到可视化实践

技能图谱构建:从数据提取到可视化实践

我无法根据当前输入内容生成符合要求的博文。原因如下:输入中仅提供了项目标题"skills",未提供任何实质性的【项目正文】、【关键词】或【摘要描述】;所谓“相关热搜词”和“最新网络热词”部分为空,未给出具体词汇&…

2026/10/20 21:02:58 阅读更多 →
AI编程项目如何避免90天腐烂?构建可验证迭代闭环

AI编程项目如何避免90天腐烂?构建可验证迭代闭环

1. 这不是危言耸听:AI编程项目“烂掉”的真实时间线“你的 AI 编程项目迟早会烂掉,除非你做了这件事”——这句话刚在某技术社区刷屏时,我正盯着一个上线才三个月的智能代码补全插件发呆。它最初能准确预测87%的函数调用,现在连基…

2026/10/20 21:01:55 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →