乐于分享
好东西不私藏

SFT 是什么?从基础模型到 AI 助手的关键一步

SFT 是什么?从基础模型到 AI 助手的关键一步

hello,我是半硅人 Scott。这里是《高中生也能听懂的 AI 课》第 21 篇。

本文回答3个问题:

1. SFT 是什么?

2. SFT 是怎么训练的?

3. SFT 训练数据从哪里来?

上一篇文章中,我们讲了预训练:模型在海量文本中不断学习如何更准确地预测下一个 token。

预训练完成后得到的模型叫作“基础模型”,有时也简称“基模”。 

它读过很多文字,学到了语言、知识、常识、代码和一些推理模式。但它会续写,不等于它会按人的要求回答。

比如你输入一个很像作文题的指令:

请以《AI会不会取代人类》为题,写一篇文章。

只做过预训练的基础模型,可能把它当成试卷或写作材料的一部分,继续往后接:

要求:观点明确,条理清楚,不少于800字。

这句话确实合理,但答非所问。我们真正希望它输出的是一篇文章:

AI会不会取代人类每当一种新技术出现,人们都会担心自己的工作会不会消失。AI 的确会替代一部分重复性工作,但“替代工作”和“取代人类”并不是一回事……

模型得先认出这是一条指令,再按照要求组织标题、正文、观点和论证,SFT 专门训练模型学会做这件事。在典型的大模型训练流程中,SFT 是后训练的第一步。

什么叫后训练呢?预训练完成后,模型还要继续接受一系列训练,才能变成真正可用的 AI 助手,这个阶段统称为后训练

花5分钟读完本文,你就会明白:

SFT,就是用大量“用户要求 -> 理想回答”的样本,继续训练基础模型,让它学会理解指令,并按照要求回答。


▍问题 1:SFT 是什么?

SFT 的全称是 Supervised Fine-Tuning,中文通常叫监督微调 

“监督”的意思是,每条训练数据都已经写好了一个理想回答,模型要学习这个回答。

SFT 阶段,模型学习的是一组组整理成“用户要求 -> 理想回答”的文本。不同模型使用的具体格式可能不同,下面用 OpenAI 公开过的 ChatML 格式举例

<|im_start|>user请以《AI会不会取代人类》为题,写一篇文章。<|im_end|><|im_start|>assistantAI会不会取代人类每当一种新技术出现,人们都会担心自己的工作会不会消失。AI 的确会替代一部分重复性工作,但“替代工作”和“取代人类”并不是一回事……<|im_end|>

这里的 <|im_start|> 和 <|im_end|>,是模型词表中预先定义的特殊 token,用来标记一条消息的开始和结束。user 和 assistant 是角色标记,分别表示后面的内容是“用户的要求”和“助手的理想回答”。 

预训练时,文档、代码、故事等内容通常只被当作一段普通文本,模型学习的是:这段文字后面更可能出现什么? 

SFT 阶段,模型反复学习“用户要求 -> 理想回答”这样的样本,会逐渐学会不同指令对应什么动作。

用户让它写文章,它就开始写文章;用户让它解释或总结,它就切换到相应的回答方式;用户要求三句话、表格或固定格式,它也会尽量照做。 

其实,模型并不是到了 SFT 阶段才知道文章、解释和总结是什么样,这些模式大多已经在预训练中学过了。

SFT 是进一步让模型知道:用户这样问时,应该调用哪种已有能力,又该用什么形式回答。

SFT 的主要作用,是把基础模型已经学会的能力,组织成符合用户要求的回答。


▍问题 2:SFT 是怎么训练的?

从最底层的训练步骤看,SFT 和预训练一样,仍然是预测下一个 token、计算 loss、反向传播,再用优化器更新参数。

本文讨论的这种指令 SFT 有两个主要变化:训练数据变成了“用户要求 -> 理想回答”,并且只用助手回答部分计算 loss。

上一问已经讲过 SFT 训练数据的样子。这一问重点看第二个变化,也就是 SFT 的 loss 怎么算。为了方便理解,我们先省略表示角色和边界的特殊 token。

假设用户问题包含 m 个 token,理想回答包含 n 个 token,那么整个文本序列可以写成:

q1, q2, ... , qm, a1, a2, ... , an

其中,q 代表问题中的 token,a 代表回答中的 token。

我们在《交叉熵是什么》那篇文章中讲过,预训练会把一整条序列当作普通文本,在每个位置预测下一个 token,再把这些位置上的 loss 取平均。

如果把上面这条序列当作普通文本进行预训练,那么问题部分和回答部分都会参与计算:

预训练 loss= [L(q2) + ... + L(qm) + L(a1) + ... + L(an)] / (m + n - 1)

这里的 L(q2),表示模型根据 q1 预测 q2 时产生的 loss。L(a1),表示模型读完全部问题 token 后,预测回答的第一个 token a1 时产生的 loss。

SFT 仍然会在整条序列的每个位置预测下一个 token,但在计算平均 loss 时,只保留回答部分:

SFT loss= [L(a1) + L(a2) + ... + L(an)] / n

也就是说:

预训练:问题部分和回答部分都参与计算 lossSFT:只用助手回答部分计算 loss

问题部分虽然不参与最终 loss,却仍然必须输入模型。模型只有先读到 q1 到 qm,才能预测 a1;读到问题和 a1 后,才能继续预测 a2

问题是预测答案的条件,答案才是 SFT 的训练目标。

真实训练时,这些位置的预测会通过矩阵运算一次并行算出来。把它们写成 q1q2a1a2,只是为了方便我们理解。

算出 SFT loss 后,反向传播计算梯度,优化器再根据梯度更新参数。这套流程仍然和预训练相同。

那 SFT 会更新多少参数?

最直接的做法,是让基础模型原有的参数都参与更新,这叫全量 SFT

我们来看大模型里最常见的一种向量变换。假设输入向量是 x,原来的参数矩阵是 W

y = x * W^T

经过全量 SFT 后,W 会发生一些变化。我们把这次变化记作 ΔW。希腊字母 Δ 读作 Delta,通常用来表示“变化量”。

SFT 后的矩阵 = W + ΔW

因此,新的输出是:

y = x * (W + ΔW)^T

把括号展开:

y = x * W^T + x * ΔW^T

所以,全量 SFT 可以理解成:在预训练得到的 W 上,继续学出一份变化量 ΔW

但这里有一个成本问题。假设 W 是一张 4096 × 4096 的矩阵,那么完整的 ΔW 也有 4096 × 4096 个参数,相当于要学习约 1678 万个数字。

能不能用更少的参数表示这份变化量?

一种常见方法叫 LoRA,全称是 Low-Rank Adaptation,中文叫低秩适配

LoRA 做了一个假设:SFT 对模型产生的有效调整,可能不需要 1678 万个数字各自独立变化,而是可以归纳成少数几个主要的调整方向。

“低秩”可以先理解成:独立的调整方向比较少。

比如我们假设,这次 SFT 只需要学习 8 个主要的调整方向。LoRA 不再直接学习完整的 ΔW,而是用两张窄矩阵的乘积来表示它:

A:8 × 4096B:4096 × 8ΔW = B * A

B * A 的结果仍然是一张 4096 × 4096 的矩阵,和 W 的形状完全相同。但 A 和 B 加起来只包含约 6.5 万个参数,比完整 ΔW 的 1678 万个参数少得多。

为什么要用两张矩阵?

因为只用一张矩阵时,如果它既要接收 4096 维输入,又要输出 4096 维结果,它就仍然是一张 4096 × 4096 的大矩阵。两张窄矩阵相乘,既能得到和 W 相同形状的变化量,又能大幅减少需要训练的参数。

把 ΔW = B * A 代回前面的公式。为了先看清结构,下面省略真实 LoRA 中用来控制修正量大小的缩放系数:

y = x * W^T + x * (B * A)^T  = x * W^T + (x * A^T) * B^T

这条新增的计算路径可以写成:

x-> 乘 A^T:4096 维变成 8 维-> 乘 B^T:8 维变回 4096 维-> 得到对原输出的修正量

这里,可以把 B 理解成保存了 8 个不同的输出修正方向。x * A^T 得到的 8 个数字,是当前输入对应的 8 个权重。B 再按照这些权重,把 8 个修正方向加权组合起来,得到一份 4096 维的输出修正量。

训练时,原来的 W 保持不动,只调整 A 和 B。最终输出就是:

最终输出= 原矩阵 W 的输出 + LoRA 学到的修正量

这看起来有点像残差连接,因为两者都把一份新结果加到原结果上,但它们保留的东西不同。

残差连接:保留进入这一层之前的输入 xLoRA:保留预训练矩阵 W 原来的计算结果

LoRA 训练完成后,还可以把学到的变化量直接合并进原矩阵:

W_new = W + B * A

合并以后,模型仍然只需要计算:

y = x * W_new^T

那为什么 LoRA 是先降维再升维,而前面讲过的 FFN 却是先升维再降维?

因为它们的目标正好相反。

FFN:4096 维 -> 11008 维 -> 4096 维LoRA:4096 维 -> 8 维 -> 4096 维

FFN 先升维,是为了把 token 向量展开到一个更丰富的空间里,再通过激活函数组合出更多特征。LoRA 先降维,是为了限制这次参数调整的自由度,只用少数几个方向表示 ΔW

FFN 的两个矩阵之间有激活函数,因此不能直接合并成一个矩阵。LoRA 的 A 和 B 之间没有激活函数,所以可以先算出 B * A,再把它合并进 W

FFN 先升维,是为了增强模型的表达能力;LoRA 先降维,是为了压缩 SFT 需要学习的变化量。

无论使用全量 SFT,还是冻结原参数、只训练 LoRA 的 A 和 B,训练数据和 loss 的计算方法都没有变。它们的区别只是:哪些参数可以根据 loss 继续调整。


▍问题 3:SFT 训练数据从哪里来?

SFT 训练数据的基本格式是:

用户要求 -> 理想回答

最直接的数据来自人类标注。标注员根据问题写出理想回答;数学、代码、医学、法律、金融等专业领域,还需要专家来写或审核。好回答不只要语句通顺,还得准确、有用,并且真正符合题目要求,所以这类数据很贵。

为了获得 SFT 和其他后训练阶段所需的高质量数据,业界真的会招募专业人士来出题、作答和审核。《时代》杂志在 2025 年报道,OpenAI、Google 和 Anthropic 等公司都在大量寻找专家数据,一些高难度样本甚至由拥有博士学位的专家写下完整解题过程。

还有一部分数据来自已有任务的改造。翻译、总结、分类、信息抽取等传统任务,都可以整理成指令:

请把这段英文翻译成中文。请把这篇文章总结成 100 字。请判断这条评论是正面还是负面。请从下面的文本里抽取人物、地点和时间。

真实产品中的用户问题也很有价值,因为它们能反映用户到底会怎么问。不过,这类数据必须先做隐私处理,再经过质量筛选和安全过滤。 

现在还有大量 SFT 数据由更强的模型生成,比如数学解题步骤、代码解释、写作样例和工具调用样例。合成数据容易扩大规模,但必须经过规则、小模型或人工审核。否则,里面的错误、废话和固定套路也会被模型学走。

这些内容在预训练阶段有没有可能出现过?有。教程、问答网页、论坛讨论和代码解释,本来就可能出现在预训练数据里。 差别在于,预训练把它们当普通文本,SFT 则把它们整理成明确的“用户提问、助手回答”。前者让模型见过这些知识和表达,后者让模型学会在什么问题下给出什么回答。

至于写作、代码、数学等数据各占多少,并没有统一配方。

通用助手会增加通用问答、写作和总结;代码助手会增加代码生成、解释、debug 和测试用例;工具型助手则会加入搜索、读文件、调用函数和数据库操作的样本。

Meta 在 Llama 3 报告中披露过一组 SFT 数据配比:

  • General English:52.66%
  • Code:14.89%
  • Multilingual:3.01%
  • Exam-like:8.14%
  • Reasoning and tools:21.19%
  • Long context:0.11%

这组比例按样本数统计,不是按 token 数统计。长上下文样本虽然只有 0.11%,但每条很长,所以它占用的 token 比例会更高。

DeepSeek-V3 的技术报告提到,SFT 阶段使用了约 150 万条指令数据。推理类数据包括数学题、代码竞赛题和逻辑题,其中很多由内部 DeepSeek-R1 模型生成;非推理类数据包括创意写作、角色扮演和简单问答,由 DeepSeek-V2.5 生成并经过人工验证。

Qwen2.5 技术报告也提到,SFT 使用了超过 100 万条样本,后续还进行了多阶段强化学习,继续提升指令跟随、长文本生成和结构化数据分析能力。

这些配比会直接影响模型最终像什么样的助手。写作样本多,模型更熟悉写作任务;代码样本多,代码回答通常更强;工具调用样本多,模型也更容易学会什么时候该调用工具。反过来,如果样本里充满套话或经常答非所问,模型同样会把这些毛病学走。 

SFT 数据不能只看数量,还要看答案质量、任务分布和筛选方法。

那 SFT 对整体能力的提升到底占多少?这个问题没法用一个固定百分比回答。 从训练规模看,SFT 通常远小于预训练。预训练可能使用万亿级 token,SFT 的数据量和算力都小得多。但从用户感受看,变化很大,因为用户最先在意的是:我让它解释、总结、写文章或输出表格时,它到底会不会照做。

预训练决定模型有没有这项基础能力,SFT 决定用户提出要求时,模型能不能把这项能力稳定地用出来。

SFT 也有边界。它能让模型更会按照要求回答,却不能单独保证回答可信、遇到危险问题时处理得当,也不能保证数学、代码和复杂逻辑题一定做对。前一类问题要靠后续的偏好和安全训练继续改善,后一类问题还需要专门的推理训练。


▍把整篇串起来

到这里,我们知道了:

  • SFT 的训练数据,是一组组“用户要求 -> 理想回答”的样本
  • SFT 仍然在预测下一个 token,问题部分提供条件,助手回答部分计算 loss
  • loss 算出来以后,模型通过反向传播更新参数
  • SFT 可以更新全量模型参数,也可以冻结原参数,只训练 LoRA 的 A 和 B
  • 底层训练步骤没有变,训练数据和计算 loss 的位置变了
  • 经过 SFT,基础模型从会续写,变成了会按要求回答

但同一个问题仍然可能有很多种合格回答,SFT 没有直接教模型该怎样给它们排序。哪一个更有用、更可信,遇到危险请求时又该不该拒绝?

下一篇,我们继续讲:

偏好训练是什么:大模型怎么学会“什么回答更好”。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-13 14:43:07 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/855176.html
  2. 运行时间 : 0.124341s [ 吞吐率:8.04req/s ] 内存消耗:4,984.68kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=be58c9df8201c76038aef91114e5db12
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000943s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001089s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000387s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000271s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000542s ]
  6. SELECT * FROM `set` [ RunTime:0.000200s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000598s ]
  8. SELECT * FROM `article` WHERE `id` = 855176 LIMIT 1 [ RunTime:0.000846s ]
  9. UPDATE `article` SET `lasttime` = 1783924987 WHERE `id` = 855176 [ RunTime:0.019978s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000372s ]
  11. SELECT * FROM `article` WHERE `id` < 855176 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000565s ]
  12. SELECT * FROM `article` WHERE `id` > 855176 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000450s ]
  13. SELECT * FROM `article` WHERE `id` < 855176 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001317s ]
  14. SELECT * FROM `article` WHERE `id` < 855176 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000940s ]
  15. SELECT * FROM `article` WHERE `id` < 855176 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000872s ]
0.128316s