1. 从CLI-Anything说起命令行工具正在经历一场静默革命第一次看到CLI-Anything这个说法我脑子里蹦出来的不是某个具体工具而是一种趋势判断——命令行界面正在从人敲命令变成人指挥智能体敲命令。过去我们聊CLI聊的是ls、grep、curl这些命令怎么组合、怎么管道、怎么写shell脚本。现在聊CLI绕不开的是codex cli、claude cli、pi cli这些把大模型能力封装进终端的产品以及它们背后那套Agent执行框架。这个变化对开发者的影响是实打实的。以前你装一个CLI工具看man page、记参数、拼命令熟练之后效率很高。现在你装一个AI驱动的CLI第一件事是配置模型接入、理解它的Agent循环逻辑、搞清楚它什么时候会调用工具、什么时候会直接回答。两者的心智模型完全不同。前者是我告诉机器做什么后者是我告诉Agent目标Agent自己决定怎么做。CLI-Anything这个标题如果让我拆核心就三个词CLI是载体Agent是内核Anything是野心。它想表达的是——只要有一个足够好的命令行Agent框架理论上你可以用它完成任何终端场景下的任务代码生成、文件操作、系统诊断、数据处理、甚至画图。这不是空想codex cli和claude cli已经在做类似的事情pi agent这类项目也在探索更轻量的Agent编排方式。这篇文章适合谁看如果你是刚接触Agent开发、想从CLI这个入口切入的开发者或者你已经在用codex cli但总遇到安装报错、执行中断、模型配置不生效的问题再或者你在选型阶段纠结agent框架和agent skill到底怎么配合那接下来的内容应该能帮你省下不少翻文档和踩坑的时间。我会从架构拆解、安装实操、核心机制、问题排查四个维度展开尽量把为什么这么设计和实际怎么操作讲透。2. 拆解CLI Agent的核心架构为什么不是简单的命令行套壳2.1 Agent循环CLI场景下的思考-行动-观察闭环很多人第一次用codex cli或者claude cli的时候会觉得不就是把模型接进终端吗。实际跑几个复杂任务就会发现它和直接调API完全是两回事。核心差异在于Agent循环。一个典型的CLI Agent执行流程是这样的你输入一个自然语言指令比如把这个目录下所有Python文件的print语句改成loggingAgent不会直接生成一段代码就结束。它会先思考——分析当前目录结构、识别哪些文件是Python、判断改动范围然后行动——调用文件读取工具、执行搜索命令、生成修改方案接着观察——看命令执行结果、检查是否有语法错误最后根据观察结果决定是继续修改还是输出最终答案。这个循环在CLI环境下的特殊之处在于Agent的行动往往是通过执行shell命令来完成的。这意味着它必须处理命令注入风险、路径转义、权限控制、超时中断等一系列终端特有的问题。codex cli在这块做得比较成熟它内置了沙箱机制和命令白名单避免Agent执行危险操作。而一些轻量级框架比如pi agent则更倾向于把控制权交给开发者让你自己决定哪些命令可以放行。注意如果你在自建Agent框架CLI场景下一定要做命令执行超时和输出截断。我见过Agent执行find /导致终端卡死的情况也见过输出几十万行日志把上下文撑爆的案例。2.2 工具调用层Agent的手和眼睛CLI Agent的能力边界基本由它的工具调用层决定。常见的工具集包括文件读写、目录遍历、命令执行、网络请求、代码搜索、差异对比。claude cli和codex cli都内置了这些基础工具但实现方式有差异。codex cli的工具调用偏向结构化它会把每个工具定义成JSON Schema模型输出工具调用请求后由运行时解析执行。这种方式的优势是可控性强你可以精确限制每个工具的参数范围。缺点是灵活性稍弱遇到需要组合多个命令的场景模型得多次往返。claude cli则更强调对话式工具调用它允许模型在自然语言中嵌入工具使用意图运行时再做解析。这种方式在复杂任务下更流畅但对运行时的解析能力要求更高也更容易出现歧义。pi agent这类项目走的是另一条路——它把工具定义完全开放给开发者你可以用YAML或JSON描述自己的工具然后注册到Agent运行时。这种设计适合需要深度定制的场景比如你要把内部运维平台的能力封装成Agent工具pi agent的扩展性就比开箱即用的CLI工具更合适。框架/工具工具调用风格扩展性适用场景codex cli结构化Schema中等标准化开发任务claude cli对话式嵌入中等复杂多步任务pi agent完全自定义高深度定制集成自建框架取决于实现最高特定业务场景2.3 记忆与上下文管理CLI场景下的特殊挑战CLI Agent和聊天Agent最大的区别在于它的上下文里塞满了命令输出。一次ls -la可能返回几十行一次git diff可能几百行一次编译日志可能上千行。如果不做上下文管理模型很快就会失忆或者被无关信息淹没。我实测下来codex cli在这块的处理策略是滑动窗口摘要压缩。它会保留最近几轮的工具调用结果对更早的输出做摘要。claude cli则更依赖模型自身的长上下文能力配合显式的记忆文件机制——你可以让Agent把关键信息写入一个markdown文件后续需要时再读回来。agent记忆框架的选型在CLI场景下尤其重要。短期记忆靠上下文窗口长期记忆靠文件系统或向量库。如果你在做agent开发建议至少实现一个基于文件的记忆层让Agent能够跨会话保留项目结构、常用命令、用户偏好这些信息。a-memguard这类主动防御框架的思路也值得借鉴——它会在Agent写入记忆前做安全检查防止敏感信息被持久化。3. 从零上手codex cli与claude cli的安装配置实操3.1 安装前的环境检查清单在动手安装之前有几个环境项必须先确认。我见过太多unable to locate the codex cli binary or required runtime components的报错根源都是环境没准备好。第一确认Node.js版本。codex cli和大多数基于npm分发的CLI工具一样对Node版本有要求。建议用node -v检查低于18的版本先升级。如果你用nvm管理Node版本切换后记得重新打开终端否则PATH可能没更新。第二确认包管理器。npm、yarn、pnpm都可以但不同工具对包管理器的兼容性有差异。codex cli官方推荐npm全局安装claude cli对pnpm的支持更好。如果你在公司内网环境还要确认npm registry是否可达必要时配置镜像源。第三确认系统架构。特别是Windows用户node_modules\opencode\cli\bin\opencode.exe 与你运行的 windows 版本不兼容这类报错通常是因为安装的二进制包架构不对。检查你的系统是x64还是arm64然后确认工具是否提供对应架构的预编译包。第四确认权限。全局安装npm包需要写权限Linux和macOS下可能需要sudo但更推荐用nvm或fnm管理Node环境避免权限问题。Windows下建议用管理员权限打开终端或者配置npm的全局目录到用户目录下。# 检查Node版本 node -v # 检查npm版本 npm -v # 查看npm全局安装路径 npm config get prefix # 如果权限有问题可以修改全局路径到用户目录 npm config set prefix ~/.npm-global export PATH~/.npm-global/bin:$PATH3.2 codex cli安装步骤与常见报错处理codex cli的安装命令本身很简单npm install -g openai/codex-cli但实际执行时不同环境会遇到不同问题。我整理了几个高频报错和对应的排查思路。报错一unable to locate the codex cli binary or required runtime components这个报错通常出现在安装完成后执行codex命令时。原因可能是安装过程中二进制文件下载失败、PATH没有包含npm全局bin目录、或者杀毒软件拦截了二进制文件。排查步骤先用npm list -g确认包是否安装成功再用which codex或where codex确认命令是否在PATH中。如果包在但命令找不到手动把npm全局bin目录加到PATH里。报错二安装过程卡在postinstall脚本有些CLI工具在安装后会执行postinstall脚本下载额外依赖。如果网络环境不稳定这一步容易卡住。可以尝试设置npm config set fetch-timeout 60000延长超时或者用--ignore-scripts跳过脚本安装后再手动执行必要步骤。报错三Windows下二进制不兼容前面提到的opencode.exe不兼容问题本质是架构不匹配。解决办法是确认你的Node版本和系统架构然后找对应版本的包。如果官方没有提供你需要的架构可以考虑用WSL2环境安装Linux版本。安装完成后第一次运行codex会引导你做初始化配置。你需要提供模型API Key、选择默认模型、配置工作目录。这里有个细节codex cli支持多种模型后端你可以用官方API也可以接入兼容OpenAI接口的第三方服务。配置信息通常存在~/.codex/config.json或类似路径下。3.3 claude cli的配置要点与模型接入claude cli的安装方式类似但配置逻辑有差异。它更强调项目级配置你可以在项目根目录放一个.claude配置文件定义该项目的模型、工具权限、上下文规则。npm install -g anthropic-ai/claude-cli安装后运行claude进入交互模式首次会要求登录或配置API Key。如果你在macOS上想用其他模型比如通过兼容接口接入Qwen需要修改配置文件中的baseURL和model字段。这里要注意不同模型对工具调用的支持程度不一样有些模型虽然能对话但工具调用格式不兼容会导致Agent执行中断。提示配置第三方模型时先用简单任务测试工具调用是否正常。比如让它列出当前目录文件如果Agent能正确调用ls并返回结果说明工具调用链路通了。如果它只是用自然语言描述我应该列出文件而不实际执行那就是模型不支持工具调用。claude cli还有一个实用功能是项目记忆。你可以在项目根目录创建CLAUDE.md文件写入项目说明、常用命令、代码规范。Agent每次启动时会自动读取这个文件相当于给Agent一个项目上下文。这个机制在agent记忆体系里属于静态记忆配合动态的会话记忆使用效果很好。3.4 安装后的验证与基础配置装完不代表能用。我习惯做三步验证第一步运行codex --version或claude --version确认命令可用第二步执行一个简单任务比如当前目录有哪些文件观察Agent是否能正确调用工具第三步检查配置文件路径和内容确认模型、API Key、工作目录都正确。如果第三步发现配置文件不存在可以手动创建。以codex cli为例配置文件通常长这样{ model: gpt-4, apiKey: your-api-key, baseURL: https://api.example.com/v1, workdir: /path/to/your/project, tools: { shell: true, fileWrite: true, fileRead: true } }工具权限这块要谨慎。生产环境下建议关闭shell的完全放行改成白名单模式只允许特定命令。codex cli支持在配置里定义allowedCommands和blockedCommands这个机制能有效降低Agent误操作的风险。4. Agent执行中断与常见故障排查实录4.1 agent execution terminated due to error的六种典型原因这个报错信息很笼统实际原因可能完全不同。我按出现频率从高到低排了个序附上排查方法。原因一模型API调用失败。最常见。可能是API Key过期、额度用完、网络不通、或者模型名称写错。排查方法看日志里有没有HTTP状态码401是认证问题429是限流500是服务端问题。如果是网络问题检查代理配置和防火墙规则。原因二工具调用参数解析失败。模型输出的工具调用JSON格式不对运行时解析不了。这种情况在换用非官方模型时特别常见。排查方法开启debug日志看模型原始输出是什么。如果格式确实不对要么换模型要么在运行时加一层容错解析。原因三命令执行超时。Agent执行了一个耗时命令超过配置的超时时间被强制终止。排查方法检查超时配置适当延长或者优化任务拆分让Agent分步执行而不是一次性跑长命令。原因四上下文超限。工具输出太多把上下文窗口撑爆了。排查方法看日志里token计数如果接近模型上限需要开启输出截断或摘要压缩。原因五权限不足。Agent尝试写文件或执行命令时被系统拒绝。排查方法检查文件和目录权限确认运行Agent的用户有足够权限。原因六依赖缺失。Agent调用的某个外部命令不存在比如它想用jq解析JSON但系统没装。排查方法看错误信息里有没有command not found提前安装常用工具。报错关键词可能原因快速排查401/403认证失败检查API Key429限流降低频率或换Keytimeout执行超时调整超时配置context length上下文超限开启截断permission denied权限不足检查文件权限command not found依赖缺失安装对应工具4.2 工具调用不生效的排查思路Agent说而不做是另一个高频问题。你让它改文件它回复我已经修改了但实际上文件没变。这种情况通常是工具调用链路断了。第一步确认模型是否支持工具调用。不是所有模型都支持function calling有些模型虽然能理解指令但不会输出结构化的工具调用请求。测试方法用最简单的工具调用任务看模型输出里有没有工具调用标记。第二步检查工具注册是否正确。如果你用的是自建框架确认工具定义已经注册到运行时并且模型能看到这些工具的描述。工具描述要清晰参数说明要完整否则模型不知道该怎么调。第三步看运行时日志。大多数CLI Agent框架都有debug模式开启后能看到模型原始输出、工具调用解析结果、执行结果。codex cli可以用--debug参数启动claude cli在配置文件里开verbose。第四步检查工具执行结果是否回传。有些框架在工具执行后没有把结果正确回传给模型导致模型以为工具没执行。这种情况看日志里有没有tool result相关的记录。4.3 性能优化让CLI Agent跑得更快更稳CLI Agent的性能瓶颈通常在三个地方模型响应速度、工具执行速度、上下文处理速度。模型响应速度取决于你用的模型和网络。如果用的是远程API网络延迟占大头。可以考虑用流式输出让用户先看到部分结果。如果本地有GPU可以跑小模型做简单任务复杂任务再调大模型。工具执行速度这块我习惯给常用命令做缓存。比如git status的结果可以缓存几秒避免Agent短时间内重复调用。文件读取也可以做缓存特别是大文件读一次存到内存里后续直接从内存取。上下文处理速度是最容易被忽视的。每次工具调用后上下文都会增长。如果不做压缩很快就会出现上下文越长响应越慢的情况。我的做法是对工具输出做截断只保留关键信息对历史对话做摘要把多轮交互压缩成一段总结对静态信息如项目结构做缓存避免重复读取。# 简单的输出截断示例 def truncate_output(output, max_lines50, max_chars5000): lines output.split(\n) if len(lines) max_lines: lines lines[:max_lines] [... (truncated)] result \n.join(lines) if len(result) max_chars: result result[:max_chars] ... (truncated) return result注意截断策略要因任务而异。代码搜索的结果可以多保留一些日志输出可以少保留一些。关键是让模型能看到足够做决策的信息而不是全部信息。5. Agent框架选型与开发学习路线5.1 agent框架与编排从单Agent到多Agent协作单Agent能做的事有限。当任务复杂度上升你需要多个Agent分工协作。比如一个Agent负责代码搜索一个负责代码修改一个负责测试验证。这就是多agent协作的范畴。agent框架与编排的选型要考虑几个维度通信机制、任务分配、冲突解决、状态同步。简单的多Agent可以用消息队列做通信复杂的可能需要专门的编排引擎。pi agent在这块提供了比较灵活的编排原语你可以用YAML定义Agent之间的依赖关系和数据流。但多Agent不是银弹。我实测下来两个Agent协作的复杂度大约是一个Agent的三倍。通信开销、状态不一致、死锁问题都会出现。建议先从单Agent做起确实遇到瓶颈再考虑多Agent。5.2 agent skill与agent的区别能力封装 vs 执行主体这两个概念经常被混淆。简单说agent是执行主体skill是能力封装。一个Agent可以拥有多个Skill每个Skill定义了一类任务的处理方式。比如你有一个代码审查Agent它可以有静态分析Skill、风格检查Skill、安全扫描Skill。每个Skill内部可能是一组工具调用、一段提示词模板、或者一个子Agent。agent skill的设计让能力可以复用不同Agent可以共享同一个Skill。在CLI场景下Skill的粒度很重要。太粗复用性差太细组合成本高。我的经验是一个Skill对应一个可独立完成的小任务比如查找未使用的变量、生成单元测试、格式化代码。这样的粒度既容易复用也容易测试。5.3 agent开发学习路线从CLI入手的最短路径如果你刚开始学agent开发我建议从CLI场景切入。原因有三第一CLI的输入输出都是文本调试直观第二CLI工具调用链路短容易理解Agent循环第三CLI场景需求明确容易找到练手项目。学习路线可以这样安排第一周理解Agent基本概念跑通codex cli或claude cli的安装配置手动执行几个任务观察行为。第二周读一个开源Agent框架的源码理解工具调用、上下文管理、错误处理是怎么实现的。第三周基于现有框架写一个自定义Skill比如自动生成commit message。第四周尝试做一个完整的CLI Agent项目比如自动修复lint错误。吴恩达 agent 教程里提到的反思-规划-执行循环在CLI场景下特别适用。你可以让Agent先分析任务、制定计划、逐步执行、最后反思结果。这个模式在代码修改类任务上效果很好。5.4 agent安全与记忆管理容易被忽视的两个关键点agent安全在CLI场景下尤其重要因为Agent有执行命令的能力。最基本的安全措施包括命令白名单、文件操作沙箱、敏感信息过滤、操作审计日志。a-memguard提出的主动防御思路值得参考——在Agent写入记忆前做安全检查防止API Key、密码这类信息被持久化。agent记忆的管理策略取决于任务类型。短期任务用上下文窗口就够了长期项目需要文件系统或向量库。我习惯用三层记忆会话记忆当前对话、项目记忆CLAUDE.md这类文件、用户记忆跨项目的偏好设置。三层配合Agent既能记住当前任务上下文也能保留项目级知识还能适应用户习惯。6. 我踩过的坑与实操心得装codex cli的时候我在Windows上折腾了两个小时。先是npm全局安装路径有空格导致命令找不到改了prefix之后又遇到二进制架构不匹配。最后用WSL2装Linux版本才跑通。如果你也在Windows上我的建议是直接上WSL2省去很多兼容性麻烦。配置第三方模型接入claude cli时我试过用Qwen的兼容接口。模型能对话但工具调用一直不生效。后来发现是模型输出的工具调用格式和claude cli期望的不一致。解决办法是在中间加一层适配器把模型输出转换成标准格式。这个适配器用Node.js写也就几十行但没它整个链路跑不通。还有一个坑是上下文管理。我一开始没做输出截断Agent执行npm install后把整个安装日志塞进上下文结果下一轮对话直接超限。后来加了截断逻辑只保留最后20行和错误信息问题就解决了。这个经验让我意识到CLI Agent的上下文管理比聊天Agent更需要精细控制因为命令输出太不可控了。最后分享一个实用技巧给Agent配置一个工作目录白名单。我见过Agent在错误路径下执行rm命令的案例虽然最后没造成损失但想想后怕。现在我的配置里明确限制Agent只能操作项目目录系统目录和用户目录一律禁止。这个限制在codex cli和claude cli里都能通过配置实现花五分钟设置能避免很多潜在风险。
企业数字化 ERP 产品动态
相关推荐
具身智能世界模型构建与机械臂控制实践 1. 具身智能的世界模型:从概念到实践最近在机器人实验室调试机械臂时,突然意识到一个有趣的现象:当人类伸手拿水杯时,大脑会预判手臂的运动轨迹和杯子的重量,这种预测能力正是具身智能(Embodied AI… · 2026/11/4 18:57:20
Android学生信息管理系统:Java+SQLite完整课程设计项目 简介:本资源是一份面向高校Android开发初学者与课程设计实践者的完整安卓应用项目,聚焦学生信息管理系统的实战开发,覆盖Android Studio环境配置、UI布局(XMLConstraintLayout/RecyclerView)、SQLite本地数据存储、Act… · 2026/11/4 18:57:20
绝对值性质与可视化:从距离直觉到图像求解 数学里有些概念,看起来简单到不值一提,但越琢磨越有味道,绝对值就是典型代表。我在带新人和做课程辅导的时候发现一个特别有意思的现象:几乎所有人都能脱口而出“绝对值就是去掉负号”,但一旦题目里出现嵌套绝对值、含… · 2026/11/4 18:56:19
Carrel 图文双路重排揭秘:文本与图像独立打分再按名次融合的原理 【免费下载链接】carrel Ontology-Augmented Generation for AI agents. 项目地址: https://gitcode.com/gh_mirrors/ca/carrel 点击查看 免费下载 Carrel 是一个面向 AI Agent 的自托管知识库,核心能力是混合检索与本体增强生成(Ontology-… · 2026/11/4 19:44:01
下载Python与Pycharm教程 (Windows版) /* 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 19:43:00
用命令行在 Windows 11 上启用 IIS Web 服务器 如果你觉得图形界面不合胃口,那就用 Windows 终端(PowerShell)命令在 Windows 11 上安装并启用 Internet Information Services(IIS)。
借助 IIS,文件或文档等信息可以发布到网络上供访问。它支持的通信协议包括 HTTP、HTTPS、FTP、SMTP、POP3 或 WebDAV 等。这个 Web 服… · 2026/11/4 19:43:00
AutoHotkey 与 Node.js 集成的完整指南:5 条通路打通桌面自动化与 Web 控制面板 AutoHotkey 与 Node.js 集成的完整指南:5 条通路打通桌面自动化与 Web 控制面板 【免费下载链接】AutoHotkey AutoHotkey - macro-creation and automation-oriented scripting utility for Windows. 项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkey … · 2026/11/4 19:43:00
ERPNext 免费 ERP 本地部署:从零跑通财务到制造 ERPNext 免费 ERP 本地部署:从零跑通财务到制造 【免费下载链接】erpnext Free and Open Source Enterprise Resource Planning (ERP) 项目地址: https://gitcode.com/GitHub_Trending/er/erpnext
商业 ERP 授权贵,财务、库存常常各买一套。ERPNe… · 2026/11/4 19:43:00
vLLM 部署 Hy3 实战:开启 MTP 投机采样的推理加速完整教程 【免费下载链接】Hy3 Hy3 (295B A21B), a leading reasoning and agent model in its size, with great cost efficiency. 项目地址: https://gitcode.com/gh_mirrors/hy3/Hy3 点击查看 免费下载 本教程带你用 vLLM 部署 Hy3——腾讯混元团队开源的 295B 参数 MoE … · 2026/11/4 19:43:00
双极步进电机控制实战: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