AI编程工作流实战:提示词契约、Agent调试与代码问诊三大模式
刷了这么久 AI 编程工具发现大部分人都还停留在把需求粘贴进去复制答案出来的阶段。真正拉开效率差距的其实是工作流——把 AI 从问答机器变成固定流程里的协作者。今天分享 3 个我在项目里反复用、改个场景就能直接抄走的 AI 编程工作流一个是需求到代码的提示词契约流一个是Agent 托管的多步调试重构流还有一个是老项目接手的代码问诊流。前两个适合日常开发第三个适合接盘维护全部都是拿过来改个描述就能用的级别不需要任何微调不需要复杂基建。如果你现在已经厌烦了每次都要从头教 AI 一遍需求或者总觉得 AI 写的代码不敢直接上线那这篇文章正好适合你。1. 为什么可复用的工作流比提示词更重要1.1 单次对话的模式注定不稳定很多人会发现同一个问题上午问 AI 和下午问 AI得到的代码风格完全不同。这是因为 AI 没有记忆也没有项目管理能力。它只能根据你当下给的几十行上下文生成输出而真正的编程任务往往需要多轮、多文件、多约束协同。单纯靠一次对话你无法让 AI 理解项目背景、模块边界、代码规范和测试要求输出自然像抽盲盒。我自己踩过最深的一个坑是让 AI 写了一个文件上传函数它把整个项目的目录结构都改了。原因很简单我给了它一个很大的需求它按自己的想象补了很多代码但那些代码与现有模块耦合方式完全不对。那次之后我就明白AI 的可靠性90% 取决于你给它定义的工作流程。单次问答是漫画式拼贴而工作流是流水线式作业后者才能稳定产出。1.2 一个可复用工作流的三个特征从那次失误之后我总结出一个好用的 AI 编程工作流必须满足三个特征可复制换个项目、换个需求只需要修改变量不需要重建整套流程。比如提示词的骨架是固定的变化的只是需求描述和代码库路径。可验证执行过程中有明确的检查点比如代码生成后必须经过静态检查、单测运行、逻辑解释三步。每一步都对应人类检查点而不是AI 说完成就完成。可追溯每一轮交互都保留产物包括提示词、AI 回答、你的修改。这样出了问题能反查是哪一步的决策失误也能基于产物继续迭代。这三个特征缺一不可。没有可复制性工作流就是一锤子买卖没有可验证性你不敢让 AI 产出直接进生产环境没有可追溯性AI 生成代码就像黑盒出了问题都不知道该怪谁。2. 工作流一需求到代码的提示词契约流2.1 思路把需求拆成一张契约表这个工作流解决的核心问题是AI 经常把需求理解得歪到天边去。所谓契约就是你把需求当成一份合同条款让 AI 在动手写代码之前先输出一份需求理解确认书。只有你点头它才能继续写代码。这样从根源上减少返工。为什么有用因为大模型的注意力是有限的如果你一句话里塞了功能需求、参数要求、异常处理、性能指标它很可能只记住最后两三点前面全部忽略。契约流强制它把需求拆成结构化条目每个条目都对应你输入的信息等于帮它梳理了注意力资源。2.2 提示词契约模板我把这套模板固化成了一个可以直接复制的格式。核心是五段式角色设定 你是一名擅长 {语言/框架} 的资深工程师。 背景 {项目背景尽量一句话讲清} 功能需求 1. {需求1} 2. {需求2} 约束条件 - 代码风格{比如“现有项目使用 TypeScript 函数式风格”} - 不允许修改的文件{列出路径} - 参数命名要求{如有} - 异常处理要求{如有} 输出要求 1. 先输出“需求理解确认书”包括功能清单、涉及的输入输出、边界情况。 2. 等我确认后再输出实现方案和完整代码。 3. 代码必须附带注释说明每个函数的作用。注意关键点把输出要求放在提示词的最后。大模型对提示词末尾的内容记忆更深刻这是我在多个模型上实测出来的规律。另外一定要让它先输出需求理解确认书而不是直接写代码。这一步相当于 AI 的开工前复述任务。2.3 实操示例实现一个 Python 脚本举一个实战例子。之前我需要一个批量重命名图片文件的脚本用契约流操作第一步把需求填进模板功能需求写批量重命名 jpg/png 文件命名规则为 yyyymmdd_序号.ext支持自定义前缀跳过已处理的文件。第二步AI 输出了需求理解确认书列出了它会读取目录、处理扩展名、生成日期前缀、保留原文件的逻辑。我一看发现漏了一个关键点需要跳过隐藏文件。于是我在确认环节补上这个约束。第三步AI 重新出契约确认后生成代码。这次生成的代码里不仅有重命名函数还带了一个dry_run参数可以预览修改结果相对安全。第四步我把代码放进测试目录跑了一遍输出完全符合预期。整个过程只花了 10 分钟比直接让 AI 写代码再反复改快了至少两倍。核心原因就是需求理解前置减少了中途的无意义轮次。2.4 常见问题和避坑要点AI 输出的需求理解确认书过于简略如果它只列了两个要点说明它没有真正理解你的需求。这时不要急着说继续而是追加一句你把每个需求展开成输入输出和边界条件。 直到它像写接口文档一样列出细节再放行。约束条件不要只写不要改其他文件大模型对否定性指令的理解偏差很大。更好用的写法是除了 {指定文件} 之外其他文件一律不要读取或修改。 肯定式约束的有效率远高于否定式。忘记保存中间产物我习惯让 AI 每次确认后把整段对话导出成 Markdown连同代码一起放进项目里的docs/ai_workflow/目录。这样过两天再来看还能知道当时为什么这么设计。这套工作流的适用边界是中小型功能模块比如几个函数、一个脚本、一个组件。如果需求大到跨十几个文件还是得上 Agent 流。3. 工作流二Agent 托管的多步调试与重构流3.1 Agent 和普通对话的本质区别普通对话模式下AI 只能根据你贴的代码片段瞎猜。Agent 模式下AI 可以自己读取仓库文件、执行命令、运行测试、根据结果继续行动。它从只写代码的笔变成了一个能跑起来的实习生。我之前用 Claude Code 和 Codex CLI 都跑过重构任务。最直观的体验是它真的会自己去 grep 代码里的调用点然后告诉你这个函数有三处调用重构后需要同步修改这两处。这种跨文件感知能力是普通聊天框无论如何也做不到的。不过 Agent 不是万能的它同样需要工作流引导否则会陷入改错-再改-再错的循环。3.2 搭建一个最小可复用的 Agent 调试工作流我验证下来最实用的 Agent 配置不是全自动而是半自动的三步走第一步agent 加载项目定位问题代码输出问题定位报告。 第二步agent 给出修改方案但不要直接改代码。 第三步人确认方案后agent 修改代码并运行测试。具体操作上我习惯在 Agent 指令里加上这么一段固定的提示你是本项目的开发助手。请先运行 [grep/搜索] 找到与 {功能名} 相关的所有文件和调用点输出调用关系。 然后基于调用关系评估修改 {目标文件} 的影响范围列出需要同步修改的文件清单。 在开始修改前将方案提交给我确认。确认后再动手改代码并运行 {测试命令} 验证。 如果测试失败不要擅自扩大修改范围把失败信息和相关日志贴出来。这段提示词的核心价值是限制 Agent 的行动半径。全自动 Agent 经常为了修一个 bug 顺手改了十个文件加了这个流程之后它每次动手前都会先交一份施工计划出来。这种可控性比自己手动改代码都放心。3.3 实操一次带测试的重构场景是这样的一个旧的用户列表接口逻辑全写在 controller 层我打算把它抽到 service 层同时保持接口行为不变。如果用纯人工改可能要翻半天代码之间的关联。我直接把项目丢给 Agent用上面的三步走指令。它先运行了仓库里的全文搜索定位到 controller 里有一段 200 行的查询逻辑同时发现这段逻辑被一个定时任务复用这意味着如果只改 controller定时任务还是会用到旧逻辑。Agent 输出了方案把查询逻辑抽到 service 的UserQueryServicecontroller 和定时任务都改为调用新方法。我确认后它动手修改修改结束后自动跑了项目里的两个相关测试。第一次输出有个小问题它把一个边界条件的判断放错了位置测试挂了。然后它按我的要求把失败日志贴了出来没有擅自扩大修改范围。我又加了一条指令把边界条件移动到方法入口处测试随即通过。整个过程大约 15 分钟如果纯人工排查调用关系至少需要一小时。3.4 Agent 工作流里的高频拦路虎Agent 反复横跳改了又改原因通常是任务边界不清。我现在的做法是在提示词里明确写第一次方案确认后除非测试失败否则不要修改方案之外的代码。测试时间过长导致 Agent 超时建议把测试命令限制为单个测试文件或单条用例先保证局部正确再在人类确认后跑全量测试。Agent 修改了依赖文件版本这类副作用非常危险。我的规避方法是在启动指令里加一句禁止修改 package.json、requirements.txt 等依赖清单文件如确需修改必须单独提交确认。Agent 流适合中大型重构、跨文件 bug 修复、以及批量脚本任务。它是三个工作流里上限最高、门槛也最高的一个需要你先对项目的目录结构有一定了解否则连 Agent 的方案是好是坏都判断不了。4. 工作流三存量代码的问诊与交接流4.1 接手老项目时最怕什么接手老项目最大的痛点是代码量大、注释缺、文档过期。每次想动一个功能都得自己从入口一路追到数据库层脑补出完整的数据流。这时候 AI 的先天优势就能用上——它能瞬间读完整仓库然后以固定结构输出问诊报告。这个工作流的思路是把 AI 当你的代码库翻译官让它先输出一份结构化报告你带着报告再动代码。它不是让 AI 直接改代码而是让 AI 帮你理解代码。这样你不需要先花三天看源码。4.2 问诊提示词模板固定的提示词模板如下现在我要接手一个项目请你作为资深代码审计师基于仓库内容输出诊断报告。 项目路径{路径} 主要语言{语言} 需要关注的模块{模块列表可留空} 报告必须包含以下部分 1. 模块总览用表格列出每个模块的职责、入口文件、依赖关系。 2. 核心数据流描述从用户请求到数据库写入的主要链路。 3. 潜在风险点查找 TODO、FIXME、异常吞噬、硬编码、未关闭的资源。 4. 测试覆盖情况列出测试文件及其覆盖的模块。 5. 代码风格模式总结现有代码的命名规范、设计模式便于后续新增代码保持一致。这里最重要的部分是第 5 点总结代码风格。很多时候 AI 生成的新代码和老项目格格不入就是因为你没有告诉它这个项目用的是类封装还是函数式命名是驼峰还是蛇形。问了诊之后AI 产出的新代码会自动适配老项目的风格。4.3 实操三天工作量压缩到三小时我接手一个 Flask 项目时往里丢了一个问诊提示词。AI 在 8 分钟之内产出了报告包含模块总览表和数据流图描述。我发现它标出了一个以前谁都没注意到的点有一个定时任务在更新数据库时没有加事务保护如果中途出错数据会处于半更新状态。借这个线索我直接定位到出问题的代码并用第 2 章的工作流让 AI 补上了事务包装。按以前的做法这种隐蔽问题可能得等线上故障才能暴露。只因为这个问诊报告里多了一条资源初始化与事务边界分析省下了巨大排查成本。我也发现一个问题AI 把某些模块的职责描述得过于概括比如负责用户管理但没列出内部函数。解决方式是追加一条指令每个模块必须列出至少三个核心函数及其输入输出。 这样报告就从目录摘要升级成了接口级地图。4.4 问诊流注意事项不能把 AI 报告当最终真理AI 对代码的理解存在幻觉尤其是函数较多时它会张冠李戴。我的校验方法是抽检报告里的三个细节用编辑器跳转对应代码快速验证。没问题再继续。敏感信息处理老项目里经常有密钥、数据库地址、内部注释的敏感操作信息。如果你用的云端 AI 服务务必在上传前脱敏或者用敏感信息占位符替换。安全合规永远是第一位。报告要存档生成的问诊报告建议直接放在仓库的docs/目录下同时标注生成时间。后续任何人接手时都能复用这份 AI 问诊结果不用重新跑一遍。这个工作流最适合接手旧项目、做大版本重构前的盘点、以及定期做代码健康检查。5. 三个工作流落地时的配套经验5.1 上下文管理是所有人的共同痛点三个工作流执行得好不好很多时候取决于你有没有管理好上下文。我常用的几个技巧先用小模型做摘要再用大模型写代码比如把整个文件目录先扔给一个轻量模型让它总结出模块关系然后把总结作为上下文的一部分给到主力模型。这样能减少 token 消耗还能让更重要的细节占据上下文窗口。固定模式重要文件单独粘贴如果项目里有一个核心配置文件全局影响其他代码我会在工作流里专门建一个context_rules.md里面写好每次分析代码时必须参考的文件清单。这个文件本身就是给 AI 用的提示词上下文。对话时间太长就重启会话上下文窗口有长度限制超长了模型会遗忘前面的内容。我的习惯是每完成一个子任务就新建一个会话把上一阶段的产出物和当前目标贴进去。宁可多几步也不要让 AI 在迷雾里猜。5.2 三种工作流如何组合使用这三个工作流不是孤立的我日常开发经常叠加接手老项目用问诊流产出模块地图新功能开发用契约流生成代码涉及跨模块改动时切换到Agent 调试流让 AI 跑测试验证。举个例子一个新需求要修改三个模块我会先用问诊流让 AI 说清楚模块之间的依赖关系其实报告里已经列出了影响范围。接着用契约流把新需求拆解成 AI 的施工确认书最后用 Agent 流执行多文件修改并跑回归测试。这一套组合下来我真正动手的只有最终 review 和决策环节省下来的时间相当可观。5.3 工具选型与成本控制建议目前主流的 AI 编程工具我按适用场景简单排个序场景推荐工具理由快速问答/生成代码ChatGPT、Claude、DeepSeek价格低接口稳定IDE 内编程Cursor、通义灵码、CodeGPT代码补全体验好上下文自动带入Agent 多步任务Claude Code、Codex CLI、OpenHands能自动跑测试适合复杂重构私有代码安全本地部署开源模型 Ollama代码不出内网合规安全成本上要注意的是Agent 模式的 token 消耗是普通对话的 5 到 10 倍。我的省钱技巧是能用规则确认的检查就尽量让 Agent 少跑几轮。比如要求它先输出影响范围再决定是否真的执行测试。千万别一上来就让 Agent全自动搞定那会烧掉大量 token 还不一定产出稳定。5.4 安全与合规底线这一点必须单独强调。在工作流中把代码交给 AI 时要分清楚哪些代码可以上传到云端模型哪些不能。涉及密钥、客户数据、内部系统地址的内容必须脱敏后再提交。比较好的做法是在项目里建一个.aiignore文件把敏感目录排除在 AI 工具的读取范围之外。另外AI 生成的代码千万不要直接拿去发布。我的原则是AI 负责加速生产人类负责负最终责任。所有 AI 代码都要经过代码审查和测试只有过了这两关才能进主干。这不是对 AI 的不信任而是工程师基本的职业底线。最后说两句实在话我自己从最开始让 AI 写玩具脚本到后来把三个工作流沉淀成团队内部的标准流程最大的体会是人和 AI 之间需要一套固定的协作协议而不是靠即兴发挥。每次你觉得 AI不听话绝大多数时候不是模型不够聪明而是你没有给它一套足够清晰的执行框架。如果你今天只记住一件事那就试试把第 2 章的提示词契约模板复制到你的下一个需求上。跑一次你会明显感觉到返工次数少了、代码质量稳了。等工作流用得顺手之后再慢慢加入 Agent 调试和代码问诊你的 AI 编程方式就会脱胎换骨。还有个小技巧把这三个工作流的提示词模板放在一个项目本地文件里比如docs/ai_workflows.md。这样不仅你自己随时能用团队成员也能保持一致的操作习惯AI 编程才能真正从个人玩具变成团队基础设施。

相关新闻

Java解析电力规约:从101/104报文到ASDU/APCI的实战指南

Java解析电力规约:从101/104报文到ASDU/APCI的实战指南

简介:基于Java语言开发的电网101规约(DLT634.5101-2002)与104规约(DLT634.5104-2009)解析和组装工具,主要面向电力系统专业学生、Java开发人员及相关行业工程师,解决IEC 60870-5-101/104报文的编…

2026/10/7 11:56:39 阅读更多 →
2026年腾讯云服务器调价解读:计费模式与优惠活动选购指南

2026年腾讯云服务器调价解读:计费模式与优惠活动选购指南

1. 2026年腾讯云服务器调价,先弄明白这轮变化到底改了啥每年年底到次年年初,都是云厂商调价和放活动的时间窗口。很多人一看到"2026年腾讯云服务器费用调整"这几个字就紧张,第一反应是"是不是要涨价了"。我这两周把腾讯云…

2026/10/7 11:55:39 阅读更多 →
PT1-SIP实验考试攻略:从日志接入到告警闭环的交付实战

PT1-SIP实验考试攻略:从日志接入到告警闭环的交付实战

简介:这是一份面向深信服PT1认证备考者与SIP平台运维人员的实验考试题库文档。文档先用表格完整列出总部AF、总部AC、总部EDR、SIP01、SIP02及总部Windows等设备的端口类型、端口描述、IP地址和管理密码,为搭建实验环境提供可直接对照的参数基线。实验部…

