Codex CLI实测:让AI在终端里真正干活,完成编码任务闭环
DevDay 结束当晚我照例把发布会信息刷了两遍。如果只看标题这会是一场信息量极大的大会模型、API、新能力、工具链东一榔头西一棒子地铺开一眼看去全是亮点。但作为一个每天都在终端里写代码的人真正让我从电脑前坐直的更新不是那些花哨展示而是这一条OpenAI 把 Codex 做成了可以独立使用的命令行编码 Agent并且直接支持 ChatGPT 账号登录。换句话说你不必再把错误日志复制到网页对话框里来回折腾而是在本地终端里就能让一个 AI 助手替你读代码、改文件、跑命令直到任务真正完成。这篇文章我就围绕 Codex CLI 来拆讲清楚它解决了什么问题、实测跑通一个任务的完整流程以及那些安装和登录阶段容易踩的坑。1. 从 20 多项更新里揪出真正有长期价值的那一项1.1 发布会信息看着很满但大部分属于“看得见摸不着”各家开发者大会都有一点通病台上演示十分钟的东西往往到发布后才发现离自己手头的工作还隔着好几个“适配层”。这次 DevDay 也差不多模型能力更强、接口更丰富、多模态展现更花哨整体给人的感觉是 OpenAI 在把基础设施的宽度继续拉大。对于一个普通的应用开发者来说这些当然有价值但它不解决一个更迫切的现实问题我明天写代码时的具体流程到底变在哪我后来刷了不少开发者的即时反馈很多人和我想法一致当天发布的内容里能在一周内直接进入日常工作流、并且明显改变做事方式的其实就一到两样。其他地方大多是在补地基只有 Codex CLI 这一条是在升级“开发者怎么和代码仓库相处”这件事本身。它不是给你多一个模型选项而是把 AI 从你的“外挂大脑”变成了“本地同事”。1.2 Codex 不是又一个聊天机器人而是搬进终端的 Agent要理解这条更新为什么值得单独拿出来看先得搞清楚 Codex 的身份变化。它最早的形态更接近一个编码模型你在网页对话框里描述需求它在回复里给你一段代码。这当然有用但它始终和你真实的工程环境隔着一层你复制代码、贴进文件、再手动跑测试时间一点没少花。Codex CLI 把这一层彻底删掉了。登录之后它在你的项目目录里跑起来能自己读文件、自己定位问题、自己执行命令再把命令输出拿回来判断下一步该做什么。它已经不是“会写代码的聊天机器人”而是一个有手有脚、能同时操作文件系统和终端程序的 Agent。我在本地第一次跑完安装命令、看到终端里出现欢迎信息的那一刻其实没有特别激动。真正让我觉得“这次不一样”的是后续一个小时的实测它确实能在无人值守的情况下完成一个从定位到修复再到验证的完整闭环。对长期只把 AI 当“答案生成器”的人来说这种改变通常不太容易靠想象理解——你真正跑完一个任务就会发现问题不再是你有没有答案而是你愿不愿意把一个任务完整地交出去。2. Codex CLI 真正值钱的地方是把“会说”变成“会做”2.1 ChatGPT 登录这一步比任何参数改进都有分量Codex CLI 出来后大家讨论得最多的其实是它的登录方式直接用 ChatGPT 账号登录而不是一上来就要配一堆 API Key。这个决定看着不起眼实际上把门槛砍掉了一大截。我见过很多开发者其实并不缺 AI 工具缺的是“起手就能用”的顺滑感。如果你让一个只在网页端用过 ChatGPT 的同事去配命令行工具面对 API Key、预算、控制台之类的东西他大概率会打退堂鼓。现在 Codex 把 OAuth 授权做到终端里你跑一条codex login浏览器弹出来点一下授权回到终端就能开始。日常个人开发者用这套流程就够了不需要碰计费系统。当然这不意味着 API Key 没有价值后面我会专门讲什么时候必须切到 Key 模式。但要理解 Codex 的定位OpenAI 显然希望它成为更多人的默认开发工具而不是少数脚本党的玩具。用 ChatGPT 登录降低的是心理门槛真正留下来的则是它能实实在在干活的底气。2.2 它能在仓库里动手这才是和网页版拉开差距的关键网页版聊天框的最大问题不是不会写代码而是它不掌握你仓库的真实状态。一个再聪明的模型如果你不和它同步完整上下文它给出的答案都是“基于猜测”。Codex CLI 则把上下文直接建在本地项目上它看到的是真实文件、真实依赖、真实报错以及你手头那条没跑通的测试。实际用起来它是这样工作的启动后Codex 会基于你给的任务去扫描项目结构找到和任务相关的文件决定要读哪几个、改哪几个。如果需要执行验证比如跑测试或者检查 lint 结果它会调用 shell 命令把输出接回来判断有没有达到预期不满足就继续修直到满足为止。这等于把过去“人在中间传话”的模式变成了“AI 和代码仓库直接对话”。开发者退到监督者的位置只需要判断方向和收尾。我个人的体验是它不总是第一次就成功但只要你能清晰描述验收标准它就有极大的概率靠迭代把问题碾过去。这种模式带来的效率变化不是让你少写几行代码而是让你的注意力不再被零碎的“复制粘贴—手动运行—看报错”拖走。3. 从零跑通 Codex安装、登录、修好一个真实测试3.1 环境准备和安装命令顺便解决全局依赖的误会Codex CLI 是 npm 包这意味着前提很简单一台装有 Node.js 的电脑。Node 版本建议 18 及以上版本太老容易出现各种奇怪的兼容问题。确认完 Node 版本后全局安装即可。node -v npm -v npm install -g openai/codex安装完成后先用codex --version确认命令生效。如果之前没配置过 npm 全局路径可能会出现“command not found”这种情况把 npm 的全局 bin 目录加入系统 PATH 就行。有一点值得多说Codex 的安装包会针对不同平台拉取对应二进制的可选依赖包比如 Windows 上对应openai/codex-win32-x64。这个机制本来是为了提升运行效率但也容易成为安装阶段最大的坑。后面第 5 节我会把典型的报错和修法单独写出来第一次装没见过的朋友不用慌。还有一个可能让你意外的小细节如果只是临时体验也可以用npx openai/codex直接跑不用全局安装。但长期用的话我还是建议装进全局因为 Codex 需要保存登录态、跨目录使用全局方式更方便管理。3.2 两种认证方式谁更顺手ChatGPT 登录和 API Key 的取舍Codex 目前给我感觉最舒服的配置姿势是直接登录 ChatGPT命令只有一条codex login执行后终端会打印一个授权链接同时尝试自动打开浏览器。你用自己的 ChatGPT 账号确认授权授权信息就会落盘到本机之后每次使用不需要再重复登录。对个人日常开发来说这是最省心的路径尤其适合已经把 ChatGPT 当作常用工具的开发者。如果你要把它接到自动化脚本、服务器任务或者需要单独统计数据的环境里那就应该切到 API Key。过程也不复杂先创建好 Key再把它放到环境变量里然后执行export OPENAI_API_KEYsk-你的密钥 codex login --api-key两条路我都在用谈不上谁绝对更好只能说场景不同。下面这张表可以直接帮我当初决策时省点时间对比维度ChatGPT 登录API Key适用场景个人电脑上的交互式开发CI、脚本、多人共享项目配额计费方式随账号套餐或单独额度使用按实际调用量计费配置成本浏览器授权一次即可控制台创建密钥并配置环境变量安全风险凭据保存在本地 OAuth 授权中泄露风险更高需要妥善管理适合的人群前端、后端、日常编码的零门槛入场有自动化、运维和成本治理需求的人我的建议是日常开发默认走 ChatGPT 登录等到需要跑脚本批量处理任务时再给对应项目配一把 Key两条线分开既清楚又安全。3.3 实战演练让 Codex 把一个时区相关的失败测试修到全绿光说不练没有意义我把一个真实的小项目拿来作示范。场景是这样的本地 Node 项目里有一个tests/time.test.js内容涉及时区转换在某台机器上总有一条用例失败而我半天找不到规律。我干脆把任务直接丢给 Codexcd ~/projects/tz-demo codex 帮我修好 tests/time.test.js 中跟时区相关的失败用例要求 npm test 最终全部通过并说明根因Codex 的处理过程大致分这么几步。它先是快速浏览了项目结构定位到测试文件和它依赖的时间工具然后打开package.json确认测试脚本是怎么执行的接着它读了失败用例发现测试里比较的时间是基于本地时区计算的而断言却预期 UTC 的固定值。第一次修复它想改断言值顺着本地时区调结果跑测试还是不稳定于是它退回一步把测试环境变量固定为TZUTC让测试用例本身不再受机器时区影响最后npm test全绿。整个过程大概花了三分钟左右期间我没有干预过一次它自己完成了看文件、改代码、跑测试、再修正的循环。这个例子不复杂但恰恰说明了 Codex CLI 的真正优势它能在真实环境里自我验证而不是给你一个“看起来对”的答案。用过几轮之后我总结出几条实用的提示词经验任务描述里带上明确路径和文件比如“修好 tests/time.test.js”能大幅减少它瞎猜范围的时间验收标准要给足比如“npm test 必须全部通过”“lint 不能有报错”它才能把目标执行到底要求“说明根因”别只让它改代码这样即使改完代码你也能知道为什么原来的实现是错的方便 review。4. Codex 搭配 API Key创建、配置和额度管理4.1 为什么个人日常也建议知道 API Key 的用法ChatGPT 登录适合交互但当你需要写一段脚本批量调用 Codex或者要在服务器、测试流水线里跑任务时交互式的登录态就不太可靠了。服务器环境下浏览器不常驻你总不能每次都重新走一遍授权。API Key 的优势就在于它是机器对机器可以提前配置好随用随调。另一个原因是成本归属。ChatGPT 登录之后你实际用的是账号对应的额度很难把某个项目的开销单独拆开看。API Key 则可以绑到具体的 Project 上哪个项目调用多、哪个脚本在烧钱控制台里一查就清楚。对于把 AI 编码工具深度嵌入工作流的人这一步迟早要做。4.2 创建 API Key 的完整流程与防止泄露的配置习惯创建流程不复杂但有几个细节容易漏。我建议按下面几步来登录 OpenAI 平台控制台进入 API Keys 页面点击创建新密钥建议选择项目级密钥而不是账号级全局密钥给密钥设置一个能看明白的名字比如codex-local-dev创建完成后立刻复制保存密钥只显示这一次关掉页面就再也看不到全文把密钥配置到本地环境变量里而不是写死在代码中。环境变量配置方式按系统区分# macOS / Linux 临时使用 export OPENAI_API_KEYsk-你的密钥 # 写入当前 shell 配置让它长期生效 echo export OPENAI_API_KEYsk-你的密钥 ~/.zshrc# Windows PowerShell $env:OPENAI_API_KEYsk-你的密钥如果你不想把密钥写进 shell 配置也可以在项目根目录创建一个.env文件然后让运行脚本读取它。但务必记住一件事重要.env文件应当立即写进.gitignore绝对不能提交到版本库。这类文件一旦被推送到公开仓库几分钟内就可能被扫描工具检测并盗用。我早期犯过一次把测试密钥写死在配置文件里的错误虽然很快撤回但那种事后紧张的体验不希望大家再经历一遍。配置 Key 时养成“能不入库就不入库”的习惯能帮你省掉很多麻烦。4.3 项目级 Key 的分账逻辑不分享、但也要能管理和“OpenAI API Key 分享”相关的话题热度一直很高但我必须泼一盆冷水任何在不明渠道索要别人密钥的行为都极其危险。别人给你的 Key 随时可能被回收谁也不知道它背后绑了多少预算你把自己的 Key 给别人用一旦对方跑超了额度账单却砸在你头上这不是风险是必然会遇到的麻烦。正确做法是把密钥管起来。创建项目级 Key 的好处就在这你可以给不同项目、不同用途发不同的 Key每个 Key 都有自己的身份标签即使某一个泄露或者超支也能精准定位到具体场景。你还可以在控制台设置每月的限额一旦逼近上限系统会主动限制不会让账单持续滚雪球。团队协作的正确方式也不是共享个人 Key而是把同一个项目级 Key 交到需要它的人手里同时在控制台监控整体用量。这样一来每个人都能跑通 Codex成本又在可控范围内出了问题也有据可查。5. 上手体验中的高频报错与排查笔记5.1 Windows 安装时报 missing optional dependency openai/codex-win32-x64 怎么办这个报错出现的频率相当高完整信息通常长这样missing optional dependency openai/codex-win32-x64. reinstall codex: npm install openai/codex -g我第一眼看到时也愣了一下以为是安装失败导致包没装全。经过排查这个提示其实是 npm 在处理平台相关可选依赖时没有正确安装 Windows 对应的二进制模块。常见原因是全局缓存里有旧数据或者全局目录权限被改动导致 npm 跳过或者没拉全对应的可选包。解决方法按优先级试# 先清缓存避免旧包影响 npm cache clean --force # 重新安装覆盖之前不完整的全局包 npm install -g openai/codexlatest --force如果重装以后问题还在可以考虑临时用npx openai/codex顶一下npx 会在临时缓存里重新拉包能绕开全局 npm 目录里的污染。若你确实需要全局命令也可以查一下 npm 全局目录权限是否正常必要时用管理员权限安装。5.2 登录时浏览器没有自动打开授权流程卡住怎么处理codex login最常见的卡点发生在浏览器自动调起环节。有的系统环境会拦截自主弹出浏览器有的是因为本地回环端口被占用导致终端一直干等。解决办法很简单终端输出的授权链接是可以手动打开的你复制链接到浏览器完成授权后回终端看状态即可。如果浏览器已经授权了但终端迟迟没有反应多半是回调地址没成功回到本地服务。这时优先检查终端窗口是不是被某些代理类软件改过端口设置或者本地端口被别的进程占用了。实在排查不出来最稳妥的备选方案就是切换到 API Key 登录改用codex login --api-key整个流程完全绕开 OAuth 回调对自动化场景反而更干脆。5.3 权限控制别在每次确认时都无脑放行Codex 能执行命令是最大的优势也是最大的风险。它为了干活方便会时不时要跑测试工具、包管理器甚至 Git 语句。初次使用时终端会弹出权限确认有些情况下还提供“总是允许”之类的宽松选项。我的习惯是在日常开发目录里可以允许它执行常见命令但涉及删除文件、安装依赖、修改全局配置的时候务必看清楚了再放行。它毕竟是自动化工具你给它越大的权限它帮你走越远的同时也意味着一旦步骤出错影响范围就会扩大。如果你只打算让它分析问题不改动代码也可以在初始任务里写清楚“先不要执行任何命令只输出分析和建议”这样它就会收敛很多。记住一点Agents 是很能干的执行者但把关和兜底始终是开发者的活。5.4 用量超支的提前刹车用 API Key 跑自动化任务时我遇到过账单不知不觉涨起来的教训。原因是当时写了一个循环脚本任务反复失败反复重跑而每次重跑都会消耗大量 token等我看控制台时已经超出一开始的预期。后来我长记性了去控制台把项目的月度限额和每笔预算都设清楚同时养成了“跑长期任务之前先检查当日用量”的习惯。这个习惯救了我很多次任务一旦异常不至于持续空转烧钱。尤其是把 Codex 嵌入到 CI 里的团队用量治理不是在出问题之后才做的事而是在第一天配置 Key 时就该顺手设好的栏杆。最后留一句个人体会。这段时间我的开发习惯已经被 Codex 悄悄改掉了任何一个耗时超过五分钟、逻辑可复现的小任务我都会先丢给命令行试一轮跑不动再切回手工。一开始它也常在细节上翻车但只要我把验收标准、失败命令、期望结果写清楚它的成功率明显高得多。如果要从这段经历里提炼一个最关键的开关那就是别一开始就让它碰整个仓库先给它一个小而明确的任务再配一条它能自己验证的命令。AI 编码工具不是替你做判断它只是帮你在圈定的盒子里高效加班你得先把盒子画好门留对。

相关新闻

文献综述简单罗列,缺乏述评与研究缺口提炼问题的学术分析

文献综述简单罗列,缺乏述评与研究缺口提炼问题的学术分析

文献综述是论文的重要组成部分,核心功能是梳理学术脉络、总结前人成果、提炼研究空白,为自身研究提供立论依据。然而大量研究生撰写文献综述时,陷入文献清单式写作误区,单纯按照作者、年份罗列文献观点,只做 “述” 而…

2026/10/15 9:25:23 阅读更多 →
鲲鹏+麒麟V10部署ClickHouse 21.8 ARM64安装包实战与避坑指南

鲲鹏+麒麟V10部署ClickHouse 21.8 ARM64安装包实战与避坑指南

简介:本资源为在华为鲲鹏920处理器(aarch64架构)与麒麟V10操作系统上编译完成的ClickHouse 21.8.14安装包,面向需要在国产化自主可控环境中搭建OLAP大数据分析平台的运维与开发人员。包内共20个文件,以可执行二进制程序…

2026/10/15 9:25:23 阅读更多 →
8周科学减脂计划:精准打击内脏脂肪的6个核心动作

8周科学减脂计划:精准打击内脏脂肪的6个核心动作

1. 项目概述:科学减脂的核心逻辑这个8周减脂计划的核心在于通过特定动作组合精准打击内脏脂肪。内脏脂肪不同于皮下脂肪,它包裹在腹腔器官周围,与代谢综合征、胰岛素抵抗等健康问题密切相关。我设计的这6个动作经过多年实践验证,能…

