DeepSeek Harness桌面端:从密钥安全到成本统计的AI调用利器

DeepSeek Harness 桌面端终于来了。这不是又一个套壳客户端,而是把调用链路里最让人头疼的东西——密钥管理、多环境切换、成本统计、多轮调试、Prompt沉淀——全部收进一个本地图形界面里。我第一时间装上了,用了几天,把之前命令行下断断续续的工作流整个迁了过去,体验比预想中顺滑太多。

这个工具适合三类人:天天跟DeepSeek API打交道的开发,做AI应用集成但被密钥和配置搞崩溃的项目组成员,以及那些想用模型但又怕把Key泄露出去的个人用户。如果你属于其中任何一类,这篇文章建议看完,我把功能拆解、安全原理、配置步骤和踩过的坑一次性讲透。

1. 它到底解决了我的什么痛点

1.1 调用AI接口时最常见的几种翻车现场

先说以前用DeepSeek接口的真实状态。代码里硬编码Key算是常规操作,Git提交的时候忘记加.gitignore,密钥跟着代码一起推到远端,这种事我已经见过不止一次。更隐蔽的问题是日志,很多人在调试时把整个请求体打出来,Key和Prompt内容全部混进日志文件,要是日志再同步到某个集中平台,基本等于把钥匙挂在大门口。

还有多环境切换的问题。开发环境一个Key,测试环境一个Key,正式环境又一个Key,不同环境的模型版本可能还不一样。命令行下我靠改环境变量凑合,但改了经常忘记切回来,然后调了半天发现用的是测试环境的配置。再去翻配置文件,一堆注释掉的旧地址,已经分不清什么是什么。

成本也是个模糊账。跑了一个星期,到底发了多少请求、用掉多少Token、花了多少钱,全靠猜。等到月底出账单才开始紧张,但已经晚了。

1.2 Harness这类工具的核心定位是什么

Harness不是一个模型,也不负责推理,它更像你调用模型这条链路上的“控制台+保险箱”。类比一下,数据库你肯定用客户端管理而不是手写SQL连接字符串到处粘贴,Harness干的其实是同一件事:把调用DeepSeek API过程中的配置、鉴权、测试、观测整合在一个可视化的地方。

这次发布的是桌面端,不是网页端也不是纯命令行工具。这意味着密钥和调试数据能留在本机,不经过第三方中转,同时操作体验比在终端里敲命令强得多。之前官方有类似CLI工具或者需要自己写脚本调用SDK,桌面端的推出恰好解决了那些脚本零散、状态不直观、团队协作时配置漂移的问题。

对于个人开发者,它提供了一个现成的请求调试入口,不用每次翻开文档拼参数;对于小团队,它可以承担配置统一、日志留痕、用量统计这些事;对安全敏感的场景,它本地加密存储密钥、自动脱敏导出的能力,正好卡在“方便”和“安全”的交叉点上。

2. “更便捷”到底便捷在哪

2.1 多环境配置一键切换

以前怎么管理多套配置?要么用.env文件一个个切换,要么在代码里写死,要么用docker compose覆盖环境变量,反正都有各自的麻烦。

Harness桌面端把每个环境做成了独立配置项,每个配置项包含接口地址、模型名、Key、默认参数。切环境好比在IDE里切语法的缩进风格,下拉选择,当前全局生效,所有请求立刻走新配置。不需要改文件,不需要重启终端,更不会出现因为某个进程还占着旧环境变量导致请求发错地方的情况。

这里有个细节值得表扬:它把配置项做成了“卡片”形式,每张卡片一眼能看出是哪个环境、用的是哪个模型。我之前在这类工具上吃过亏,某管理工具只显示环境名,不显示模型名,结果把预发环境的模型当成正式环境的用,数据喂错了模型,生成结果完全不能用。Harness至少在这个环节不会让你踩同样的坑。

2.2 会话式调试与Prompt管理

日常调试中频率最高的一个动作是:写一段Prompt,发出去看返回,不满意再改再发。命令行下这是最痛苦的,一是Prompt稍微长一点,终端编辑体验就非常糟糕,二是多轮对话的上下文处理全靠自己拼接messages数组,拼错一次前面的历史就全丢了。

Harness把调试改成聊天式的会话界面,左边是会话列表,右边是消息流,每次请求和响应的完整内容都能看到。它可以保存会话,意味着上一轮的调试进度不会因为关掉窗口就丢失,下次打开可以接着调。这个功能在做Prompt工程时价值非常大,我经常在同一个会话里来回实验十几次,比较不同版本Prompt之间的效果差异。

它还内置了Prompt模板库,可以把常用的系统提示词、输出格式要求、角色设定存成模板,发请求时一键带入。团队的Prompt规范终于不用躺在文档里吃灰,直接落到工具里成为可复用的资产。

2.3 直观的成本与用量报表

这部分是我最看重的,也是之前最缺失的。Harness每次请求都会记录Token消耗、响应耗时、估算费用,界面右上角能看到累计用量,点进去有明细表格,按时间排序,字段包括请求时间、模型、输入Token、输出Token、费用估算。

它的费用估算是根据官方计费口径动态计算的,虽然不能替代最终账单,但在“有没有异常消耗”这个判断上已经完全够用。比如某天突然多了一笔大额消耗,去明细列表里一查,马上就能定位到具体是哪个会话、哪个时刻、哪个Prompt引发的。以前排查这类问题要翻半天日志,现在直接在界面里几分钟搞定。

月度视图也很好用,能按天聚合展示趋势,一眼看出来哪几天用量特别高,对自己项目的调用节奏心里有数。

3. “更安全”是怎么做到的

3.1 密钥泄露的高危场景复盘

先盘点一下平时最容易让密钥裸奔的几个场景,这样才能理解Harness的安全设计到底防的是什么。

代码仓库泄露是第一大源头。Key直接写源码里,提交Git后即使立刻删除历史,也可以被爬虫和搜索引擎留存。第二大源头是日志与报错信息,程序异常时打印完整请求上下文,或集成的第三方平台自动采集日志,密钥混在结构化日志中一起上送。第三大源头是环境变量,很多部署平台支持配置环境变量,可以从前端界面读取,一旦账号被盗,密钥跟着全部暴露。第四类是抓包和界面截图,网页版如果不在网络层做额外保护,请求过程可能被中间设备截获;桌面工具里密钥被明文展示,被人看到屏幕也能直接抄走。

Harness所做的,是把这些风险尽可能压住:不在代码里出现明文Key,不在日志里留Key痕迹,不依赖环境变量携带密钥,界面展示时自动脱敏。

3.2 本机加密存储与脱敏机制

密钥在Harness里不是明文躺在配置文件的,默认通过操作系统安全能力进行加密存储。在支持的平台上会调用系统钥匙串或凭据管理器,没有系统钥匙串的环境则用本机生成的密钥加密后落盘。加密和解密都在本地完成,密钥的明文只出现在内存使用的那一瞬间,不落盘。

界面上展示密钥时只显示后四位,其余打星号。这个细节比我预想的更实用,有一次同事在我旁边看屏幕,我完全不担心他记住我的完整Key。导出请求日志时,它会自动把日志里的密钥字段替换为脱敏占位符,所以日志文件可以放心进版本管理或发到技术支持那里。

3.3 最小权限与人工确认机制

Harness在发送请求前会走一层校验:只有匹配配置中预设的主机地址才允许直接发送,如果域名不在白名单里,会弹出确认提示。这个设计减少了误发请求到未知地址的概率,也在一定程度上避免了DNS劫持或URL拼写错误把请求发到不安全的端点。

还有一个人工确认机制我觉得很值。对于批量任务、脚本循环之类的高频操作,Harness可以设置“手动确认”模式,每批请求发送前需要点击确认。这层设计虽然增加了操作步骤,但在生产环境调试时能防止一次性发送大量请求导致费用失控。

4. 一套可以直接抄的落地参考

4.1 安装与初始化流程

安装包按当前操作系统选择对应架构,Windows选x64或ARM64版本,macOS选对应芯片版本,Linux则根据发行版下载包不是。安装过程没什么特殊之处,跟着引导走,装完后首次启动会进入初始化向导。

初始化时我强烈建议做这几件事:

  • 设置本地应用锁(如果支持),启动时需要输入密码或指纹
  • 启用系统钥匙串作为密钥存储后端
  • 开启“日志自动脱敏”选项
  • 首次建议先不配置任何Key,熟悉界面后再添加

