先从一个真实的困惑说起前两天帮一个朋友处理 DeepSeek Harness 启动时报 “failed to load plugins” 的问题排着排着发现他把 DeepSeek Harness 和 Pi 当成同一个东西的两种叫法甚至以为 Pi 是 Harness 的新版本。这个误解在社区里其实非常普遍。每次有人发帖问“DeepSeek Harness 怎么用”评论区总有人跳出来说“那个就是 Pi 套壳”“Pi 才是本体”吵到最后谁也说不清。我今天就把这件事彻底摊开聊同样叫 HarnessDeepSeek Harness 和 Pi 根本不在同一层。它们是一个完整 Agent 工具链里的上下两层一个偏工程编排一个偏执行引擎。把这个问题说清楚很多安装报错、插件冲突、流式响应异常都会变得容易定位得多。1. 名字烂账Harness、Pi搜索的时候全是同名怪1.1 Harness 这个英文词在工程界从来不是新词“Harness”直译是马具、挽具但在软件工程里它已经用了很多年。老程序员写单元测试时都接触过 “test harness”指的是把被测代码包装起来、注入输入、收集输出的那层脚手架。它不是一个具体的框架而是一类“外壳”的概念。到了大模型 Agent 领域这个词又被借了过来专指围绕模型代理套上去的工程外壳工具调用循环、上下文维持、插件装载、权限控制、会话管理这些容易被模型本身忽略但实际跑起来又缺一不可的脏活都被归到 harness 层。所以“DeepSeek Harness”这个名字本身传达的信息是这是一套围绕 DeepSeek 模型能力做的代理工程化框架重点在“怎么把模型变成一个能稳定干活的代理”而不是“怎么训练模型”。社区里也有“Harness Anything”“harness engineering”这类说法本质上都是在讨论同一件事——把没有形状的大模型能力装进一个有边界、有流程、可维护的工程外壳里。1.2 Pi 才是名副其实的重名重灾户Pi 这个名字简直离谱。数学里的圆周率叫 Pi树莓派单板机叫 Raspberry Pi自动控制理论里 PID 调节器的比例积分那两个系数也叫 Pi热词里那些“电压电流双闭环 pi 控制”“mmc 环流抑制器的 pi 参数”全是控制工程的搜索结果现在 AI Agent 圈又冒出来一个叫 Pi 的运行时。你想在搜索引擎里找它的资料搜出来前几页大概率是控制系统的参数整定教程。这也是为什么社区里聊 Pi 的人经常说得云里雾里两边根本不是一个 Pi。在我接触和使用的这套工具链里Pi 扮演的角色是 Agent 的运行后端或者说执行引擎它负责和模型服务建连、把用户的指令变成模型请求、解析流式返回、管理上下文窗口、拉起子代理SubAgent并发处理子任务。简单说Harness 那层决定“代理该做什么、按什么流程做”Pi 这层决定“模型调用怎么跑起来、返回结果怎么接住”。这也是标题“根本不在同一层”的由来一个是上层的流程编排者一个是下层的执行工人硬要拿它俩做平级对比就像拿 IDE 和编译器比谁更厉害一样没有意义。2. 拆层为什么 DeepSeek Harness 和 Pi 不在同一层2.1 从使用者的视角看层级关系我不打算画架构图下面用文字把层级关系捋一遍从上到下依次是第一层是用户接触到的界面与配置你的 prompt、工作流定义、Skill 技能包、插件以及项目交互规则。这一层是使用者唯一能感知的部分。第二层是 DeepSeek Harness 的编排层解析你下的指令、判断该调哪个技能、控制工具调用顺序、维护会话状态、加载插件。这一层的工作性质跟导演差不多所有“接下来干什么”的决策都发生在这里。第三层是 Pi 运行时真正去连模型 API、把请求发出去、接收流式结果、管理 token 预算、调度子代理并把结果收回来的执行层。这一层是苦力是真正跟模型打交道的角色。最底层才是模型服务本身比如 DeepSeek 的 API或者你本地用某种方式跑起来的模型服务。为了更直观我用一张小表把这两者的边界列一下对比维度DeepSeek HarnessPi主要职责工作流编排、技能与插件管理、工具调用决策模型通信、流式解析、上下文管理、子代理执行用户接触面高日常配置和玩法都在这层低大多数时候你感觉不到它的存在出错的表现加载插件失败、技能不生效、工作流中断响应流格式异常、请求无返回、连接失败你可以定制什么工作流文件、技能目录、插件 manifest模型端点、超时时间、并发与上下文参数第一次跑 DeepSeek Harness 的人经常会误以为 Pi 是它内置的一个小模块甚至只是一个界面组件。真实情况是你会发现 Pi 本身也有独立版本、独立配置、甚至有独立的 web 入口和桌面形态。社区里有人只装 Pi 也能跑通一个简化版代理这就更让人混淆了。2.2 为什么“不在同一层”这件事很容易被忽略原因很简单绝大多数发行版采取的是“一体化分发”策略。你下载一个 DeepSeek Harness 的整合包或者桌面版装完之后就直接能用了内部把 Pi 运行时一起打包好了用户根本没有感知。就像你买一台品牌电脑平时只用鼠标和屏幕很少会关心 CPU 和主板是怎么配合的。只有当你开始改装、超频、排查故障时硬件分层才变得重要。这个分层在实操里最典型的表现就是两个方向你在 Harness 层改插件和工作流会立刻看到功能上的变化但遇到模型不回复、响应中断、请求超时这类问题大概率要去 Pi 层的日志和配置里找答案。如果你脑子里没有这个层次模型就会在两个方向之间反复横跳浪费时间还定位不到根因。2.3 既然不是同一层为什么教程里总把两者写在一起这也是信息混乱的一个来源。很多教程为了提高搜索命中率会把 “DeepSeek Harness” 和 “Pi” 这两个词堆在同一篇文章里甚至做成“DeepSeek Harness 的 Pi 版”这种说法。实际上你去看这些教程的操作步骤就会发现它们教你的绝大部分东西——怎么装 skill、怎么写 workflow、怎么配插件——都是在操作 Harness 层偶尔出现需要改模型地址、调超时参数的内容实际上碰的是 Pi 层的配置。两者被捏在一起是因为“装完用起来”这件事本身就是一体化的但你不能因此否定它们的分层关系。3. DeepSeek Harness 这一层真正值钱的是什么3.1 Skill 机制让代理从“会聊天”变成“会干活”如果只把 DeepSeek 模型接到一个聊天框里那它和网页版对话框没什么本质区别。Harness 层真正拉开差距的地方是它把“能力包”变成了可装载、可复用的技能模块。社区里常说的“用 skill”“导入 skill”指的就是这种机制。实操上一个 skill 通常就是一个带元数据描述的目录里面包含一份说明文件比如 SKILL.md用结构化的文字描述这个技能适合什么场景、需要哪些步骤以及可选的脚本、模板和参考资源。Harness 在启动时会扫描技能目录将这些描述注入到上下文里这样代理拿到一个任务时能够意识到“这里有个专用技能可以用”然后主动按技能描述的流程去执行。我自己测试的时候发现同样是一个“给代码写单元测试”的任务没有 skill 时模型只会泛泛地给建议有了 skill 之后它会先读项目结构、识别测试框架、按项目既有风格生成测试文件这个差距是肉眼可见的。社区里很多在 Claude Code 上沉淀出来的 skill 思路也可以通过改造成 Harness 可识别的格式搬过来用这就是为什么热词里能看到大量跟“skill 导入”“harness anything”相关的讨论。3.2 插件系统差点把我劝退的 failed to load plugins插件系统和 skill 系统经常被混着说但它们其实是两层skill 偏“给模型提供做事方法和工具定义”插件偏“给 Harness 本身扩展能力入口比如加一个 web 面板、加一个代码仓库同步器、加一个外部服务连接器”。插件一旦加载失败轻则功能缺失重则整个 Harness 直接拒绝启动。我遇到过一次很典型的报错现象是启动时提示 “Harness failed to load plugins”后面跟着一行 “web boot: 2 entries did not activate linxin6”。当时我第一反应是这插件坏了把它整个删掉重装结果没用。之后老老实实翻了日志才发现这个插件插入了两个 web 入口条目但入口对应的前端资源文件根本没构建出来加载器检查激活状态时发现两个条目都是死的就把整个插件判定为加载失败并且连带记录进了启动日志里。排查链路其实可以复用第一步确认插件目录结构和权限很多失败是目录权限不够加载器没权限读 manifest 文件。第二步检查 manifest 的 id、name、version 是否和目录名、预期值一致不要小看这个插件开发者换 id 不换目录名是常见坑。第三步看这个插件是否依赖额外的运行时比如 Node 或者特定版本的 Python。Harness 本体能启动不代表插件依赖的运行时也齐了。第四步单独把这个插件移出目录做 A/B 测试如果移出去之后一切正常基本锁定问题在这个插件如果还在报错那就是加载器全局配置出问题了。第五步也是最容易忽略的查看插件版本和 Harness 版本的兼容性。0.1.5 这种带小版本号的版本插件 API 变动特别频繁放着一个星期前还能用的插件升级 Harness 后照样可能加载失败。3.3 工作流Harness 工程化的核心资产热词里有一条是“轩辕编程的 deepseek harness 的工作流插件”看起来像是某个开发者把自己沉淀的工作流封装成了插件供别人使用。这其实是 Harness 这层最值得研究的玩法工作流把多步代理行为固化成可复用流程。举个例子你可以把“写一篇技术方案”定义成这样的工作流先让代理读取项目背景和参考资料接着生成大纲然后逐步展开每个章节最后自查一遍术语一致性和结构完整性。定义好之后下一次你只需要给 Harness 丢一句“用方案写作流程写个关于 XX 的方案”它就会自动按这个流程走完。跟简单的对话式指令相比工作流最大的价值是把不确定的模型行为变成了确定的生产流程。刚从 Claude Code 那套实践过来的人管这个东西叫“代理工程”核心就是三个问题给代理定义清楚工具边界哪些能调哪些不能调设计好反馈循环每一步执行完如何检查结果设定终止条件什么时候算完成什么时候算失败需要重新处理。DeepSeek Harness 的工作流机制本质上就是把这套工程方法落地的载体。你要是抱着“用模型聊天”的心态来用这东西会觉得它只是个壳但把它当成“搭一条可控的自动化产线”来对待理解立刻就不一样了。4. 安装与部署0.1.5 为什么装不上以及 failed to load plugins 的排查链路4.1 安装失败的高频根因热词里有一堆“deepseek harness 0.1.5 安装失败”“deepseek harness 安装失败”“deepseek harness 怎么安装”的搜索记录说明这不是少数人的问题。我把自己在不同机器上装的经历和帮人排查的情况汇总一下失败原因基本集中在下面几类。Python 环境不兼容是最高频的。这类工具通常会有多个版本依赖如果你的 Python 版本太低或者太高依赖解析就会出问题。解决思路不是硬扛而是新建一个干净的虚拟环境再装不要直接装进系统 Python。其次是网络问题Harness 安装过程中往往要下载前端资源和若干依赖包文件多、体积大如果网络质量不稳定很容易出现下载一半中断、缓存损坏导致的安装失败。第三方加速镜像有时候反而会引入版本错乱建议优先用官方源。再有一个反直觉的坑是路径问题。有人喜欢把工具装到 D 盘自定义目录如果目录名里带了中文、空格或者特殊符号安装脚本解析路径时经常会挂掉。Windows 下安装这类工具我建议第一次先装到默认目录跑通了再考虑迁移迁移的时候也不要直接复制整个目录最好重装并指定一个无特殊字符的路径。4.2 failed to load plugins 的完整排查链路安装成功只是第一步真正磨人的是启动时报 “failed to load plugins”。我在 3.2 里已经给过一轮具体的排查步骤这里把它整理成一条更完整的链路方便以后遇到类似问题照着走。第一步把加载级别调到最详细。很多工具默认只输出一行错误摘要不调日志级别你根本看不到具体是哪条 entry 没激活。找到配置文件里的日志选项改成 debug 级别再启动一次把报错信息完整保留下来。第二步识别报错类型是 manifest 解析失败还是 entry 激活失败。manifest 解析失败通常是格式问题YAML 缩进错了、字段名拼错了、JSON 里多了个逗号。entry 激活失败则是运行时问题缺少依赖、入口文件不存在、路径写错了。第三步做最小化隔离。把插件目录下的所有第三方插件全部移走只保留自带的默认插件确认能正常启动后再逐个加回来。这一步能快速判断是单个插件的问题还是全局加载器配置的问题。第四步清理缓存和残留配置后重试。插件加载器通常有自己的状态缓存上一次加载失败的结果可能被缓存下来导致你明明修好了文件重启还是报同样的错。这里有个经验之谈很多社区版本的插件是为特定版本写的加载器升级之后对 entry 的激活要求变严格了以前能凑合跑的现在直接拒载。所以看到 failed to load plugins 时第一时间不要盲目删插件先去看一眼 Harness 版本的更新日志确认是不是有 breaking change。4.3 Linux 与桌面版的差异以及卸载重装的坑热词里既有 “deepseek harness linux” 又有 “deepseek harness 桌面版”“deepseek harness 装到 d 盘”说明大家在各个平台都在折腾。Linux 下安装时最常栽跟头的是系统库缺失和 glibc 版本不满足要求。确认一下系统版本和发行版镜像源缺什么补什么即可。至于在 Kali 这类系统上安装并没有特殊优待反而因为这类系统改动多依赖冲突更容易发生装之前先建虚拟环境隔离几乎是必须的。桌面版则要关注前端资源加载的问题。有些桌面版是套了 WebView 壳的日志里经常出现前端资源加载失败的提示跟插件加载失败叠加在一起会很迷惑。判断方法是只看后端服务的日志如果后端已经正常启动只是窗口白屏那多半是前端资源或 WebView 环境的问题不要把锅扣在插件头上。关于卸载我不止一次遇到这种情况明明已经卸载了工具重装新版后插件依旧报错查了半天才发现是用户目录下的配置文件残留导致的。旧版本的插件列表、工作流配置、内置 skill 目录全都遗留了下来新版启动时去加载这些旧格式的文件自然就崩了。所以卸载这类工具之后一定要手动把配置目录清理干净再重装。尤其是之前遇到过插件加载问题的残留配置会把你上一次的故障原封不动地带到新环境里。5. Pi 这层其实才是最容易出“怪问题”的地方5.1 一次流式响应报错的完整拆解热词里有条很典型的报错“pi error: the response stream was malformed and no response was produced. try again.”。我第一次看到这个报错时还以为是模型服务那边出了问题后来才发现问题出在 Pi 这层的流式解析逻辑上。“流式响应”是大模型接口常见的返回方式模型生成一段内容就通过流式通道推送一段客户端边收边解析。Pi 这层承担的职责就是从这些碎块里解析出完整、合法的响应结构。一旦中间某一帧数据格式不对或者上游网关对数据做了一层包装导致结构变了Pi 就会判定整段响应流是坏的直接丢弃然后对外表现为“没有产生任何响应”。排查这个问题的思路是分段的先用一个最小化请求去直接测模型接口本身确认模型端返回是正常的再检查 Pi 的配置里是不是自定义了 base_url自定义网关经常会在流式数据外面再套一层业务字段导致解析失败最后检查网络连接稳定性流式连接只要中间断一次客户端感知到的就是“不完整的流”这种情况下把超时参数调大一点往往就缓解了。还有一个我踩过的小坑有时候同一个报错持续出现是因为 Pi 的缓存里存了上一次损坏的流数据。重启进程、清掉运行时缓存目录再跑就好了。别一上来就怀疑模型或者 Harness。5.2 SubAgent 和底层 Skill 注入都是 Pi 的活理解 SubAgent要从“并发执行”这个角度切入。Harness 层拿到一个复杂任务之后可以分解出多个子任务这些子任务在 Pi 这层会被分配给不同的 SubAgent 并行处理。这样做的好处是缩短整体响应时间代价是内存和句柄消耗直线上升。我见过不少“跑着跑着突然无响应”的情况最后定位到原因都是 SubAgent 开得太多把系统资源吃满了。Pi 层的配置里通常有控制并发数的参数遇到这类情况优先调低并发度而不是加大机器配置。另外很多人理解的“导入 skill”是在 Harness 的界面上导入但实际上 skill 的数据最终要注入到模型上下文中才能生效这个注入动作是 Pi 层完成的。如果你发现导入 skill 之后代理的表现没有任何变化先别急着骂 skill 没用检查一下你是否导到了正确的目录。Harness 的技能目录和 Pi 运行时实际读取的技能目录经常是两个位置数据没有同步过去导入自然等于没导入。5.3 为什么有人会误以为 Pi 是一个独立编程助手这个误会有它存在的合理性。Pi 有自己的 agent、有 web 端入口、有桌面版、也能加载 skill单独拿出来几乎就是一个完整的代理产品。你甚至可以不装 DeepSeek Harness直接用 Pi 搭配模型服务跑一些基础任务。也正因为这样才会有“oh my pi 桌面版”“pi agent 官网”“pi desktop”这一串搜索词。从这个角度看Pi 并不是 Harness 的一个“子功能”它本身是一个具备完整能力的运行时。但它和 DeepSeek Harness 的关系依然是上下层关系你可以在 Pi 之上构建 Harness 这种流程编排外壳也可以拿 Pi 去接别的编排框架甚至给 Pi 套一层完全自研的界面。一旦想明白这一点“DeepSeek Harness 和 Pi 到底谁强”这个问题就不成立了。它们是配合关系不是竞争关系。6. 我的建议按“层”去选型按“场景”去排错6.1 三类实际需求对应不同的关注点如果你只是想快速跑通一个带 DeepSeek 模型的代理那直接装整合版或者桌面版就好把 Harness 和 Pi 的关系当成一个黑盒不要花太多精力去研究内部结构。一切默认配置能用就不动它。如果你想把代理变成适配自己项目的生产工具重点研究 Harness 层工作流怎么定义、skill 怎么写、插件怎么开发或者搬运。这一层的投入产出比最高因为流程和技能的定制能力才是这个工具区别于普通聊天客户端的核心价值。如果你是做二次开发想把代理引擎嵌到自己的产品里那要盯住 Pi 层它的接口格式、流式返回协议、SubAgent 调度方式、上下文管理策略。你对这层的理解深度决定了你能在上面做出多复杂的产品。选型时按这个分层思路去看优先级会清晰很多。6.2 我自己的上手路径可以照抄我比较推荐的新手路径是先装一个官方最新稳定版刻意避开 0.1.5 这种明显带预览性质的迭代版本。跑通一个最小可用场景之后写一个最简单的 skill内容可以只是让代理在收到指令后额外输出一条固定格式的检查清单以此验证技能装载链路是通的。接着试着加载一个最小插件优先用本地目录方式避免一开始就依赖远程市场。等到这一串都跑通了再回头研究 Pi 的日志和 API 配置这个时候你已经能分清哪个问题在哪一层排查起来就不会乱。最后说一点个人体会。我最初也被这两个名字搞得晕头转向满脑子想的都是“既然 Pi 是个独立 agent为什么不直接用 Pi”后来因为一次插件加载失败被逼着去翻底层配置和日志才真正把层次概念立起来。从那以后几乎所有报错我都能在三五分钟内定位到具体层该改 Harness 配置的改 Harness该调 Pi 参数的调 Pi再也没有做过那种“全局乱试”的蠢事。这个认知上的转变比学会任何一个具体配置都值钱。
企业数字化 ERP 产品动态
相关推荐
UI Skills 落地:用文件资产与校验脚本稳住 Agent 生成界面 UI Skills 这个概念提出来有一阵子了,真正在自己项目里跑通的人却不多。我见过的典型情况是:设计规范写了厚厚一份文档,组件库也整理得挺干净,交给 Agent 生成界面,出来的东西第一眼还行,多生成几屏就开始跑… · 2026/11/2 17:10:56
数据库复制与分片技术详解及应用实践 1. 数据库复制与分片技术概述数据库复制(Replication)和分片(Sharding)是现代分布式数据库系统中的两大核心技术。复制通过创建数据的多个副本来提高可用性和读取性能,而分片则将数据分散存储以突破单机容量限制。这两… · 2026/11/2 17:10:56
低轨卫星TLE数据解析与应用实践 1. TLE数据源解析:低轨卫星轨道参数的秘密低轨卫星的轨道参数(TLE)是卫星追踪和轨道计算的基础数据。这些看似简单的两行代码,实际上包含了卫星在特定时刻的精确轨道信息。那么这些关键数据究竟从何而来?作为从业十余年… · 2026/11/2 17:10:56
前端大数据渲染优化:虚拟列表原理与实战 1. 当10万条数据砸向前端时会发生什么?第一次遇到这种需求时,我正喝着咖啡调试页面。后端同事突然说:"这个接口要返回10万条商品数据,你们前端处理下展示。"咖啡差点喷在屏幕上——这相当于让浏览器一次性加载一本300页… · 2026/11/2 17:46:39
Hindsight:LLM API调用审计与回溯系统 1. 项目概述:Hindsight 不是“事后诸葛亮”,而是一套可落地的 LLM 操作审计与回溯系统你有没有遇到过这样的场景:线上服务突然返回一堆401 Unauthorized,日志里只有一行incorrect api key provided: sk-svcac****,但你… · 2026/11/2 17:46:39
算法刷题方法论:从新手到高手的进阶指南 1. 为什么我们需要持续刷算法题上周面试一位三年经验的开发,让他手写个二分查找都卡壳半小时。这让我想起自己刚入行时,被算法支配的恐惧——直到把《算法导论》刷了三遍才找到感觉。现在每天保持2道题的节奏,五年下来累计刷题量突破3000&… · 2026/11/2 17:46:39
LaTeX脚注排版全解析:机制、编号、表格与双栏问题排查 排版一份带注释的文档时,最先“翻车”的往往不是公式也不是图表,而是脚注。LaTeX 脚注看着只是\footnote{}一个命令,真上手排一篇几十页的稿子,编号错位、脚注跑到下一页、表格里的注号对着错的行、双栏文档里脚注横穿两栏、分隔线… · 2026/11/2 17:46:39
OpenClaw自动化工具在CSDN文章发布中的应用 1. OpenClaw与CSDN文章编辑发布概述OpenClaw作为一款新兴的自动化工具,正在技术社区中快速流行。它通过命令行接口和API调用,为开发者提供了强大的自动化能力。在内容创作领域,OpenClaw可以显著提升CSDN这类技术博客平台的运营效率。我最近在… · 2026/11/2 17:46:39
数字8的文化内涵与商业应用解析 1. 项目概述"88888888888888"这个看似简单的数字串,实际上蕴含着丰富的文化内涵和商业价值。作为近年来网络文化中的特殊符号,它已经超越了单纯的数字含义,成为一种独特的社交语言和商业密码。在中文网络文化中,"8… · 2026/11/2 17:45:38
双极步进电机控制实战: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/2 13:10:28
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/2 4:42:45
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/2 5:17:18
雷达信号调制技术解析:从LFM到伪线性调频原理与应用 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 1:01:15
基于MAX14431与TM4C123的工业SPI隔离电路设计全攻略 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 1:01:15
PLFM_RADAR:相位线性调频雷达信号处理框架 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 1:01:15
双极步进电机控制实战: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/2 13:10:28
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/2 4:42:45
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/2 5:17:18