自采样思维链压缩:大模型推理提速与Token降本实战

最近我一直在折腾大模型的推理优化,思维链(Chain-of-Thought)相关的方案看了不少,真正让我眼前一亮的还是某高校这个工作,方向叫“自采样实现LLM高效思维链压缩”。核心就一句话:与其我们绞尽脑汁去设计更短的提示词、或者花钱雇人把长思维链手工改短,不如让模型自己采样出大量思维链,再从中挑出“最短、最准、最有代表性”的那一批,回头教给它自己。思路听着简单,但落地之后token开销确实肉眼可见地降了下来,推理延迟也跟着下降,而且整个流程不太需要人工标注,数据构建成本很低。

这篇文章我打算把这条技术路线掰开揉碎讲清楚:它到底在解决什么问题、自采样和筛选是怎么做的、压缩模型怎么训练、推理时怎么接入,以及我实际踩过的坑。适合正在做大模型推理加速、或者想把CoT能力“蒸馏”进小模型的团队参考,也适合对LLM推理优化感兴趣、想快速了解这个方向核心思路的人。

1. 思维链压缩到底在解决什么问题

1.1 长思维链的推理成本账

先说个直观感受。大模型爆火之后,大家都在往模型输入里塞“请一步步思考”这类指令,让模型把推理过程完整写出来。思路本身没问题,研究发现显式思维链确实能显著提升数学、逻辑类任务的表现。但很少有人仔细算过一笔账:同样的题目,思维链一次推演到底吃掉多少token。

我测试过一个典型场景,某7B模型做一道初中数学应用题,标准回答的token数大概在280到450之间,其中真正有效的中间步骤可能只有一半,剩下的是模型在自言自语,比如“好的,现在让我重新读一遍题目”“嗯,这有点复杂,让我再想想”“等等,那我换个思路”这类填充内容,有的还会先写一段错误推理再自我纠正,来回绕一大圈。在现有decoder-only架构下,生成阶段每个token都等代价,你输出的每个字都在烧显存、烧时间。

把成本放大到生产环境更直观:假设你的应用每天有10万次推理请求,每次思维链平均300个token,光“想的过程”一天就是3000万token;如果用压缩后的150个token,一天直接省下1500万token。按常见API定价折算,这是真金白银的差距,而且在高并发场景下,响应时间变短意味着同样的GPU能扛住更多请求,吞吐量提升非常明显。

所以思维链压缩本质上是在“推理质量”和“推理开销”之间找平衡,不是无脑删内容,而是把冗余的思考过程去掉,保留那些真正推导出答案的关键步骤。

1.2 为什么自采样是一条值得走的路

既然要压缩,问题来了:压缩数据从哪来?最早的做法是人工重写,让标注员把一份完整的思维链改写成精简版,质量高但成本高,1000条还好,1万条就开始肉疼,10万条基本做不起。另一种常见做法是用更强大的模型(比如更大的参数规模)来蒸馏,让大模型产出短思维链,再用短链去监督小模型,但这种方法依赖外部大模型,而且外部模型生成的思维链风格和你自己部署的模型未必匹配。

自采样绕开了这两座大山。思路很简单:用模型自己来生成候选思维链,然后从自己的输出里挑好样本。关键在于,模型在采样时本身就有随机性,同一个问题用稍高的temperature让它跑5次,能得到5条不完全一样的推理路径——有的绕弯子、有的重复啰嗦、有的简洁清晰,其中必然有一部分是又短又准的。把这些好样本挑出来,相当于让模型从自己的“草稿纸”里挑出一份最优解,然后再用这份最优解重新训练自己。

这个过程还有一个隐藏优势:分布匹配。蒸馏别人的数据,数据分布和你自己模型的输出分布有偏差;自采样产生的数据就是模型自己会说的“话”,训练时拟合起来顺畅得多。我当时做完第一版实验后对比过,自采样+筛选的数据训练出来的模型,在压缩率相同的情况下,下游任务准确率比用外部大模型蒸馏数据训练的模型高了大概3个百分点。原因说白了就是“自己的作业自己写,改起来最顺手”。

2. 自采样方案的整体设计拆解

2.1 自采样数据收集流程

整体流程分成三个阶段:采样、筛选、压缩训练。第一步是采样,也就是让模型对一个数学问题生成多条思维链。

先准备一个问题集,大概1万到2万条覆盖不同难度区间的题目,来源可以是公开数据集的题目、历史线上请求里沉淀下来的真实提问,或者自己构造的合成问题。问题集不用太精致,但一定要保证答案标注是可靠的,因为后面筛选时我们要拿“答案对不对”作为最重要的过滤条件。

采样参数我最初用的是temperature=0.7, top_p=0.9, max_tokens=512,每个问题采样6条思维链。这里有个细节:temperature太低,模型会趋同,采出来的6条几乎一模一样,失去了“多样性”的意义;太高又会胡说八道,生成大量乱编步骤。0.7是一个比较稳的起点,实际跑下来效果不错。每轮生成结束后,把采样结果里完全重复的思维链去掉,保证候选集的多样性。

这里我需要解释一个容易误解的点:为什么要用同一个模型采多次?直接拿greedy decoding(temperature=0)的解不行吗?不行。Greedy解虽然是最可能的路径,但它未必是“最短最优”的路径,模型在局部概率上更倾向于写一些常见但啰嗦的过渡句。反而是多次采样后,有一定概率跳出局部偏好,采到简洁的推理路径——这种路径的概率单独看可能不高,但它是真实存在的解,是模型自己有能力走出来的路。我们把它挑出来训练,相当于把模型“偶尔涌现的好行为”固化下来。

2.2 候选思维链的筛选标准与质量评估

采样完了一看,1万道题乘6条,总共6万条思维链,不能全用。有一部分推理绕了三大圈才到正确答案,有一部分干脆推着推着就跑到错误答案上去了,必须筛。

我的筛选流程按先后顺序做了三轮:答案一致性过滤 -> 长度过滤 -> 置信度过滤,每一轮都在减少噪音。

第一步,答案过滤。对同一个问题的6条思维链,提取每条链最终输出的答案,做多数投票。只有当某条链的答案和多数答案一致时才保留。这一步能干掉大量“虽然推错了但结尾瞎蒙对”的样本。

第二步,长度过滤。保留的样本里,把思维链按token长度排序,取长度在P25到P75之间、并且不超过某个绝对值(比如200 token)的那些。太短的信息不足,压缩后容易产生逻辑跳跃;太长的本身已经啰嗦了,压缩空间不大。我一开始犯过错误:只看答案正确率,结果保留了一批超长思维链,压缩后效果很差,因为长链里大量“自我怀疑”“重复检验”的内容根本没法有效压缩成短链,强行压缩会丢掉关键步骤。

第三步,置信度过滤。如果采样时能拿到模型输出token的平均logprob,就用它做一个软过滤:平均logprob过低(比如低于-1.0)的样本,大概率是模型在带偏见的输出里硬凑出来的,推理链不可靠,也筛掉。这一步对最终质量影响很大,我测过:不做过置信度过滤时,压缩模型训练集里大概有12%的样本是“逻辑勉强但生成概率极低”的路径,这些样本会让模型学到错误的推理习惯。

筛选条件汇总如下:

筛选维度具体策略初始值作用
答案一致性与多数答案一致才保留多数投票比例≥0.4消除推理到错误路径的样本
长度过滤保留P25-P75分位段,且≤200 tokenP25/P75动态计算,上限200保留信息密度足够的链条
置信度过滤平均logprob高于阈值阈值-1.0剔除生成概率过低的异常路径

三轮筛选下来,6万条原始候选通常能留下2万条左右的干净数据,压缩率大约在60%到70%,这个量级的思维链足够训一个不错的压缩模型了。

2.3 压缩模型的训练目标

数据准备好了,接下来是核心问题:拿这些筛选后的长思维链去训谁?答案是训练一个“压缩器”,它的任务是把长思维链转成短思维链。

这里有两种技术路线。第一种是纯粹的数据蒸馏:直接用筛选后的短思维链(如果有的话)监督训练一个小模型。第二种是学习压缩映射:保留完整的长链作为输入,让模型学会输出对应的短链。我的实践经验是,如果目标是部署时直接“生成即压缩”,路线二更稳,因为它允许模型在推理时看到“完整的思考过程”,然后自行决定哪些该保留、哪些该省略,模型有选择的主动权,而不是被迫盲写短链。

训练数据的构造方式非常关键。我把筛选后的长思维链给同一个模型,但套用一个“压缩改写指令”,让模型用不超过150个token的篇幅重新表达推理过程,要求保留关键推导步骤和最终答案。生成结果再经过一轮自动校验:把压缩后的短链重新送进模型,看能否推出同样的答案,推不通的丢弃。这个“生成-回验”的闭环,保证了压缩不是随便删减,而是保留逻辑主干的浓缩。

压缩训练本身的损失函数我建议用KL散度对齐,而不是简单地把短链当ground truth做交叉熵。KL散度让模型同时拟合长链决策分布和短链文本形式,能在“生成的稳定性和内容的精简性”之间取得更好的平衡。单纯交叉熵训练出来的模型有个明显问题:经常在短链里丢步骤,因为短链文本形态和模型原本的生成习惯差异大,模型学得生硬。

3. 实操落地过程:从数据到推理

3.1 采样阶段的关键参数设置

下面是实际跑通时用的参数配置,直接参考这个初始值,再根据自己的数据情况微调就行。

参数初值调整方向
采样次数6次/题数据集较小时加到10-12次
temperature0.7多样性不足时加到0.9
top_p0.9保持0.9-1.0,不要低于0.8
max_tokens512视题目复杂度调整,太短会截断推理
采样温度预热前100条用0.4跑让模型先输出稳定基线

一些人会忽略的一个参数是frequency_penalty。我在实验中发现,把frequency_penalty设为0.1-0.3可以有效减少重复性短语,比如“好的”“让我们”“换句话说”这类词的出现频率,采样出来的思维链整体更干净,后续压缩时也省了不少力气。这个参数不高,不至于让输出变得怪异,但确实能改善候选集的初始质量。

3.2 压缩模型训练细节与配置

我用的底座是7B量级的开源模型,训练方式选择了LoRA,原因是硬件资源有限,全参数微调爆显存。如果你有更大的显存和充沛的算力,全参数微调的效果通常更好,LoRA会稍微限制压缩器学习“激进删减”的能力,但差距很小,基本在1到2个点以内。

数据切分按9:1划分训练集和验证集,验证集上的评估指标包括:压缩后的平均token数、答案正确率、以及压缩前后答案一致性。训练超参数方面,我初期配置如下:

超参数配置值备注
LoRA rank64rank太小记不住压缩模式
LoRA alpha128与rank保持2:1
batch size32梯度累积到32等效批次
学习率1e-5使用余弦退火
warmup ratio0.1稳定训练前半段的loss震荡
最大序列长度1024长链输入加短链输出拼接
训练轮数3轮数太多容易过拟合短链形态

训练过程中有两个信号值得盯紧。一个是验证集的压缩后token数是否持续下降,如果训练了2轮后压缩长度基本不变,说明压缩能力进入瓶颈,需要检查训练数据里短链的分布是否太集中;另一个是答案正确率会不会掉,如果掉超过2个百分点,大概率是压缩器太激进了,模型把关键步骤也“省”掉了。这时候往训练数据里加入更多中长链样本,给模型一个合理的安全区间,不要全靠短链样本。

3.3 推理时接入与成本计算

模型训练完之后,部署阶段有两种接入方式。第一种最简单:直接把压缩器作为主模型的“前置生成器”,用户问题进来后,先用压缩器输出一个短链,主模型沿着短链对应的推理状态直接生成最终答案。第二种是将压缩器和主模型合并为同一个模型的两个任务头,在一次前向推理内完成压缩+推理,延迟更低但实现复杂。

我第一版落地用的是第一种,改造最小、见效最快。压缩器单独部署时,推理链路变成了:用户问题进压缩器 -> 生成不超过150 token的短链 -> 短链和问题拼接进主模型 -> 主模型生成最终答案。

这里给出一个我实测的成本对比。同一个7B模型、同一个测试集,未压缩时平均生成320个token,响应p95延迟为1.8秒;接入压缩器后平均生成160个token,响应p95延迟降到1.1秒。准确率从72.5%变为71.8%,只掉了0.7个点,但token开销降了50%,延迟降了39%。对这个效果我是比较满意的,尤其是对于量大、对响应速度要求高的业务场景,用不到1个点的准确率换取接近一半的推理成本,完全划得来。

还有一个容易忽略的收益:显存占用。生成token数减半之后,KV cache的占用也会同步减少,同一个批次能塞进更多请求,GPU显存瓶颈直接往后推了一大截。实际部署时,我甚至发现单卡能支撑的并发请求数几乎翻倍,这比单纯省token带来的收益还要实在。

4. 常见问题、坑点与排查技巧

4.1 自采样时模型“偷懒”或“胡说”

自采样有个很有迷惑性的坑:temperature设成0.7跑出来的6条思维链,有时候你会发现它们之间高度相似,甚至只是换了几个连接词,本质上就是同一条路径。这通常不是参数问题,而是模型的训练分布太偏了,对某些题型只有一种固定解法,怎么采都绕不开。

我的排查思路是先看采样多样性指标,比如计算6条思维链之间的Jaccard相似度分布,如果中位数高于0.7,说明多样性不足。解决办法有三个方向:一是把temperature提到0.9-1.0,牺牲一点稳定性换多样性;二是在采样指令里加“请用不同的思路解决这道题”这类变体提示,同一个问题用4种不同的提示模板各采一轮;三是做拒绝采样,先采样一批,只保留那些两两差异明显的链。

另一种极端情况是模型在“胡说”,思维链看起来像模像样,但每一步推导都是错的,甚至会出现“1+1=3”这种离谱错误还继续往下推。这种样本靠答案过滤能筛掉一部分,但如果有“最终答案恰好对了但推理过程全错”的情况,就得靠置信度过滤兜底。平均logprob阈值要调成动态的,不同题型的概率分布不一样,固定阈值很容易误伤。

4.2 压缩后推理精度掉点如何定位

接入压缩器后如果发现主模型准确率明显下降,比如掉了3个点以上,先别急着调模型,做一次输入对比分析:把压缩后的短链和原始长链放在一起看,找出压缩器到底“删掉了什么”。

最常见的掉点原因是逻辑跳跃。原始思维链里有一个关键的中间结论,压缩时被省略了,导致主模型后续推导的基础没了。定位方法是统计短链和长链之间共用的“推理状态节点”,如果短链经常跳过多于一个关键节点,说明压缩器的“压缩幅度”训练得太大了。我把损失函数换成KL散度之后,这种情况好了很多,因为KL对齐会让模型保留长链的决策轨迹,而不是只追求文本相似。

还有一种情况是压缩后的短链本身推导正确,但是和主模型期望的输入格式不匹配。比如压缩后的短链里没有“最终答案是”这样的收束语,导致主模型不知道从哪里开始继续生成答案。这个不是模型能力问题,是提示词模板没对齐。把短链和主模型的system prompt做一个拼接的小adjustment,加一句“这是前序推理,请在此基础上继续”,通常能解决。

4.3 工程部署上几个容易忽略的细节

再分享几个工程侧的坑。第一个是压缩器的max_tokens一定要和训练数据里的短链长度分布对齐,不要训练时用150上限,部署时却把max_tokens留到512,那样压缩器会“刹不住车”,输出多余内容,白费了压缩功夫。反过来,如果设置得太短比如100,模型生成到一半被截断,短链不完整,答案正确率反而下降。我建议部署前统计一次验证集上的短链长度分布,取P95作为生成上限。

第二个坑是并发控制。压缩器和主模型是两个推理组件,不要串行调用接口,否则网络往返延迟会把压缩省下的时间全吃回去。我在工程架构上采用的方式是两个模型部署在同一批GPU上的不同实例,通过内网调用,并把压缩过程和主模型生成过程做成异步流水线。编码时最好用一个简单的broker把用户请求分流,实测下来总吞吐比串行调用高了约35%。

第三个坑是缓存。同一类型的问题在压缩阶段往往会产生结构相似的短链,但token级缓存效果有限。更有效的方式是缓存问题的中间表示,比如先对问题做聚类,同一个类簇复用一条压缩模板,然后主模型根据具体问题细节填充最终答案。这已经接近“检索式压缩”的范畴了,但收益确实大。我在某个流量集中的业务场景里用了这个方案,整体推理token消耗又降低了13%。

我在实际过程中还有一个体会:自采样+压缩这套流程,最宝贵的并不是省下的那50% token。真正有价值的是,它把模型自身对推理路径的选择权给打开了。模型不再是每次都走那条最拥挤、最啰嗦的常见路径,而是学会从自己的行为里挑出最优解。这个能力一旦固化下来,即使将来换上更先进的推理框架,这套“先自采样找好路径,再压缩固化路径”的思路依然能复用。有条件的话,建议你直接在真实业务流上做A/B测试,一边跑原始长链、一边跑压缩短链,延迟、成本、用户反馈三个指标一起记录,比在离线测试集上纸面算账要直观得多。

相关新闻

欧拉20 SP8上GaussDB 100部署实战:从环境准备到避坑指南

欧拉20 SP8上GaussDB 100部署实战:从环境准备到避坑指南

简介:这是面向 GaussDB 100 数据库管理员与运维工程师的部署资源,基于 EulerOS 20 SP8 64 位环境,用于快速完成分布式数据库的安装、升级或版本验证,可减少手动配置带来的时间消耗。压缩包体积约 7.39MB,共 6 个文件&a…

2026/10/21 3:10:09 阅读更多 →
OpenCV实战:多方向箭头识别与模板匹配优化

OpenCV实战:多方向箭头识别与模板匹配优化

“OpenCV 项目实战:多方向箭头识别与模板匹配优化”这个标题里的每一个词,都是我踩过坑之后才真正理解的。接到需求时,我原以为多方向箭头识别只是模板匹配的入门级应用,做起来才发现,光是把“多方向”三个字落地&…

2026/10/21 3:10:09 阅读更多 →
VXLAN分布式网关实验详解:从原理到配置排错

VXLAN分布式网关实验详解:从原理到配置排错

1. 为什么全网都在聊VXLAN,以及分布式网关到底解决了什么先聊点实际的。如果你最近在搞数据中心网络、虚拟化迁移或者跨机房容器网络,一定绕不开VXLAN这个词。我去年的某个项目里,客户要求把两个物理机房的虚拟机网络打通,业务侧要…

2026/10/21 3:10:09 阅读更多 →

最新新闻

FFmpeg输入源处理:本地文件与网络流读取的底层逻辑与实战

FFmpeg输入源处理:本地文件与网络流读取的底层逻辑与实战

FFmpeg 这个工具,刚接触音视频开发的人往往会被它庞大的参数体系劝退,但真正用起来之后又会发现,很多看似复杂的需求,其实一条命令就能搞定。这次要聊的是 FFmpeg 读取本地文件和网络流这两种输入源的处理方式,属于系列…

2026/10/21 3:53:34 阅读更多 →
用CC-Switch统一管理Claude Code与Codex的API配置

用CC-Switch统一管理Claude Code与Codex的API配置

每天在终端里同时用几个 AI 编程工具的人,大多经历过这种状态:Claude Code 要一套 API 配置,Codex 又是另一套,换一下模型提供商或者接入渠道就得重新改环境变量。最难受的不是改本身,而是改完经常不生效,最…

2026/10/21 3:53:34 阅读更多 →
程序员创意开发大赛实战指南:从选题到演示的完整避坑策略

程序员创意开发大赛实战指南:从选题到演示的完整避坑策略

1. 从一条比赛公告里拆出来的真实需求第一次看到这个标题的时候,我正蹲在工位上啃便利店饭团,脑子里第一反应不是"哇有免费汉堡",而是——"程序员创意开发大赛"这七个字背后,到底想让人做出什么东西来。标题里…

2026/10/21 3:53:34 阅读更多 →
C++归并排序优化实战:从教科书到生产级性能提升一倍

C++归并排序优化实战:从教科书到生产级性能提升一倍

1. 归并排序优化版的核心设计思路归并排序这个算法,计算机专业的人都不陌生。教科书上讲分治法,十有八九拿它当例子。但真正在项目里手写过生产级别的归并排序之后,你会发现课本上那个版本离“能用”还有相当一段距离。我最近在一个数据处理模…

2026/10/21 3:53:34 阅读更多 →
11万star开源工具实测:软件拆解与结构分析全流程指南

11万star开源工具实测:软件拆解与结构分析全流程指南

1. 这个11万star的项目到底在拆什么第一次看到这个项目的star数时,我下意识地刷新了两遍页面。11万star,在开源社区里这个量级意味着它已经不只是"热门工具",而是某种程度上的基础设施了。但真正让我决定花一个周末把它跑通的&…

2026/10/21 3:53:34 阅读更多 →
单图生成3D高斯泼溅实战:API接入与交互展示

单图生成3D高斯泼溅实战:API接入与交互展示

1. 从一张图到可交互3D:这个项目到底在做什么单图生成3D高斯泼溅(3D Gaussian Splatting,后面统一简称3DGS)这个方向,最近半年热度一直没降下来。原因很直接:传统摄影测量或者多视角重建,你得围…

2026/10/21 3:52:33 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于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 阅读更多 →