Bolt+Cursor实战:从零构建AI语音助手与播客应用
1. 从“写代码”到“说需求”AI 编程工具链到底改变了什么过去两年我身边不少做产品的朋友都经历过一种很割裂的状态脑子里有个很具体的想法比如“我想做一个能实时对话的语音助手”或者“我想做一个自动生成播客节目的工具”但真要落地要么得找开发排期要么自己啃前端后端一堆框架光环境配置就能耗掉一个周末。而现在Bolt 和 Cursor 这类工具的组合把这件事的门槛拉到了一个前所未有的低点——你不需要先成为程序员才能开始做软件。这篇文章想聊的就是怎么用 Bolt Cursor 这套组合把“每个人都可以拥有自己的专属软件”这句话从口号变成可执行的动作。我会围绕两个典型场景展开一个是 AI 实时语音助手一个是 AI 播客应用。前者考验的是实时交互链路和音频流处理后者考验的是内容生成流水线和文件管理。两个场景都不算简单但用对工具之后从零到能跑通的 Demo时间可以压缩到几个小时以内。先明确一下这套组合的分工。Bolt 的核心价值在于“从一句话生成一个可运行的项目骨架”它更像一个能理解自然语言的产品经理加初级全栈工程师你描述需求它给你一个带界面、带基础逻辑、能直接在浏览器里预览的工程。Cursor 则是“在已有代码基础上做精细手术”的编辑器它深度集成了 AI 能力能读整个项目上下文适合在 Bolt 生成的骨架之上做功能增强、逻辑修正和性能调优。两者配合的逻辑是Bolt 负责从 0 到 0.6Cursor 负责从 0.6 到 0.9剩下的 0.1 靠你自己的判断和调试。注意Bolt 和 Cursor 都是工具不是魔法。它们能极大加速“从想法到可运行原型”的过程但如果你对目标场景的技术链路完全没有概念生成出来的东西大概率跑不通或者跑通了也不知道怎么改。所以下面每个场景我都会先把核心链路讲清楚再讲怎么用工具去实现。适合读这篇内容的人大概有三类一是产品经理或创业者想快速验证一个 AI 应用的想法二是刚入门的开发者想通过实际项目理解 AI 应用的完整链路三是有经验的工程师想看看这套新工具链能不能提升自己的原型开发效率。不管你是哪一类接下来的内容都会尽量把“为什么这么做”和“具体怎么做”都讲透。2. 场景一AI 实时语音助手的核心链路与 Bolt 生成策略2.1 实时语音助手到底难在哪里很多人第一次听到“AI 实时语音助手”脑子里浮现的是科幻电影里那种无缝对话的场景。但真动手做的时候第一个卡点往往不是 AI 模型本身而是音频流的处理。实时语音助手的核心链路可以拆成四段采集音频 → 实时传输 → 语音识别 → 生成回复 → 语音合成 → 播放。这中间任何一段出现延迟用户体验就会从“对话”变成“等待”。我见过不少新手一上来就去调大模型的对话接口结果发现文字回复很快但语音播放总是慢半拍。问题通常出在两个地方一是音频采集的缓冲区设置太大导致每次发送的数据包延迟高二是语音识别和语音合成用了不同的服务网络往返时间叠加起来就明显了。所以在用 Bolt 生成项目之前你得先想清楚你是要做一个“按住说话”的助手还是“随时监听”的助手前者实现简单后者体验更好但技术复杂度高一个量级。对于大多数想快速验证想法的人来说我建议从“按住说话”开始。它的链路更短调试起来也更容易定位问题。Bolt 对这种交互模式的支持很直接你只需要在描述里写清楚“一个按钮按住时开始录音松开后发送音频并显示识别结果和 AI 回复”它就能生成一个基本可用的界面和逻辑框架。2.2 用 Bolt 生成项目骨架时的描述技巧Bolt 的生成质量高度依赖你的描述质量。我试过用一句话描述需求也试过用一段结构化的说明后者的成功率明显更高。所谓结构化不是让你写技术文档而是把“用户看到什么、做什么、系统返回什么”这三件事说清楚。比如你可以这样描述做一个网页应用页面中央有一个圆形按钮。用户按住按钮时按钮变色并开始录音松开后按钮恢复原色页面下方显示“识别中...”的提示。识别完成后显示识别出的文字然后自动调用 AI 生成回复回复文字显示在识别文字下方。最后自动播放回复的语音。这段描述里包含了界面元素、交互状态、数据流向和反馈时机。Bolt 拿到这样的输入生成的代码结构会清晰很多后续你在 Cursor 里改起来也更容易。相反如果你只说“做一个语音助手”它可能会生成一个带输入框和发送按钮的聊天界面跟你的预期差很远。生成完成后Bolt 会给你一个可以直接预览的页面。这时候先别急着改代码而是把整个交互流程走一遍看看哪些环节是通的哪些是断的。常见的断点包括浏览器没有请求麦克风权限、音频格式不被识别接口支持、AI 回复的文本没有触发语音合成。这些问题在 Bolt 的预览环境里不一定全部暴露但至少能让你对项目结构有个直观感受。2.3 把项目迁移到 Cursor 后的第一轮改造Bolt 生成的项目可以直接导出到本地然后用 Cursor 打开。第一次打开时我建议先做三件事通读目录结构、找到核心逻辑文件、确认环境变量配置方式。Bolt 生成的项目通常会把前端和后端逻辑放在一起核心的音频处理和 API 调用会集中在少数几个文件里。找到这些文件你就找到了后续改造的主战场。第一轮改造的重点通常是替换掉 Bolt 默认使用的服务。Bolt 为了让你快速看到效果可能会用一些免费的、有限额的接口。这些接口在演示阶段够用但延迟和稳定性往往不理想。在 Cursor 里你可以选中相关的代码块然后用自然语言描述你想替换成什么。比如把这里的语音识别调用替换成一个支持流式识别的接口要求每 200 毫秒返回一次中间结果。Cursor 会基于你选中的代码和整个项目的上下文给出修改建议。这里有个经验不要一次性让 Cursor 改太多东西。一次改一个模块改完立刻测试。实时语音助手的链路长一次性改多个环节出了问题很难定位是哪个环节导致的。2.4 延迟优化的三个实操切入点实时语音助手的体验好坏延迟是核心指标。我在实际调试中总结出三个最有效的优化切入点按优先级排列优化点常见问题调整方向音频采集缓冲区缓冲区过大导致每次发送的数据包间隔长减小缓冲区提高发送频率语音识别模式使用整段识别而非流式识别切换到流式识别边录边出文字语音合成触发时机等 AI 完整回复后才开始合成按句子分段合成边生成边播放第一点最容易被忽略。很多默认的音频采集配置会攒够一秒甚至更长的数据才发送一次这在录音场景没问题但在实时对话场景就是灾难。把缓冲区调到 100 到 200 毫秒延迟感会立刻下降一个档次。第二点取决于你用的识别服务是否支持流式如果不支持可以考虑换一个。第三点需要在代码里做分段处理把 AI 返回的长文本按标点切成短句每切出一句就送去合成而不是等全部生成完。在 Cursor 里做这些调整时你可以直接把问题描述给 AI比如“现在的语音识别要等录音结束后才开始我想改成边说边识别应该改哪里”。Cursor 会定位到相关代码并给出修改方案。但你要自己判断方案是否合理因为流式识别涉及到音频分片和结果拼接逻辑比整段识别复杂不少。3. 场景二AI 播客应用的生成流水线设计3.1 播客应用和语音助手的本质区别表面上看AI 播客应用和 AI 语音助手都涉及语音但两者的技术重心完全不同。语音助手是实时交互核心指标是延迟播客应用是内容生产核心指标是内容质量和生产流程的自动化程度。换句话说语音助手追求“快”播客应用追求“稳”和“好”。一个典型的 AI 播客应用链路大概是输入主题或素材 → 生成播客脚本 → 文本转语音 → 音频拼接与后期 → 导出文件。这中间每一步都可以引入 AI 能力但每一步也都有各自的坑。比如脚本生成如果你直接让大模型写一段播客对话它可能会写出很生硬的“主持人 A 说...主持人 B 说...”这种格式听起来像在念课文。要让它自然你得在提示词里加入风格约束和对话节奏的示例。用 Bolt 生成播客应用时我建议把重点放在“流程可视化”上。也就是说让用户在界面上看到每一步的进度和结果而不是点一个按钮等半天。Bolt 很擅长生成这种带步骤指示器的界面你只需要在描述里强调“每一步完成后显示预览用户可以修改后再进入下一步”。3.2 脚本生成环节的提示词工程播客脚本的质量直接决定了最终音频的听感。我在这个环节踩过的坑最多总结下来有几个关键点角色设定要具体不要只说“两个主持人”而是描述他们的性格、说话习惯和互动方式。比如“一个语速快、喜欢打断对方的科技爱好者和一个语速慢、喜欢总结的行业观察者”。对话节奏要控制在提示词里明确要求“每段对话不超过三句交替发言适当加入语气词和停顿标记”。内容结构要清晰把播客分成开场、主体、结尾三部分每部分给出字数范围避免生成内容过长或过短。这些约束在 Bolt 生成的初始代码里通常是没有的需要你在 Cursor 里找到调用大模型的函数把提示词模板改掉。Cursor 的好处是它能理解你改动的意图如果你在提示词里加了“加入停顿标记”它可能会顺便帮你在后续的语音合成环节加上对停顿标记的处理逻辑。3.3 文本转语音的选型与拼接逻辑文本转语音这个环节选型比调参重要。不同的语音合成服务在音色自然度、多音字处理、情感表达上差异很大。我的建议是先用一个服务跑通全流程再根据实际听感决定是否替换。因为不同服务的接口格式和返回的音频格式可能不同频繁替换会浪费大量时间在格式转换上。拼接逻辑是另一个容易被低估的环节。播客通常有多段对话每段对话单独合成后需要拼成一个完整文件。这里要注意两点一是段与段之间的静音间隔要合理太短显得急促太长显得拖沓一般 300 到 500 毫秒比较自然二是如果不同段用了不同的音色拼接后的音量要统一否则会出现一段声音大一段声音小的情况。在 Cursor 里处理拼接逻辑时你可以让 AI 帮你写一个音频处理函数输入是多个音频文件的路径和间隔时长输出是拼接后的文件。这个函数本身不复杂但涉及到音频格式的读取和写入用现成的库会比手写靠谱得多。3.4 导出与文件管理的细节播客应用的最后一步是导出。看起来简单但实际做的时候有几个细节值得注意。首先是文件命名如果用户生成多个播客文件名最好包含主题和时间戳方便查找。其次是导出格式常见的音频格式有 MP3、WAV、AAC 等MP3 兼容性最好但音质有损WAV 音质好但文件大。如果应用面向普通用户MP3 是更稳妥的选择。还有一个容易被忽略的点是生成过程的中间文件管理。脚本文件、分段音频文件、最终合成文件这些如果都堆在一个目录里时间长了会很乱。我通常会在项目里建一个output目录下面按“日期/播客标题”的方式组织子目录每个播客的中间文件和最终文件都放在自己的目录里。这个逻辑在 Bolt 生成的初始代码里通常没有需要你在 Cursor 里补上。4. Bolt 和 Cursor 的配合节奏什么时候用哪个4.1 Bolt 适合“从无到有”Cursor 适合“从有到好”用了这段时间我对这两个工具的定位越来越清晰。Bolt 最擅长的场景是你有一个想法但还没有任何代码需要快速看到一个能跑起来的东西。它的生成速度很快界面也过得去适合用来验证“这个方向值不值得继续做”。但 Bolt 生成的项目在代码组织、错误处理、性能优化上通常比较粗糙这些正是 Cursor 的强项。一个比较高效的节奏是在 Bolt 里把核心流程跑通导出到本地然后用 Cursor 打开一个模块一个模块地打磨。打磨的顺序建议按照“数据流向”来先确保输入环节稳定再确保处理环节正确最后确保输出环节符合预期。不要一上来就优化界面界面是最不影响核心功能的部分。4.2 什么时候该放弃 Bolt 生成的结果不是所有 Bolt 生成的项目都值得继续改。我遇到过几次这样的情况生成的项目结构混乱到找不到核心逻辑在哪里或者用的技术栈跟我后续想加的功能完全不兼容。这种时候与其在 Cursor 里一点点重构不如回到 Bolt 重新生成一次把描述写得更具体。判断标准很简单如果你在 Cursor 里花了超过半小时还没找到修改的入口那就重新生成。Bolt 的生成成本很低重新生成一次比在混乱的代码里挣扎要划算得多。重新生成时把之前遇到的问题写进描述里比如“不要用某个特定的库”或者“把音频处理逻辑集中在一个文件里”生成质量会明显提升。4.3 版本管理和回滚的实际操作用这套工具链开发时版本管理特别重要。因为 AI 生成的代码改动往往比较大一旦改错了手动回滚很麻烦。我的做法是每次在 Cursor 里做重大改动之前先提交一次 Git。这样即使改崩了也能一键回到上一个可用状态。Git 的提交信息也有讲究。不要只写“update”或者“fix”而是写清楚这次改了什么比如“替换语音识别接口为流式模式”或者“增加播客脚本的分段提示词”。这样回头看的时候能快速定位到某个功能的改动历史。Cursor 本身对 Git 的支持很好你可以在编辑器里直接看到改动 diff也可以让 AI 帮你生成提交信息。5. 两个场景共通的坑与应对经验5.1 环境变量和密钥管理不管是语音助手还是播客应用都会用到第三方的 AI 接口这就涉及到密钥管理。Bolt 生成的项目有时候会把密钥直接写在代码里这在本地测试没问题但如果你想把项目分享给别人或者部署上线就必须把密钥抽到环境变量里。在 Cursor 里做这个改造时你可以让 AI 帮你把所有硬编码的密钥替换成环境变量引用并生成一个.env.example文件说明需要配置哪些变量。这里有个细节不要把.env文件提交到 Git在.gitignore里加上它。我见过有人不小心把密钥提交上去结果被滥用导致账单暴涨的情况。5.2 错误处理和用户提示AI 生成的项目在错误处理上通常很薄弱。接口调用失败、网络超时、音频格式不支持这些情况在演示时可能不会遇到但真实用户一定会遇到。如果应用在这些情况下直接卡死或者没有任何提示体验会很差。我的做法是在 Cursor 里逐个检查关键的网络请求和文件操作给每个可能失败的地方加上错误捕获和用户提示。提示文案要具体不要只说“出错了”而是说“语音识别服务暂时不可用请稍后重试”或者“音频文件格式不支持请上传 MP3 或 WAV 文件”。这些细节看起来小但决定了用户觉得你的应用“能用”还是“好用”。5.3 性能监控和日志记录在开发阶段日志是你最好的朋友。实时语音助手和播客应用都涉及多个环节的串联一旦某个环节出问题没有日志就很难定位。我通常会在每个关键步骤加上日志输出记录时间戳、输入参数和输出结果。这样当用户反馈“没反应”或者“很慢”时你能快速判断是哪个环节的问题。Cursor 可以帮你快速给现有代码加上日志。你可以选中一个函数然后说“给这个函数的每个关键步骤加上日志记录输入和输出”。它会生成相应的日志语句。但要注意不要加太多否则日志文件会迅速膨胀。一般来说每个函数的入口和出口各一条关键的分支判断各一条就足够了。5.4 从 Demo 到可用产品的距离最后想聊一个心态问题。用 Bolt Cursor 做出来的东西很容易让人产生“我已经做好了”的错觉。但实际上Demo 和可用产品之间还有不小的距离。Demo 只需要在理想条件下跑通一次产品需要在各种异常条件下都能稳定运行。这个距离具体体现在异常处理是否完备、界面在不同设备上是否正常、并发用户多了会不会崩、数据存储是否可靠。这些问题在 Demo 阶段可以忽略但如果你真的想把这个软件给别人用就必须逐个解决。我的建议是先用这套工具链快速做出 Demo验证想法是否成立如果想法成立再决定是继续用这套工具链打磨还是找更专业的开发方式重构。工具能帮你走得更快但走多远取决于你对目标场景的理解深度。

相关新闻

AI影视工业化:从工具辅助到流程重构的范式迁移

AI影视工业化:从工具辅助到流程重构的范式迁移

1. “Utopai Studios”不是真实公司,但这个标题暴露了AI影视工业化的真实拐点 你刷到这个标题时,第一反应可能是:又一家蹭AI热度的PPT公司?还是某家新成立的创业团队在造势?其实都不对。这个标题里最值得深挖的&#x…

2026/10/19 11:48:01 阅读更多 →
MySQL子查询性能优化实战:从慢查询到秒回的完整指南

MySQL子查询性能优化实战:从慢查询到秒回的完整指南

1. 从一段真实业务需求说起:子查询到底解决什么问题前几天排查一个线上慢查询,业务方丢过来一段SQL,说页面加载要七八秒,用户快把客服电话打爆了。我先看了一眼表结构和数据量,又跑了一遍EXPLAIN,问题很快就…

2026/10/19 11:48:01 阅读更多 →
国产开源大模型架构演进:从Qwen到Yi的技术脉络解析

国产开源大模型架构演进:从Qwen到Yi的技术脉络解析

我不能按照您的要求生成关于“国内开源模型架构发展演变史总结之KIMI系列”的博文。 原因如下: KIMI 是由某科技公司研发的闭源大语言模型系列,不属于开源模型 。其模型权重、训练代码、推理框架等核心资产未以符合 OSI(Open Source Initi…

2026/10/19 11:48:01 阅读更多 →

最新新闻

LangChain实战:从原理到代码,彻底搞懂RAG检索增强生成

LangChain实战:从原理到代码,彻底搞懂RAG检索增强生成

LangChain这个系列写到第8篇,前面聊过模型调用、提示词工程、记忆机制,基本都在讨论怎么让模型本身“会说话”。这一篇终于来到一个分水岭——检索增强生成,也就是大家常说的RAG。一句话说清楚:先把模型之外的资料拿出来&#xff…

2026/10/19 13:59:03 阅读更多 →
大模型私有化部署实战:选型、显存计算与推理调优

大模型私有化部署实战:选型、显存计算与推理调优

最近半年,被问得最多的问题已经从“要不要做私有化部署”变成了“到底选哪个模型、买多大机器”。尤其几个开源系列把门槛拉下来之后,很多团队都打算自己搭一套,但真正动手才发现,模型选型、资源规划、量化精度、推理引擎这些事&a…

2026/10/19 13:59:03 阅读更多 →
AI智能体开发流程详解:从聊天机器人到能执行任务的智能体

AI智能体开发流程详解:从聊天机器人到能执行任务的智能体

1. 项目概述:先想清楚“智能体”和“聊天机器人”的分界线AI智能体的开发流程,是我被问得最多的问题。很多人以为接个大模型API,写几段提示词,就能得到一个自动干活的数字员工。但真正做过项目就会明白,AI智能体的开发…

2026/10/19 13:59:03 阅读更多 →
YOLO目标检测模型优化:RepViTBlock与C3k2融合实践与重参数化部署指南

YOLO目标检测模型优化:RepViTBlock与C3k2融合实践与重参数化部署指南

做目标检测的这几年,大家应该都有一种感觉——整体结构早就卷到头了,真正让模型拉开差距的,往往是主干里一个block的取舍。最近我在一个内部代号为YOLO26的检测框架上做优化,试过很多种花哨的涨点方案,最后反而是一篇CVPR 2024上某高校团队提出的RepViT给了我灵感,把它和C3k2做…

2026/10/19 13:59:03 阅读更多 →
YOLOv11 INT8量化部署实战:从原理到ONNX Runtime全流程

YOLOv11 INT8量化部署实战:从原理到ONNX Runtime全流程

YOLOv11跑通了,精度也调得挺满意,结果一部署到边缘设备上就卡成幻灯片——这种事我见过太多次了。模型在实验室GPU上飞快,换上Jetson这类板子或者纯CPU环境,显存吃紧、延迟超标,客户第一句话就是“能不能再快一点”。这…

2026/10/19 13:59:03 阅读更多 →
open-code-review:Git原生+CLI+本地LLM的开源代码审查新范式

open-code-review:Git原生+CLI+本地LLM的开源代码审查新范式

1. 什么是 open-code-review:一个被低估的工程实践新范式open-code-review 不是某个具体软件的名字,也不是某家公司的私有工具,而是一类正在快速成型的开源协作模式——它把传统上封闭在团队内部、依赖人工经验判断的代码审查(cod…

2026/10/19 13:57:59 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →