news 2026/9/12 12:58:04

2025年17款AI编程Agent全面盘点:从补全到自主执行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2025年17款AI编程Agent全面盘点:从补全到自主执行

过去两年我有个很矛盾的感觉:AI编程工具越出越多,但很多人的用法还停留在“高级搜索”。我自己也经历过那个阶段——复制报错贴给ChatGPT,再手动把答案改到能跑为止。直到2025年,我用上了真正意义上的编程Agent,才意识到之前的工具之所以“夯”,不是模型不够强,而是产品形态把模型的能力卡在了单点输出上。这篇文章就把我实测和拆解过的17款编程Agent平台一次性盘清楚,顺便说说我理解的“由夯到拉”到底是怎么发生的。

老规矩,我不打算把每个工具都吹成神,也不打算简单堆参数。我尽量用“我在什么场景下用它、它帮我省了什么、它又在哪里让我想摔键盘”的视角来讲,这样你拿去就能判断哪个适合自己。

1. 先盘清楚:编程Agent和AI编程助手差在哪

在正式盘点17款平台之前,必须先把概念理顺。因为“AI编程助手”和“编程Agent”在市面上经常被混着叫,但它们的底层逻辑完全不同。如果你没搞清楚这个区分,后面看任何榜单都会晕。

1.1 三层能力模型:补全、对话、自主执行

我把市面上的AI编程工具按能力深度分成三层。

第一层是补全与检索。典型代表是GitHub Copilot最原始的Tab补全、Tabnine。它们做的事情是:根据你光标前后的代码和仓库里的相似代码,预测你接下来要写什么。这一层的核心指标是“下一个Token猜得准不准”,产品体验的核心是“快、不打断思路”。

第二层是对话与重构。典型代表是Cursor的Chat、Cline、Continue。它们能理解你选中的代码块或整个文件,通过对话的方式帮你解释代码、生成修改建议、做多文件重构。这一层的关键指标是“上下文理解得准不准”,产品体验的核心是“能让AI一次性改对多个地方”。

第三层是自主执行。典型代表是Claude Code、OpenAI Codex、Devin、OpenHands。它们不只是“给建议”,而是真的在一个沙箱或终端里帮你改文件、跑命令、跑测试、甚至提Pull Request。这一层的核心指标是“任务完成率和长链路稳定性”,产品体验的核心是“你敢不敢放手让它干活”。

这三层不是严格的升级关系,更像是一个工具链往工程下游延伸的过程。补全解决的是“单行代码怎么写”,对话解决的是“这块逻辑怎么改”,自主执行解决的是“这个issue怎么闭环”。现在很多工具都在同时具备这三层能力,但不同工具的侧重差异非常大。

1.2 我用“夯”和“拉”划分的坐标系

标题里的“由夯到拉”,我理解的是这么一回事——“夯”是指操作密度高、需要人反复介入的工具状态:你要手动把上下文喂给它,要在IDE和终端之间来回切换,它改完一个文件你还得自己去跑测试、看效果、再回来告诉它哪里不对。整个过程像用一把大锤敲钉子,力量够但动作重。

“拉”则是指工具把中间环节接过去之后呈现的顺滑感:你描述需求,它自己规划步骤;你给它报错,它自己定位问题;改完代码,它自己把关联文件一起调整好。体验上像“拉面”一样,一团面在手里几下就拉成均匀的细条。

但注意,我不是说“拉”一定比“夯”好。像Devin这种云端重Agent,用起来依然很“夯”——启动慢、任务长、中途还要你确认很多次——但它的价值恰恰在于能端到端干完一整件事。所以我后面盘点时,会一直围绕两个维度来评价:人的操作密度机器的自主程度。这两个维度组合起来,17款平台可以划进四个梯队,正好对应后面四个章节。

2. 轻量梯队:把“补全”做到极致的老牌选手

第一梯队是我说的“轻量型”,它们主要跑在第一层能力模型上,核心价值是“在你写代码的过程中不留痕迹地帮忙”。这类工具的体验已经很“拉”了,因为它们几乎不需要你切换上下文,你正常敲键盘,它在你身后默默补全。但能力边界也明显:它们很难跨越大段逻辑去帮你重构整个模块。

2.1 GitHub Copilot:续写体验至今无人能打

GitHub Copilot是2021年发布的开山之作,也是我日常使用频率最高的工具。它最厉害的地方不是“能生成多少代码”,而是补全的时机感——几乎你刚敲下函数名的前几个字母,它给出的建议就已经把你脑子里想的那行代码写完了。用了四年下来,我对它的评价是:Tab补全的准确率依然是行业标杆,其他家要追上的地方不在模型,而在交互细节。

Copilot现在已经不只是补全,它有Chat、有Workspace、有PR Review,底层模型也从最初的Codex换成了GPT-4o、Claude等多模型混用。但我个人建议,如果你只把它当补全工具用,其实就已经值回票价了。比较坑的一点是,在超大仓库里它的补全会偶尔“自作聪明”——你明明想写一个简单实现,它给你补出一个带复杂设计模式的方案。应对方法是及时用Esc打断,别惯着它。

2.2 Tabnine:私有化场景下的刚需选择

Tabnine是补全赛道的常青树,它的核心卖点从来不是“模型最大最强”,而是代码不出内网。银行、军工、医疗这类对代码合规要求极高的团队,不会允许你把代码丢给公有云API,这时候Tabnine的自托管方案几乎是唯一解。它支持在本地或私有云部署模型,同时提供完善的审计日志,数据链路完全自主可控。

我自己在一个朋友的券商项目里见过它的真实用法:几十个人共享一个内网GPU集群,Tabnine在私有模型上跑的补全,准确率虽然没有Copilot那么惊艳,但胜在“合规”,而且训练数据可以跟着团队代码风格走。如果你在涉密或强合规行业工作,Tabnine应该作为首选来评估。代价也明显——你需要自己维护推理服务,硬件成本不低。

2.3 Amazon Q Developer:AWS生态里的“口粮”

Amazon Q Developer的前身是CodeWhisperer,2024年改名为Q Developer之后,补全能力只是它的基础功能,真正值钱的是和AWS深度绑定的场景化能力。比如你在IDE里写Lambda函数,它能直接生成对接S3、DynamoDB、SQS的完整代码,而且AWS SDK的版本和最佳实践都给你匹配好,这部分体验是Copilot给不了的。

它的Agent模式可以在终端里跑多步骤任务,比如“帮我排查这个EKS集群的日志”这种操作,它会自己连着执行好几条命令再给你汇总结论。我在兼职帮朋友搞过一段AWS数据管道,体感是:只要你在AWS生态里,它就比通用型Agent靠谱;一旦离开AWS,它就退化成普通补全工具。个人版免费额度很友好,企业版大约19美元一个月,用于生产可以接受。

2.4 Continue:开源党的自由组装方案

Continue是VS Code和JetBrains系的开源插件,它的哲学是“模型和上下文都由你自定义”。你可以接OpenAI、Claude、本地Ollama,甚至公司内部的一个私有化模型,只要实现了OpenAI兼容的接口,都能接进来。同时它有一个“上下文提供器”的机制,可以用@codebase问整个仓库,用@docs查文档,用@issue直接定位GitHub issue。

和Cline这类偏自主执行的插件相比,Continue更像一个“面面俱到的结对选手”,它的编辑建议是让你确认后再应用,而不是直接改文件。对你我这样讲究“人始终在环里”的开发者,这是一层安全感。缺点是它太灵活了,配置规则、斜杠命令、Agent设定都要自己折腾,新手很容易在配置阶段就劝退。适合喜欢“攒机”而不是“买整机”的人。

3. IDE融合梯队:真正开始“懂工程”的一代

第二梯队的产品有一个共同特征:它们不再只做“前台补全”,而是把整个工程的上下文吃进去,在多文件维度上帮你做修改。这个转变非常关键——因为代码库的真实复杂度从来不在单个文件里,而在文件之间的调用关系。我把它们叫做“IDE融合梯队”,是因为它们都以IDE为战场,以“人机协作改代码”为核心。

3.1 Cursor:把一个好IDE改造成对话体

