给Agent设计专用网页:用结构化信息架构提升AI执行可靠性

1. 为什么我盯上“给Agent用的网页”:可靠性不是靠调prompt换来的

做Agent项目做到一定阶段,你会很自然地发现一个残酷事实:Agent的不可靠,大半不是模型的问题,而是它喂进去的信息源本身就是一团浆糊。模型再聪明,从凌乱的页面里抽上下文也像是在电脑里挤牙膏,时多时少,时对时错。我手头做过一个内部用的信息助手,最初直接把现成的业务后台页面和几百份文档丢给Agent去读,结果指令稍一复杂就答非所问,同一个问题换个说法结果就飘。

后来我仔细复盘那些失败案例,发现真正出问题的地方几乎都集中在“读网页”这一步。普通网页为人类浏览服务:导航栏、轮播图、嵌套弹窗、异步加载的评论、广告位,这些元素对模型毫无价值,却会占掉大量上下文窗口。更麻烦的是,页面逻辑被打散成一堆JS片段,Agent抓回来的内容是乱序的,它拼出来的信息自然跟着乱。

所以我把问题倒过来想:如果Agent注定要依赖网页获取信息,那我干脆给它单独做一个网站——一个不需要好看、不需要考虑普通人审美、但内容和结构对模型极度友好的网站。这个网站不承担品牌展示的任务,它更像一组给Agent用的“说明书仓库”:每个页面解决一个明确问题,每份技能文件都按固定格式撰写,URL稳定、信息原子、更新可追溯。

为了这个目标,我把所有决策都从“让模型稳定发挥”倒推,强制自己把原来藏在文档和口头沟通里的规则全部显性化。这本身就带来一个额外红利:以前很多步骤只有人懂,现在只要是人能讲清楚的流程,Agent也能照着做。这个“网站”没有复杂前端,后端就是一个轻量服务,前端是纯静态页面加轻度交互,整体形态像Wiki加API说明文档的混合体。关键是所有内容都围绕“可被可靠执行”设计。

如果你也在做Agent类应用,并且被输出稳定性折腾得够呛,这篇就是我完整落地过程的复盘。从信息架构、页面设计,到Skill文件怎么写、Agent怎么取用,再到实测数据和踩坑记录,都会展开讲清楚。它不一定能覆盖所有Agent场景,但给“靠网页投喂的Agent”提供了一条我实测可行的可靠性路线。

2. 适合Agent阅读的网站长什么样:信息架构与页面设计

2.1 页面划分:一页一职,严禁信息大杂烩

给Agent看的网站,第一原则是“一页一职”。人浏览网页时可以接受一篇文章里顺带科普两个关联概念,但Agent不行,它解析页面时会把所有文字都当作候选上下文,混杂内容必然稀释重点。我给这个站设计页面时,每个URL只承载一种职能:

  • 首页:只放站点的定位说明、可用能力索引、联系方式,不给Agent任何具体操作命令。
  • 技能总览页:列出所有可用Skill的ID、一句话描述、适用场景,让Agent能够在一屏内决定调用哪一个。
  • 每个技能的详情页:一个URL对应一个Skill,只描述该技能的参数、步骤、约束条件、校验规则。
  • 指南页:面向复杂流程的文档,比如“如何处理一个订单流程”,一个流程一页,页内只描述完整步骤。
  • 变更日志页:记录每一次Skill或文档的版本变化,方便问题回溯。

页面之间的链接结构也很讲究。我不会在正文里随便放“相关阅读”,而是用统一的“前置技能”“后续技能”区块放在页面末尾。这样Agent读取时,可以顺着一条清晰的链路找到下一步,而不是在不相关的跳转里来回打转。链接语义明确后,Agent对知识边界的把握会明显好很多,至少不会你自己都不知道它从哪页读来了一个错误前提。

2.2 语义化HTML:把页面结构变成机器的“段落标题”

给Agent读的网页,基础是语义化HTML。我一开始也图省事,直接用Markdown渲染出的默认结构,结果发现标题层级混乱,模型分不清哪里是总述哪里是细节。后来我全部改成手写语义化结构,几个核心约定写死在项目规范里:

  • 每个页面必须有且只有一个 h1,它就是页面的主旨。
  • 小节点用 p、ul、ol 组合表达,禁止把说明文字塞进一个超长 div。
  • 不使用任何形式的弹窗、懒加载、轮播图,因为这些机制都会破坏页面信息的静态完整性。
  • 链接的 title 和 aria-label 属性必须跟链接文字一致,避免出现“点这里”这种无意义的锚文本。

我还在每个页面头部加入一段用于Agent的“导读元信息”。这不是给普通用户看的,而是给模型划重点。格式类似:目标对象、阅读顺序、关键结论、操作入口。这样即使Agent只读了页面的一部分,也能快速定位到它真正需要的段落。实际测试下来,这个导读块对降低“答非所问”特别有效,它相当于帮模型预先建立了页面心智模型。

2.3 JSON-LD结构化数据:让Agent读取到“确定性”

语义化HTML是基础,真正让Agent少犯错的却是结构化数据。我在部分页面上嵌入 JSON-LD,用于描述Skill的元信息、版本、可用参数。这样模型除了看页面文字,还能直接读到一份没有歧义的机器可读描述。

下面是我在技能详情页里挂的一段简化示例:

{ "@context": "https://schema.org", "@type": "SoftwareApplication", "name": "order_status_check", "version": "2.3.0", "about": "查询订单实时状态并返回可读摘要", "featureList": [ "输入订单号", "校验订单号格式", "返回状态码和描述" ], "requirements": "订单号必须为12位字母数字组合", "applicationCategory": "BusinessApplication" }

这段JSON和页面正文表达的是同一件事,但对Agent来说路径完全不同。正文需要模型自己归纳,JSON-LD则直接给出结论。我在正文里描述技能,在JSON-LD里固化技能的“契约”,两边对不上时以契约为准。这个设计让我后续加技能时多了一道强校验:如果新技能的描述无法用JSON-LD精准表达,说明它还没被想清楚,需要继续拆解。

3. Skills包的设计:一份可自洽执行的操作说明书

3.1 一个Skill文件包含什么

“Skills”是这个网站的灵魂。如果只有一堆文档,Agent顶多算“读过书”,但Skill的存在让它能“动手做事”。我定义的Skill不是简单的一段prompt,而是一份可以被程序化解析、校验和执行的操作说明书。每个Skill都以一个独立Markdown文件加一段YAML元信息的形式存在,页面由这些文件渲染出来。

一份标准Skill覆盖了以下内容:

  • id和版本号:技能的唯一标识,页面和调用方都靠它识别。
  • 一句话描述:严格控制在30字以内,说明这个技能解决什么问题。
  • 输入参数:参数的名称、类型、是否必填、取值范围、示例。
  • 处理步骤:按顺序编号的步骤列表,每一步尽量拆到不能再拆。
  • 约束条件:哪些情况不允许执行,哪些情况需要用户确认。
  • 校验方法:如何判断执行结果是否正确,最好有可运行的校验表达式。
  • 失败处理:步骤报错时的降级方案和提示信息。

我举一个最简的Skill文件片段,你可以看到这种设计跟普通文档的差别在哪里:

id: weather_query version: 1.4.0 name: 天气查询 description: 根据城市名返回未来24小时天气概览 input: city: type: string required: true example: "上海" validation: "^[\\u4e00-\\u9fa5]{2,10}$" steps: - 标准化城市名,去除空格和别名映射 - 调用天气服务接口,传入城市名和日期 - 将原始响应转换为标准化的JSON格式 - 生成用户可读的天气摘要 rules: - 城市名不在支持列表中时,必须提示用户重试,不允许猜测 - 服务超时超过3秒,直接进入失败分支 validation: - 返回结果必须包含city和date字段 - 温度范围必须落在-40到50摄氏度之间,否则标记异常 fallback: - 记录日志并返回给用户:"暂时无法获取该城市天气,请稍后再试"

3.2 原子化拆解:为什么“小步执行”比“一次完成”可靠

Skill设计里最重要、也最容易被忽略的,是“原子化”。刚开始我试图把一个大任务写进一个Skill文件里,例如“做一个完整的数据分析报告”。结果Agent在执行时要么跳步骤,要么在步骤之间夹带自己的“自由发挥”,结果报告结构五花八门,根本没法验收。

后来我把这个大型Skill拆成“取数”“清洗”“统计”“生成报告”四个独立Skill,每个Skill只负责一段不可再分的任务。这个动作表面上只是拆分文件,实际上是改变了执行模式:Agent每一步调用都面对一个边界清晰的小契约,做完一个再调用下一个,中间没有任何含糊地带。

拆完之后我发现,问题定位也简单了很多。以前出了错要翻整个执行链,现在只需要看哪一步的Skill校验没过。而且小Skill可以在不同任务里复用,比如“清洗”这个Skill,既能用在报告流程里,也能用在异常监控任务里。一次写好,处处受用。

3.3 描述基准与版本意识:让Agent“会选”而不是“乱试”

再好的Skill如果Agent选错了,等于白做。这里的问题是描述语气的模糊。早期我写能力描述时总想“全面一点”,结果一句话里塞了五六个意思,模型经常把轻量查询分配到重型分析技能上。后来我给自己定了三条描述基准:

  • 用动词开头,直接表达动作类型,比如“查询”“计算”“生成”“校验”。
  • 说清适用范围,跟不适用场景明确划开。
  • 描述里不写效果,写操作结果。比如“执行后返回标准化JSON”而不是“帮助你更好管理数据”。

版本意识同样重要。每个Skill文件里都有version字段,页面上展示版本历史,调用记录里记录使用的版本号。一旦某个版本的Skill在实际执行中暴露出问题,我可以立刻把对应页面内容回滚到旧版本,而不是去改一堆分散在prompt里的文字。这个机制让“可靠性修正”变成了可追踪的工程动作,而不只是所谓的“调一调”。

4. Agent取用与实际调用链:路由、校验与降级

4.1 让Agent自己“浏览”而不是你写死调用

有了网站和Skills文件,下一步就是决定Agent怎么把这些内容用起来。我没有在代码里写死具体工具的调用列表,而是让Agent先访问站点首页和技能总览页,根据任务描述自己选择合适的Skill。这个做法的好处是Agent对任务的理解是动态的,而不是被外部程序强行绑定到一个固定流程上。

我实现了一个轻量导航机制。Agent发来的请求带有一个目标描述,服务端会返回匹配的Skill列表和对应详情页URL。Agent选择后,再去请求详情页获取完整的步骤和参数约束,然后才开始执行。这相当于把“选工具”的决策权还给模型,再由站点提供的信息约束它的选择范围。

这个模式下,页面URL的语义变得很关键。我的Skill详情页都采用 /skills/{id} 这样的固定格式,并且支持 ?version= 参数指定版本。这样Agent一旦从总览页跳转到详情页,整个路径是可预测的,不容易因为页面结构变化而迷路。日志里也能清楚看到Agent访问了哪个Skill页面,做了哪一步,方便排查它为什么选了某个操作。

4.2 参数校验:所有进入执行层的输入都必须过一道闸

再完善的Skill说明,如果Agent传进来的参数错了,执行还是会崩。这个阶段我在服务端做了一层参数闸门,严格按照Skill文件里的输入定义进行校验,校验不通过就直接返回错误给Agent,而不是硬着头皮往下跑。这相当于把“人类使用软件时系统会做的输入提示”移植到了Agent调用链上。

实际执行时,我会校验字段类型、必填项、正则格式和值域范围。曾经有一个数值型参数,Skill文件里写得清清楚楚必须是0到100的整数,Agent却传了几次带小数的值。后续我不仅在服务端校验,还在Skill详情页的JSON-LD里再次标注了类型约束。双重规范下,这类错误明显减少。

校验失败的返回信息也不是冷冰冰的报错,而是带提示的友善结构,告诉Agent缺了哪个参数、合法的格式是什么,引导它自行修正后重试。这样做比“直接失败”可靠得多,因为Agent具备推理重试能力,很多情况下它能根据提示自己调整输入,减少人工介入。

4.3 状态处理与并发:让Skill执行“无记忆”,把状态交给外部

Agent执行任务时最大的隐性坑是“状态污染”。假设同一个Skill被两个任务同时触发,如果Skill内部存在共享状态,比如临时文件、全局变量,那么结果必然互相干扰。我的解决方案是把所有Skill设计成无状态函数,输入输出都显式传递,不在Skill内部保留任何可变数据。

遇到确实需要状态的场景,比如“多轮对话中的上下文缓存”,我会把状态放到外部存储,用任务ID做隔离。Skill只负责接收该任务ID对应的数据,处理后放回,不关心全局会话。这种设计让并发执行变得非常安全,也让排查问题变得纯粹:同一个输入、同一个版本,结果必须一致,如果不一致,那就是代码bug,而不是“环境状态不同”。

我还为容易产生外部副作用的Skill设计了幂等策略。例如“发送通知”这个Skill,调用时携带一个去重ID。外部服务根据去重ID判断是否已经处理过,从而避免重复发送。对Agent场景来说,一次重复调用带来的业务污染有时比一次遗漏更严重,所以“防重”是不可跳过的一环。

5. 可靠性提升的实测数据与心得:哪些办法真正改变了结果

5.1 三组典型任务的前后对比

我把这个网站和自己的Agent系统接通一个月后,用三组典型任务做了前后对比:内部运营报表生成、订单状态查询、常见问题答疑。每组任务我都准备了20条难易不同的测试问题,统计“一次执行拿到正确结果”的比例。

结果如下:

任务类型改造前一次成功率改造后一次成功率平均耗时
运营报表生成58%91%降低约35%
订单状态查询67%94%降低约28%
常见问题答疑42%89%降低约42%

最打动我的不是成功率数字,而是耗时下降。耗时下降意味着Agent在之前把大量token浪费在无关页面和重试上。现在它进入站点后几乎不走弯路,直接就能定位到对应Skill,整个调用链变短,出错机会自然减少。答疑类任务提升最大,因为这类任务对知识边界的要求最高,而结构化页面恰好把边界画清楚了。

5.2 依然会翻车的地方:边界外的复杂推理和长链组合

必须承认,这套方案并非万能。三个多月里我遇到的最典型翻车场景,是Agent在“长链组合任务”中受页面规则过度约束,导致步骤卡死。比如一个任务需要连续调用三个Skill,中间还需根据前一步结果调整参数。这种情况下,Agent偶尔会过度遵守某个Skill的约束条件,不懂得灵活跳到下一步。

针对这个问题,我在页面和Skill文件里补充了“跳转条件”和“例外说明”字段,允许Agent在特定条件下调整步骤顺序。不过效果只能说部分缓解,还没到彻底解决。我现在的判断是:这类复杂推理更适合交给专门的编排层处理,网站和Skill负责提供可靠的基础能力,编排层负责动态组合,两者职责分开,可靠性才能兼顾。

另外,完全开放式的新问题,网站也很难帮忙。比如一个从未定义过的全新业务场景,Agent只能靠知识迁移和常识推理,这时候单靠页面上的旧内容帮不上什么忙。我的做法是让Agent在遇到这类问题时明确告知“当前没有匹配的Skill”,然后自动转人工,而不是硬编一个答案。这个“诚实拒绝”的策略反而显著提升了整体评价,用户觉得系统至少知道自己懂什么、不懂什么。

5.3 几个让我少走大量弯路的设计决定

复盘整个项目,有几个决定对最终效果影响最大,值得单独记下来。

第一,没有追求一次把所有文档结构化。我第一批只做了三个Skill,完整跑通后再逐步扩展。如果一开始就急着把几十个Skill一起上线,校验和排查都会变得混乱,可靠性的地基还没打牢就堆高楼层,风险极大。

第二,给所有页面加了“最后更新”时间戳,并在变更日志里保留历史版本说明。这个看起来很小的设计,解决了很多“Agent用的内容到底是不是最新的”的问题。尤其是当外部服务接口调整后,我能第一时间知道哪些Skill要跟着改,哪些页面描述已过期。

第三,人工复核环节没有省。即便成功率已经到九成以上,我在关键任务上仍然保留人工抽检。这个站不是让我可以完全放手,而是把问题从“不可控的随机错误”压缩成“数量少、范围明确的可疑样本”,让复核变成一道轻松的确认动作,而不是救火。

最后分享一点体验

有一次我在调试时发现,Agent在处理一个涉及多个权限等级的数据请求时,严格按照Skill里的判定规则拒绝了高权限操作,表现得比预想中谨慎得多。那一刻我意识到,所谓“让AI更可靠”,本质上不是让模型变得更聪明,而是把我们做事的方法论拆成它看得懂、执行得出、验证得了的颗粒,再用一个稳定的容器装起来。给Agent做一个专用网站,其实就是制造这个容器。它牺牲了普通用户视角的华丽,换来的却是生产环境里可预期、可审计、可回滚的确定性。如果你也在做Agent应用,并且被稳定性问题困扰,不妨从最小化的一组Skill和页面开始,先把边界定义清楚,你会发现看似笨拙的结构化,比你反复调整prompt要有效得多。

相关新闻

OpenAI额度机制真相:没有全局重置,只有三层配额控制

OpenAI额度机制真相:没有全局重置,只有三层配额控制

1. “OpenAI 额度全局重置”不是功能,而是误传的集体幻觉“OpenAI 额度全局重置”——这七个字最近在多个技术社群、开发者论坛和私聊群组里高频闪现,常伴随“刚试了,真能刷”“凌晨三点生效”“换区新号双倍额度”等短句。但作为连续三年深度…

2026/10/20 20:51:07 阅读更多 →
跑腿小程序智能派单系统全开源:从订单状态机到骑手评分算法

跑腿小程序智能派单系统全开源:从订单状态机到骑手评分算法

简介:这是一套面向同城跑腿与校园配送场景的全开源技术方案,基于Fastadmin、ThinkPHP与Uniapp开发,包含用户端、骑手端和运营后台三端,适合跑腿创业团队、外包开发者及需要私有化部署的运营方使用。系统支持帮取、帮送两种业务模式…

2026/10/20 20:51:07 阅读更多 →
被误读的AIGC泡沫论:价值藏在长尾场景与工程化里

被误读的AIGC泡沫论:价值藏在长尾场景与工程化里

过去这半年,我每隔几天就会被问到同一个问题:"AIGC是不是泡沫了?"问的人里有做技术的,有做投资的,也有正在选方向的应届生。大家说"泡沫"的时候,语气已经从两年前的兴奋变成了谨慎&…

2026/10/20 20:51:07 阅读更多 →

最新新闻

FPGA开发者必看:SRIO协议从IP配置到数据收发的完整调试指南

FPGA开发者必看:SRIO协议从IP配置到数据收发的完整调试指南

简介:面向FPGA与嵌入式系统开发者,这套Xilinx SRIO使用例程围绕Serial RapidIO高速串行互连协议在Spartan6系列中的实际部署,系统覆盖硬核配置、端口速率选择、测试平台搭建与仿真验证,解决高带宽低延迟场景下的接口设计与调试难题…

2026/10/20 21:31:57 阅读更多 →
DeepSeek+客流预测实战:文旅景区智能调度与数据治理指南

DeepSeek+客流预测实战:文旅景区智能调度与数据治理指南

元旦当天上午九点半,某古镇指挥中心的大屏上,瞬时客流曲线还在平缓爬升。过去一到这种关键节点,我们只能靠值班长拍脑袋判断“今天会不会爆”。后来我们把整套逻辑改了:先用 DeepSeek 处理近三年的客流历史数据,产出小…

2026/10/20 21:31:57 阅读更多 →
人工智能防火墙实战:从对抗攻击原理到纵深防御体系

人工智能防火墙实战:从对抗攻击原理到纵深防御体系

1. 先从一张贴纸说起——AI模型并没有你想象的那么“刚”前两年我做过一个小实验,到现在印象都很深:贴在停车标志上的一张黑白贴纸,能让当时测试用的视觉识别模型把“Stop”识别成“限速40”。贴纸的面积不到标志的十分之一,人眼看…

2026/10/20 21:31:57 阅读更多 →
FreeImage Windows编译指南:VS与MinGW完整实践与排坑

FreeImage Windows编译指南:VS与MinGW完整实践与排坑

先聊点实际的。做图像处理或者工具链开发的朋友,应该都遇到过这种场景:手头项目跑得好好的,突然丢过来一批乱七八糟的图片格式,BMP、JPEG、PNG、TIFF、GIF、WebP 混杂在一起,有些还带 EXIF,打开一看全是相机…

2026/10/20 21:31:57 阅读更多 →
报错注入攻击原理与实操:从SQL错误信息泄露到数据提取

报错注入攻击原理与实操:从SQL错误信息泄露到数据提取

1. 报错注入到底是怎么一回事1.1 从一个登录框说起很多做Web开发的朋友都有过这样的经历:写了一个查询接口,用户输入一个ID,后台拼一条SQL去数据库里捞数据,返回结果。逻辑简单,代码也不复杂。但如果这个ID参数没有经过…

2026/10/20 21:31:57 阅读更多 →
图数据建模必知:从转导式到归纳式学习的范式切换实践

图数据建模必知:从转导式到归纳式学习的范式切换实践

前阵子接手一个图数据的用户行为预测项目,最初跑得挺顺,后来每来一批新用户,模型效果就肉眼可见地掉。一开始我以为只是特征没做好,调了一周才意识到,问题出在我用的学习范式上——我一直在一张静态图上做转导式&#…

2026/10/20 21:30:50 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →