Roo Code 接 Ollama 卡顿?从原理到实践的全套提速指南
先说我自己的遭遇吧。第一次把 Roo Code 接到本地 Ollama 上的时候满脑子都是免费、私有、还不限速结果真到干活那一步点一下按钮光标转圈转到我喝完一整杯水回复才一个字一个字往外蹦。那一刻我甚至怀疑是不是自己哪里配错了又或者是本地模型本来就这么拉胯。后来我花了两周时间把服务端、模型参数、客户端设置、显存占用全都捋了一遍才意识到卡顿的锅大部分不在模型算力而在别人替你调好的东西本地环境里必须自己调。这篇文章不聊虚的就把我踩过的坑、定位卡顿的过程、最终跑回接近原生速度的配置方案全部拆开说。1. 卡顿到底卡在哪先定位瓶颈再动手很多人在 Roo Code 里用本地模型卡了第一反应是换更大的模型或者换更强的小模型量化其实这是最低效的做法。因为卡顿根本不是单一原因造成的它至少能分成三类完全不同的症状1.1 症状分类转圈、逐字慢、半路停第一类是转圈半天不出字连第一个 token 都等不到。这种情况大概率卡在首 token 延迟TTFT上常见原因包括模型刚从磁盘加载进显存、上下文太长导致 prefill 计算量爆炸、服务端根本没收到请求。第二类是出字速度像是幻灯片有输出但每秒只有几个 token。这种通常是模型推理速度瓶颈要么显存带宽不够要么模型参数过大导致部分层被扔到了 CPU 上跑。第三类是生成到一半突然停住过很久才继续或者一直转圈直到超时。这种通常和工具调用循环、上下文长度截断、并发请求排队有关。如果你不知道自己的卡顿属于哪一种直接开始调参就是盲人摸象。我强烈建议先做一次时间测量。1.2 先用 curl 测量最原始的模型响应速度要判断卡顿是不是 Roo Code 这个客户端造成的最直接的办法是绕过它直接请求模型服务。我用 Ollama 举例本地服务默认跑在11434端口time curl http://localhost:11434/api/generate -d { model: qwen2.5-coder:7b-q4_k_m, prompt: 用 Python 写一个快速排序并给出注释, stream: false } -o /dev/null配合time命令你能拿到两个关键数据总耗时和生成内容的长度。再配合流式请求也能测出首 token 响应时间time curl http://localhost:11434/api/generate -d { model: qwen2.5-coder:7b-q4_k_m, prompt: 写一句话, stream: true }如果这里直连都慢那问题在模型或服务端配置如果这里飞快但 Roo Code 里转圈问题就在客户端设置。1.3 三类瓶颈的快速排查链路我给自己整理了一套固定排查顺序后来基本没漏过排查对象工具/命令重点看什么模型加载状态ollama ps模型是否已加载、是否在 GPU 上、上下文大小显存状况nvidia-smiVRAM 使用率、是否接近上限、有没有其他进程抢占CPU/内存htopCPU 是否打满、内存是否爆掉、swap 是否在用服务端日志Ollama 服务终端有没有报错、每次请求耗时网络层curl -v是否走了奇怪的代理、连接是否被阻塞有一个特别容易踩的坑如果你在终端里设了HTTP_PROXY或HTTPS_PROXY环境变量Ollama 的本地请求也可能被一股脑丢进代理然后代理那边自连自导致卡顿直到超时。我后来排查一个Roo Code 里能出字但非常慢的问题最后发现就是代理变量在作怪。清掉或者给 localhost 加 no_proxy 之后立刻恢复。2. 模型与服务端调优从量化等级到上下文窗口的设置取舍一旦确认瓶颈在模型或服务端接下来就是最核心的参数调优环节。这部分我踩的坑最深也最值得展开说。2.1 模型选型的刚刚好原则本地跑编码助手不是模型越大越好而是在你的显存容量内选一个能完整放进 GPU、同时保留合格智商的模型。我用 8GB 显存的显卡举个例子7B 模型的 Q4_K_M 量化大约占 4.7GB 显存给 KV cache 和 Roo Code 的上下文留足了空间这是比较稳的起点。14B 模型的 Q4_K_M 大约需要 9GB 以上8GB 卡硬塞只能让部分层跑 CPU反而慢到没法用。我实测过几个组合参考下表显卡显存可用模型推荐量化等级大致显存占用实际体验6GBQwen2.5-Coder-7BQ4_K_M约 4.7GB可日常用工具调用偶尔发呆8GBQwen2.5-Coder-7BQ5_K_M约 5.5GB速度与效果均衡12GBQwen2.5-Coder-14BQ4_K_M约 9GB编码效果明显更好速度稍降24GBQwen2.5-Coder-32BQ4_K_M约 19GB接近云端流畅但工具循环仍需省着用记住一个反直觉的结论Q8 或 FP16 量化往往比 Q4 慢 30% 到 50%但推理质量的提升对编码助手来说非常有限。尤其是 Roo Code 这类 agentic 工具卡顿带来的挫败感远大于那一点点智商提升。所以我的建议是除非你的显存充裕到没地方花否则一律优先 Q4_K_M。2.2 Ollama 的上下文窗口默认 2048 是最大的隐形杀手这是我最想拍桌子的一个点。Ollama 为了照顾低配环境默认上下文窗口只有 2048 token。但 Roo Code 这类工具每次请求都会带上一大堆 system 提示词、工具定义、历史记录你让它读文件、改代码轻轻松松就超过 2048。后果有两种一是上下文被截断模型根本没看到关键内容开始胡编二是服务端反复处理超长 prompt卡到怀疑人生。解决办法是给特定模型单独设置更大上下文。最简单的方式是创建自定义 ModelfileFROM qwen2.5-coder:7b-q4_k_m PARAMETER num_ctx 16384 PARAMETER temperature 0.2然后构建一个新模型 tagollama create qwen2.5-coder-ctx16 -f Modelfile这里num_ctx 16384是我反复试出来的平衡点。再大不是不行但显存占用会成倍上涨。KV cache 的开销大约是2 × num_ctx × num_layers × num_heads × head_dim × 2 bytes7B 模型在 16K 上下文下大约要多占 2GB 显存32K 直接吃满。你可以在ollama ps里查看实际上下文大小如果显示的和预期不符优先检查 Modelfile 有没有生效。顺带一提如果你用 LM Studio 做服务端同样要在模型设置里把 Context Length 拉到 16384 以上并且打开 GPU Offload 到最大层数。用 llama.cpp 直接起 server 的话参数对应的是-c 16384和-ngl 99。2.3 并发、常驻与模型切换为什么有时候会越用越卡Ollama 默认会尝试把多个模型同时驻留显存并在空闲后自动卸载。听起来很贴心但实际用 Roo Code 时如果你不小心在多个模型之间切来切去每切一次就是一次卸载旧模型 加载新模型的完整流程。哪怕模型只有 4GB从磁盘加载进显存也要好几秒到十几秒期间所有请求都在排队。优化方向有三个固定一个主力编码模型不要频繁切换。调整环境变量OLLAMA_MAX_LOADED_MODELS1强制只保留一个避免显存碎片化。调大OLLAMA_KEEP_ALIVE5m或-1常驻防止你思考两分钟后模型被卸载下一次请求又要重新加载。我没法给你一个完美的标准答案因为不同显存容量参数组合会变。但思路非常简单让模型常驻显存减少加载次数比微调任何采样参数都管用。3. Roo Code 客户端侧的几处关键配置与使用习惯服务端调好了Roo Code 自己也有一堆设置会影响体感。这一部分的问题往往是你直连测试完全正常但一进 UI 就卡所以特别容易被忽略。3.1 API 地址、超时与流式开关Roo Code 支持 OpenAI-compatible 的 API 配置接 Ollama 时填http://127.0.0.1:11434/v1接 LM Studio 时填http://127.0.0.1:1234/v1。注意一个细节尽量写127.0.0.1而不是localhost。我遇到过在某些网络环境下localhost被解析成 IPv6 的::1而 Ollama 默认只监听 IPv4导致客户端连接要等 DNS 超时后才走回退逻辑每次都平白多耗几秒钟。超时设置同样关键。本地模型生成一段代码可能要一两分钟如果客户端默认超时只有 60 秒长任务会直接中断。你要把超时调到一个能容忍但不是无限的数值我个人用 300 秒既能覆盖超长工具调用又不会让错误请求挂到天荒地老。流式输出streaming必须打开。如果关掉流式UI 会等整个回复生成完才一次性渲染在本地模型动辄几十秒生成时间下观感就是点按钮后彻底无响应跟死机一样。打开之后至少能看到字在蹦就算慢你也知道它在干活。3.2 上下文管理别让一次会话越滚越大我一开始的使用习惯是从头到尾只开一个会话让 Roo Code 一个任务接一个任务地做。等到第三个任务的时候前面的任务上下文全都堆在对话里每次请求都要把几万 token 的历史重新 prefill 一遍速度直线下降。这个问题的根源在于Roo Code 为了保持状态会把历史消息、工具结果、文件内容一并发给模型。而本地模型推理的 prefill 阶段是计算密集型的token 数越多首 token 延迟越长。我的做法是养成三个习惯每个独立任务开新会话最多延续上一轮的结论不延续全部原始对话。使用.rooignore忽略node_modules、dist、build、大型数据文件等无关内容减少工具读取时塞进上下文的数据量。当 Roo 开始遗忘前面的关键需求时不翻旧账直接把需要的信息重新写清楚给它而不是让它回忆。这三个习惯能立竿见影。尤其是.rooignore它的作用类似.gitignoreRoo 在探索项目时就不会一股脑把大文件全部读进来单位请求的上下文瞬间小很多。3.3 工具调用循环本地小模型最容易陷入的泥潭Roo Code 的特点是 agentic它会自己读文件、改代码、跑命令、然后继续下一步。这个流程依赖模型在多个工具之间做选择。云端大模型做得很顺但本地 7B/14B 级别的模型经常翻车表现就是反复调用同一个工具、在同一个文件里改来改去、一个简单需求绕了十几个来回才结束。这种情况在观感上就是一顿操作猛如虎然后长时间转圈。治标的方法是调低采样温度到 0.2 以下减少模型随机发挥治本的方法是在提需求时把目标说得非常具体而不是丢一句帮我优化这个模块。很多卡顿其实不是模型慢而是模型不知道自己该干嘛反复横跳。4. 实测数据优化前后的延迟对比与效果说了这么多理论拿我的实际数据说话。我的环境是 RTX 4060 8GB模型用 Qwen2.5-Coder-7B Q4_K_MRoo Code 执行同一个任务读取项目里某个文件找到其中的 bug 并修复。4.1 第一次跑全是坑的默认状态那时候我什么参数都没动Ollama 默认上下文 2048客户端没开流式还开着代理变量。整个流程耗时阶段耗时状态点击执行到首个文本输出大约 8 秒转圈怀疑卡死模型生成的每个 token 间隔约 0.5 秒看着像 PPT第一次工具调用读文件从生成完到再次响应约 15 秒中间大部分时间在重新加载上下文最终完成整个任务超过 6 分钟中间还出现一次超时4.2 调优后的第二遍只做了这些改动固定模型常驻、上下文开到 16384、关闭无关代理、打开流式、开新会话、在.rooignore里排除无关目录。同一个任务的耗时阶段耗时状态点击执行到首个文本输出约 1.2 秒几乎没有等待感每个 token 间隔约 0.05 秒约 20-30 token/s接近阅读速度第一次工具调用约 2 秒上下文命中缓存秒回最终完成整个任务约 1 分 20 秒无超时全程连贯差距非常大而这个差距没用一分钱换硬件纯粹是配置和习惯的优化。所谓原生速度我理解不是跟云端 40B 级别模型比谁聪明而是在本地硬件条件下让整个交互过程不再有等得让人焦虑的空档。4.3 为什么效果提升这么明显缓存与预热的功劳优化后工具调用从 15 秒降到 2 秒主力功臣是两点。一是 prompt caching 生效。Ollama 会对相同的请求前缀做缓存Roo Code 每一次工具调用的 system prompt 和历史前缀基本不变只有最后的差异部分需要重新计算。如果你开了新会话、又用.rooignore减掉了无关内容相同前缀占比变高缓存命中率自然上去。二是模型常驻显存。旧状态下模型在两次请求之间被卸载下一次请求要重新读盘加载新状态下模型全程在显存里请求一到就能直接跑。这个差距在 SSD 上都有数秒甚至十几秒在机械硬盘上会更夸张。5. 那些容易反复踩的坑与我的处理方式最后一节我把踩过不止一次的坑集中列一下每条都配上我现在的应对方案。5.1 换了更强的模型结果更慢了这是最典型的误区。14B 模型在 8GB 显卡上跑因为显存不够一部分层被放在 CPU 上跑。你可以用ollama ps看 processor 那一列如果显示 GPU/CPU 混合说明有层没进显存。此时无论怎么调上下文和并发都不可能快起来。我的原则是先保证完整装进 GPU再谈模型效果。5.2 明明只有一个模型为什么还卡在加载有次ollama ps显示模型没被加载但我明明在用 Roo Code 不停发请求。后来发现是OLLAMA_MAX_LOADED_MODELS被设成 0Ollama 会先加载、响应、然后立刻卸载。这个变量默认值在不同版本还不一样最好显式设置成 1。另一个常见原因是盘里模型文件在机械硬盘上第一次加载特别慢解决方式是换 SSD 或者用OLLAMA_KEEP_ALIVE常驻。5.3 输出是中文但代码块里的文字全乱码这看起来像卡顿问题的后续衍生。其实不是模型速度问题而是上下文截断后模型开始胡编。我加上下文窗口之后乱码问题自然消失了。所以排查乱码时优先看ollama ps里的上下文大小别只盯着采样参数。5.4 设置了 16384 上下文但一用就爆显存上下文不是越大越好。16384 是我在 8GB 显卡上的折中值。如果你的显卡是 6GB我建议从 8192 起步如果跑 32B 级别模型上下文甚至要压到 4096。正确姿势是先开一个中等上下文跑通任务再用ollama ps观察实际显存占用一点一点往上调直到接近显存上限但又不爆为为止。5.5 Roo Code 里能出字但右上角一直报错本地模型和 Roo Code 之间是 OpenAI 兼容协议部分模型对response_format、tools字段支持不完整会导致请求被拒绝或部分功能异常。遇到这种情况优先检查你所用的模型是不是专门的 Instruct 或 Coder 变体不要拿通用聊天模型硬扛 agentic 任务。通用模型在工具调用上的格式稳定性通常更差而且更容易绕圈子。5.6 用了半天越来越卡重启后恢复如果你发现 Roo Code 用一段时间后明显变慢基本可以怀疑是上下文膨胀或者模型服务端累积了太多历史请求。重启 Roo Code 会清空会话上下文所以重启就好往往说明任务拆分和上下文清理没做到位。再加上一个体积大但不需要看的文件被重复读入问题就雪上加霜。回到我自己的使用体验上本地模型和 Roo Code 的组合上限远比很多人的体感要高但前提是你把服务端参数、客户端设置和日常使用习惯这三层都理顺。它不是装好就能直接上强度的工具更像一台需要手动调整化油器浓度的老车——调好了它跑得很顺不调它顿挫到让你想砸键盘。每次换模型、换显卡、换项目环境之后我都会重新用 curl 直连测一遍基准速度再根据结果做一轮微调。这套流程走下来所谓的卡顿基本都在可接受范围内了。

相关新闻

scratchpad-mcp MCP 服务说明文档:用 SQLite 与 Node.js 搭建 Claude 可调用的临时记忆层

scratchpad-mcp MCP 服务说明文档:用 SQLite 与 Node.js 搭建 Claude 可调用的临时记忆层

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

2026/10/10 1:57:15 阅读更多 →
2026 预测:AI Agent Harness Engineering 将如何改变企业软件的定价与交付

2026 预测:AI Agent Harness Engineering 将如何改变企业软件的定价与交付

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

2026/10/10 1:57:24 阅读更多 →
claude-mem:为Claude Code解决跨会话失忆的AI记忆插件

claude-mem:为Claude Code解决跨会话失忆的AI记忆插件

跟你讲个真实的场景:我前一天让Claude Code帮我重构了一个模块,当时口头约定了“函数命名不要缩写、接口返回值用Result包装”,第二天打开终端准备继续改下一个文件,它完全不记得这回事,上来又被我重复训了一顿。这个问…

2026/10/10 1:57:27 阅读更多 →

最新新闻

UnoCSS 在 Nuxt 中的集成实践:@unocss/nuxt 模块安装、配置与 Nuxt Layers 合并全解析

UnoCSS 在 Nuxt 中的集成实践:@unocss/nuxt 模块安装、配置与 Nuxt Layers 合并全解析

AI 技能人工智能 【免费下载链接】skills Anthony Fus curated collection of agent skills. 项目地址: https://gitcode.com/gh_mirrors/skills11/skills 点击查看 免费下载 本文以 UnoCSS 官方 Nuxt 模块 unocss/nuxt 为主线,系统讲解在 Nuxt 应用中接…

2026/10/10 2:31:00 阅读更多 →
Pinia 服务端渲染(SSR)完整指南:状态水合、跨请求隔离与 Nuxt 实践

Pinia 服务端渲染(SSR)完整指南:状态水合、跨请求隔离与 Nuxt 实践

AI 技能人工智能 【免费下载链接】skills Anthony Fus curated collection of agent skills. 项目地址: https://gitcode.com/gh_mirrors/skills11/skills 点击查看 免费下载 Pinia 是 Vue 官方的状态管理库,本指南聚焦其在服务端渲染(SSR&a…

2026/10/10 2:31:00 阅读更多 →
PCA9422+MKV58F1M0VLQ24嵌入式电源管理实战

PCA9422+MKV58F1M0VLQ24嵌入式电源管理实战

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

2026/10/10 2:31:00 阅读更多 →
STM32F217ZG与PCA9422完整电源管理方案:从选型到低功耗调优

STM32F217ZG与PCA9422完整电源管理方案:从选型到低功耗调优

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

2026/10/10 2:31:00 阅读更多 →
@vue/apollo-composable 的 provideApolloClient:在 Vue 组件之外安全解析 Apollo Client 的权威指南

@vue/apollo-composable 的 provideApolloClient:在 Vue 组件之外安全解析 Apollo Client 的权威指南

前端GraphQL 【免费下载链接】apollo 🚀 Apollo/GraphQL integration for VueJS 项目地址: https://gitcode.com/gh_mirrors/apollo2/apollo 点击查看 免费下载 provideApolloClient 是 vue/apollo-composable 提供的一个 Provider 工具,用于…

2026/10/10 2:31:00 阅读更多 →
糖尿病视网膜病变AI诊断:从Jupyter原型到临床闭环的工程化实践

糖尿病视网膜病变AI诊断:从Jupyter原型到临床闭环的工程化实践

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

2026/10/10 2:30:00 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/9 6:17:20 阅读更多 →