首页/新闻资讯/正文详情

Windows11本地部署OpenClaw:从WSL2环境到飞书接入的完整实践

发布时间:2026/9/25 7:33:50 来源:云帆数科 栏目:资讯中心
Windows11本地部署OpenClaw:从WSL2环境到飞书接入的完整实践
最近我在 Windows11 上折腾 OpenClaw前前后后花了两天把一个“装不上、跑不通”的状态调到了稳定运行现在它每天定时抓资讯、生成摘要、发到飞书基本替代了我早上刷新闻的习惯。OpenClaw 本质上不是又一个聊天框而是一个 Agent 执行框架它做大模型和真实操作之间的翻译层把意图变成读网页、写文件、执行命令、回消息这些具体动作。这篇文章就是我在 Windows11 上的完整安装与使用记录从 WSL2 环境准备、Docker 和源码两种部署路线到千问模型接入、飞书 Channel 配置再到现在网上问得最多的几个报错的排查过程。想在 Windows 笔记本上跑本地 Agent 的朋友可以直接照着操作。1. 先搞清楚 OpenClaw 的定位它不是聊天机器人而是 Agent 执行框架1.1 拆开看四个核心模块我第一次接触 OpenClaw 时犯了个误区以为它和 ChatBox 这类工具一样填个 API Key 就能聊天。真正用起来才发现它的设计目标完全不一样默认你不是来闲聊的而是来派活的。理解它的四个模块后续配置才不会懵。模型层负责接各种大模型。OpenClaw 不绑定某一家OpenAI 兼容接口、千问、本地模型都能接这也是它在社区里受欢迎的原因之一。Agent 层这是核心决策中枢。它拿模型给出的推理结果决定下一步调哪个工具、什么时候结束、要不要把长文本写到文件里。相当于人的大脑皮层负责“想清楚再做”。Channel 层负责接入不同入口。终端、飞书、网页面板等都在这一层作用是让 Agent 可以“听见你说话”并“把话递回来”。工具层给 Agent 配上手脚。内置的网页抓取、文件读写、Shell 命令执行、定时任务都在这层也是决定 Agent 有没有实际生产力的关键。我用一个不严谨但好理解的类比模型层是大脑Agent 层是负责做决定的那个“你”Channel 层是耳朵和嘴工具层是手和脚。四个部分缺一个Agent 都只能停留在“聊天”阶段没法真正干活。1.2 为什么要在 Windows11 上本地部署而不是直接用托管方案市面上也有一些托管式的 Agent 产品热度很高的 WorkBuddy 就是其中一类。我一开始也纠结过要不要直接用托管版毕竟省去环境配置。后来对比下来还是选了 OpenClaw 自部署原因可以看下面这张表。对比维度OpenClaw 本地部署托管类 Agent 产品如 WorkBuddy数据归属全程本地会话记录在自己的磁盘上数据存放在第三方服务器模型选择随便换千问、GLM、本地模型都行一般只能用平台内置模型自定义能力能改配置、写提示词、加自定义工具受平台能力边界限制成本结构只付模型 API 费用无订阅费通常按月订阅部署门槛需要懂一点命令行开箱即用适合人群喜欢掌控、愿意折腾的开发者不想碰配置的普通用户如果你本来就有一台 Windows11 主力机跑 OpenClaw 并不会额外增加硬件负担16GB 内存的笔记本跑起来很轻松。而且本地部署有一个隐形好处你可以在配置里看清楚 Agent 每一步做了什么出了问题能查日志、能复盘而不是对着一个黑盒干瞪眼。2. Windows11 环境准备WSL2 和 Docker 是绕不开的两块基石2.1 为什么不能直接在 PowerShell 里跑 OpenClaw很多人在 Windows11 上安装失败不是操作有问题而是选错了运行环境。直接在 PowerShell 里跑 Linux 生态的工具会遇到一堆莫名其妙的问题换行符不一致导致配置文件解析出错路径分隔符不对导致找不到文件更麻烦的是 Agent 要执行 Shell 命令时PowerShell 的语法和 Bash 差异太大经常一个grep管道就卡住。OpenClaw 这种 Agent 框架设计时默认运行在 Linux 环境里。它要调用的工具链、执行的命令、依赖的路径规范全都是 Linux 语义。所以在 Windows11 上部署正确的思路不是“硬装”而是通过 WSL2 在系统里跑一个完整的 Linux 内核。这样你在 WSL2 终端里执行命令跟在真实 Linux 服务器上几乎没有区别OpenClaw 的所有能力都能正常发挥。2.2 WSL2 安装与验证开启 WSL2 本身不复杂按下面的步骤走一遍就行。右键“开始”菜单选择“终端(管理员)”或“PowerShell(管理员)”。执行wsl --install -d Ubuntu-24.04系统会自动启用 WSL 功能并下载 Ubuntu 镜像。安装完成后按提示重启电脑首次进入 Ubuntu 时会让你设置用户名和密码。重启后再打开终端执行wsl --update确保内核版本是最新的。执行wsl -l -v确认 Ubuntu 的 WSL 版本是 2如果是 1 则执行wsl --set-version Ubuntu-24.04 2转换。注意wsl --install在部分旧版本 Windows11 上会提示找不到命令先执行wsl --update或直接去“启用或关闭 Windows 功能”里勾选“适用于 Linux 的 Windows 子系统”和“虚拟机平台”重启后再装。验证 Docker 是否就绪则更简单在 WSL2 终端里执行docker version能看到 Client 和 Server 两段信息就说明 Docker Desktop 的 WSL2 后端已经接上了。Server 段是空的就说明 Docker 引擎没启动回 Windows 托盘打开 Docker Desktop 等它变成 Running 状态。2.3 内存分配与虚拟化检查WSL2 默认会拿走宿主机最多 50% 的内存如果你的笔记本只有 16GB跑 OpenClaw 的同时还要开浏览器和编辑器可能会感觉卡。我强烈建议在 Windows 用户目录下创建一个.wslconfig文件手动限制 WSL2 的资源占用。[wsl2] memory8GB processors4 swap4GB保存后执行wsl --shutdown再重新进入 WSL2配置才会生效。改成 8GB 之后OpenClaw 加上 Docker 都跑得动Windows 桌面端也不会被拖垮。另外确认一下虚拟化是否开启打开任务管理器切到“性能”选项卡看 CPU 那一栏里的“虚拟化”是否为“已启用”。如果显示“已禁用”需要重启进 BIOS在 CPU 设置里打开 Intel VT-x 或 AMD SVM否则 WSL2 和 Docker Desktop 根本起不来。3. 两条部署路线实测Docker 桌面版与 WSL2 源码部署3.1 路线 A用 Docker Desktop 部署省心、容易回滚Docker 部署最大的好处是环境隔离。依赖冲突、残留文件、配置污染这些事基本不会发生出问题把容器删掉重新拉一个就行。这也是我推荐新手优先走的路线。在 WSL2 终端里创建一个工作目录比如~/openclaw-docker然后新建docker-compose.ymlservices: openclaw: image: openclaw/openclaw:latest # 以官方镜像名称为准 container_name: openclaw ports: - 3100:3100 volumes: - ./data:/root/.openclaw - ./config:/root/.openclaw/config env_file: - .env restart: unless-stopped在同目录下创建.env文件先放模型相关的配置OPENAI_BASE_URLhttps://dashscope.aliyuncs.com/compatible-mode/v1 OPENAI_API_KEYsk-your-key OPENAI_MODELqwen-plus启动命令很简单docker compose up -d docker compose logs -f --tail100看到日志里出现类似 “OpenClaw is running” 的输出就说明容器起来了。关于端口我用了 3100 而不是默认端口主要是为了和本地其他服务错开你按自己习惯选一个空闲端口即可。为什么一定要把data和config目录挂载出来因为容器一旦被重建内部的所有文件都会消失你的会话历史、配置、任务记录将全部清空。挂载到宿主机后备份就是复制一个文件夹的事修改配置也不用再进容器操作直接在 Windows 侧用编辑器改完重启容器生效。3.2 路线 BWSL2 源码部署适合调试和二次开发如果你和我一样喜欢扒源码、看日志、想往 OpenClaw 里塞自定义工具源码部署更适合你。在 WSL2 终端里按下面顺序操作。cd ~ git clone OpenClaw官方仓库地址 cd openclaw cp .env.example .env npm install npm run dev仓库地址以你从 OpenClaw 项目主页看到的信息为准我这里不贴链接避免你拉错分支。拉下来之后先大概浏览一下目录结构重点看四个位置.env存放 API Key、模型接口、调试开关。config/Channel、工具、任务计划的配置都在这里。data/会话记录、Agent 状态、Lock 文件都在这里后面排查 Session Lock 就靠它。logs/运行日志出问题先翻这里。源码部署相比 Docker 的优势是修改即时生效不用每次 rebuild 容器。调整完代码或配置后直接在终端重启npm run dev就行。劣势是如果 npm 依赖没装干净或者 Node 版本和项目要求的不一致报错会多一些。建议装 Node.js 的 LTS 版本我用的是 20.x实测稳定。3.3 启动验证与第一次对话无论哪条路线启动后都要先做一次最小验证。在 WSL2 终端里进入 OpenClaw 的交互入口输入类似“介绍一下你现在的能力”这种指令。如果模型配置正确你应能看到 Agent 开始分步思考比如“用户想了解我的能力我需要先加载工具列表”然后给出回答。这里有个 Windows11 特有的注意点WSL2 默认使用 NAT 网络模式Windows 侧通过localhost:3100可以直接访问 WSL2 里的服务。但如果 Web 面板打不开先确认服务真的监听了0.0.0.0:3100执行netstat -tlnp | grep 3100看看监听地址否则只能访问到 Windows 自己访问不到 WSL2 里的进程。4. 把模型和入口接进去千问模型与飞书 Channel 配置4.1 为什么先接千问以及具体配置方法模型选择上我目前默认用千问主要原因是接入简单且国内访问稳定。阿里云百炼平台的 DashScope 提供了 OpenAI 兼容接口这意味着只需改base_url就能把 OpenClaw 这类以 OpenAI 为默认协议的工具接上千问不需要额外写适配层。配置示例如下{ model: { provider: openai-compatible, baseUrl: https://dashscope.aliyuncs.com/compatible-mode/v1, apiKey: sk-xxx, model: qwen-plus, temperature: 0.3 } }不同版本的 OpenClaw 可能把provider写成openai或dashscope以你当前版本文档为准。模型名可以从qwen-turbo、qwen-plus、qwen-max里选我实测下来日常任务用qwen-plus性价比最高复杂推理任务切到qwen-max更稳。Key 的申请流程不复杂注册阿里云账号后在百炼平台创建 API Key注意把 Key 存好别直接写进博客或提交到 Git 仓库。4.2 终端 Channel最简单的接入方式在没接飞书之前先把终端 Channel 跑通这样才能以最短链路验证模型配置是否正确。在 OpenClaw 的配置文件中加一段{ channels: { terminal: { enabled: true } } }终端 Channel 的好处是不需要申请任何凭证、不需要公网地址启动服务后直接在终端里就能对话。我建议所有新手都从这一步开始先确认模型和 Agent 核心正常再考虑接飞书——否则一旦出问题你很难分清是模型的问题还是飞书接入的问题。4.3 飞书 Channel把 Agent 装进口袋最终我选择飞书作为主力入口主要因为手机端随时能访问也能在电脑上单独开一个窗口和 Agent 对话不占用终端。接入步骤大致如下打开飞书开放平台创建一个“企业自建应用”拿到 App ID 和 App Secret。在应用能力里添加“机器人”能力。在事件订阅里选择长连接模式订阅im.message.receive_v1接收消息事件。在权限管理里开通读取消息、发送消息、获取群信息等权限。发布应用版本并等待管理员审核通过。在 OpenClaw 的配置里填上应用信息{ channels: { feishu: { enabled: true, appId: cli_xxxx, appSecret: xxxx, verificationToken: xxxx, encryptKey: } } }这里强调两个坑。第一飞书开放平台的事件订阅有两种模式——长连接和 Webhook。长连接不需要公网回调地址对个人用户最友好Webhook 模式则需要一个公网可访问的 URL没有的话别选这个模式。第二verificationToken和encryptKey是两个不同的字段一个是 URL 校验用的一个是消息内容加密用的不要填反。我没填encryptKey因为默认不加密时留空即可如果填了值但 Agent 端解不开消息会一直报解密失败。4.4 Channel 怎么选按使用场景决定不少人在配置时纠结该用哪个 Channel我直接给一个选择思路。Channel适合场景上手难度备注终端调试、快速验证低不需要任何凭证飞书手机/电脑随时访问中需要开放平台配置网页面板可视化操作、看任务记录中取决于版本是否内置我目前是终端和飞书同时开着调试时用终端日常派活走飞书。两者互不干扰且这个结构在后续排障时也方便定位问题。5. 跑一个真正能干活的任务定时资讯摘要与本地文件分析5.1 定时资讯摘要任务Agent 接入模型和 Channel 之后如果只用来问答就太浪费了。我给 OpenClaw 配了一个每天早上 9 点的定时任务抓取指定网站的热门文章生成摘要推到飞书。任务配置长这样{ tasks: [ { name: daily_tech_summary, cron: 0 9 * * *, channel: feishu, prompt: 请抓取 https://news.ycombinator.com/ 的热门文章整理出前10条每条用一句话概括按标题、链接、摘要的格式发送。 } ] }第一次跑通这个任务时我发现一个问题如果直接让 Agent“抓取文章”它可能只抓到列表页而没有抓取正文。后来我把指令改得更明确要求它“先访问列表页提取链接再逐个访问每条链接抓取首段内容最后汇总”输出质量提升明显。想让 Agent 干活干得好提示词里得把流程拆细不能一句话带过。5.2 本地文件分析任务第二个我常用的场景是文件分析。比如让 Agent 读取某个日志文件统计里面 ERROR 和 WARNING 的数量再按时间分布生成一个简要报告。请读取 /home/me/logs/app.log统计今天出现的 ERROR 次数按小时分组找出最频繁的时段输出一份摘要。如果文件超过 500 行先做截断采样再分析。这个任务充分体现了 Agent 执行框架的价值模型不用一次性塞进整个文件而是通过调用文件读取工具分段读取再在上下文中完成统计。由于 OpenClaw 有执行 Shell 命令的能力它甚至可以自己写一段小脚本处理数据。但这也引出一个安全问题——你给了 Agent 一把瑞士军刀就得明确告诉它哪里能切、哪里不能切。5.3 任务的安全边界与调试经验使用 Agent 执行任务时安全边界必须提前想清楚。我给 OpenClaw 的 Shell 工具设置了白名单目录只允许它在~/openclaw-workspace下读写文件禁止执行sudo命令禁止访问系统关键目录。配置方式一般是修改工具层设置在允许命令列表里把sudo、rm -rf /这类高风险操作排除掉。排查任务失败时最有效的动作是看任务运行日志。OpenClaw 会把每次任务执行的过程记录下来包括调用了哪些工具、每个工具返回了什么、哪一步超时了。我遇到过几次任务“没反应”的情况最后都是日志里显示某次网页抓取超时把超时时间从 30 秒调到 60 秒后就正常了。建议新手遇到任务异常先别急着改提示词先看日志再决定动哪里。6. 踩坑实录session 锁死、飞书长文截断与中文乱码的排查链路6.1 “agent failed before reply: session file locked (timeout 60000ms)”这个报错在我的安装过程中出现了不止一次网上问的人也很多。第一次遇到时我完全没头绪只看到会话文件被锁、等待 60 秒后超时。完整的排查过程如下。第一步检查是否有多个 OpenClaw 进程同时在跑。在 WSL2 里执行ps aux | grep openclaw我发现确实有两个 Node 进程它们同时尝试往同一个 Session 文件里写状态自然就产生了锁冲突。用pkill -f openclaw清掉所有进程再删除data/sessions/目录下的.lock文件后重启问题暂时消失。第二步过了两天又复现了这次我确定没有重复进程。于是开始怀疑路径问题——我把项目目录放在了/mnt/c/Users/me/openclaw也就是 Windows 磁盘挂载区。WSL2 访问 Windows 侧文件走的是 9P 协议文件锁的语义和 Linux 原生文件系统有明显差异加上 Windows 端杀毒软件可能实时扫描文件锁释放被拖到超时并不奇怪。第三步彻底解决。把整个 OpenClaw 项目和data目录迁移到 WSL2 原生文件系统比如~/openclaw之后连续跑了一周没有再出现过一次锁超时。所以如果你也遇到这个报错排查顺序应该是确认没有重复进程 → 清掉.lock文件 → 把项目从/mnt/c下挪到 WSL2 内部。不要只做第一步否则换个场景还会踩第二次。6.2 飞书长文输出被截断用飞书 Channel 时Agent 回复稍长一点就会只发出来一半或干脆在中间断掉。这不是网络问题而是飞书单条消息正文长度有限制OpenClaw 一次性输出过长文本平台就会截断。我的处理方案有三层。第一层在配置里调低单次输出上限让 Agent 的回答更精简第二层开启消息分片把长文按每段 1500 字符拆成多条发送第三层也是我最推荐的一层在系统提示词里告诉 Agent“如果内容超过 800 字请先用write_file工具把全文写入本地文件然后在聊天里输出摘要和文件路径。”这样长文不丢失聊天界面也不会被刷屏。这个问题的本质是“模型生成能力和平台消息承载能力不匹配”不能只靠改一个参数而是要在提示词和 Agent 行为习惯上做约束。我实测在提示词里明确规则后Agent 输出长文的稳定性明显提高。6.3 Windows11 下的中文乱码与显示不全中文显示问题在使用过程中几乎躲不掉但不同场景的解法不一样。场景一是 WSL2 终端里中文变成方块或缺失。原因是 Ubuntu 环境里没有中文字体执行sudo apt update sudo apt install -y fonts-noto-cjk装完之后重启终端中文就正常了。同时建议在~/.bashrc里加一行export LANGzh_CN.UTF-8避免部分命令输出的中文编码异常。场景二是 Windows Terminal 里显示乱码。终端默认代码页往往不是 UTF-8在终端里执行chcp 65001或者把 Windows Terminal 的配置文件里的默认代码页改成 UTF-8乱码即可解决。有一点要注意不要为了省事去系统区域设置里勾选“Beta 版使用 Unicode UTF-8 提供全球语言支持”那会让很多旧程序出现新的乱码问题得不偿失。场景三是飞书消息里中文正常、但终端里看日志时中文是乱码。这种情况通常是日志文件写入时用了 UTF-8但查看端用了其他编码。在终端里用cat查看时先确认LANG已设置好不要再用 GBK 环境的编辑器直接去打开 OpenClaw 的配置或日志文件编辑器保存时可能把 UTF-8 文件转成 GBK再读回来就乱套了。问题现象根因解决方案Session 锁超时agent failed before reply多进程冲突或跨文件系统锁语义差异清理进程和 lock 文件项目移出 /mnt/c飞书长文截断回复到一半消失消息长度限制分片发送、限制输出长度、用写文件工具输出长文中文乱码终端显示方块或乱码字体缺失或代码页不对安装 Noto CJK 字体设置 UTF-8 代码页按我自己的经验建议你现在先不要贪多用最小配置跑通——终端 Channel 加一把千问的 API Key把基本流程走顺再一步步接飞书、加定时任务。OpenClaw 的data目录记得定期备份尤其是你定义了不少定时任务之后否则容器一重建所有会话和任务状态都会归零。后面如果再遇到 Session 锁报错按“先重启、再删锁、最后查路径”的顺序走大概率能直接解决。这几个坑填完之后剩下的就是让它真正帮你干活了。

相关推荐

Java+JSP+MySQL学生宿舍管理系统:从环境搭建到部署避坑全解析
Java+JSP+MySQL学生宿舍管理系统:从环境搭建到部署避坑全解析

简介:Java Web开发中,JSP/Servlet与MySQL的组合是理解服务端动态网页技术的基础。其核心原理在于:浏览器请求经Tomcat容器路由至Servlet,业务逻辑通过JDBC访问MySQL,最终由JSP渲染响应页面。这种分层架构虽然“传统”&… · 2026/9/25 7:33:50

从异步导出到Redis连接池:第三十二周技术复盘与思考
从异步导出到Redis连接池:第三十二周技术复盘与思考

第三十二周的周报我拖到周四深夜才动笔。不是没东西写,恰恰相反,这周经历了订单模块重构收尾、报表导出功能发布、还有一次线上接口超时的排查,随便挑一件都够写两千字。但真正坐下来打开文档的时候,我反而反复删了好几版——原因… · 2026/9/25 7:33:44

ESXi将USB硬盘映射为本地磁盘并创建VMFS的完整实操指南
ESXi将USB硬盘映射为本地磁盘并创建VMFS的完整实操指南

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

从漏洞分析到主动防护:安全加固与路由器配置实践
从漏洞分析到主动防护:安全加固与路由器配置实践

抱歉,我无法协助撰写涉及漏洞分析、漏洞链拆解或攻击链构建等技术细节的内容,这类话题可能被用于网络攻击或入侵行为,即使以防御或研究为背景,也存在被滥用的风险。如果你有路由器配置、安全加固、大模型应用等其他合规主题的写作… · 2026/9/25 7:55:04

PaddleSeg Matting 模型全场景高性能部署实战:基于 FastDeploy 打通 CPU/GPU/昆仑芯/昇腾
PaddleSeg Matting 模型全场景高性能部署实战:基于 FastDeploy 打通 CPU/GPU/昆仑芯/昇腾

人工智能计算机视觉预训练 【免费下载链接】PaddleSeg Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting,… · 2026/9/25 7:55:04

Atlas 300V 24G推理加速卡解析与YOLO部署实战指南
Atlas 300V 24G推理加速卡解析与YOLO部署实战指南

前阵子有网友在后台连续问了我两个问题:Atlas 300V 24G是运算加速卡吗?能不能拿来部署YOLO?说实话,这两个问题问得特别典型,因为很多刚接触昇腾生态、或者从GPU转向国产AI硬件的开发者,第一眼看到“Atlas”… · 2026/9/25 7:54:58

全国省市区三级联动表:MySQL导入与查询实战指南
全国省市区三级联动表:MySQL导入与查询实战指南

简介:这份资源是2024年最新整理的MySQL全国省市区三级联动数据表,面向后端开发、数据库设计人员以及需要地址级联选择功能的前端工程师,可解决地理信息查询与行政区域联动维护的问题。压缩包共2个文件,以sql数据脚本和zip归档为主… · 2026/9/25 7:54:52

可复用回归预测系统骨架:6类模型统一接口实践
可复用回归预测系统骨架:6类模型统一接口实践

简介:本资源是一套面向机器学习初学者与进阶实践者的预测建模综合代码包,覆盖贝叶斯网络、马尔科夫模型、线性回归、岭回归、多项式回归、决策树回归及深度神经网络七大主流预测方法,适用于时间序列预测、房价估算、用户行为建模等典型场景。… · 2026/9/25 7:54:34

Atlas 300V部署YOLOv5/YOLOv8:从ONNX到OM全流程
Atlas 300V部署YOLOv5/YOLOv8:从ONNX到OM全流程

先交代一下背景。不少人在搜“atlas部署yolo”和“atlas 300v 24g 是运算加速卡吗”这类词,说实话,这两个问题指向的是同一件事:你想在昇腾Atlas平台上面把YOLO检测模型跑起来,但不确定这块卡到底能不能干这个活、干起来麻不麻烦。… · 2026/9/25 7:54:28

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

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

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

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

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

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

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码