Vibe Coding 最佳实践:用 AGENTS.md 与 Memory Bank 让 AI 写代码不再越写越乱
1. 为什么 AI 写代码会越写越乱上下文漂移与记忆缺失的真实场景Vibe Coding 最吸引人的地方就是起步门槛极低。你打开一个 AI 编码工具说一句「帮我做个带评论的个人博客」它噼里啪啦生成一堆文件浏览器一打开页面还挺像样。但只要你继续往下加功能问题就会一个接一个冒出来你说「加个评论功能」AI 改了一堆你说「把主题色换成深色」AI 改了评论功能却不见了你说「把评论找回来」AI 改完主题色又回去了。来回拉扯几轮之后代码乱成一团你自己都不知道哪里动过AI 也越来越摸不清项目当前到底是什么状态。这不是模型能力不行而是两个根因在作祟上下文漂移和记忆缺失。上下文漂移指的是随着对话轮次增加AI 对项目整体结构的理解会逐渐偏离最初的设计。它每次只看到最近的几轮对话和部分文件内容早期定下的架构约定、命名规范、目录结构在长会话里会被慢慢稀释掉。你让它改 A 文件它顺手把 B 文件的导出方式也改了因为它已经忘了 B 文件当初为什么那么写。记忆缺失指的是AI 没有跨会话的持久记忆。今天这个对话窗口关掉明天新开一个它对项目的认知基本归零。你只能靠手动粘贴一堆文件让它「回忆」粘少了它猜粘多了它抓不住重点。项目稍微大一点这种靠人肉搬运上下文的方式就彻底崩了。我试过在一个中型项目里连续跟 AI 对话三十多轮到后面它开始把已经删掉的工具函数重新加回来还信誓旦旦说「这是项目需要的」。那一刻我意识到问题不在提示词写得好不好而在于整个协作流程缺少一套让 AI「记住项目」的机制。这套机制的核心就是三样东西AGENTS.md定义项目规则Memory Bank沉淀跨会话记忆PRD锁定需求边界。三者配合才能让代码风格和架构在长会话中保持一致。下面我把整套流程拆开每一步都给可复制的目录结构和配置片段你可以直接照着搭。适合谁看正在用 Claude Code、Cline、Cursor、Codex 这类工具做真实项目并且已经被「越写越乱」折磨过的人。如果你只是写几十行的小脚本这套流程可能偏重但只要项目超过十几个文件、需要多轮迭代它带来的收益会非常明显。2. TaoToken 前置准备统一 Key 与 API 通道让多工具协作不掉线在讲 AGENTS.md 和 Memory Bank 之前得先把「通道」这件事解决掉。因为这套方法论里你会同时用到多个模型一个负责出实施计划一个负责评审一个负责执行编码任务。如果每个工具都单独配 Key、单独管额度光是切换和排障就够烦的。TaoToken 在这里的角色是提供一个统一的 Key 和 API 通道。你申请一个 Key就能在多个编码工具里复用同一套接入配置Base URL 统一指向https://taotoken.net/api不用为每个工具单独折腾一套凭证。对于需要「双 AI 评审」这种要切换模型的场景统一通道能省掉大量重复配置。先说清楚它不是什么它不是编辑器不替代 Claude Code 或 Cline它也不是某个模型的专属客户端。它更像一个统一的接入层让你的编码工具通过同一套地址和 Key 去调用模型。你该用 Claude Code 还是用 Claude Code该用 Cline 还是用 ClineTaoToken 只负责把「连哪个模型、用什么凭证」这件事统一掉。具体操作路径是这样的第一步打开官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册并登录。这一步不用多讲正常流程走完即可。第二步进入控制台创建 API Key。地址是https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content在 API Keys 页面生成一个新的 Key复制保存好。这个 Key 后面会填进各个工具的配置文件里。第三步如果你不确定该选哪个模型可以先去模型对话页面试一下。地址是https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content在里面发几条消息感受一下不同模型的响应风格再决定编码任务用哪个。第四步如果你打算长期做编码和 Agent 类任务可以了解一下 Coding Plan。地址是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content它面向的就是这种多轮、长会话的编码场景。第五步接入细节和参数说明看文档。地址是https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content里面有各工具的配置示例。这里要强调一个关键点Base URL、Key、Model ID 这三件套必须配全。很多「连不上」的问题根源就是只填了 Key 没改 Base URL或者 Model ID 写了个不存在的名字。后面第 5 节我会专门拿真实报错来对照排查。对于 Claude Code 用户接入配置通常写在~/.claude/settings.json或项目级的.claude/settings.json里对于 Cline配置在 VS Code 的设置里或者.cline相关配置中对于 Codex认证信息在~/.codex/auth.json。不管哪个工具核心都是把 Base URL 指向https://taotoken.net/api把 Key 填进去把 Model ID 写对。通道打通之后你才有余力去搭 AGENTS.md 和 Memory Bank。否则每次切换模型都要重新配一遍方法论还没落地人已经累了。3. 可复制配置AGENTS.md、Memory Bank 目录结构与 settings 片段这一节是整套方法论的核心我直接把可复制的目录结构和配置片段给你。你可以在项目根目录照着建。先看整体目录结构your-project/ ├── AGENTS.md ├── memory-bank/ │ ├── PRD.md │ ├── DESIGN.md │ ├── TECH_STACK.md │ ├── DATA_MODEL.md │ ├── ARCHITECTURE.md │ ├── IMPLEMENTATION_PLAN.md │ └── PROGRESS.md ├── src/ └── ...memory-bank/里这七个文件各有分工。PRD.md 锁需求边界DESIGN.md 写页面路由和关键交互状态TECH_STACK.md 写技术选型和「不做什么」DATA_MODEL.md 写数据字段和接口ARCHITECTURE.md 写代码结构并动态更新IMPLEMENTATION_PLAN.md 是拆好的任务清单PROGRESS.md 记录当前进度和下一步。重点说 PROGRESS.md它是最容易被忽略但最重要的一个。每完成一个任务就更新它新开对话时 AI 先读它就能立刻接上进度。格式可以很简单# PROGRESS ## 当前状态 - 已完成任务 1-3 - 进行中任务 4评论提交接口 - 下一步任务 5评论列表渲染 ## 最近改动 - 2024-xx-xx完成任务 3新增 src/api/comment.ts验证通过 - 2024-xx-xx完成任务 2新增 src/components/PostList.tsx验证通过 ## 已知问题 - 评论为空时的占位文案还没定等 DESIGN.md 确认然后是 AGENTS.md。它放在项目根目录作用是让 AI 知道「这个项目有 Memory Bank每次写代码前必须先读完成任务后必须更新」。最关键的是把规则设成 Always 触发不用每次手动提醒# AGENTS.md ## Always 规则 - 写任何代码前必须先阅读 memory-bank/ 中的所有文档 - 完成任务后必须更新 memory-bank/PROGRESS.md - 完成重要功能后更新 memory-bank/ARCHITECTURE.md - 不要新增 PRD.md 中没有定义的功能 - 每次只执行 IMPLEMENTATION_PLAN.md 中的一个编号任务 ## 项目约定 - 代码风格函数式组件优先工具函数放 src/utils/ - 命名规范组件用 PascalCase工具函数用 camelCase - 不引入状态管理库不引入 UI 组件库注意最后两条「不引入」这就是 TECH_STACK.md 里「明确不做什么」的落地。不写清楚AI 默认会往「更完善」的方向走自动给你加一堆用不上的依赖。接下来是工具侧的 settings 片段。以 Claude Code 为例项目级.claude/settings.json可以这样配{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: 你的_TaoToken_Key, ANTHROPIC_MODEL: 你的_Model_ID } }如果你用的是 Codex认证信息在~/.codex/auth.json结构大致如下{ base_url: https://taotoken.net/api, api_key: 你的_TaoToken_Key, model: 你的_Model_ID }Cline 的配置在 VS Code 设置里选择 API Provider 为 OpenAI Compatible 或 Anthropic 兼容模式Base URL 填https://taotoken.net/apiAPI Key 填你的 KeyModel ID 填对应模型名。这里再强调一次三件套Base URL Key Model ID。三个都对了工具才能正常连上。缺一个或者写错一个就会在第 5 节那些报错里打转。配置建好之后你的项目就有了「记忆骨架」。接下来就是让 AI 按这套骨架跑起来。4. 验证请求与多轮迭代一次完整的任务执行演示配置搭好现在演示一次完整的多轮迭代让你看到 AGENTS.md 和 Memory Bank 是怎么在真实任务里起作用的。假设你的 IMPLEMENTATION_PLAN.md 里任务 4 是「实现评论提交接口」。你新开一个对话发这样的提示词请阅读 AGENTS.md以及 memory-bank/ 中的所有文档。 请根据 PROGRESS.md 判断下一个未完成任务。 只执行 IMPLEMENTATION_PLAN.md 中这一个编号任务。 要求 1. 不要一次性执行多个任务 2. 不要新增 PRD 没有定义的功能 3. 完成后告诉我改了哪些文件和如何验证 4. 验证通过后再更新 PROGRESS.mdAI 读完文档后会告诉你它要执行任务 4然后开始写代码。它可能会新增src/api/comment.ts在里面写提交逻辑。完成后它会列出改动文件并给出验证方式比如「启动 dev server在文章页提交一条评论看 network 面板是否返回 200」。你亲自验证。打开浏览器提交一条评论看接口是否正常返回。如果通过让 AI 更新 PROGRESS.md然后 git commit 存档。接着开新对话进入任务 5。这里有个关键动作每完成一个任务就开新对话。对话越长AI 性能越差越容易跑偏。新对话 Memory Bank 读取才是保持稳定输出的正确方式。你可能觉得开新对话会丢失上下文但正因为有 Memory BankAI 每次都能从文档里重建上下文反而比在长对话里硬撑更稳。再演示一次「跑偏后回滚」的场景。假设任务 5 执行到一半AI 把评论列表的渲染逻辑改乱了页面报错。这时候不要在一个错误方向上死磕超过 30 分钟。按这个顺序处理第一步回滚。Claude Code 里可以用/rewindOpenCode 里可以用/undo可以连按多次/redo撤销回滚。如果用 Git先确认当前没有需要保留的未提交修改再让 AI 帮你选择合适的回退方式。这就是为什么每个任务完成都要 commit——commit 就是你的存档点。第二步换角度重描述。先让 AI 分析原因再让它提方案不要直接让它改代码。比如你可以说「评论列表渲染报错先分析可能的原因列出三种可能不要直接改代码。」第三步喂给最强模型。实在不行用 RepoPrompt 把整个代码库打包成一个文件交给最强的模型来分析。验证请求这一步除了页面操作也可以用命令行直接测接口。比如curl -X POST https://your-domain/api/comment \ -H Content-Type: application/json \ -d {postId: 1, content: test comment}看返回是不是预期的 JSON。如果返回 401说明鉴权有问题如果返回 500看服务端日志。命令行验证的好处是可复现不依赖浏览器状态。多轮迭代下来你会发现代码风格和架构始终保持一致因为每次 AI 都从同一套文档里读规则。这就是 AGENTS.md Memory Bank PRD 三件套的价值。5. 本篇常见错误排查401、local proxy failed、reading choices、OAuth这一节把最常见的几类报错拿出来对照排查。这些报错我在不同工具里都遇到过根源基本都在配置或上下文上。401 Unauthorized。这个最直接就是 Key 不对或者没带上。检查三件事Key 是不是复制完整了有没有多空格、Base URL 是不是指向https://taotoken.net/api、请求头里的认证字段名对不对。Claude Code 用ANTHROPIC_API_KEYOpenAI 兼容模式用Authorization: Bearer。如果 Key 是对的还报 401去控制台确认这个 Key 有没有被禁用或额度耗尽。local proxy failed。这个通常出现在工具试图走本地代理但代理没起来或者 Base URL 配成了本地地址。检查你的 settings 里 Base URL 是不是误填了http://localhost:xxxx。正确做法是直接填https://taotoken.net/api不要经过本地转发。如果你之前配过什么本地转发工具把它关掉直接用统一通道。reading choices 相关报错。这类报错一般出现在解析模型返回时比如Cannot read properties of undefined (reading choices)。根源通常是返回体不是预期的 OpenAI 格式可能是 Model ID 写错了或者 Base URL 指向了不兼容的端点。检查 Model ID 是否和文档里列的一致Base URL 是否是/api结尾而不是/v1之类。有些工具要求 Base URL 带/v1有些不要以文档为准。OAuth 相关报错。如果你用的是 Claude Code 的 OAuth 登录流程但同时又配了 API Key两者可能冲突。OAuth 报错常见的是 token 过期或回调失败。处理方式要么走 OAuth 登录要么走 API Key不要混用。如果坚持用 Key把 OAuth 相关的缓存清掉重新用 Key 认证。下面用表格对照一下报错常见原因处理方式401 UnauthorizedKey 错误/缺失、Base URL 不对检查三件套确认 Key 有效local proxy failedBase URL 指向本地代理改为https://taotoken.net/apireading choicesModel ID 错、端点不兼容核对 Model ID 和 Base URL 后缀OAuth 报错OAuth 与 Key 混用二选一清理冲突缓存排查时有个通用思路先确认三件套Base URL Key Model ID再看工具侧的配置字段名最后看网络和额度。大部分「连不上」都是前两步的问题。如果排查完还是不通去接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content对照配置示例或者去 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content重新生成一个 Key 试试。有时候就是 Key 复制时带了不可见字符。6. 把方法论跑起来从文档到代码的稳定协作整套流程走下来你会发现真正花时间的不是写代码而是前面那批文档。PRD 锁定需求边界DESIGN.md 定页面和交互TECH_STACK.md 定选型和「不做什么」ARCHITECTURE.md 定代码结构IMPLEMENTATION_PLAN.md 拆任务PROGRESS.md 记进度AGENTS.md 把这些串起来并设成 Always 规则。代码是最后才出现的而且是在一套稳定的约束下出现的。这套方法说起来步骤不少但做过一遍之后会发现前面的文档准备越扎实后面写代码越顺。与其写了一半发现方向错了全部推倒不如花两个小时把文档做好然后让 AI 一步步往前走。如果你还没打通通道先去官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content把 Key 拿到配好 Base URL 和 Model ID。想先感受模型风格就去模型对话https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content长期做编码和 Agent 任务就了解 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content接入细节看文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。最后留一个我踩过的坑AGENTS.md 里的 Always 规则一定要写清楚「写代码前先读 memory-bank」否则 AI 会跳过读取直接开写Memory Bank 就白建了。这条规则是整套流程的开关别忘了。