2026/10/7 11:55:39 阅读更多 →

最新新闻

UE5 Coop网络同步实战:Authority、Replication Graph与预测补偿

UE5 Coop网络同步实战:Authority、Replication Graph与预测补偿

1. 项目概述:为什么UE5里的网络同步不是“加个Replicated就完事”?在UE5里做Coop(合作模式)游戏,最常听到的一句话是:“把变量设成Replicated,再在蓝图里拖个Replicated Event,不就同…

2026/10/7 12:30:29 阅读更多 →
JavaWeb登录注册实例:验证码、BCrypt加密与部署全解析

JavaWeb登录注册实例:验证码、BCrypt加密与部署全解析

简介:面向Java Web初学者的登录注册案例解析文档,以完整可运行的实例演示带验证码的用户登录与注册流程。文档从需求分析入手,逐步讲解登录页面与注册页面的界面设计、关系数据库中用户名、密码与编号字段的设计,并在注册功能中通…

2026/10/7 12:30:29 阅读更多 →
Fine语言带参数子线程:原理、传参方式与实操案例

Fine语言带参数子线程:原理、传参方式与实操案例

Fine语言在报表开发里用得很多,尤其涉及到数据抽取、批量计算、复杂报表渲染时,单线程跑起来经常让人等到怀疑人生。很多人在社区里问过“子线程怎么传参”“多线程能不能带参数跑”,其实这是个非常典型的场景:你有一个耗时的任务…