Cursor是目前最出圈的AI IDE,它的成功路径是:拿Visual Studio Code的底座,把AI能力揉进每一个交互入口。Tab补全、Cmd+K行内编辑、Chat侧边栏、Agent模式,四个层次覆盖了从“写一行”到“改一个模块”的全过程。

我最看重的是它的Agent模式:你让它“给这个接口加缓存,并更新所有调用方”,它能自己定位到入口文件、逐个打开相关文件、改完后列一份diff清单。这种体验在2024年之前是想象不到的。但它不是没有毛病:项目膨胀之后,它的索引和上下文会变“飘”,容易在无关文件里编出不存在的引用;另外多模型选择是好事,但也意味着你要自己承担选错模型的后果。价格方面Pro版大约20美元一个月,对全职开发者来说完全值得。

3.2 Windsurf:从补全工具到Agent IDE的翻身仗

Windsurf的前身是Codeium,2025年被Google收购之后,它在AI编程圈的声量一路走高。它最有辨识度的功能是Cascade,一种支持多步骤Agent执行的交互模式。和Cursor的区别在于,Windsurf把“Agent自主执行”设计得更温和:它会卡在关键决策点向你确认,而不是一路闷头改到底。这种“做过站式”的确认逻辑,对刚接触Agent编程的新人非常友好。

我在一个内部工具项目里试过Windsurf,体感是:补全的反馈速度很快,Cascade在处理前端组件时尤其顺手,能直接操作本地环境跑Dev Server给你看效果。不足之处是它的上下文管理机制没有Cline那么透明,你在长对话里很难判断“它现在到底记得哪些文件”。免费额度给得很大方,很适合先零成本试水。

3.3 Cline:能自己动手改文件、跑命令的VS Code插件

Cline最开始叫Claude Dev,后来因为Anthropic的品牌要求改名。它本质上是把一个自主执行的Agent塞进了VS Code插件里,核心能力是读写项目文件、执行终端命令、打开预览页面。和Cursor的Agent模式不同,Cline的整个过程是可观测、可干预的:它每做一步都会展示具体的diff和命令行输出,你随时可以打断并纠正方向。

我从2024年开始重度使用Cline,最喜欢的场景是“让我看看这个bug到底出在哪”。它会从复现问题开始,一路加日志、跑测试、改代码,最后给你一套完整的修复方案和验证结果。但这里必须提醒:不要给它“自动同意所有命令”的权限,否则它可能在某个奇怪的时刻执行一个你完全没想到的命令。我的习惯是:让它先立计划,我审计划,再放行执行。

3.4 Augment Code:企业级上下文工程课的优等生

Augment Code是这四款里最偏企业服务的。它的主打是“理解超大代码库”,而且不是简单地把所有文件塞进上下文,而是做了比较深的依赖分析和引用追踪,可以跨仓库理解某个服务的上下游关系。对大厂那种几十万模块的Monorepo来说,普通Agent早就被上下文撑爆或者检索不到关键信息,Augment在这种场景下表现会好很多。

但它的侧重点决定了它不是一个“执行力很强”的Agent。我用下来的感受是:它更像一个记忆力超强的结对程序员,你问它什么都能答得很准,但你让它“自动改50个文件并跑完测试”,它就不太愿意了。适合技术委员会、架构组这种需要全局理解和大量代码审查的岗位,不太适合个人开发者。

4. 自主执行梯队:从“给建议”到“直接干”

第三梯队是我个人觉得2025年变化最剧烈的一层。这些工具不再满足于在IDE里陪你写代码,而是把自己定位成“能独立完成一个小任务的工程师”。它们通常在终端或云端沙箱里运行,权限更大、自主性更强,相应地,出错的可能性也更大。用这类工具,你要时刻记住一句话:它是实习生,不是外包团队。

4.1 Claude Code:终端里的全能“实习生”

Claude Code是Anthropic在2025年推出的终端Agent,我愿称之为“目前最接近实习工程师体验的工具”。你可以在终端里一行命令唤起它,给它一个GitHub issue的描述,它会自己读仓库、写代码、跑测试、甚至根据报错迭代修改。它最难得的一点是长链路任务的稳定性——很多Agent跑着跑着就忘了初始目标,Claude Code在复杂任务中还能保持相对清晰的To-Do List。

Claude Code 2.0之后还加入了GUI模式、跨平台支持和更完善的MCP(模型上下文协议)支持。我日常的用法是:把耗时间的机械改造(比如批量修改接口入参、统一日志格式)丢给它,我喝杯咖啡回来检查结果。代价是烧token烧得像喝水,一个上午的重度使用可能抵得上平时一周的量。建议在Anthropic Console里设一个消费上限,别问我怎么知道的。

4.2 OpenAI Codex:面向Agent时代的重拳

这里说的Codex,不是当年给Copilot供底座的旧Codex模型,而是OpenAI在2025年重新打造的Agent产品线:Codex CLI、IDE扩展,以及云端Codex。它的设计目标非常明确——不是“补全工具”,而是“软件工程Agent”。尤其云端Codex可以直接从GitHub issue开始,自己开分支、写代码、提交PR,跑在一个OpenAI管理的沙箱里,完全不占你本地资源。

实测下来,Codex生成的代码风格很“科班”,单测写得尤其认真,像是受过严格的工程训练。但它的长链路调试能力还存在幻觉,如果任务涉及多个服务联调,容易出现“A修好了,B又改坏了”的情况。好消息是它已经集成进ChatGPT的Plus/Pro订阅,不用额外付费。如果你是OpenAI生态的深度用户,建议从Codex CLI开始,先让它处理那些“隔离性较强”的小任务。

4.3 Aider:开源终端的轻骑兵

Aider是开源圈子里活得最久、口碑最稳的终端AI编程工具之一。它的核心设计理念是“Git就是记忆”——每次修改代码前,Aider会自动把当前状态提交到本地Git,所以任何一次AI的误操作都可以随时回滚。这个设计在实战里太重要了,因为其他Agent出错时你可能要翻文件、找备份,而Aider直接reset到上一个commit就完事。

Aider支持超多模型,从GPT、Claude到DeepSeek和各类本地模型,接口一换就能跑。它还能用watch模式监控文件变化自动补全。对于习惯了命令行的老派开发者,Aider的体验可以用“干净利落”来形容。缺点是它没有图形界面,所有交互都在终端里,新手上手门槛偏高。但如果你想理解Agent编程的本质,Aider的源码和工作原理值得认真读一遍。

4.4 Devin:云端“AI软件工程师”的样本

Devin是Cognition公司2024年3月发布的“首款AI软件工程师”,至今仍然是云端自主Agent里话题度最高的一款。它和所有IDE插件/终端工具都不一样:Devin跑在云端,自带一个独立的云桌面,能开终端、能看浏览器、能操作文件,你只需要通过对话界面告诉它任务,它就在云端的“自己家”里干完活。

Devin的典型场景是处理GitHub issue:它会fork仓库、复现bug、写补丁、跑测试、最后生成一个PR等你审查。对团队来说,这相当于多了一个不会闹情绪的远程实习生。但我必须说实话,它的速度不快,任务经常要跑十分钟以上,而且消费很高,个人会觉得肉疼。比较适合需要把“模糊需求变成可审查PR”的团队,不适合想一个Tab一个Tab补全的交互式开发。

4.5 OpenHands:能本地部署的自主Agent

OpenHands来自OpenDevin项目改版,是目前开源社区里最接近Devin体验的方案。它的核心是一个“对话驱动的AI软件工程师”,同样可以写代码、跑命令、浏览网页,但最吸引人的是它可以完全本地化部署。你通过Docker在自建服务器上跑一个OpenHands实例,数据不出内网,这在很多公司是硬性要求。

我曾在公司内网搭过一个尝鲜实例,体感是:配置过程需要一些DevOps基础(Docker、网络、模型API都要打通),但一旦跑起来,稳定性和可控性都不错。它的社区还贡献了大量工具和技能包,你可以给它自定义“技能”——比如“对接公司内部的工单系统”。如果你手上有现成的GPU服务器或K8s集群,OpenHands是性价比最高的自主Agent方案。

5. 从一句话到上线:Prompt-to-App的全栈生成类

第四梯队的产品改变了玩法:它们不再以“代码文件”为单位工作,而是以“应用”为单位。你给它一段自然语言需求,它直接在云端或浏览器里把一个可运行、可部署的应用搭给你。这类工具把“拉”的感觉拉到了极致——需求到应用的路径被压缩到最短。当然,代价是业务一旦复杂,修改成本会迅速上升。

5.1 Replit Agent:云IDE里的“项目外包商”

Replit Agent是Replit在2024年埋下的一步大棋,它把Agent能力直接嵌入了云端IDE。你输入“帮我做一个带登录和数据库的待办事项应用”,它会在云端自动创建项目、安装依赖、建好数据库表,然后给你一个可以直接访问的URL,整个过程基本不需要你碰终端。对一个只是想验证想法的野生开发者来说,这种体验堪称降维打击。

Replit Agent的优势是“闭环”:从开发、运行到部署都在一个平台里完成,账号体系、数据库、存储都是现成的。我建议它适合做MVP和Hackathon项目,不适合做复杂的业务系统——因为当项目迭代到一定程度,Agent对既有代码的记忆和修改准确率会明显下降,你会陷入“不断用对话修修补补”的泥潭。

5.2 Bolt:浏览器里直接跑代码的惊艳体验

Bolt.new是StackBlitz推出的生成式全栈开发工具,技术核心叫WebContainers——说白了就是在浏览器里跑Node.js,不需要本地环境就能完成代码的生成、运行和预览。我在浏览器里让它做一个带后端API的React应用,它给我生成代码、安装依赖、启动Dev Server、渲染页面,全程只花了两杯咖啡的时间,视觉冲击力相当强。

Bolt非常适合前端快速原型、作品集项目、以及给客户做Demo演示。它的免费额度能让你体验整个流程,付费版大约20美元一个月。需要注意的是,WebContainers对原生模块、某些系统级依赖的支持有限,一旦项目需要特定的Node原生库或Docker,Bolt就得吃瘪。另外它生成的代码习惯偏全栈一体化,后期想拆成前后端分离的工程结构,要花不少力气重构。

5.3 v0:前端工程化的天花板

v0是Vercel出品的AI前端生成工具,主打“Talk to Code”。它的拿手好戏是:你描述一个页面结构,比如“一个带Hero区域、价格表和用户评价的SaaS落地页”,它能生成高质量、可直接运行的React + Tailwind组件,代码的工程化程度明显高出其他同类工具一个档次。因为Vercel本身有很深的React生态积累,v0生成的组件在可维护性、响应式、可访问性方面都做得相当好。

v0还推出了v0 Squad,一个多Agent协作的玩法:规划Agent负责拆解需求,UI Agent负责生成组件,Review Agent负责质量检查。我的实际体验是,做营销页面、组件库原型、内部中台界面时效率奇高。但它解决的问题主要集中在前端呈现层,复杂的后端联动、权限系统、状态管理架构,还是要靠你自己。它适合前端工程师作为“倍增器”,不太适合完全不懂代码的人。

5.4 MetaGPT:把软件公司塞进一个Agent框架

MetaGPT是一个开源的多Agent框架,它把软件公司的组织流程(产品经理、架构师、工程师、测试工程师)抽象成了多个角色Agent,并定义好它们之间的协作顺序。你输入一句“做一个类似微信读书的App”,它会依次产出PRD文档、系统设计文档、任务拆解、代码实现和测试用例。这一套流程跑下来,你会看到一份结构相当完整的项目文档。

MetaGPT的最大价值不在代码质量,而在流程规范化:它把“怎么从需求到设计到落地”的SOP固化进了系统,适合做技术调研、项目冷启动、教学演示。缺点是它生成的代码往往偏通用,离生产级还有距离;而且多Agent协作会消耗大量的模型调用,运行成本不低。如果你想了解“Agent框架与编排”这件事,MetaGPT是一个绝佳的学习样本。

6. 选型和避坑:什么场景该用哪款

17款盘完了,最后给的必须是“拿去就能用”的建议。我不会告诉你哪一款天下第一,因为不同处境下的最优解差距太大了。

6.1 场景对照表

使用场景首选理由
个人全栈开发,注重日常效率和补全体感GitHub CopilotTab补全最丝滑,Chat和Agent能力均衡
涉密/强合规环境,代码不能出内网Tabnine 或 OpenHands支持私有化部署,数据不出域
专注AWS生态开发Amazon Q DeveloperAWS API和最佳实践集成最深入
想低成本试水Agent编程,偏好可视化Windsurf 或 Cursor交互对新手友好,免费额度充足
老手喜欢命令行,想自主控制一切Aider 或 Claude Code轻量、透明、可回滚、适合深度工作流
需要Agent独立完成一个issue闭环Devin 或 OpenAI Codex云端沙箱,能自主规划、提交PR
从零快速做一个可展示的Web应用Replit Agent 或 Bolt免配置,一句话出能跑的应用
团队希望在大仓库里做深度代码问答和审查Augment Code上下文理解能力强,专门服务大型代码库
想研究Agent框架和多Agent协作机制MetaGPT开源、流程完整、学习价值高

6.2 我踩过的坑和通用经验

盘点最后,分享几条我自己用这17款工具踩出来的经验,直接说结果,不抒情。

第一,永远不要给Agent太多自动权限。无论是Cline还是Claude Code,自动执行命令的开关一定要慎重。你永远想不到它会为了“验证问题”而去执行一条清理脚本。我自己曾经让Claude Code帮忙处理一个磁盘占用问题,它差点把构建缓存目录给清了。权限的最小化原则,在这里同样适用。

第二,上下文给得越精确,结果越靠谱。很多Agent改代码改飞了,不是模型不行,而是你一开始给它的问题太模糊。与其说“帮我优化一下这个模块”,不如说“这个模块里users表的查询在流量高时超时,建议走缓存,注意保持接口返回结构不变”。给足约束条件,Agent的产出会完全不一样。

第三,代码风格漂移是个隐形坑。不同模型生成代码的命名习惯、注释风格、设计模式选择差异很大,混着用多个Agent,仓库风格会很快变得像四个实习生分别写的。解决方式是从第一行代码起就配置好.editorconfig、ESLint/ Ruff规则,并要求Agent在修改时严格遵循现有代码风格,最好在Prompt或规则文件里写明。

第四,token消耗一定要设预算。Agent类工具跑的是一次次的长对话,费用累积速度远超你的直觉。我自己有半个月没看用量,账单直接飙到三位数美元。现在所有能设置消费上限的工具,我都会第一时间设置好再开工。

第五,任何Agent的产出都要在合并前过一遍diff。Agent生成代码的高效率是真实的,但幻觉风险同样真实存在。它可以非常自信地调用一个不存在的API、引用一个已删除的配置项。把“让Agent自己跑一遍测试”作为最低验收标准,然后把diff认真看一遍,再交给CI。养成这个习惯之后,Agent编程才真正从“玩具”变成“生产力”。

说到底,“由夯到拉”这件事,本质上不是AI替我做了多少事,而是它把我从重复劳动里一点点解放出来。我现在的工作习惯是:主观判断和关键设计永远自己拿主意,补全、重构、测试、写文档这类能被清晰描述且容易被验证的活,尽量丢给Agent。这个边界划清楚之后,你会发现这些工具不是来抢饭碗的,而是来给你腾出时间去做更值得做的事。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 12:52:37

基于Django的智慧医疗挂号系统设计与实践

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

作者头像 李华
网站建设 2026/9/12 12:51:39

LS信道估计与深度学习残差校正的一对一映射方法

简介:本资源是一份面向通信工程与人工智能交叉领域初学者及进阶研究者的实践型代码包,聚焦深度学习在无线信道估计中的落地应用,重点解决IS(干扰抑制)场景下传统估计算法精度受限的问题。压缩包共7个文件,含…

作者头像 李华
网站建设 2026/9/12 12:50:34

聚簇索引和非聚簇索引简介

聚簇索引,是对磁盘的数据按照一个或多个列进行重新排序的算法。 磁盘上数据的存储顺序与索引的顺序是一致的。 一般情况下,主键会默认创建聚簇索引。一张表中只能有一个聚簇索引。 所以,在MySQL中,一张表如果存在主键&am…

作者头像 李华
网站建设 2026/9/12 12:48:38

RK3588与RK3588S工业选型本质差异解析

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

作者头像 李华