应用锁这个功能别嫌麻烦,它相当于给你的密钥管理界面加了一道门。桌面端之后如果一直挂在后台不退出,别人用你电脑时打开Harness最多看到打星号的脱敏内容,没有你的系统登录凭据,他拿不到明文。

4.2 添加服务地址与密钥

进入配置页,选择“新建服务”或类似入口,填入以下几项:

  • 服务名称:建议用“自用-生产”、“自用-测试”这种自己能秒懂的命名
  • 接口地址:填DeepSeek兼容接口的标准地址
  • 模型名:填写你实际申请到的模型标识
  • API密钥:填入申请到的Key

这里有一个容易搞混的细节:接口地址和模型名不要搞反。接口地址指的是HTTP端点,模型名是消息体里的model字段值。填错任何一个,测试连通性都会失败。填写完毕后点击“测试连接”,工具会发一个最小请求验证整套配置是否可用,成功之后配置卡片会变成可用状态。

密钥字段填入后,界面立即脱敏显示,之后每次编辑都要求先通过系统凭据验证,属于“输入一次,使用多次,但查看需验证”的方案。

4.3 跑通第一次对话测试

配置完毕,新建一个会话,在输入框里填一个最简单的Prompt,比如“用一句话介绍你自己”,然后发送。第一次请求会看到耗时、Token用量、费用估算同时出现,这代表整条链路已经通了。

我建议第一次测试时多试几个不同场景,不只是简单问答:

测试项预期行为通过标准
普通问答正常返回文本响应内容完整,无超时
多轮对话每轮带上之前历史第二轮回答能引用第一轮内容
超长输入大段文本输入不被截断返回结果符合模型服务限制
特殊字符引号、反斜杠等正常转义无解析错误
繁体中文/英文混排内容和编码正确无乱码

这些用例过完,基本可以确认配置可靠,而且之后每次切换环境,我也建议至少跑一遍普通问答和多轮对话两项,确认该环境没有抽风。

4.4 把日志导出与团队共享配置跑起来

Harness支持把会话和日志导出成文件,导出时注意勾选脱敏选项,确保文件不包含明文Key。团队之间配置的统一,可以把导出的配置模板(不含密钥)分享给同事,他们导入后只填自己的Key就能用。

如果团队有统一的模型调用规范,比如统一的温度、最大输出长度、系统提示词模板,可以把这些做成“预设”,放在团队共享目录或者由项目负责人统一维护,避免每个人手填参数产生差异。

5. 我在实际使用中踩过的坑

5.1 密钥字段里带特殊字符导致校验失败

有一次我复制Key时不小心把前后空格也带进去了,粘贴后工具提示“校验失败”。排查了很久,最后发现是Key里包含了一个换行符。这类问题看起来很容易避免,但实际上在Linux环境复制证书类内容时非常常见。处理方式:粘贴后最好手动确认一下最后一个字符是否完整,或者先贴到纯文本编辑器里肉眼过一遍再贴进工具。

另一个坑是Key中带有冒号或斜杠,如果配置填写时误把Key写进了URL地址的后半段,请求会直接发到错误地址。Harness对这种场景的报错信息还算清晰,会提示“地址格式不合法”,但最好还是在填写时就分清楚Key与地址字段。

5.2 多轮对话的上下文窗口估算

日常调试中我经常自建多轮对话,把历史消息一起发给模型。Harness自身不限制上下文长度,但需要留意模型的上下文窗口上限。如果发出去的messages数组总长度超过了模型能接受的范围,服务端会报错或截断早期内容。

我自己的经验公式是:估算每个会话的消息体大小,Prompt中的每个中文字符约占若干个Token,较长的系统提示词也要算进去。Harness界面里能看到每条消息的Token用量,如果发现输入Token平均接近模型上限,就该考虑精简历史消息或做截断策略,而不是盲目继续叠加。

这个工具不会替你做上下文管理,但它提供的Token统计让判断变得更直观,不至于到报错时才醒悟。

5.3 修改配置后没有立刻生效

有一次我改了某个环境的模型名,但后续请求仍然使用旧模型名发起。排查后发现,工具对“当前激活环境”做了缓存,修改配置后没有重新激活该环境,新值没有生效。解决办法很简单:每次修改完配置,回到配置页把对应环境重新设为激活状态,或者干脆重启一次应用观察是否恢复。

这个坑本质上是“UI状态与内部状态不同步”,应用应该自动刷新,但实测某些版本确实存在滞后。我的建议是养成修改配置后立即手动切换一次环境的习惯,两秒钟的事,能省十分钟排查时间。

5.4 导出的脱敏日志影响问题排查粒度

日志脱敏对安全有好处,但排查问题时会有点烦。比如你要精确比对某一个请求的完整内容,脱敏后的日志把Key换成星号,其他地方也可能被模糊掉,导致无法精准定位问题。

我的做法:排查时保留一份不脱敏的日志仅保存到安全目录,日常分享和归档都用脱敏版。Harness支持导出级别选择,可以根据场景决定是否启用深度脱敏。注意,如果只是导给同事看一眼结构,脱敏就行;如果是自己深查请求细节,就需要本地保存明文版本。

5.5 使用“批量发送”前先小流量验证

Harness支持批量发送多个测试用例,这极大提升了验证效率,但也存在风险。如果某组Prompt写得不对,批量模式下会一次消耗大量Token。我的经验是第一次先只选两三条测试用例跑一遍,确认返回格式和消耗曲线正常之后,再放开全量跑。

批量模式下如果每条用例都包含完整的历史上下文,Token消耗是倍数级增长的,上千条用例一发,账单能吓人一跳。Harness里能设置批量发送前的二次确认弹窗,建议不要关。

6. 这个工具后续还能怎么扩展

6.1 接进现有开发工作流

Harness本身是一个独立的桌面应用,但它并不封闭。它导出的配置和日志是结构化文件,可以配合外部脚本做二次处理。我自己目前的做法是:Harness负责调试和观测,正式业务代码仍然通过SDK直连模型服务,但会用Harness导出的配置作为代码的初始模板,确保两边的模型名、温度、上限等参数完全对齐。

如果你们项目里已经有一套LLM链路监控平台,Harness导出的日志也可以用来做离线分析。格式虽然不是完全统一的JSON,但关键字段如时间、模型、Token数、费用都在,写个小脚本转一下就能塞进自己的数据库。

6.2 团队配置共享的闭环

把“配置模板+Prompt模板”设置为团队标准后,新成员入职时不需要再手把手教“在哪填Key、为什么这个环境变量不对”。直接发一份模板,让他导入后把Key换成自己的就行。团队内部的Prompt规范也能统一管理,避免每个人写出来的输出风格千差万别。

成本这块尤其适合小团队用。项目负责人每周导一次用量报表,按月对比趋势,就能提前发现异常消耗,不用等下个月账单出来才知道自己环境配置错误导致了多少额外费用。

6.3 和自建测试集联动

我目前已经在Harness里维护了一组“回归测试”用例,包括基础问答、多轮逻辑推理、长文本摘要、JSON格式输出等场景。每次模型服务更新版本或者调整参数后,我都会用这组用例重新跑一遍,对比输出质量有没有变化。

这件事以前全靠手动,现在Harness的会话保存和批量发送帮了大忙。虽然没有自动断言能力,但“人工对比观察”在Prompt工程阶段是必要的,因为很多质量判断不是非黑即白,需要人工看上下文和语义。

最后再分享一个小技巧:不要把所有环境都堆在同一个工作区里。我按项目分了几个工作区,每个工作区只放对应项目的配置与会话,这样切项目时界面不杂乱,报表统计也更准确。如果你们团队有好几个产品线共用同一个账户体系,这个习惯能避免很多混淆。

最后说一下我对“桌面端”这件事的整体感受。命令行工具确实适合自动化,但真正的日常调试、观察、管理,还是图形界面更顺手。桌面端把“安全”从代码规范变成了默认行为,把“便捷”从口号变成了可见的一键切换。如果你之前一直觉得调用模型服务又乱又不安心,这个工具大概率能让你舒服不少。

相关新闻

HTTP 304 缓存机制详解:强缓存与协商缓存原理及实战配置

HTTP 304 缓存机制详解:强缓存与协商缓存原理及实战配置

1. 从一次接口联调说起:为什么 304 值得单独拎出来讲前段时间帮一个朋友排查线上问题,前端反馈说某个列表接口“有时候返回数据、有时候返回空”,抓包一看,状态码是 304,响应体确实是空的。前端同学第一反应是“后端挂…

2026/10/20 5:29:08 阅读更多 →
Agent工作流与Skills:工程化约束让智能体稳定交付

Agent工作流与Skills:工程化约束让智能体稳定交付

给 Agent 配工作流这件事,我琢磨了挺久。这段时间接触了不少做 Agent 的项目,大家都有同一个感受:单次调用模型很容易,但让 Agent 稳定完成一个多步骤任务,难得多。你可以给模型写一百条提示词,它还是会在某…

2026/10/20 5:29:08 阅读更多 →
拖车角度感知算法联调:从传感器配置到多传感器融合的仿真验证

拖车角度感知算法联调:从传感器配置到多传感器融合的仿真验证

拖车角度感知这活儿,一句话说难不难,就是把拖车相对牵引车转了多少度量出来。可真要做倒车辅助、自动倒车这类功能,这个角度就是命根子。最近我在aiSim上做了一轮半挂车拖车联调,核心任务就是把传感器视角下的拖车角度感知算法完整…

2026/10/20 5:29:08 阅读更多 →

最新新闻

主动学习新思路:损失预测模块如何精准筛选高价值样本

主动学习新思路:损失预测模块如何精准筛选高价值样本

1. 为什么主动学习要换一种采样思路做深度学习项目,尤其在数据标注预算有限的时候,大家最先想到的办法多半是“先随便标一部分,训练一版模型,再用模型挑一些‘难样本’送给标注员”。这套逻辑本身没问题,难就难在“难样…

2026/10/20 6:02:23 阅读更多 →
REA架构:React+Electron+Ant Design桌面应用开发实战

REA架构:React+Electron+Ant Design桌面应用开发实战

项目标题: "rea"这个标题乍一看像拼写错误,也像某个缩写,又像随手打出来的三个字母——但正因如此,它在当前语境下反而具备极强的信号价值。过去半年里,我在多个技术社区、设计协作平台和前端开发群组中反复观察到&…

2026/10/20 6:02:23 阅读更多 →
验证码逆向分析实战:某DN验证码机制与加固思路

验证码逆向分析实战:某DN验证码机制与加固思路

验证码逆向分析这个方向,我前前后后接触了不少轮。最近一次是在评估某内部系统的登录安全时,碰到某DN验证码这个环节,于是专门花了一段时间,把它从请求链路、JS执行逻辑、参数生成到服务端校验机制整个拆了一遍。这篇文章就是基于…

2026/10/20 6:02:23 阅读更多 →
PyTorch实战:从零搭建神经网络全流程指南

PyTorch实战:从零搭建神经网络全流程指南

1. 为什么选择 PyTorch 快速搭建神经网络1.1 从零手写到框架搭建的认知转变很多刚入门深度学习的朋友,第一次接触神经网络时,往往是从 NumPy 手写反向传播开始的。我自己当年也是这样,用 NumPy 实现一个两层全连接网络,光矩阵求导…

2026/10/20 6:02:23 阅读更多 →
ArtCraft:数字工具与实体材料融合的创意生产方法论

ArtCraft:数字工具与实体材料融合的创意生产方法论

1. 项目概述:ArtCraft 不是“艺术手作”的简单拼接,而是一套可落地的创意生产方法论ArtCraft 这个词乍看像英文单词组合,但实际在中文语境里它早已脱离字面意思,成为一类特定创作实践的代称——它指的不是泛泛而谈的“手工艺术”&…

2026/10/20 6:02:23 阅读更多 →
PLMS自适应滤波器:脉冲噪声下的LMS鲁棒性改进原理与Matlab实现

PLMS自适应滤波器:脉冲噪声下的LMS鲁棒性改进原理与Matlab实现

前几天,一位做车载音频的工程师朋友跟我抱怨,说他的回声消除算法在实验室里测得好好的,一到实际路测就“抽风”:安静路段收敛得很干净,可一旦出现开关门、喇叭鸣笛这类突发噪声,滤波器的权值就像被弹弓弹了…

2026/10/20 6:01:22 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/18 12:16:16 阅读更多 →