2026/10/7 12:30:29 阅读更多 →
UE5 Coop网络同步实战:从权威模型到状态协同

UE5 Coop网络同步实战:从权威模型到状态协同

1. 这不是“加个Replicated就完事”的问题:UE5网络同步的真实战场 很多人刚接触UE5网络开发时,第一反应是打开Actor的Replication选项,勾上“Replicated”,再把变量打上UPROPERTY(Replicated)标签——然后发现角色在客户端要么卡顿…

2026/10/7 12:30:29 阅读更多 →
8G显存16G内存也能跑本地大模型:Ollama+GGUF实战指南

8G显存16G内存也能跑本地大模型:Ollama+GGUF实战指南

很多人一听"8G显存、16G内存"就觉得跟本地大模型没什么关系,觉得那是48G甚至80G显存玩家才配碰的东西。我一开始也这么想,直到自己用一台老旧的RTX 3050 8G笔记本(内存刚好16G)把Llama 3、Qwen2.5这些模型稳稳跑起来之后…

2026/10/7 12:30:29 阅读更多 →
MIPI-DPHY与C-PHY PCB布线核心差异与实战避坑指南

MIPI-DPHY与C-PHY PCB布线核心差异与实战避坑指南

1. 为什么MIPI-DPHY和C-PHY的PCB布线不是“照着参考设计抄”就能过EMI测试? 我第一次把一颗支持MIPI C-PHY v2.0的图像传感器贴片焊好,通电后图像满屏雪花,连基本的链路训练都失败。示波器抓到Clock Lane上叠加了高达800mVpp的共模噪声&#…

2026/10/7 12:29:28 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

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

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

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

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

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

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 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/6 8:21:32 阅读更多 →
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/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练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/6 1:18:13 阅读更多 →