从“假忙碌”到真产出:三周开发效率复盘笔记
过去三周我陷入了一种很奇怪的忙每天从早九点坐到晚十点编辑器开了几十个文件git 提交也像模像样但一到周五晚上复盘却说不出这周到底“完成”了什么。后来我意识到这种状态本身就是最大的效率问题——我不是在写代码而是在跟环境、跟上下文、跟自己的反复纠结搏斗。于是我做了一次相对系统的复盘把开发效率拆成可以统计的东西一点一点找原因。这篇文章不是方法论总结就是一次真实的周复盘记录这三周我砍了哪些低效动作、换了哪些工作方式、哪些网上流行的效率技巧在我的场景下根本不好使以及最后留下的几条真正能复用的东西。1. 复盘先给“效率”定标准过去三周我是怎么记录有效产出的1.1 为什么突然想复盘写代码这么多年我一直靠感觉判断“今天效率不错”。直到三周前一个本应两天搞定的需求被我拖到了第五天才逼着我承认感觉是会骗人的。那天晚上我把最近两周的 git 记录翻了一遍发现大部分 commit 都是“fix”“wip”“临时提交”真正能对应到需求点的不到三分之一。也就是说我忙了十四天真正对业务有价值的工作可能只有四天。所以这次复盘做的第一件事就是给效率定一个可统计的标准。我没有用什么 fancy 的工时系统而是每天下班前花五分钟记三个数字完成了几个功能点、修复了几个 bug、写了多少“不需要返工”的代码。每个功能点我要求自己必须能对应到一次版本发布或一次合入主干的 MR。换句话说没合入、没经过验证的代码一律不算产出。这一条原则很重要。以前我很容易自我感动觉得“我今天写了三百行代码效率真高”结果那三百行里有两百行都是推翻重来的探索性代码。按现在的口径探索性代码可以写但它属于学习成本和技术债不应该计入“有效产出”。1.2 三周的变化数据先看结果再找原因记录之后数据长这样周次完成需求点修复线上 bug合入 MR 数返工次数估算每日有效时长第一周2455次约3.2小时第二周4382次约4.5小时第三周52101次约5.8小时第一周的数据基本暴露了我的老问题两天甚至三天才完成一个需求点五次返工里有三次是因为需求边界没想清楚就动手两次是因为改了 A 模块顺手把 B 模块的逻辑弄坏了。第二周开始有意识调整但数据仍然不漂亮。到第三周日均有效产出基本翻了一倍返工次数降到了一周一次。第三周我还单独记录了一项“间接产出”搭建了一套接口 mock 工具并给项目补了自动化回归脚本。这类工作很难直接计入需求点但对后续开发效率的影响很关键。复盘的时候我单独给它一个标记不混进需求统计里否则数据会失真。1.3 记录行为本身就在改变行为你可能觉得这套记录麻烦但我实测下来它最大的价值不是数据有多准确而是让你在做每个动作之前多停顿一秒。比如下午三点原本想顺手改一个无关紧要的样式一想到“这不算需求点也不修 bug今天又没产出了”我多半会收手。这其实就是一种行为矫正跟健身时拿手机记每组动作是一个道理。我用的模板很简单Markdown 里放一个表格每周一个文件## 第X周产出记录 | 日期 | 需求点 | 修复bug | 返工原因 | 今日备注 | |------|--------|--------|---------|---------| | 周一 | 用户列表筛选 | | 未对齐筛选条件返工一次 | 前置设计缺失 | | 周二 | | 登录态失效 | | 环境问题耗时1h |不需要专门去买什么效率软件一个 note 文件足够了。真正有用的不是工具是“你决定记”的那一瞬间。2. 三个被我堵上的时间漏洞等待、切换、手工试错2.1 把“等一下”变成“零等待”本地环境和热更新的优化第一周记录里最让我意外的是“等待时间”的占比。项目的本地环境一直靠手动起服务前端、后端、数据库三条链路每次启动都要按顺序敲命令敲错一个就得重来。更难受的是改完前端代码后热更新经常要两三秒才生效改一个样式要来回刷新好几次一天的碎片时间就这么耗没了。第二周我花了一个下午把这事彻底收拾了一下。后端、数据库写进 docker compose前端单独跑用一份脚本一键拉起。脚本本身不复杂#!/bin/bash # 一键启动开发环境 echo Starting mysql... docker compose up -d mysql echo Starting backend (port 8080)... cd backend mvn spring-boot:run backend.log 21 echo Starting frontend (port 5173)... cd frontend pnpm dev踩了一个小坑启动顺序不能乱数据库必须先于后端就绪否则后端起不来。日志重定向也很有用以前后端报错会直接刷到终端里跟前端日志混成一团现在分开写文件排查起来清爽很多。前端热更新慢的问题根因是某个依赖监听了大量文件Vite 默认的 watch 策略容易被拖垮。我在配置里做了针对性调整把不必要的目录排除掉热更新时间从两秒多降到了五百毫秒左右。这个优化每天帮我省下十几二十分钟而且省下的是碎片化等待心情上的收益比时间上的收益更大。2.2 上下文切换是最隐蔽的黑洞从“多线程”改成“批量回合”回看第一周的数据时我还发现一个特别讽刺的现象我同时并行三个需求最后三个都没在计划时间内完成。原因不难理解我每天的工作状态是“需求A写十分钟回个消息切到需求B看两眼再切回需求A还得重新回忆刚才的思路”。每一次切换大脑都需要重新加载上下文这个加载时间保守估计要十分钟以上而且加载完后思路经常接不上。后来我把工作节奏改成了“批量回合制”一天被切成上午、下午两个大块每块只做一条主线任务中间穿插的碎片时间统一用来处理回消息、看 MR、顺带改小 bug。跟纯番茄钟不一样的是我不强制每 25 分钟响一次铃而是给自己设了一个“切换闸门”——任务没做到一个阶段比如某个函数写完并且能跑通之前不允许切走。这套做法执行了大概一周明显感觉到脑子里的“缓冲栈”变小了。以前是同时压着四五个任务的半成品状态现在一次只压一个。CPU 占用率低了出错率自然也就下来了。2.3 手工试错交给脚本接口 mock 与回归验证做后端开发的老哥应该都有过这种经历前端同事跑过来问“后端接口好了没”你说“还在调”然后两边一起卡住。第一周里我发现自己至少有两天是在等联调环境或者在前端还没接好的情况下反复用 Postman 手工测接口。第三周我给前后端之间加了一层接口 mock。做法很朴素后端先定义好接口文档和字段格式前端用 mock 数据把页面流程先跑通后端开发同时对接真实数据库两边不再互相等。我挑的例子是列表页的筛选接口mock 配置大概长这样// vite mock 插件示例 export default { GET /api/admin/users: ({ query }) { const { status } query const allUsers [ { id: 1, name: 张三, status: active }, { id: 2, name: 李四, status: disabled } ] return { code: 0, data: status ? allUsers.filter(u u.status status) : allUsers } } }这套东西带来的效率提升不是让你敲键盘更快而是把“人和人之间的串行等待”变成了“人和系统的并行开发”。配合一份简单的回归脚本接口一旦变更能立刻发现前端调用处的错误不用再靠肉眼和手工点来点去。3. 变化最大的根源我把“边写边想”改成了“先想后写”3.1 15 分钟的前置设计换来一整天的顺畅第二周开始前我做了一个自己都觉得有点“反直觉”的决定所有需求不管大小动手前必须先写一份“最小设计笔记”。不是正式设计文档就是三五条要点写清楚输入是什么、输出是什么、数据从哪来、异常情况怎么处理、验收标准靠什么。第一周我有一个典型的反面案例做一个 Excel 导出功能我拿到需求就开始写代码写到一半发现“大数据量导出时内存会不会爆”没想清楚推翻重写了一轮。第二周再接类似需求时我强迫自己先写设计笔记结果在开发前就发现了三个边界问题数据量大时必须分批写入、导出权限要按角色过滤、列顺序明明有现成的配置项但我一直不知道。15 分钟的前置思考换来的是一整天不返工。这笔账怎么算都划算。我常用的模板很简单## 需求xxx - 输入xxx - 输出xxx - 数据来源xxx - 异常情况xxx - 验收标准xxx - 顺带会改动到的代码模块xxx最后一条“顺带会改动到的代码模块”尤其关键。很多返工不是因为核心逻辑不会写而是因为改了一个地方忘了另一个地方的依赖关系。3.2 小步提交把一天拆成 40 分钟的小循环以前我的提交习惯是写一大段代码再统一 commit经常出现一个 commit 里塞了半个需求的改动。出问题时想回滚都不知道该滚到哪。第二周开始我把节奏改成“每个可运行状态都提交一次”哪怕中间状态还很粗糙但保证代码能通过编译、页面能正常打开。为了降低提交成本我加了几个 git aliasgit config --global alias.cm commit -m git config --global alias.st status -s git config --global alias.lg log --oneline --graph --all -15真正的变化不只是提交频率。每次提交前我会过一遍自查清单这段代码里有没有遗留的调试输出有没有跟本次任务无关的改动测试能不能跑通这个习惯逼着我不再把“顺手改点东西”混进主流程每个 commit 的边界都变得非常清晰。回滚、找问题、review 都轻松不少。3.3 验收标准前置不再用“感觉”判断做完了跟产品、测试对需求的沟通过程以前也会消耗不少时间。我习惯直接问“这个功能大概怎么做”大家嘴上说清楚了但写出来的验收标准往往是“功能正常、界面美观”这种没法判定的废话。第二周我换了一种问法先确认“怎么算完成”。比如需求是“列表页增加筛选”我就把验收一句话描述出来——选择状态等于已通过时列表只显示已通过记录且 URL 上的查询参数可以被分享和还原。这个标准写清楚之后我写代码时会很自然地知道哪些分支要覆盖不用写完之后再猜测。这个变化直接反映在返工次数的数据上第一周返工五次第二周两次第三周一次。五次里有三次都是验收标准模糊导致的。如果你发现自己经常补逻辑改判断条件大概率是前置验收标准没写利索。4. 手速不是瓶颈真正提升的是决策速度4.1 写代码时决策次数才是上限很多人一谈开发效率就想到打字速度、工具链、IDE 快捷键但我的实际体感是大部分时间花在“决定怎么写”而不是“写”上。变量叫什么、这个函数要不要抽出来、接口参数用对象还是单个传、这层判断放在前端还是后端……每一个都是一次决策每一次决策都需要消耗认知资源。举一个很生活化的例子开车的时候决定你到目的地快不快的不是踩油门的力度而是你提前多久判断路况、什么时候变道。写代码也一样手速只是油门决策路径才是路线。第三周我统计数据时发现我每天的代码行数并没有明显增加但返工次数大幅下降就是因为决策质量上来了。4.2 模板、规范、清单把决策提前做掉减少决策最有效的办法是让一部分决策根本不需要发生。过去我建一个新页面要现场想文件夹结构、命名、组件划分后端写一个新接口要现场想路径、参数、错误码格式。这些事每次想一遍看着不起眼日积月累就是很大的损耗。三周里我给自己定了三条硬规则前端新增业务页面一律按统一目录模板生成模块划分、样式文件命名固定下来后端接口路径统一以/api/admin/开头列表接口统一分页结构错误码统一从常量表里取所有异常处理走统一入口不在业务代码里到处 catch 后乱返回。规则定了之后大部分新需求的开发变成“套模板往里填业务逻辑”不需要每次现想现摸着过河。这里的提升不是工具层面的而是把高频、低价值的决策转移到了规范和模板里。4.3 拒绝“顺手优化”一次只允许一个非计划内动作我过去效率低的另一个原因是太容易“顺手”做计划外的事。写着需求 A看到一处旧代码很丑顺手重构改着 B 模块发现 C 模块有个明显 bug顺手修了。结果就是 A 被晾在一边等我回来时已经忘了一半思路还要花时间重新读代码。第二周我给自己立了一条规矩顺手发现的问题一律记进“技术债便签”不在主线任务里处理。便签本身就是一个 Markdown 文件按模块分类记录等到专门的技术任务时段再去集中消耗。执行效果很直接第三周我的主线任务中断次数大幅减少每个需求点的完成时间都变得更稳定。这里想特别强调一个感受拒绝“顺手优化”不是冷漠而是对自己注意力的保护。真正重要的需求不该被突如其来的“好人好事”打断。技术债值得还但要在一个可控的窗口期里还。5. 试错记录几个流行效率方法在我这里的失效分析5.1 番茄钟为什么我只坚持了两天网上很多人推荐番茄工作法我也试过但很快就放弃了。原因很真实写代码进入心流状态通常需要十到十五分钟而番茄钟每到 25 分钟就强制响铃等于专门挑你最专注的时候打断你。打断之后重新进入状态又要十分钟一来一回我的产出反而比不用番茄钟更低。后来我做了个改良只用第一个番茄钟作为“入场仪式”帮自己启动任务。启动之后铃一关让它自然滚动。这样一来既保留了“开始前排除干扰”的好处又去掉了“强制打断”的副作用。如果你试过番茄钟觉得难受大概率不是你的问题是响铃机制对深度工作不友好。5.2 多标签页多任务看起来很忙产出很低我还复盘了一个很常见的行为浏览器里开着几十个标签页同时铺开需求 A、需求 B、需求 C 的代码随时来回切换。表面上很忙但每个任务都只前进了 10%。因为每次切回一个任务都要花时间回忆这个任务的当前状态和下一步计划。第三周我换了一种做法桌上只放一张“当前任务卡”卡片上写着本阶段唯一在做的事代码分支只开当前任务相关的一个浏览器标签页也只留跟当前任务相关的两三页。其余任务统一放到下午的固定时间再拾起来。这个变化让我的“心理切换成本”降到接近于零每个任务都更容易推进到完成态。5.3 从“要更快”转向“要更少返工”反向清单复盘的过程中我整理了一份“反向清单”写的是三周里证明不该做的事不在周五下午动核心模块因为临近收尾时人的注意力最容易涣散改出问题没时间收拾不在没写验收标准之前动手写业务代码这是返工的最大来源不在临下班前开新分支、做新方案大脑过一晚就会遗忘刚才的思路第二天又得重新读代码。“反向清单”听上去很消极但非常有效。很多时候效率问题不是因为你不知道做什么而是因为你忍不住去做那些高风险、低收益的动作。把“不要做”的东西列出来比列“要做”的东西更能稳住基本盘。6. 下一轮实验把提升固化成默认习惯6.1 过去三周的提升点哪些能继续保留复盘的价值在于沉淀而不是总结完就忘。我梳理了三周后确定要长期保留的三件事第一动手之前写五行的设计笔记。以后凡是新建分支先写下这个分支要解决的问题、边界和验收标准。写不满五行说明需求压根没想明白这时候不应该动手。第二进入新项目的头一天就配好一键启动脚本和 mock 方案。以前总觉得这些事情“等有空再说”但正是这些“等有空”的事日后每天在零敲碎打地吃你的时间。第三技术债便签跟周报工具合并。发现问题顺手记周五统一看一次安排专门的时间集中消化不让技术债变成主线任务的噪音。6.2 下三周准备验证的三件事保持记录这套机制我还会继续跑下去。下一轮想验证三个更进一步的假设上午 9:30 到 11:30 这段最清醒的时间完全留给最难的需求看每个需求点的平均完成时间能不能再压缩两到三成在核心模块上尝试“测试先行”写代码前先写好最小单测和回归样例不求全面 TDD只求关键路径不再因为改动被悄悄破坏把即时通讯工具的回复频率降低集中在每天下午固定时间段批量处理看会不会真的导致协作卡顿。这些都是小规模实验不指望发生奇迹但可以持续校准我对“开发效率”的判断标准。最后说一点个人体会吧。过去三周最大的变化不是我学会了什么炫酷的新工具而是我开始认真对待“时间去哪了”这件事。效率提升没有银弹真正值钱的不是某个脚本、某个写法而是你愿意把忙乱摊开来看、承认哪些动作在消耗你然后一个一个把它们堵上。复盘这件事一旦开始记录就已经赢了。

相关新闻

OpenClaw 自动化工作流实战:用 Hooks + 定时任务 + 事件驱动构建“数字员工”

OpenClaw 自动化工作流实战:用 Hooks + 定时任务 + 事件驱动构建“数字员工”

/* 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 13:00:28 阅读更多 →
IgG:体液免疫应答的核心效应分子,亚类特性与疾病机制研究进展

IgG:体液免疫应答的核心效应分子,亚类特性与疾病机制研究进展

免疫球蛋白识别、体液免疫应答与免疫稳态维持是免疫学基础研究、疫苗开发及自身免疫病机制探索的核心前沿。免疫球蛋白G(Immunoglobulin G,IgG)是血清中含量最高、半衰期最长、功能最为多样的免疫球蛋白类型,是机体适应性免疫应答…

2026/10/10 17:35:40 阅读更多 →
使用MCP执行代码:让Agent效率提升98.7%的TaoToken实践

使用MCP执行代码:让Agent效率提升98.7%的TaoToken实践

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

2026/10/9 12:27:43 阅读更多 →

最新新闻

二阶锥规划在动态最优潮流计算中的应用与实践

二阶锥规划在动态最优潮流计算中的应用与实践

1. 项目背景与核心价值电力系统最优潮流(OPF)问题一直是电网运行的核心课题。传统配电网中,我们通常假设潮流是单向流动的——从变电站流向用户端。但随着分布式电源(光伏、风电等)的大规模接入,现代配电网…

2026/10/14 14:35:50 阅读更多 →
FastAPI GPU推理并发控制:显存预估与队列准入实战

FastAPI GPU推理并发控制:显存预估与队列准入实战

1. 为什么这个标题一出现,我就立刻停下手头三个项目去验证?FastAPI GPU推理并发控制——这八个字背后,是过去两年我踩过最深、最痛、也最常被低估的坑。不是模型精度不够,不是API响应慢,而是请求刚到第17个&#xff0c…

2026/10/14 14:35:50 阅读更多 →
免费代理服务评测与GoodIps.com使用实践

免费代理服务评测与GoodIps.com使用实践

1. 网络代理服务选型与质量评估实践作为经常需要测试不同地区网络环境的开发者,我一直在寻找稳定可靠的代理服务资源。最近半年我系统性地测试了市面上十几个声称提供免费代理服务的网站,从连接成功率、响应速度、IP可用时长、更新频率等多个维度进行了详…

2026/10/14 14:35:50 阅读更多 →
青岛市shp数据解压与转换全攻略:从shp/shx/json到GIS实战

青岛市shp数据解压与转换全攻略:从shp/shx/json到GIS实战

简介:这份资源是面向GIS初学者、地理信息专业学生及城市规划从业者的青岛市区域划分地理数据包,可用于地图制作、空间分析与规划决策等场景。压缩包共5个文件,约43KB,包含shp主数据文件(存储几何形状)、dbf…

2026/10/14 14:35:50 阅读更多 →
Oracle批量导出建表语句的生产级实战方案

Oracle批量导出建表语句的生产级实战方案

1. 这个需求背后的真实战场:为什么批量导出建表语句不是“点几下鼠标”那么简单在某次数据库迁移项目中,我接手了一个运行了八年以上的Oracle核心业务库。客户要求“把所有表结构导出来”,原以为只是DBA日常操作——结果第一天就卡在了第37张…

2026/10/14 14:35:50 阅读更多 →
AI摄像头在能源场站落地难?破解智能告警与人工巡检断层

AI摄像头在能源场站落地难?破解智能告警与人工巡检断层

1. 项目概述:当AI摄像头遇上能源场站,技术落地的真实断层“装了AI摄像头的能源场站,为什么安全员最后还是靠腿跑?”——这句话最近在能源行业一线群里被反复转发,不是调侃,而是带着疲惫的苦笑。我去年参与过…

2026/10/14 14:34:49 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →