security-audit-skill 设计实践:为 coding-agent 构建自动化安全审计能力
1. 从security-audit-skill这个名字说起它到底要解决什么问题第一次看到security-audit-skill这个命名我的直觉是这不是一个普通的工具库而是一个面向编码智能体coding-agent的安全审计技能模块。命名里的skill很关键——它暗示了这套东西不是给人类直接敲命令用的 CLI而是被设计成一种可被智能体调用、编排、复用的能力单元。换句话说它更像是给 AI 编程助手装上的一个安全审查大脑。为什么这个方向值得单独拎出来讲因为过去两年我接触过不少团队把 AI 编码助手接进研发流程写代码的速度确实上来了但随之而来的是一类很尴尬的问题AI 生成的代码能跑和安全之间隔着一整条鸿沟。硬编码的密钥、拼接出来的 SQL、没做校验的用户输入、随手eval一下的临时方案这些东西在人工 review 时容易被漏掉在 AI 高速产出时更容易被淹没。security-audit-skill这类模块存在的意义就是把安全审计这件事从靠人盯变成靠技能自动触发。这篇文章我想聊的不是某个具体仓库的 API 文档——那种东西看 README 就够了。我更想拆的是一个 security-audit-skill 应该怎么设计、怎么落地、怎么和 coding-agent 配合、以及实际跑起来会踩哪些坑。适合两类人看一是正在给团队搭 AI 编码流水线的工程师二是想理解安全审计技能这套抽象到底怎么落地的人。哪怕你之前没接触过 agent skill 这个概念我也会用生活化的类比把它讲清楚。先说结论性的判断security-audit-skill 的核心价值不在于发现多少漏洞而在于把安全审计的判断逻辑固化成可重复执行的技能让每一次代码生成、每一次提交都能过一遍同样的标准。这一点比单纯堆规则库重要得多。2. 拆解 security-audit-skill 的能力边界它能做什么不能做什么2.1 一个 skill 的本质是封装好的判断流程要理解 security-audit-skill先得理解 agent skill 这个抽象。你可以把它想象成给一个刚入职的聪明实习生准备的一份标准作业手册SOP。实习生本身能力很强但他不知道你们公司的安全红线在哪、不知道哪些模式是历史踩过坑的、不知道审计报告该按什么格式写。skill 就是把这些隐性知识显性化变成一份他每次都能照着执行的流程。具体到 security-audit-skill它通常包含几个部分触发条件什么时候该调用它、输入约定给它什么代码片段diff整个仓库、审计逻辑按什么维度检查、输出格式结构化报告还是自然语言建议。这四块缺一不可。我见过不少团队只写了审计逻辑结果 agent 根本不知道该在什么时机调用最后这个 skill 就成了摆设。2.2 它擅长的事模式识别与一致性检查security-audit-skill 最擅长的是那些有明确模式、需要反复执行、人工容易疲劳的检查。举几个典型场景敏感信息泄露代码里有没有硬编码的 API Key、数据库密码、私钥片段。这类检查规则明确AI 做起来又快又稳。注入类风险SQL 拼接、命令拼接、模板注入、路径穿越。这些都有相对固定的危险模式。不安全的默认配置关闭了证书校验、用了弱加密算法、CORS 设成了通配符。依赖与供应链引入的库版本是否有已知问题、是否来自可信来源。这些场景的共同点是判断标准相对客观误报可以通过规则调优来控制。这正是 skill 化的最佳土壤。2.3 它不擅长的事业务逻辑漏洞与架构级风险这里必须泼一盆冷水。security-audit-skill不是银弹它在以下场景里表现会明显打折风险类型skill 表现原因越权访问弱需要理解业务角色模型纯代码看不出竞态条件弱需要理解并发时序静态看代码容易漏加密协议误用中能识别算法名但难判断使用场景是否恰当注入类强模式固定规则可覆盖密钥泄露强特征明显误报可控我个人的经验是把 security-audit-skill 定位成第一道自动化防线而不是最终裁决者。它负责把 80% 的低级问题挡在提交之前剩下 20% 需要人类判断的交给有经验的安全工程师。指望它替代人一定会失望把它当过滤器收益立竿见影。2.4 边界之外为什么少即是多设计 skill 时有个反直觉的原则能力边界越清晰实际效果越好。我见过一个团队把 security-audit-skill 设计得无所不包从代码风格到性能建议全塞进去结果 agent 每次调用都输出一大堆噪音开发者直接选择忽略。后来他们砍到只保留三类高危检查采纳率反而上去了。这背后的逻辑很简单审计报告的价值 真问题数量 / 总输出数量。分母越大信噪比越低人就越不愿意看。所以 security-audit-skill 的第一设计原则应该是宁可漏报不可误报泛滥——至少在初期是这样。3. 把 security-audit-skill 接进 coding-agent触发时机与调用链路设计3.1 三个关键触发点生成时、提交前、合并前skill 设计得再好如果触发时机不对等于白搭。根据我实际搭过的几套流程最有效的触发点有三个第一个是代码生成时on-generate。当 coding-agent 刚写完一段代码还没落盘就顺手过一遍 security-audit-skill。这个时机的好处是反馈闭环最短——AI 刚写完就知道哪里有问题可以直接自我修正。坏处是会增加生成延迟而且此时代码可能还不完整容易误报。第二个是提交前pre-commit。这是性价比最高的触发点。代码已经成型开发者即将提交此时审计一遍问题还没进入版本历史。我一般建议把这里作为主触发点。第三个是合并前pre-merge。针对 PR/MR 做一次全量审计作为最后一道闸门。这个时机适合做更重的检查比如跨文件的依赖分析。提示不要三个点都做全量审计会拖慢整个流程。我的做法是 on-generate 只做轻量高危检查密钥、注入pre-commit 做中等强度检查pre-merge 才做全量。3.2 输入怎么给diff 还是全量这是个问题给 security-audit-skill 喂什么输入直接决定它的效果和性能。这里有个权衡喂 diff快聚焦本次改动误报少。但缺点是无法发现本次改动引入的、但问题体现在别处的漏洞比如你改了一个函数的签名导致调用方出现了类型混淆。喂全量全面能发现跨文件问题。但慢而且每次都要重新分析大量没变的代码噪音也多。我的实践方案是分层pre-commit 喂 diffpre-merge 喂全量。而且全量审计时我会让 skill 优先关注被本次改动影响到的文件及其依赖而不是无差别扫描整个仓库。这个影响面分析的逻辑是让全量审计变得可用的关键。3.3 输出格式结构化才能被 agent 消费这一点特别容易被忽略。很多人设计 skill 时输出是一大段自然语言人类读着还行但 agent 拿到之后没法结构化处理。security-audit-skill 的输出必须是结构化的我一般用这样的字段{ findings: [ { severity: high, category: hardcoded-secret, file: src/config.js, line: 42, snippet: const API_KEY \sk-...\, reason: 检测到疑似硬编码密钥, suggestion: 改用环境变量注入 } ], summary: { total: 1, high: 1, medium: 0, low: 0 } }有了这个结构agent 就能自动决定高危问题直接阻断提交中危问题提示但不阻断低危问题记录到日志。结构化输出是 skill 从建议升级为可执行策略的前提。3.4 调用链路谁来决定调用 skill还有一个架构层面的问题是 agent 自己决定调用 security-audit-skill还是外部流程强制调用两种模式各有适用场景。agent 自主调用更灵活适合探索式开发但风险是 agent 可能忘记调用或者判断某段代码不需要审计。外部强制调用更可靠适合有合规要求的团队但灵活性差。我通常采用混合模式在 CI 流水线里强制调用保证底线同时在 agent 的 skill 列表里也注册它让 agent 在写代码时能主动自查。两条腿走路既保证不漏又保证及时。4. 审计规则怎么写从能查到查得准的调优过程4.1 规则的三层结构特征、上下文、判定一条好的审计规则不是简单的字符串匹配。我把它拆成三层第一层是特征匹配。比如检测硬编码密钥先匹配key、secret、password、token这类变量名加上赋值语句的模式。这一层负责捞出来。第二层是上下文判断。捞出来之后要看上下文。比如const API_KEY process.env.API_KEY虽然变量名叫 API_KEY但它是从环境变量读的不是硬编码应该排除。这一层负责过滤误报。第三层是判定与分级。根据匹配到的内容特征判断严重程度。比如匹配到的是sk-开头的字符串典型的密钥格式判高危匹配到的是password 123456这种测试用的弱密码判中危。三层缺一不可。只做第一层误报会淹没你只做第三层没有特征匹配就无从判定。4.2 误报治理这是最耗精力也最值钱的部分说句实话security-audit-skill 落地过程中80% 的时间花在误报治理上。规则写出来容易让它只报真问题极难。我踩过的坑包括测试代码误报测试文件里经常有故意构造的坏代码用来验证安全逻辑。如果不排除测试目录每次审计都一堆噪音。示例代码误报文档、示例、mock 数据里的假密钥会被当成真密钥。框架约定误报某些框架有特定的安全写法规则不认识就会误判。我的治理策略是维护一份白名单 上下文规则。白名单按路径排除如test/、examples/、docs/上下文规则按代码模式排除如从环境变量读取、从配置中心拉取。这份白名单需要持续维护每次发现误报就补一条。注意白名单不能太宽。我见过有人直接排除整个src/下的config目录结果真密钥也漏了。白名单要精确到文件或模式不能图省事。4.3 规则的可维护性别写成一次性脚本还有一个血泪教训规则要写成可配置、可测试、可版本化的形式不要写成硬编码的脚本。我早期图快把规则直接写死在 skill 的逻辑里结果后来想调整阈值、想加新规则改起来牵一发动全身。正确的做法是把规则抽成独立的配置文件YAML 或 JSONskill 只负责加载和执行。这样带来三个好处规则可以单独 review、可以写单元测试、可以按团队定制。下面是一个规则配置的示例结构rules: - id: hardcoded-secret severity: high pattern: (?i)(api[_-]?key|secret|password|token)\s*[:]\s*[][^]{8,}[] exclude: - path: test/** - path: **/*.example.* - pattern: process\.env\. message: 检测到疑似硬编码敏感信息这种配置化的写法让规则本身变成了可管理的资产而不是埋在代码里的黑盒。4.4 规则的演进从广撒网到精准打击规则库的演进有个自然规律初期广撒网中期做减法后期做精准。初期你会想覆盖尽可能多的风险规则写得很宽误报多但能发现不少问题。中期开始根据误报反馈做减法砍掉那些报了也没人修的规则。后期则针对团队实际的高频问题写一些非常精准的规则。我现在的规则库大概只有 20 多条但每一条都经过反复调优误报率控制在 5% 以下。这个规模比初期动辄上百条规则时实际价值高得多。5. 实测中的意外情况那些文档不会告诉你的坑5.1 性能问题全量审计可能拖垮流水线第一个大坑是性能。我最早把全量审计放在 pre-commit结果一个中等规模的仓库每次提交要等 30 秒以上开发者怨声载道最后直接绕过 hook 提交。审计再重要也不能拖慢开发节奏。解决方案是分级 缓存。分级前面说过了pre-commit 只做轻量检查。缓存则是对没改动的文件复用上次的审计结果只重新审计改动的部分。这个缓存逻辑实现起来不难但效果立竿见影把 pre-commit 的耗时压到了 2 秒以内。5.2 上下文缺失agent 看不到全局第二个坑是上下文。coding-agent 在生成代码时往往只看到当前文件或当前函数看不到整个项目的结构。这导致 security-audit-skill 在 on-generate 阶段容易误判——比如它看到一个函数直接拼接 SQL判为注入风险但实际上这个函数的入参在上游已经被严格校验过了。应对办法是给 skill 补充必要的上下文。我一般会传入当前文件的完整内容、相关的类型定义、以及被调用函数的签名。不需要传整个仓库但关键的上下游信息要有。这个上下文注入的逻辑是让 on-generate 审计变得可用的关键。5.3 规则冲突多条规则报同一个问题第三个坑是规则冲突。同一个问题可能被多条规则同时命中导致报告里出现重复条目。比如一段硬编码密钥既命中了敏感信息规则又命中了不安全配置规则。解决办法是给规则加优先级和去重逻辑。当多条规则命中同一位置时只保留优先级最高的那条。这个去重逻辑看似简单但能显著提升报告的可读性。5.4 开发者信任报告太多等于没有报告最后一个也是最容易被低估的坑开发者信任。如果 security-audit-skill 天天报一堆问题其中大部分是误报或者无关紧要的开发者很快就会学会无脑忽略。一旦形成这个习惯真正的高危问题也会被忽略。维护信任的方法只有一个严格控制误报宁可漏报。我给自己定的标准是报告里的每一条都要经得起开发者追问这为什么是问题。做不到这一点的规则宁可先不上。6. 让 security-audit-skill 真正被用起来流程与人的配合6.1 阻断策略什么级别的问题该拦审计发现问题之后怎么处理这里有个策略选择是提示还是阻断。我的经验是分级阻断高危直接阻断提交/合并必须修复或显式豁免。中危提示但不阻断记录到审计日志。低危仅记录不打扰开发者。这个策略的关键是高危的判定要极其严格。如果高危规则误报导致正常提交被拦开发者的挫败感会非常强。所以我把高危规则控制在极少数几条硬编码密钥、明确的注入模式确保拦下来的都是真问题。6.2 豁免机制给合理的例外留出口再严格的规则也会遇到合理的例外。比如某个测试用例就是要构造一个恶意输入来验证防护逻辑。这时候如果没有豁免机制开发者只能删掉测试或者绕过整个审计。所以豁免机制是必须的。我的做法是支持行内注释豁免比如// security-audit-ignore: 这是测试用的构造输入 const maliciousInput ; DROP TABLE users; --;同时所有豁免都要记录到日志定期 review。这样既给了灵活性又保留了可追溯性。6.3 审计日志让安全审计可度量security-audit-skill 跑起来之后一定要有日志。日志的价值不只是留痕更是度量。我会记录每次审计发现多少问题、按类别分布、修复率多少、豁免率多少。这些数据能回答很多关键问题哪类问题最高频针对性加强培训、哪条规则误报最多调优、豁免率是否异常高可能规则太严。没有度量就没法持续改进。6.4 和人工审计的分工自动化做粗筛人做精判最后强调一点分工。security-audit-skill 再强也只是粗筛。它的产出应该是一份待人工确认的清单而不是最终结论。人工审计则聚焦在 skill 不擅长的领域业务逻辑、权限模型、架构级风险。我见过有团队试图让 skill 全权负责安全审计结果上线后出了业务逻辑漏洞追悔莫及。自动化负责覆盖面和一致性人负责深度和判断这个分工不能乱。7. 我踩过的几个具体坑以及后来怎么绕过去的7.1 坑一把 skill 写成了规则大全最开始我雄心勃勃想把所有能想到的安全规则都塞进 security-audit-skill。结果规则上百条跑一次报告几十页开发者看都不看。后来痛定思痛砍到 20 多条核心规则采纳率从不到 10% 涨到了 60% 以上。少即是多这句话在安全审计上尤其成立。7.2 坑二忽略了 agent 的自我修正能力早期我把 security-audit-skill 设计成只报告不修复想着让开发者自己改。后来发现既然 coding-agent 本身就有改代码的能力为什么不让它根据审计结果自动修复呢于是我在 skill 里加了一个自动修复建议的输出字段agent 拿到之后可以直接改。对于硬编码密钥这类问题自动改成环境变量注入准确率很高。这个改动让整个流程的效率提升了一大截。7.3 坑三规则更新没有版本管理有一次我调整了一条规则结果导致历史提交的审计结果全变了团队里一片混乱。后来我给规则库加了版本号每次调整都记录变更日志并且支持按版本审计。这样历史结果稳定新规则只对新提交生效。规则也是代码也要版本管理这个道理我花了很久才真正重视起来。7.4 坑四没有考虑多语言项目我负责的项目是多语言的前端 JS、后端 Go、脚本 Python最初规则只考虑了 JS结果 Go 和 Python 的代码基本没被覆盖。后来我把规则按语言分组每种语言维护自己的规则集共享通用的检查逻辑如密钥检测。这个改造让覆盖率从 30% 提升到了 90% 以上。8. 后续可以怎么扩展这套东西security-audit-skill 跑顺之后其实还有不少可以延伸的方向。我目前在做的一个是把审计结果和代码评审打通——审计发现的问题自动生成 PR 评论让评审者一眼看到风险点。另一个方向是把高频问题沉淀成团队规范比如禁止在代码里出现任何形式的密钥字面量从源头减少问题。还有一个我觉得很有潜力的方向是让 skill 学习团队的修复习惯。比如团队习惯用某种方式处理密钥skill 在给修复建议时就优先推荐这种方式。这需要一些数据积累但长期看能让建议更贴合团队实际。说到底security-audit-skill 不是一个装完就完事的东西它更像一个需要持续喂养和调优的安全助手。规则要迭代、误报要治理、流程要磨合。但只要方向对它带来的收益是实打实的——把安全审计从靠人盯变成靠系统跑让每一次代码产出都过一遍同样的标准。这件事值得花时间做好。

相关新闻

智能体场景下的 AI搜索工具推荐:TaoToken 统一 Key 接入三款主流搜索 API 的评测分析

智能体场景下的 AI搜索工具推荐:TaoToken 统一 Key 接入三款主流搜索 API 的评测分析

/* 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 20:35:06 阅读更多 →
用Python从零手写最小AI Agent,揭秘工具调用与记忆原理

用Python从零手写最小AI Agent,揭秘工具调用与记忆原理

最近聊AI Agent的人特别多,但很多教程一上来就抛抽象概念:规划、记忆、工具调用、多Agent协作……听起来很唬人,实际动手却不知道第一行代码该写在哪。这篇文章换个路子,用Python从零手写一个能跑的最小Agent系统,不依…

2026/10/18 20:34:06 阅读更多 →
电动汽车充电负荷预测:蒙特卡洛模拟与用户响应度分析

电动汽车充电负荷预测:蒙特卡洛模拟与用户响应度分析

1. 项目概述与核心需求解析做电动汽车充电负荷研究的同行,应该都绕不开一个问题:大规模电动车接入电网后,充电负荷到底怎么变?随机性太大,不好预测。某天在某技术社区看到一个项目标题,原文是“研究电动汽车…

2026/10/18 20:34:06 阅读更多 →

最新新闻

AirLLM逐层加载原理与实操:8GB显存跑70B大模型

AirLLM逐层加载原理与实操:8GB显存跑70B大模型

我第一次看到 AirLLM 这个名字的时候,第一反应是:又一个标题党项目。让 70B 参数规模的大模型跑在 8GB 显存的消费级显卡上,这话放在任何一个技术社区里都像卖课广告。但把这个项目的源码和实现思路从头到尾翻了一遍之后,我得承认…

2026/10/19 1:48:22 阅读更多 →
光模块拆解与高频测试国产化方案全解析

光模块拆解与高频测试国产化方案全解析

/* 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 1:48:22 阅读更多 →
小封装D类功放设计实战:从CSP封装到Layout调试

小封装D类功放设计实战:从CSP封装到Layout调试

最近在一款便携蓝牙音箱的音频链路选型上,我把AW8010AFCR这颗芯片翻来覆去研究了一遍。AW8010AFCR是一颗典型的D类音频功率放大器,CSP-9封装,体积小、效率高,在蓝牙音箱、智能语音设备、便携扩音器这些电池供电产品里很常见。这篇…

2026/10/19 1:48:22 阅读更多 →
酷秒神马9.0源码深度解析:从架构重构到任务调度与缓存设计

酷秒神马9.0源码深度解析:从架构重构到任务调度与缓存设计

先说结论:酷秒神马9.0版2026最新源码系统,从代码层面看,不是一次小修小补的迭代。我拿到这套源码包后做的第一件事不是急着跑Demo,而是直接看目录结构和核心依赖的变化。整套系统的主版本号从8.x跳到9.0,意味着有非兼容…

2026/10/19 1:48:22 阅读更多 →
SpringBoot少儿体能训练管理平台:业务建模与核心技术实践

SpringBoot少儿体能训练管理平台:业务建模与核心技术实践

1. 少儿体能训练管理平台到底在解决什么:先看清业务再谈代码SpringBoot少儿体能训练管理平台这个题目,最近在不少毕设选题清单里刷屏。我第一次拿到这个项目源码时有点意外,它并不是那种常见的"学生课程成绩"三件套管理系统&#x…

2026/10/19 1:48:22 阅读更多 →
2026物联网行业全景拆解:从万亿市场到技术落地实操指南

2026物联网行业全景拆解:从万亿市场到技术落地实操指南

/* 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 1:47:22 阅读更多 →

日新闻

频率跟踪型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/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →