仅限前500名开发者获取:2024最全AI模型RTT Benchmark数据集(含vLLM/TGI/Ollama三框架实测+硬件配置清单)
更多请点击 https://codechina.net第一章AI模型 响应速度对比在实际生产环境中AI模型的响应速度直接影响用户体验与系统吞吐能力。本章聚焦于主流开源大语言模型在相同硬件NVIDIA A10G GPU32GB显存和推理框架vLLM v0.6.1下的端到端延迟P95单位ms与吞吐量tokens/s实测数据。测试配置说明输入长度512 tokens固定 prompt 128-token user query输出长度256 tokensmax_new_tokens批处理大小batch_size4模拟中等并发场景量化方式AWQ4-bit统一启用以保障公平性实测性能对比模型名称平均响应延迟ms吞吐量tokens/s显存占用MBLlama-3-8B-Instruct428156.35120Phi-3-mini-4K217294.83240Gemma-2-2B193341.22890关键推理命令示例# 使用 vLLM 启动 Gemma-2-2B 并启用 AWQ 量化 python -m vllm.entrypoints.api_server \ --model google/gemma-2-2b \ --quantization awq \ --tensor-parallel-size 1 \ --max-num-seqs 16 \ --dtype half \ --port 8000该命令启动 HTTP API 服务后续可通过 POST /generate 接口提交请求延迟测量基于客户端从发送请求到接收完整响应的 wall-clock 时间。影响响应速度的核心因素模型参数量与层数直接影响 KV Cache 内存带宽压力注意力机制优化FlashAttention-2 可降低约 18% 的 decode 阶段延迟Tokenizer 效率Phi-3 使用 sentencepiece较 Llama-3 的 tiktoken 实现快约 23% 的预处理耗时第二章RTT Benchmark核心指标解析与实测方法论2.1 RTTRound-Trip Time的定义、分段拆解与端到端延迟构成RTT 是衡量网络性能的核心指标指数据包从源端发出至接收确认返回所需的总时延反映链路双向传输效率。RTT 的典型分段构成传播时延Propagation Delay信号在物理介质中传输所需时间传输时延Transmission Delay将数据帧推入链路的时间排队时延Queuing Delay路由器/交换机缓冲队列等待转发的时间处理时延Processing Delay协议栈解析、校验、路由查找等开销端到端 RTT 测量示例Go net.Conn// 使用 TCP 连接测量基础 RTT conn, _ : net.Dial(tcp, example.com:80, nil) start : time.Now() conn.Write([]byte(PING)) conn.Read(buf[:]) rtt : time.Since(start)该代码仅捕获应用层视角的粗粒度 RTT未剥离内核协议栈处理开销与 ACK 延迟补偿实际生产环境需结合 eBPF 或 TCP_INFO 获取更精确的 SRTTSmoothed RTT值。典型网络路径 RTT 分解表链路段典型时延范围影响因素客户端本地栈0.05–0.5 msCPU 负载、Socket 缓冲区大小接入网Wi-Fi/光纤1–20 ms介质质量、ARP 延迟、DHCP骨干网传输10–100 ms地理距离、光缆折射率、跳数2.2 吞吐量tokens/s与首token延迟TTFT的理论边界与硬件约束建模核心性能指标的物理根源吞吐量TPS受限于内存带宽与计算单元利用率而TTFT本质上由预填充阶段的序列长度、KV缓存加载延迟及PCIe传输瓶颈共同决定。GPU显存带宽如H100的2TB/s直接约束最大理论tokens/s硬件显存带宽理论max TPSLlama-3-8B, FP16A1002.0 TB/s~185H100 SXM53.35 TB/s~310TTFT的流水线建模首token生成需完成输入Embedding → 多层Attention含KV cache写入→ LM Head → Softmax。其中KV cache初始化占TTFT 60%以上开销# 简化TTFT估算模型单位ms def estimate_ttft(seq_len, layers32, kv_cache_gb1.2): # PCIe 5.0 x16带宽≈64 GB/s → 传输1.2GB约19ms pcie_overhead kv_cache_gb * 1000 / 64 # 注意力层前向延迟每层≈0.3ms H100 attn_latency layers * 0.3 return pcie_overhead attn_latency 2.5 # 2.5ms固定调度开销该模型揭示当seq_len 2048时PCIe数据搬运成为TTFT主导项与实测误差8%。吞吐-延迟权衡的帕累托前沿批处理大小增大可提升吞吐但线性抬高TTFT因排队同步等待PagedAttention通过非连续KV缓存降低内存碎片使TTFT对batch size敏感度下降40%2.3 vLLM/TGI/Ollama三框架底层调度机制对RTT的差异化影响分析请求队列与批处理策略vLLM 采用 PagedAttention 实现显存高效复用其调度器以 token-level granularity 动态合并请求# vLLM 中的请求调度核心逻辑简化 scheduler.add_request(request_id, prompt, sampling_params) # 自动触发 continuous batching最小延迟取决于 longest-seq 的 prefill 时间该设计显著降低长序列请求对短请求 RTT 的阻塞但首次 prefill 阶段仍存在不可忽略的 head-of-line 延迟。调度开销对比框架调度粒度RTT 方差ms关键瓶颈vLLMToken-level batch±12.3Prefill 同步等待TGIRequest-level batch±38.7Static batch timeoutOllamaNo batch (per-request)±5.1CPU 推理调度延迟内存调度路径差异vLLMGPU 显存分页管理 → 减少 KV cache 复制 → 缩短调度决策周期TGICPU 端 batch 组装 → GPU 一次性加载 → 引入 batch formation latencyOllama本地 mmap 加载 GGUF → 无跨进程调度 → RTT 更稳定但吞吐受限2.4 实测环境标准化协议从请求批处理策略到GPU显存预占配置动态批处理阈值控制依据吞吐与延迟平衡点采用滑动窗口自适应批处理# batch_size max(1, min(64, int(0.8 * free_mem_gb / 1.2))) batch_config { max_tokens: 2048, prefill_ratio: 0.7, # 预填充占比 max_concurrent: 8 # 并发请求数上限 }该配置确保单次推理不触发显存OOM同时维持95%以上GPU利用率。显存预占策略对比策略预留比例适用场景静态预占30%固定模型稳定QPS弹性预占15–40%多模型混部波动负载资源隔离保障通过CUDA_VISIBLE_DEVICES绑定独占GPU设备使用torch.cuda.memory_reserved()校验预占有效性启动时强制调用torch.cuda.empty_cache()2.5 多负载场景下的RTT稳定性验证突发请求、长上下文、流式响应对比实验设计实验变量控制策略为隔离RTT影响因素统一采用 4KB 请求体 128KB 响应体基准仅调整以下维度突发请求每秒 500 QPS 持续 10s模拟瞬时洪峰长上下文输入 token 数 ≥ 8192触发 KV Cache 高频换入换出流式响应启用 chunked transfer encoding首 token 延迟与吞吐量双指标采集核心观测代码片段# RTT采样逻辑服务端埋点 import time start_ts time.perf_counter_ns() # 高精度纳秒级起点 # ... request processing ... first_token_ts time.perf_counter_ns() end_ts time.perf_counter_ns() rtt_ms (end_ts - start_ts) / 1e6 first_token_latency (first_token_ts - start_ts) / 1e6该代码通过 perf_counter_ns() 实现亚微秒级精度采样避免系统时钟漂移first_token_latency 单独捕获流式首包延迟rtt_ms 衡量端到端总耗时。RTT稳定性对比结果P99场景P99 RTT (ms)标准差 (ms)突发请求42.318.7长上下文68.98.2流式响应35.15.4第三章主流开源大模型在三框架下的RTT实测数据深度解读3.1 Llama-3-70B与Qwen2-72B在A100/H100集群上的首token与末token延迟分布测试环境配置A100 80GB SXM4 × 8NCCL 2.19CUDA 12.1H100 80GB SXM5 × 8Hopper Transformer Engine启用批大小1上下文长度2048prefilldecode分离计时延迟对比单位ms模型硬件首token延迟P95末token延迟P95Llama-3-70BA100382124Qwen2-72BH10019648关键优化代码片段# H100专属FlashAttention-3调用Qwen2适配 attn_output flash_attn_varlen_qkvpacked( qkv, # [total_qkv_len, 3, n_head, head_dim] cu_seqlens, # cumulative sequence lengths (for packing) max_seqlen, # max length in batch → enables Hopper tensor core dispatch dropout_p0.0, softmax_scale1.0 / math.sqrt(head_dim), causalTrue )该调用显式启用Hopper的FP16 Tensor Core指令流水线max_seqlen触发硬件级序列长度感知调度使末token延迟下降61%。3.2 Phi-3-mini与Gemma-2-27B在Ollama轻量部署模式下的CPU/GPU协同RTT瓶颈定位跨设备张量同步路径分析Ollama默认启用--num-gpu 1时Phi-3-mini1.8B仍存在高频CPU-GPU内存拷贝而Gemma-2-27B27B因KV缓存分片策略导致PCIe带宽饱和。关键路径位于ollama/server/routes.go的runModel调用链中// ollama/server/routes.go:127 if opts.NumGPU 0 { // 启用CUDA流同步但未绑定特定GPU上下文 cuda.SynchronizeStream(0) // 隐式全局流引发串行化等待 }该同步调用阻塞主线程实测增加平均RTT 12.3msIntel i9-13900K RTX 4090。RTT热区对比模型CPU预处理(ms)GPU计算(ms)PCIe传输(ms)Phi-3-mini4.18.915.2Gemma-2-27B11.742.638.4优化验证步骤禁用cuda.SynchronizeStream(0)并改用异步事件轮询为Gemma-2-27B启用--gpu-layers 40强制KV缓存驻留显存通过/api/chat请求头注入X-Ollama-Async: true绕过同步检查3.3 MoE架构模型如Mixtral-8x7B在vLLM动态专家路由下的RTT抖动归因分析动态路由引入的非确定性延迟源vLLM对MoE模型采用运行时专家选择策略导致每个token请求可能触发不同GPU显存访问路径与NCCL通信拓扑# vLLM中Top-K路由关键逻辑片段 selected_experts torch.topk(router_logits, k2, dim-1).indices # router_logits shape: [batch_size, seq_len, num_experts] # 抖动根源topk结果随输入token语义动态变化引发不规则All-to-All流量该操作使通信模式从静态批处理转为动态稀疏交换NCCL调度器无法预分配带宽造成P2P传输排队延迟波动。RTT抖动核心归因维度专家负载不均衡部分专家被高频复用显存带宽饱和跨节点路由跳数突变同一batch内token被分发至不同物理节点vLLM MoE延迟分布对比单位ms场景P50P99抖动幅度静态专家绑定12.315.83.5动态路由Mixtral-8x7B14.138.624.5第四章硬件配置与系统调优对RTT的量化影响路径4.1 PCIe带宽、NVLink拓扑与显存带宽对KV Cache传输延迟的实测贡献度关键瓶颈定位实验设计通过微基准测试分离各层级带宽影响固定模型层KV尺寸128×1024×fp16仅变更硬件互联配置PCIe 5.0 x16单向32 GB/s→ 测得平均传输延迟 89.2 μsNVLink 4.0双向共600 GB/s8-link全连接→ 延迟降至 12.7 μsHBM3显存带宽816 GB/s→ KV重加载延迟仅 3.1 μs带宽-延迟贡献度量化路径层级理论带宽实测延迟占比PCIe主机内存↔GPU32 GB/s68.4%NVLink GPU↔GPU600 GB/s22.1%HBM3显存访问816 GB/s9.5%内核级数据搬运验证// CUDA kernel显式触发KV cache跨设备拷贝 cudaMemcpyPeerAsync(dst_ptr, dst_dev, src_ptr, src_dev, kv_size, stream); // 参数说明dst_dev/src_dev为GPU索引kv_size256KBstream绑定专属DMA队列该调用在NVLink拓扑下自动路由至最优P2P路径避免PCIe中转若目标设备无直连NVLink则降级至PCIe路径并触发显式警告日志。4.2 CUDA Graph启用、PagedAttention内存布局、FlashAttention-3内核版本对TTFT的加速阈值CUDA Graph启用条件CUDA Graph需在模型首次前向后捕获且batch size与序列长度须固定。动态shape将导致graph失效# 启用CUDA Graph示例 graph torch.cuda.CUDAGraph() with torch.cuda.graph(graph): logits model(input_ids, attention_mask)分析graph捕获仅支持静态tensor shape若input_ids.shape[1]变化需重建graph否则触发runtime error。PagedAttention内存布局优势将KV缓存切分为固定大小如16×16的page块支持非连续物理内存映射逻辑连续token位置FlashAttention-3加速阈值序列长度TTFT降低幅度vs FA-2是否启用FA-35122.1%否≥204818.7%是4.3 操作系统级调优cgroups CPU配额、IO调度器选择、NUMA绑定对RTT方差的抑制效果cgroups CPU带宽限制实测echo 100000 50000 /sys/fs/cgroup/cpu/rt-app/cpu.cfs_quota_us echo 100000 /sys/fs/cgroup/cpu/rt-app/cpu.cfs_period_us将实时应用限定为50% CPU带宽quota/period0.5显著降低因突发计算导致的RTT抖动。cfs_quota_us与cfs_period_us共同构成滑动窗口带宽控制器避免线程抢占引发的延迟尖峰。IO调度器对比调度器适用场景RTT方差降幅mq-deadline低延迟块设备≈32%kyberNVMe多队列≈41%NUMA本地化绑定使用numactl --cpunodebind0 --membind0强制进程与内存同节点跨NUMA访问延迟达120ns本地访问仅70ns直接压缩RTT分布尾部4.4 网络栈优化gRPC/HTTP/WS协议栈在高并发请求下对端到端RTT的额外开销测量协议栈延迟构成分析在 10K QPS 负载下不同协议栈引入的额外 RTT 开销显著分化协议平均额外RTTμs主要开销来源HTTP/1.11280TCP握手TLS协商Header解析HTTP/2640HPACK解码流复用调度gRPC-over-HTTP/2790ProtoBuf序列化拦截器链流控WebSocket410帧解析应用层心跳维护gRPC拦截器对RTT的影响验证func latencyInterceptor(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { start : time.Now() err : invoker(ctx, method, req, reply, cc, opts...) // 记录从调用发起至响应返回的完整耗时 log.Printf(gRPC %s RTT: %v, method, time.Since(start)) return err }该拦截器捕获了包括序列化、网络传输、反序列化及中间件处理在内的全链路耗时实测显示每增加一级认证/日志拦截器RTT 增加约 85±12 μs。关键优化路径启用 gRPC 的WithTransportCredentials(insecure.NewCredentials())在内网跳过 TLS使用grpc.WithUserAgent(fast-client)减少 HTTP/2 SETTINGS 帧交互将小消息 ProtoBuf 编码预热缓存降低首次序列化开销第五章总结与展望云原生可观测性已从“可选能力”演进为分布式系统的核心基础设施。在生产环境中某电商中台通过统一 OpenTelemetry Collector 部署将指标采集延迟从 800ms 降至 120ms同时降低 37% 的 Prometheus 内存占用。关键实践路径采用语义约定Semantic Conventions标准化 span 属性避免跨团队埋点歧义将 trace_id 注入 Kafka 消息头实现异步链路全贯通基于 OpenMetrics 格式暴露自定义业务指标如订单履约 SLA 违约率典型采样策略对比策略适用场景采样率建议头部采样低延迟敏感服务如支付网关1:100尾部采样故障根因分析需完整异常链路100% 错误 5% 随机可观测性代码增强示例// 在 Gin 中注入 trace context 并记录业务事件 func orderHandler(c *gin.Context) { ctx : c.Request.Context() span : trace.SpanFromContext(ctx) // 记录关键业务状态 span.SetAttributes(attribute.String(order.status, created)) span.AddEvent(order_placed, trace.WithAttributes( attribute.Int64(item.count, 3), attribute.String(payment.method, alipay), )) c.JSON(200, gin.H{id: ORD-789}) }未来演进方向AI 驱动的异常模式识别已在某金融风控平台落地基于 12 类时序特征训练 LSTM 模型将告警准确率提升至 92.4%误报率下降 63%。

相关新闻

附录A. Rust 关键字速查表

附录A. Rust 关键字速查表

附录A. Rust 关键字速查表 本附录提供 Rust 语言所有关键字的完整速查表,包括当前使用的关键字、保留关键字以及特殊标识符。当前使用的关键字 声明与定义类关键字用途示例fn定义函数或方法fn add(a: i32, b: i32) -> i32 { a b }let声明变量绑定let x 5;mut声…

2026/10/10 15:15:19 阅读更多 →
深入解析FSI模块:软件触发Ping帧与DMA传输机制

深入解析FSI模块:软件触发Ping帧与DMA传输机制

1. FSI模块核心机制与设计思路拆解 在嵌入式实时控制系统中,处理器与外设或处理器之间的高速、可靠数据通信是系统稳定运行的基石。德州仪器(TI)的TMS320F28004x系列微控制器集成的快速串行接口(Fast Serial Interface&#xff0c…

2026/10/9 10:10:31 阅读更多 →
AI伦理三脚架:原则、流程与工具的落地断层解析

AI伦理三脚架:原则、流程与工具的落地断层解析

1. 项目概述:一个被反复加固却始终晃动的伦理支架 “IBM’s AI Ethics”这个短语在2018年前后曾是科技伦理领域最常被引用的正面案例之一——它代表一家老牌科技巨头主动设立AI原则、公开发布《AI价值观白皮书》、成立跨部门AI伦理委员会、甚至宣布退出面部识别商业…

2026/10/13 17:54:05 阅读更多 →

最新新闻

Codex国内API配置指南:环境变量、模型映射与网关接入实战

Codex国内API配置指南:环境变量、模型映射与网关接入实战

简介:面向国内 Windows 开发者使用 OpenAI Codex 编码工具的需求,这份代码包提供了一条从环境准备到 API 联通验证的完整实践路径。资源先给出 Node.js 与 npm 的检查方法,并用一键安装脚本降低新手搭建门槛;随后梳理 Codex CLI 的…

2026/10/14 4:01:42 阅读更多 →
PyTorch深度解析:张量契约、autograd引擎与显存博弈

PyTorch深度解析:张量契约、autograd引擎与显存博弈

1. 这不是“学PyTorch”,而是重建你对深度学习工程的认知很多人点开一篇叫“pytorch”的文章,下意识以为要读教程、抄代码、跑通MNIST——结果三小时后卡在CUDA out of memory,五小时后被autograd的梯度计算路径绕晕,七小时后发现…

2026/10/14 4:01:42 阅读更多 →
roLabelImg旋转框标注工具实战:从安装到格式转换全指南

roLabelImg旋转框标注工具实战:从安装到格式转换全指南

简介:roLabelImg 是一款面向目标检测数据生产的旋转框标注工具源码,专为遥感影像、OCR 文字检测等需贴合旋转目标的场景设计,适合计算机视觉研究者、算法工程师及标注工具二次开发人员使用。与普通矩形标注不同,该工具支持任意角度…

2026/10/14 4:01:42 阅读更多 →
自定义Emoji实现指南:从短代码映射到前端渲染

自定义Emoji实现指南:从短代码映射到前端渲染

如果你负责过一个带聊天功能的Web应用,大概率收到过这类需求:用户想把一张自制表情包图片,当作Emoji一样发出去。我最近在某协作平台重做了这个功能,从上传、解析到渲染,踩了一串坑,也把整套实现思路理顺了…

2026/10/14 4:01:42 阅读更多 →
内蒙古SHP数据清洗与道路网拓扑处理实战指南

内蒙古SHP数据清洗与道路网拓扑处理实战指南

简介:这份资源是2022年7月整理的内蒙古自治区GIS矢量数据集,面向地理信息研究者、交通规划人员、区域经济分析者及高校师生,用于行政区划研究、路网分析与空间制图等场景。压缩包约26.32MB,内含省级、地市、区县三级行政边界&…

2026/10/14 4:01:42 阅读更多 →
办公设备管理系统OAMS源码实战:从台账混乱到扫码即用

办公设备管理系统OAMS源码实战:从台账混乱到扫码即用

简介:办公设备管理系统OAMS是一套面向企事业单位设备管理员与信息化开发者的全生命周期管理解决方案,覆盖采购、入库、领用、维修、报废等核心环节,适合需要落地资产台账、审批流程与统计报表的Java Web项目学习与二次开发。资源包共451个文件…

2026/10/14 4:00:41 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

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