1. 两个 Harness 撞名但压根不是一回事第一次看到“DeepSeek Harness”和“Pi Harness”这两个词摆在一起的时候我下意识以为它们是同一类东西——毕竟都叫 Harness听起来像是同一个赛道里的两个竞品。结果花了两天时间把两边的东西都跑了一遍才发现这个判断错得离谱。它们确实都叫 Harness但一个在“模型怎么被驱动”这一层另一个在“Agent 怎么被编排”这一层中间隔着的不是版本差异而是抽象层级的鸿沟。先把结论摆出来DeepSeek Harness 是围绕模型推理与工具调用协议做的一层执行外壳Pi Harness 是围绕 Agent 生命周期与多智能体编排做的一层调度框架。前者关心的是“这一次请求怎么把工具调通、把结果拼回去”后者关心的是“这一堆 Agent 谁先跑、谁等谁、失败了怎么重试、上下文怎么在它们之间流转”。你如果拿评估 DeepSeek Harness 的标准去评估 Pi会觉得它“怎么连个像样的工具调用协议都没有”反过来拿 Pi 的标准去看 DeepSeek Harness又会觉得它“怎么连个像样的编排能力都不提供”。两边都没错错的是把它们放在同一层比较。这个混淆在社区里非常普遍。热搜词里同时出现“deepseek harness 安装”“pi agent 官网”“harness 和 agent 区别”“agent 框架与编排”这些词说明大量人是在同一个搜索意图下撞见这两个名字的。而“harness 和 agent 区别”这个词能上榜恰恰证明很多人连 Harness 和 Agent 本身的关系都没理清更别说区分两个不同层级的 Harness 了。这篇文章想做的事情很具体把这两个 Harness 各自解决什么问题、处在什么抽象层、核心机制长什么样、什么场景该用哪个一层一层拆开讲清楚。不吹不黑也不做“哪个更好”的无意义对比只讲它们各自的位置和边界。如果你正在选型、正在踩安装的坑、或者单纯被这两个名字搞晕了下面这些内容应该能帮你省下不少时间。2. 先把 Harness 这个词的歧义拆干净2.1 Harness 在 Agent 语境下的两种含义Harness 这个词在软件工程里本来就有“约束框架”“测试夹具”的意思到了 Agent 领域它被借用来指代“把模型能力约束成可执行行为的那层结构”。但问题在于这个“约束”可以发生在两个完全不同的位置。第一种含义是执行层 Harness模型输出一段文本这段文本里可能包含工具调用意图Harness 负责解析这个意图、执行对应工具、把结果按协议塞回上下文、再触发下一轮推理。它管的是单次或单轮推理循环里的“手脚”问题。DeepSeek Harness 就是这一层的东西。第二种含义是编排层 Harness多个 Agent 各自有各自的职责Harness 负责定义它们之间的依赖关系、执行顺序、数据传递、失败处理、状态持久化。它管的是多个执行单元之间的“调度”问题。Pi Harness 属于这一层。这两层可以独立存在也可以叠加使用。你完全可以在 Pi 的某个 Agent 节点内部用 DeepSeek Harness 去驱动那个 Agent 的工具调用。它们不是互斥关系而是上下层关系。把这一点想通后面所有的困惑都会迎刃而解。2.2 为什么大家会把它们混为一谈混为一谈的根源有三个。第一是命名撞车两个项目都选了 Harness 这个词但各自默认的语境不同文档里又不会特意声明“我这是执行层 Harness”还是“编排层 Harness”。第二是热搜词的聚合效应搜索引擎把“deepseek harness”和“pi agent”放在同一个相关搜索里用户顺着点进去自然会产生“它们是一类东西”的错觉。第三是 Agent 开发本身还在早期很多概念没有形成行业共识同一个人今天说 Harness 指执行层明天说 Harness 指编排层听的人就晕了。我自己的经验是判断一个 Harness 属于哪一层只看它对外暴露的核心接口是什么。如果它的核心接口是“注册工具”“执行工具调用”“解析模型输出”那它是执行层。如果它的核心接口是“定义 Agent”“连接 Agent”“编排执行流”那它是编排层。这个判断标准比看名字靠谱得多。2.3 一张表看清两层 Harness 的分工维度执行层 HarnessDeepSeek Harness 类编排层 HarnessPi 类核心问题单次推理循环里工具怎么调通多个 Agent 之间怎么调度管理对象工具调用、上下文拼接、推理轮次Agent 节点、依赖关系、执行流典型接口工具注册、调用解析、结果回填Agent 定义、流程编排、状态管理失败关注点工具报错、协议不匹配、流式中断节点超时、依赖失败、编排死锁抽象层级低贴近模型输出高贴近业务逻辑可否独立使用可以单 Agent 场景足够可以但内部仍需执行层支撑这张表不是绝对的有些项目会同时覆盖两层但绝大多数情况下一个 Harness 会有一个明确的侧重点。DeepSeek Harness 的侧重点在执行层Pi 的侧重点在编排层这个判断在后面的机制拆解里会越来越清晰。3. DeepSeek Harness 到底在管什么3.1 它的核心职责是“把模型的手脚接上”DeepSeek Harness 要解决的问题非常具体模型本身只会输出文本但 Agent 需要它去调用工具、去读写文件、去执行命令。这中间缺了一层“翻译执行回填”的机制DeepSeek Harness 就是干这个的。它的工作流程大致是这样的模型输出一段包含工具调用意图的内容Harness 解析出要调用的工具名和参数执行对应工具拿到结果按照模型能理解的格式把结果拼回上下文然后再次触发模型推理。这个循环会一直持续到模型不再请求工具调用为止。整个过程里Harness 不关心“为什么要调这个工具”只关心“怎么把这个调用安全、准确地执行掉”。这个定位决定了它的能力边界。它不会帮你管理多个 Agent 的依赖关系不会帮你做任务分解不会帮你持久化执行状态。这些都不是它的职责。你如果拿这些需求去要求它那是在为难它。3.2 工具调用协议是它的命门执行层 Harness 最核心的东西就是工具调用协议。协议设计得好不好直接决定了这层 Harness 好不好用。DeepSeek Harness 在这方面的处理有几个值得注意的点。第一是参数解析的容错。模型输出的工具调用参数经常不是标准 JSON可能多一个逗号、少一个引号、或者嵌套结构写错。Harness 如果直接按严格 JSON 解析会频繁失败。好的 Harness 会做一定程度的容错修复比如尝试补全括号、修正常见转义错误。这个容错程度需要拿捏太松会执行错误调用太紧会频繁中断。第二是流式输出的处理。模型输出是流式的工具调用意图可能分散在多个 chunk 里。Harness 需要正确拼接这些 chunk判断工具调用何时完整何时可以开始执行。这里最容易出的问题就是“流式响应格式异常导致没有产出”热搜词里那条“pi error: the response stream was malformed and no response was produced”虽然说的是 Pi但执行层 Harness 同样会遇到类似问题只是表现形式不同。第三是执行结果的截断与摘要。工具返回的结果可能非常长直接塞回上下文会撑爆窗口。Harness 需要做截断或摘要但截断策略很讲究——截错了会导致模型丢失关键信息截多了又浪费 token。这个策略通常需要根据工具类型分别配置。3.3 单 Agent 场景下它已经够用如果你的场景是“一个 Agent 配几个工具跑一个相对线性的任务”那 DeepSeek Harness 这一层基本就够了。你不需要引入编排层的东西引入反而增加复杂度。我试过用 DeepSeek Harness 跑一个“读文件-分析-写报告”的简单流程整个链路非常直接注册读文件工具和写文件工具模型先调读文件Harness 执行后把内容回填模型分析完再调写文件Harness 执行完返回结果。全程没有编排层的参与也没有出现需要编排层解决的问题。这个场景下如果你硬要上 Pi 这样的编排框架你会发现自己花在“定义 Agent 节点、连接执行流”上的时间比花在“把工具调通”上的时间还多。这就是层级错配的典型症状。3.4 它的局限多 Agent 协作时力不从心一旦场景变成“多个 Agent 各司其职、需要按依赖关系执行”DeepSeek Harness 这一层就明显不够了。它没有原生的 Agent 概念没有节点间的依赖管理没有执行流的可视化或控制。你当然可以在它上面自己搭一套编排逻辑但那相当于你在执行层 Harness 之上又造了一个编排层 Harness造出来的东西大概率不如直接用 Pi 成熟。这个局限不是缺陷是定位决定的。执行层 Harness 本来就不该管编排的事。认清这一点选型的时候就不会纠结。4. Pi 的编排层设计思路4.1 它把 Agent 当成一等公民Pi 和 DeepSeek Harness 最根本的区别在于Pi 把 Agent 当成一等公民而 DeepSeek Harness 里根本没有 Agent 这个概念。在 Pi 的世界观里一个 Agent 是一个有明确职责、有输入输出契约、有独立上下文的执行单元。编排层的任务就是把这些执行单元按照业务逻辑连接起来。这个设计思路带来的直接好处是职责隔离。每个 Agent 只关心自己的任务不需要知道上游是谁、下游是谁。编排层负责在它们之间传递数据、处理依赖。这种隔离让单个 Agent 的调试变得简单也让整个系统的可维护性大幅提升。但代价是编排层本身的复杂度。你需要定义 Agent 之间的连接方式、数据格式、失败处理策略、超时机制。这些东西在执行层 Harness 里是不存在的因为执行层根本不管这些。4.2 依赖管理与执行顺序是核心难题编排层最核心的难题是依赖管理。多个 Agent 之间可能存在复杂的依赖关系A 的输出是 B 的输入B 和 C 可以并行但都必须等 A 完成D 需要 B 和 C 都完成才能开始。这种依赖图的管理是编排层 Harness 必须解决的核心问题。Pi 在这方面的处理方式从社区讨论和热搜词里能看出一些端倪。“deepseek harness 多个智能体 编排”这个词能上榜说明多智能体编排是真实需求而 Pi 正是冲着这个需求去的。它需要提供一种方式来描述依赖关系然后按照这个描述去调度执行。这里最容易踩的坑是循环依赖。A 等 BB 等 A编排层如果检测不出来就会死锁。好的编排层会在启动前做依赖图校验发现环就报错。另一个坑是隐式依赖两个 Agent 看起来没有直接依赖但实际上通过共享状态产生了依赖这种隐式依赖很难在编排层被发现往往要到运行时才暴露。4.3 状态持久化与失败恢复编排层另一个绕不开的问题是状态持久化。一个多 Agent 流程可能跑很长时间中间某个节点失败了你不可能从头再来。编排层需要记录每个节点的执行状态失败时能从断点恢复。这个能力在执行层 Harness 里基本不存在因为执行层的一次循环通常很短失败了重试一次就行。但编排层的流程可能涉及几十个节点、几十分钟的执行时间没有状态持久化根本没法用。Pi 在这方面的设计思路从“agent execution terminated due to error”这个热搜词能反推出来——它确实会遇到执行中断的情况而中断后的恢复能力是编排层必须提供的。具体怎么恢复、恢复到什么粒度取决于编排层的设计。粗粒度的恢复是“整个流程重跑”细粒度的恢复是“从失败节点继续”。后者实现难度大得多但实用价值也高得多。4.4 它不负责工具怎么调需要特别强调的是Pi 作为编排层 Harness不负责工具调用的具体执行。它管的是“哪个 Agent 在什么时候跑”不管“这个 Agent 内部怎么调工具”。Agent 内部的工具调用仍然需要执行层 Harness 来支撑。这个分工意味着你完全可以在 Pi 的每个 Agent 节点内部使用 DeepSeek Harness 或其他执行层方案来驱动工具调用。两层各司其职互不干扰。这也是为什么我说它们不是竞品而是可以叠加的两层。5. 选型时真正该问自己的几个问题5.1 你的场景里有几个 Agent这是最直接的判断标准。如果你只有一个 Agent或者多个 Agent 之间没有复杂的依赖关系那执行层 Harness 就够了不需要引入编排层。引入编排层只会增加你的配置负担和调试难度。如果你有多个 Agent且它们之间存在明确的依赖关系、需要按顺序或按条件执行那编排层就是必需的。这时候你需要在 Pi 这类编排框架里做选择而不是在执行层 Harness 里做选择。5.2 你的流程需要断点恢复吗如果流程很短失败了重跑一次成本很低那状态持久化不是刚需。但如果流程很长中间涉及外部调用、人工审核、长时间等待那断点恢复就是刚需编排层必须提供这个能力。这个问题的答案会直接排除掉一批方案。很多轻量级的执行层 Harness 根本不提供状态持久化因为它们的设计场景就是短循环。你如果拿长流程去套会发现处处受限。5.3 你愿意为编排能力付出多少复杂度编排能力不是免费的。引入编排层意味着你要学习一套新的概念模型、新的配置方式、新的调试手段。如果你的团队对这套东西不熟悉学习成本会很高。我的建议是先用执行层 Harness 把单 Agent 跑通确认单 Agent 的能力边界再考虑是否需要编排层。很多人在单 Agent 还没跑通的时候就开始折腾多 Agent 编排结果两边都搞不定。先把一层做扎实再往上叠这个顺序不能乱。5.4 两层叠加时的接口怎么定如果你决定两层都用那两层之间的接口定义就非常关键。编排层传给执行层的应该是什么是一个完整的任务描述还是一个 Agent 的配置执行层返回给编排层的应该是什么是最终结果还是包含中间状态的完整轨迹这个接口定得不好会导致两层之间的耦合过紧失去分层的意义。我的经验是编排层只关心 Agent 的输入和最终输出不关心 Agent 内部怎么执行。执行层只关心工具怎么调通不关心这个 Agent 在整体流程里的位置。两边通过一个清晰的契约交互各自内部怎么实现互不干涉。6. 安装与上手阶段最容易踩的坑6.1 版本回退这件事比想象中麻烦热搜词里有一条“deepseek harness 怎么退回到 v0.1.5-rc.2”这说明版本管理是个真实痛点。执行层 Harness 往往迭代很快新版本可能引入不兼容的协议变更导致你原来跑通的工具调用突然失败。这时候回退到旧版本是常见操作但回退本身可能遇到依赖冲突、配置不兼容等问题。我的建议是在项目初期就锁定版本不要盲目追新。把当前跑通的版本号记下来升级前先在隔离环境里验证。如果非要回退先确认旧版本的依赖是否还能正常安装配置文件格式是否兼容。这些准备工作不做回退过程会很痛苦。6.2 安装失败往往卡在依赖解析“deepseek harness 0.1.5 安装失败”这个词能上榜说明安装环节的失败率不低。执行层 Harness 通常依赖一些底层库这些库的版本冲突是安装失败的主要原因。Node 环境下尤其常见因为 npm 的依赖解析策略有时候会选出不兼容的版本组合。排查这类问题的思路是先看报错信息里提到的具体包和版本然后检查你的 Node 版本是否满足要求再检查是否有全局安装的旧版本干扰。如果还不行清掉 lock 文件和 node_modules 重装往往能解决大部分问题。6.3 卸载不干净会留下隐患“deepseek harness 卸载”这个词也上了热搜说明有人遇到了卸载后残留的问题。执行层 Harness 可能会在全局目录留下配置文件、缓存、或者注册的命令行工具。如果卸载不干净下次安装新版本时可能读到旧配置导致行为异常。卸载时除了跑标准的卸载命令还要手动检查几个位置全局 node_modules 目录、用户主目录下的配置文件夹、以及可能的缓存目录。把这些地方清干净再装新版本能避免很多莫名其妙的问题。6.4 本地部署和云端部署的差异“deepseek harness 本地部署”和“deepseek harness 本地部署教程”这两个词都在热搜里说明本地部署是很多人的选择。本地部署和云端部署在执行层 Harness 这个层面主要差异在于工具的执行环境。本地部署时工具直接跑在你的机器上文件读写、命令执行都是本地的。云端部署时工具可能跑在容器里路径映射、权限控制都需要额外配置。本地部署的好处是调试方便坏处是环境依赖多、迁移麻烦。云端部署的好处是环境一致坏处是调试链路长。选哪个取决于你的使用场景。如果是个人开发、快速验证本地部署更合适。如果是团队协作、需要环境一致云端部署更省心。7. 从热搜词反推社区的真实困惑7.1 “harness 和 agent 区别”为什么这么多人搜这个词能上榜说明最基础的概念区分还没形成共识。很多人分不清 Harness 和 Agent 的关系更别说区分两个不同层级的 Harness 了。Agent 是“做什么”的定义Harness 是“怎么让它做”的机制。Agent 是目标Harness 是手段。这个区分理清了后面的选型才有基础。7.2 “skill 和 agent 区别”背后的能力分层这个词和上一个词是同一类困惑。Skill 通常指一个具体的能力单元Agent 是使用这些能力去完成任务的执行者。一个 Agent 可以拥有多个 Skill一个 Skill 也可以被多个 Agent 使用。这个关系理清了你在设计系统的时候就知道该把什么放在 Skill 层、什么放在 Agent 层。7.3 “agent 框架与编排”这个词的指向性这个词直接指向了编排层。搜这个词的人大概率已经过了单 Agent 阶段开始遇到多 Agent 协作的问题了。他们需要的是编排层的解决方案而不是执行层的工具。Pi 这类编排框架正是冲着这个需求去的。7.4 从“pi agent 国内安装”看落地障碍这个词说明 Pi 在国内的安装可能有一些网络或依赖方面的障碍。这类问题通常不是 Pi 本身的问题而是依赖下载、包管理源、环境配置等外围因素导致的。遇到这类问题优先检查网络环境和包管理配置而不是怀疑 Pi 本身有 bug。8. 我自己的使用体会把这两层都跑过一遍之后我最大的体会是不要试图用一个 Harness 解决所有问题。执行层和编排层各自有各自的职责混在一起只会让系统变得难以维护。该用执行层的地方就用执行层该用编排层的地方就用编排层两层叠加的时候把接口定清楚这样整个系统才是清晰的。另一个体会是概念混淆的成本远高于技术选型的成本。很多人花大量时间在“选哪个”上纠结但其实只要把概念理清了选哪个是水到渠成的事。DeepSeek Harness 和 Pi 根本不在同一层这个判断一旦建立后面所有的决策都会变得简单。最后分享一个小技巧当你分不清一个工具属于哪一层的时候问自己一个问题——“它管的是模型的手脚还是管的是多个执行单元的调度”管手脚的是执行层管调度的是编排层。这个问题能帮你快速定位避免在错误的层级上浪费时间。
企业数字化 ERP 产品动态
相关推荐
虚拟机窗口同步工具:办公游戏双场景优化方案 1. 项目概述:虚拟机窗口同步工具的核心价值作为一名长期从事效率工具评测的IT从业者,我见过太多号称"全能"的窗口同步工具,但真正能同时满足办公自动化和游戏多开需求的却凤毛麟角。这款虚拟机窗口同步工具之所以敢自称"全网功… · 2026/11/4 4:44:46
栈与队列:数据结构基础与经典算法解析 1. 栈与队列基础概念回顾在算法与数据结构的学习中,栈和队列是最基础也是最重要的两种线性数据结构。它们看似简单,但在实际算法问题中有着广泛的应用场景。今天我们就来深入探讨栈和队列在算法训练中的核心应用。栈(Stack)是一种… · 2026/11/4 4:44:46
谷歌开源ARTEMIS:移动端AI自动化从原理到落地实践 移动端 AI 自动化这两年一直挂着“看着热闹、落地稀碎”的标签。手机上的日常操作,本质上就是“看屏幕、定计划、动手操作”,这跟 AI 智能体最擅长的“感知、决策、执行”几乎是一一对应的,可真的能让 AI 自己跑到手机里点按钮、滑页面、填表… · 2026/11/4 4:43:46
ShardingSphere SQL改写引擎原理与实践 1. ShardingSphere SQL改写引擎深度解析在分布式数据库架构中,SQL改写是一个至关重要的环节。开发人员编写的SQL语句面向的是逻辑库和逻辑表,这些SQL并不能直接在物理数据库中执行。SQL改写引擎的作用,就是将这些逻辑SQL转换为能够在真实数据… · 2026/11/4 5:25:14
ARTEMIS 开源框架:让 AI 像真人一样稳定操作 Android 手机 移动端自动化这个方向,过去几年一直有个尴尬的现实:能跑通 Demo 的方案很多,能稳定跑一整天的方案很少。我自己从早期用 ADB 脚本硬怼坐标点击,到后来折腾各种 UI 自动化框架,踩过的坑基本能写一本书。直到谷歌把 ARTE… · 2026/11/4 5:25:14
OpenClaw多Agent架构:企业级智能体协同实战 1. 项目概述OpenClaw多Agent数字员工军团是企业级智能体落地的进阶实践方案。不同于传统单Agent系统,1N架构通过一个中央调度器(1)协调多个专业Agent(N)协同工作,实现复杂业务流程的自动化处理。这种架构在… · 2026/11/4 5:25:14
多尺度因果关系建模在人机交互中的应用与实践 1. 项目背景与核心挑战人机交互领域正面临一个关键转折点——传统的"刺激-反应"模型已经无法解释复杂场景下的交互行为本质。去年我在设计一套医疗手术导航系统时,就深刻体会到这一点:当外科医生的操作手势、语音指令、眼动追踪数据同时输入系… · 2026/11/4 5:25:14
软考架构师论文:用架构决策证据突破45分线 软考架构师论文这一科,很多人栽得莫名其妙:选择题能过、案例能写,偏偏论文卡在45分线下。更让人憋屈的是,走出考场时自我感觉良好,觉得"结构完整、字数够、有项目",成绩出来却是43、44。我带过几… · 2026/11/4 5:25:14
GEO优化与三维九项认证技术解析 1. 项目背景与行业趋势解析"GEO优化"这个概念最近在空间数据服务领域频繁出现,它本质上是指基于地理空间信息(Geospatial)的优化技术体系。我注意到2026年3月即将实施的三维九项认证标准,这标志着行业即将进入一个全新的… · 2026/11/4 5:24:14
双极步进电机控制实战: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/3 6:04:24
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/3 5:52:46
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/3 6:04:24
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/3 5:52:46