相关新闻

AI日报工作流:日更信息处理的三层漏斗架构

AI日报工作流:日更信息处理的三层漏斗架构

1. 项目概述:这不是一份“新闻稿”,而是一套可复用的AI信息日更工作流 “AI 日报(2026年10月5日)”这个标题乍看像一条社交媒体上的轻量资讯推送,但作为从业十多年、亲手搭建过27个不同规模信息聚合系统的博主&#xf…

2026/10/12 12:57:07 阅读更多 →
北邮Python数据处理实战:pandas最小可行流水线

北邮Python数据处理实战:pandas最小可行流水线

简介:本资源是北京邮电大学Python数据处理课程的配套作业实践包,面向高校计算机类专业学生及Python初学者,聚焦数据清洗、分析与可视化等核心能力训练。压缩包共103个文件,含24个Python脚本(实现数据读取、统计与预处理…

2026/10/12 12:57:07 阅读更多 →
从游泳池面试题到区间调度:研发岗算法考察与工程实践

从游泳池面试题到区间调度:研发岗算法考察与工程实践

1. 从一道游泳池面试题看研发岗的算法考察逻辑"游泳池"这道题在面试圈子里流传挺广,我第一次听到的时候还以为是考流体力学或者水池进出水的经典应用题。后来拿到完整题目描述才明白,它本质上是一道披着场景外衣的区间调度与资源分配问题。题目…

2026/10/12 12:57:07 阅读更多 →

最新新闻

website-rebuild-skill 源码化阶段:如何把逐字移植的机器产物重构成人能读的工程

website-rebuild-skill 源码化阶段:如何把逐字移植的机器产物重构成人能读的工程

【免费下载链接】website-rebuild-skill 复刻网站的 Agent Skill:抓只读镜像、从压缩代码逐行还原、自动比对验收。An agent skill that mirrors a website, rebuilds it from the minified code, and verifies the result with automated diffs. 项目地址&#xff…

2026/10/12 13:41:54 阅读更多 →
基于SpringBoot的大健康养老公寓管理系统:从毕设选题到答辩全攻略

基于SpringBoot的大健康养老公寓管理系统:从毕设选题到答辩全攻略

1. 为什么选“大健康养老公寓管理”这个题目每年到这个时间点,总有同学来找我聊毕业设计的事,问得最多的就是:有没有合适的题目推荐?要求还五花八门——好过审、工作量够、技术栈主流、最好还能润色到简历里。我通常会反问一句&am…

2026/10/12 13:41:54 阅读更多 →
CAD二次开发中点在多边形内的高精度实时判断方案

CAD二次开发中点在多边形内的高精度实时判断方案

1. 这不是数学题,是CAD里每天都在发生的“位置判断”实战在CAD二次开发的实际项目中,“点是否在多边形内”绝不是教科书里一个画个示意图就能打发的几何问题——它是某高校土木系BIM协同平台里构件自动归类的触发条件,是某工业设计公司电缆布…

2026/10/12 13:41:54 阅读更多 →
动态规划空间压缩实战:前缀和与后缀最大值求解两段不重叠子数组最大和

动态规划空间压缩实战:前缀和与后缀最大值求解两段不重叠子数组最大和

1. 从一道“数学考试”题看动态规划的空间压缩技巧“数学考试”这个标题乍一看像是讲备考策略,实际上它是一道经典的算法题,出现在某在线编程平台的每日一题栏目中。题目的核心是:给定一个长度为 n 的整数序列,要求选出两个不重叠…

2026/10/12 13:41:54 阅读更多 →
NGS-GNN:面向临床响应预测的图神经网络实战

NGS-GNN:面向临床响应预测的图神经网络实战

简介:本资源是一个面向生物信息学初学者与机器学习实践者的轻量级教学项目,聚焦于下一代测序(NGS)数据分析与Python建模的交叉实践。项目以Jupyter Notebook为核心载体,提供可复现的端到端分析流程,涵盖环境…

2026/10/12 13:41:54 阅读更多 →
C语言播放《下山》:从Beep到WAV的音频编程全解析

C语言播放《下山》:从Beep到WAV的音频编程全解析

前段时间在编程群里看到有人甩了个标题:「疯狂的往左」用 C 语言播放《下山》。一看名字就知道,这是典型的整活向练手题——不用图形界面,不用现成的音乐库,纯粹拿 C 语言的朴素能力让电脑把这首国风歌“唱”出来。我第一次见这种…

2026/10/12 13:40:52 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →