上周有个做企业信息化的朋友问我大模型到底能不能部署在内网他们公司硬件只有一台老旧的GPU服务器还不想把业务数据送出去。这个问题我太熟悉了过去半年我们项目组一直在折腾同一件事——把智能交互放到客户本地让数据出不了域让模型跑得起来。最终交付的版本就是龙呤AI 1.5一个本地轻量化智能交互系统底层由OCTOntology Cognition Tree本体认知树 DSSDecision Support Service决策支持服务 ODPOffline Deployment Pipeline离线部署管线三个核心模块组成。整套东西的定位很明确私有化AI轻量落地能内网跑能持续迭代。这篇文章我会把从架构选型到压测调参的完整过程都写下来包括每个模块为什么要这么设计、本地部署到底需要什么样的硬件底线、以及我们踩过的坑。如果你也在做企业私有化AI尤其是资源有限、数据敏感的环境这篇复盘可以直接参考。1. 私有化部署的真实困境不是不想用AI是AI太“重”了1.1 云端方案的算账逻辑算到最后都不划算先说个现象。很多企业一开始考虑AI第一反应是接入云端大模型API。注册账号、拿Key、调接口看起来很快。但真放到生产环境里问题就一个个冒出来。第一个问题是数据出域。业务对话里全是客户信息、内部流程、项目数据发送到云端就意味着这些数据要去别人的服务器上溜一圈。安全部门大概率直接否决。第二个问题更实际——钱。API按token计费看起来单次不贵但多轮对话、知识库检索、固定任务调用一个月几千上万次请求月账单很快就能压到项目预算的临界点。我见过一个客户他们一个月光是在AI功能上的API费用就到了六位数这还只是用量还没算开发联调的人力成本。第三个问题是被忽略的网络。工厂、医院、政务内网很多环境是物理隔离的压根连不上外网。API模式天然就没法用。所以私有化AI不是锦上添花是这些场景的刚需。龙呤AI 1.5从立项开始就没把“接入云端大模型”放进选项清单目标只有一条——让模型交互知识库整套系统完整地跑在客户自己的机器上。1.2 “轻量化”的边界到底画在哪里私有化一个模型听起来简单但这几年“私有化”这三个字被概念化得厉害。最典型的方案是直接搬开源大模型70B以上的参数要跑得动显存至少百G级别得配多张A100或H100。普通企业哪有这种硬件。我们在客户现场见得最多的是单张RTX 3090/4090甚至是只有CPU没有GPU的老服务器。龙呤AI 1.5把部署基线定得比较激进单张12GB显存GPU可跑16GB内存可跑纯CPU也能通过INT8量化做基础问答。这不是拍脑袋定的是我们跑了三轮压测后画出来的底线。部署形态GPU显存要求内存要求支持的模型规格纯CPUINT8量化不需要16GB以上7B级量化单GPUFP16/INT812GB及以上16GB以上7B级量化 知识库单GPUFP16满血24GB及以上32GB以上7B级全精度 全文向量库现在很多方案一开口就是“7B做不了复杂任务”这话对也错。7B在通用闲聊上确实不如大模型但在企业垂直场景里配合知识库和决策链路完全够用。后面我会详细说我们怎么让一套7B模型在一个受限环境里稳定工作的。2. OCTDSSODP的架构链路把“会聊天”变成“能干活”2.1 OCT本体认知树多轮对话不再靠“截断”先聊OCT。全称是Ontology Cognition Tree本体认知树。这个模块要解决的是智能交互系统最头疼的问题——多轮对话的记忆与理解。很多人在做本地对话系统时有个误区把所有历史消息全部塞进上下文窗口。一次会话聊了20轮就一股脑把20轮内容都喂给模型。这种做法有两个严重问题。第一上下文窗口有限聊长了直接爆掉只能截断一截断前面的关键信息就丢了。第二就算没爆掉塞太多无关信息会严重干扰模型注意力答非所问的概率大幅上升。OCT的思路是把对话记忆“结构化”而不是“堆叠”起来。每一次多轮对话系统会实时抽取出三类信息实体节点人、设备、项目、地点、时间等关键对象关系节点实体之间的关联例如“张三负责A设备”“B项目在C厂区”状态节点当前任务的完成度例如“已确认故障类型待确认维修方案”所有节点构成一棵不断生长的树。新来一句话系统先在这棵树上找挂载点判断它是在补充哪个实体、更新哪个状态还是新建一个分支。这样模型每次真正拿到的不是“全部历史”而是“跟当前问题相关的子图”。我举个例子。客户在咨询里先后说了“我们工厂有两条产线”“第一条产线最近老出故障”“故障主要集中在上料环节”。传统做法是把这三句话原样存进上下文第二次提问“上料环节故障率多少”时模型要从大段历史里自行找线索。而OCT的做法是直接维护一个“产线A——上料——高故障率”的认知分支模型无论何时问“上料环节”都能立刻从这个分支拿到答案。实测下来超过20轮的复杂会话传统上下文的答非所问率能到30%以上而OCT把这个数字压到了6%以内。2.2 DSS决策支持服务一句话先过三道闸第二个模块是DSSDecision Support Service决策支持服务。这个模块是我们团队内部最坚持的一层也是市面上很多“私有化AI”完全没做的一层。大模型本身是个“生成器”你问什么它都会往外蹦句子但企业场景要求的是“确定性”——该查资料就查资料该算数字就算数字该拒绝就拒绝不能什么都靠模型自由发挥。DSS就是在这条链路上做控制的第一道闸意图判别。把用户输入分为四类闲聊类、知识问答类、任务执行类、敏感越权类。每一类走完全不同的处理管道。知识问答类强制走RAG检索任务执行类强制走工具调用越权敏感类直接拦截。这里我们不依赖模型做判断而是用一个轻量分类模型规则模板的双通道方案分类速率控制在毫秒级并且给每个意图输出一个置信度分数低于0.72的输入一律进入“人工重试”流程不让模型硬答。第二道闸工具路由。判定为任务执行类之后DSS要决定调哪个内部工具查数据库、生成报表、修改工单、还是调用外部API。每个工具都预先定义了参数模板和权限等级。以“查一下上季度设备故障率”为例DSS先从OCT节点里取出“设备上料机”再从业务系统映射表里定位数据源最后生成结构化查询指令整个路由过程不需要大模型介入。第三道闸答案置信校验。模型生成答案后不直接返回先过一遍校验器。校验器会把模型答案和检索结果做比对如果关键数字或实体不一致会触发二次生成或者直接返回“暂时无法确认请稍后再试”。这一步很关键我们用这道闸把幻觉率从裸模型的6%级别压到了1.8%级别后面压测部分会详细展开。DSS本质上是给模型套了一层“企业级刹车”它让AI在私有化环境里不止能“聊天”还能“干活”并且干错活的概率是可控的。2.3 ODP离线部署管线升级和回滚不再提心吊胆第三个模块ODPOffline Deployment Pipeline离线部署管线。私有化环境的运维和云端完全是两个画风。云端更新模型后台切个镜像就行私有化环境很多客户现场没有专门的运维工程师更新系统全靠我们远程指导一旦出问题可能整个系统瘫在那里。龙呤AI 1.5的ODP模块把整个升级过程做成了“流水线式”的本地操作模型版本管理基座模型、量化模型、微调模型都打上版本标签多版本并存不覆盖。热加载与灰度切换新模型加载完成后先跑一组内置烟囱测试给10%的会话流量试用确认无异常再全量切换。一键回滚保留上一个可用版本的全部文件和配置只要在管理后台点一下“回滚”整个系统在5分钟内恢复到上一版本。这套机制在我们交付的某个工厂客户那里实战验证过。上线一个新版量化模型后发现它在特定方言识别上不如旧版现场运维在管理后台直接回滚整个过程没中断任何会话客户甚至没察觉到发生了变更。ODP的价值不在于技术难度而在于“把私有化部署的运维门槛降到了普通人能操作的水平”。没有这一层龙呤AI 1.5就不敢称为完整的“解决方案”只能算个模型壳子。2.4 三者协作的一次完整链路拆解说了三个模块各自的职责串一遍完整链路。用户输入“帮我查一下第一产线上料环节的故障率并生成一份摘要”。第一步输入进入DSS意图判别判定为“任务执行类”置信度0.85。第二步OCT从知识树里检索“第一产线”“上料环节”定位到对应的设备实体和故障状态节点。第三步DSS工具路由层根据检索结果匹配到“设备故障率查询”工具生成结构化查询指令到业务数据库执行SQL。第四步查询结果转成限定上下文喂给基座模型限定其只根据查询结果生成摘要不自由发挥。第五步生成的摘要经过DSS答案校验器核对“上料设备”“故障率数值”是否与原数据一致确认通过后推送到前端。第六步ODP记录整个链路的日志包括模型版本、工具调用记录、返回内容摘要作为后续审计依据。你会发现模型在整个流程里只承担了“摘要生成”一个相对简单的角色真正控制流程、保证精度的是OCT和DSS。这也是我坚持的一个观点在私有化AI里架构的价值远大于模型参数的价值。3. 1.5版本本地落地的工程细节从模型选型到流式输出3.1 基座模型与量化路径怎么选最适配“本地轻量化”龙呤AI 1.5的基座模型选型经历了好几轮徘徊。最开始我们试过13B模型效果确实好但部署要求高单张12GB显卡跑不了FP16只能INT8量化量化后效果衰减让我不太满意。后来转战7B系列在效果与资源之间找到了平衡点。选型原则其实很朴素效果优先看垂直能力企业场景最看重的是指令遵循能力、结构化输出能力、多轮稳定性而不是广谱知识量。量化路径要预留余量我最终采用的是“FP16全精度INT8动态量化”双轨方案。默认7B模型以FP16精度运行显存不够时自动切到INT8。比如12GB显存的环境FP16大概吃9GB左右切到INT8能降到5GB给向量检索和上下文缓存留出空间。舍不得裁剪的“尾巴”输出层始终保持FP16精度。之前踩过一次坑为了省显存把输出层也量化了结果是文本生成的流畅度肉眼可见地下降后来这部分坚决保留FP16。7B模型在一张消费级显卡上单token生成速度大约在38-45之间这个速度对于交互式问答完全够用。3.2 上下文窗口管理三层状态与Token预算前面提到OCT负责结构化的“知识树”但模型实际生成时还是需要上下文。龙呤AI 1.5把上下文按功能切成三层每一层有独立的Token预算层级内容Token预算短期记忆层当前会话最近8轮原始对话不超过3200 token工作记忆层当前任务的结构化摘要由OCT生成不超过4096 token长期知识层知识库检索结果经向量相似度排序不超过2048 token三层预算总计不超过9344 token塞进8K窗口刚好留有余量。这个设计解决了一个很实际的问题——企业用户聊着聊着忽然岔开问另一个问题传统上下文机制会把前面聊的东西全丢了但三层结构里“工作记忆层”始终保留了当前任务的骨架岔开的问题走OCT分支继续过一阵还能绕回来接着聊。给个小技巧短期记忆层最好按“最近8轮”做滑动窗口而不是按内容长度做。用户平均对话轮次短且密集8轮正好覆盖一个典型任务的推进过程再多就是噪音。3.3 流式响应与首字延迟的优化本地部署还有一个体验维度经常被忽略——首字延迟TTFT。云端大模型基本都有专用加速可以做到几百毫秒出第一个字本地环境没有这种条件优化全靠自己。我们做了三件事减少预填充长度每次生成前只把当前轮问题和OCT相关子图喂进模型不把整个三层上下文全部预填充。预填充短了计算量小了TTFT自然降下来。SSE流式推送每50毫秒一flus前端用Server-Sent Events接收token客户端每50ms渲染一次而不是攒一整个句子。实测下来即便单token生成只有40出头用户体感也接近“打字机式流畅”。缓存KV Cache把高频查询的KV Cache做本地缓存比如“产线A的基本信息”“设备B的参数表”。这个缓存命中一次TTFT能直接压到0.3秒以内。优化后的实测数据单会话TTFT约0.4秒生成速度约38 tokens/s体验接近云端轻量模型。3.4 私有化环境里的向量检索与知识库对接企业私有化部署通常要对接大量内部资料产品手册、故障案例、SOP文档、历史工单等。龙呤AI 1.5自带一个轻量级向量检索模块针对PDF、Word、TXT、Markdown四种格式做文档解析。处理链路是文档切块按段落和标题层级块大小控制在256-512字→ Embedding嵌入 → 本地向量库存储 → 查询时Top-K召回K值默认5召回段落按相似度从高到低排列。这部分我踩过的坑是文档切块切太随意会严重降低检索精度。按固定字符切比如每512字一刀切会把语义完整的段落拦腰截断我们的做法是先识别文档标题层级再按“标题段落”的结构化方式切块语义完整度会好很多。一个值得注意的参数K值不是越大越好。在私有化知识库里K5召回精度最高K调到10之后噪声明显增加模型答案里开始混入无关段落里的词汇。如果算力允许可以在召回后加一层轻量重排模型但我们为了控制部署体积没有上靠DSS的答案校验闸也能兜住大部分问题。4. 压测复盘并发、延迟、幻觉率与关键超参4.1 测试环境与基准数据先交代测试环境。我们在一台客户退下来的旧服务器上做了完整压测CPU双路Xeon Silver 421020核40线程内存128GB DDR4GPU单张RTX 309024GB显存存储NVMe SSD用于向量库和模型文件操作系统Ubuntu 20.04 CUDA 11.8压测工具是自己写的Python asyncio并发脚本模拟30路用户同时发起混合会话知识问答、任务查询、多轮追问各占三分之一。每路会话持续30分钟关注三个指标首字延迟、完整回复时长、成功率。4.2 并发与显存实测并发路数TTFT中位数生成速度中位数成功率显存峰值1路0.42秒40 tokens/s100%9.1GB10路0.55秒36 tokens/s100%11.8GB20路0.83秒27 tokens/s98.7%14.6GB30路1.35秒19 tokens/s91.5%17.2GB这个数据可以说非常符合预期。20路以内是这台配置的舒适区30路明显开始排队但成功率掉到91.5%主要原因是KV Cache暴涨导致显存接近上限触发了部分请求的OOM。后来我们把最大并发上限默认改为20并在超过15路时对“重度推理任务”自动降级为“轻量摘要模式”成功率重新拉到了99%以上。给个参考结论单张24GB显卡的7B私有化系统日常交互控制在15-20路并发是安全的再往上就得考虑多卡或排队策略了。4.3 幻觉控制为什么裸跑7B会失控这轮压测里我最关注的其实是幻觉率。我们设计了一套基准测试集500条知识问答全部来自企业文档每条都有标准答案。裸跑7B模型只喂文档上下文、不经过DSS校验的幻觉率是6.2%这个数字在企业场景是致命的——每100条回答里有6条是“看似合理但数据错误”的没人敢用。问题出在哪里模型有很强的“补全倾向”遇到不确定的区域会用语言习惯把话圆过去而不是承认不知道。加上DSS三层校验后幻觉率降到了1.8%。核心策略有三个知识类问题强制走RAG且要求“检索不到就不答”当召回结果的最高相似度低于阈值0.55时系统直接返回“暂未检索到可依据资料”不让模型编。数字与实体一致性验证模型生成的答案里如果出现数字或设备名必须能和检索结果里的对应内容匹配匹配不上就二次生成或拒答。置信度0.62以下的提交人工兜底企业场景里宁可不给结论也不能给错结论。这个阈值我们在客户现场调研过最终定为0.62。因为加了这道“宁缺毋滥”的规则系统偶尔会答不上来但答上来的内容可信度大幅提升。你要知道在企业私有化AI的交付里可信度比覆盖率重要得多。4.4 关键超参温度、重复惩罚与路由阈值的最终取值压测调参阶段我们走了不少弯路这里直接给最终验证过的参数和依据temperature 0.6低于0.4时答案太“干”表达生硬高于0.85时发散严重开始出现幻觉。0.6是任务型交互和自然表达之间的平衡点。top_p 0.9与temperature配合使用给生成留一点多样性但限制在可控范围。repetition_penalty 1.05很重要本地化模型对重复循环很敏感1.05能压住80%的重复段。之前用默认值1.0长文本里经常出现“然后然后然后”之类的情况。DSS路由阈值 0.72意图分类的动作阈值。调成0.8时太多输入没能通过路由用户感觉系统“拒答率太高”调成0.65后误判率上升一些明显是闲聊的输入被送进了任务执行管道。0.72是召回率和精度的交叉点。检索触发阈值 0.55召回相似度最低线0.55以下不进上下文。还有一个细节任务执行类的回答温度可以临时降到0.4因为这类回答要求精确不能发散。我们做了一套“温度随意图动态调整”的规则不在系统里用单一温度值实测对任务完成度有明显帮助。5. 写在最后几个必须亲手踩过才相信的经验关于龙呤AI 1.5最后聊几点我觉得其他项目也能直接复用的体会。第一私有化AI最容易被“模型参数迷思”带偏。一开始我们也是盯着模型排行榜选基座后来发现企业客户根本不在乎模型知识面多广只在乎三步之内能不能答对事。把重心从模型选型转移到“控制链路设计”上之后交付质量才真正稳定下来。识别层OCT做重、推理层DSS做重、生成层做轻——这套思路用在哪类私有化项目都不会错。第二上下文管理一定要提前做预算。不要等高并发场景压进来再去临时砍上下文长度那种做法只会让模型答得更差。龙呤AI 1.5的三层预算模式是我们在项目中途重新设计的改一次的成本远高于一开始就设计好。第三离线部署必须把“回滚”当第一功能来做而不是最后补丁。云端出问题可以马上改私有化环境出了问题可能就是客户现场停摆压力完全不同。ODP的一键回滚在客户那边救了我们一次也让客户对系统建立起了信任。如果你正好也在考虑私有化AI方案或者已经踩在“大模型部署不下去”的坑里这套架构和数据可以直接拿去做参考。硬件不够、数据敏感、又要保证交互质量龙呤AI 1.5这个方向是值得走通的一条路。
企业数字化 ERP 产品动态
相关推荐
健身内容营销新趋势:反内卷策略与用户留存提升 1. 项目背景与市场洞察 健身行业正在经历一场理念革命。过去五年间,全球健身内容在社交媒体平台的播放量增长了近300%,但用户留存率却持续走低。我们团队在分析Instagram和TikTok的健身类话题时发现一个有趣现象:带有"no pain no gain&q… · 2026/11/4 21:16:33
ESP32智能灌溉系统实战:从硬件选型到远程监控 1. 农田灌溉自动化实战手记:从零搭建智能灌溉系统去年夏天帮老家亲戚改造了一片20亩的玉米地灌溉系统,从传统人工控制升级为全自动智能灌溉。整个过程踩了不少坑,也积累了些实战经验。这套系统现在能根据土壤湿度自动启停水泵,通过… · 2026/11/4 21:16:33
TimesFM 3.0与VLX-Seek:面向工业落地的时间-视觉协同建模方法 1. 这不是又一个“刷榜模型”,而是两个真正能落地的时间与视觉协同工具最近在几个工业预测系统和机器人视觉项目里反复用上了TimesFM 3.0和VLX-Seek,不是为了发论文,是真正在产线故障预警、仓储AGV导航、冷链温控调度这些环节里跑通了闭环。很… · 2026/11/4 21:16:33
构建智能供应链透明度系统:Hermes Agent产品溯源与认证全指南 构建智能供应链透明度系统:Hermes Agent产品溯源与认证全指南
在全球化贸易日益复杂的今天,供应链透明度已成为企业赢得信任和市场竞争力的关键。Hermes Agent作为一款强大的开源智能代理框架,为构建端到端的产品溯源与认证系统提供了灵活而… · 2026/11/4 22:24:51
构建智能环境控制系统:Hermes Agent智能家居场景自动化 构建智能环境控制系统:Hermes Agent智能家居场景自动化
什么是Hermes Agent智能家居自动化
Hermes Agent是一款功能强大的开源智能环境控制工具,它能够帮助用户轻松构建个性化的智能家居场景自动化系统。通过Hermes Agent,您可以实现灯光、开… · 2026/11/4 22:24:51
Hermes Agent与边缘AI推理优化:模型量化与剪枝全攻略 Hermes Agent与边缘AI推理优化:模型量化与剪枝全攻略
Hermes Agent作为一款强大的AI代理框架,在边缘设备上实现高效推理是其核心优势之一。本文将深入探讨如何通过模型量化与剪枝技术,在保持性能的同时显著降低资源消耗,让AI模型… · 2026/11/4 22:23:49
探索Hermes Agent的计算机视觉目标跟踪算法:SORT与DeepSORT 探索Hermes Agent的计算机视觉目标跟踪算法:SORT与DeepSORT
Hermes Agent是一个功能强大的AI代理框架,其中集成了多种先进的计算机视觉技术,目标跟踪算法便是其中的重要组成部分。本文将深入探讨Hermes Agent中的SORT(Simple Onli… · 2026/11/4 22:23:49
探索Hermes Agent的强化学习策略优化:超参数搜索方法 探索Hermes Agent的强化学习策略优化:超参数搜索方法
Hermes Agent是一款功能强大的AI代理框架,其强化学习模块提供了全面的策略优化能力。本文将深入探讨如何通过超参数搜索方法提升Hermes Agent的强化学习性能,帮助开发者快速掌握高效的参… · 2026/11/4 22:23:49
Hermes Agent与元宇宙虚拟经济集成:加密货币与NFT管理的终极指南 Hermes Agent与元宇宙虚拟经济集成:加密货币与NFT管理的终极指南
Hermes Agent是一款功能强大的AI代理工具,能够与元宇宙虚拟经济系统无缝集成,为用户提供全面的加密货币与NFT管理解决方案。通过其灵活的插件架构和智能自动化功能࿰… · 2026/11/4 22:23:49
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
AI辅助技术栈评估:提升研发决策效率60% 1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17
从生成Token到直接决策:Jev如何重塑AI Agent工程实践 1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17
32G统一内存跑大模型:内存账、TPS实测与端云分流 想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38