2026/10/15 9:25:23 阅读更多 →

最新新闻

FFMI无脂质量指数:精准健康评估新标准

FFMI无脂质量指数:精准健康评估新标准

1. 项目背景与核心价值在健康评估领域,BMI(身体质量指数)长期作为基础指标被广泛应用,但其局限性日益凸显——无法区分肌肉量和脂肪量。一个健美运动员可能因肌肉发达被BMI判定为"肥胖",而体脂超标的"隐…

2026/10/15 10:11:12 阅读更多 →
Python+Django+Flask构建牙科诊所管理系统实践

Python+Django+Flask构建牙科诊所管理系统实践

1. 项目概述:牙科诊所管理系统的技术选型与实践这个项目是一个基于Python技术栈的牙科诊所综合管理系统,采用了DjangoFlask双后端框架与Vue.js前端的技术架构。作为一名经历过三次诊所管理系统迭代的开发者,我深刻理解这类系统需要同时满足病…

2026/10/15 10:11:12 阅读更多 →
MATLAB/Simulink在电动飞机动力系统建模与优化中的应用

MATLAB/Simulink在电动飞机动力系统建模与优化中的应用

1. 项目背景与核心价值电动和混合动力飞机正成为航空业最具潜力的技术方向之一。与传统燃油飞机相比,电驱系统在能效比、碳排放和维护成本方面具有显著优势。但动力系统的设计复杂度也呈指数级上升——电机、电池、电控三大核心部件的参数耦合,使得传统经…

2026/10/15 10:11:12 阅读更多 →
SQLite+FTS5+BM25构建轻量级上下文检索模式

SQLite+FTS5+BM25构建轻量级上下文检索模式

1. “context-mode”到底是什么?别被术语吓住,它其实是个很实在的工程设计思路“context-mode”这个词最近在开发者社区里频繁出现,尤其和MCP、SQLite、FTS5、BM25这些词绑在一起。很多人第一反应是:“又一个新概念?”…

2026/10/15 10:11:12 阅读更多 →
前端刷题平台实测:从CSS布局到虚拟列表的性能优化路线

前端刷题平台实测:从CSS布局到虚拟列表的性能优化路线

如果你也是干前端的,大概率有过这种体验:一说“刷题”,脑子里第一个蹦出来的还是那个以算法题为主的平台。可真到了面试或者实际开发,情况就变得很微妙——很多前端岗位的技术面,压根不考你手写红黑树,而是…

2026/10/15 10:11:12 阅读更多 →
超越传统tf2树:hyperframes用带协方差的帧图破解多传感器融合难题

超越传统tf2树:hyperframes用带协方差的帧图破解多传感器融合难题

先说结论:如果你手头的项目只是固定几个坐标系,老老实实用 tf2 就够了,别折腾 hyperframes。但只要出现过“这个传感器数据不知道该往哪棵树挂”或者“两个里程计之间到底听谁的”这类问题,你大概率就遇到了传统坐标帧管理的边界。…

2026/10/15 10:10:10 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

2026/10/14 16:30:29 阅读更多 →
影刀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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →