乐于分享
好东西不私藏

智能体软件工程 #10 | 构建可信 AI 软件工厂

智能体软件工程 #10 | 构建可信 AI 软件工厂

这是《智能体软件工程》系列的第十篇。 AI 编码正在变成一座"软件工厂"。这一篇谈一个工具不需要、但工厂躲不掉的问题:它凭什么可信。 一句话立在最前面:不要信,去验证。


一 · 现状

一个真实的小问题

先讲一件我经历的真事。

一个我认识的朋友,他是某大厂工程师,曾经咨询过我一个问题,如何向外部证明一件事:同样的源码、同样的环境,编出来的二进制必须逐位一模一样。为什么要这个?因为外部不放心,担心他在二进制里塞了后门。

他在虚拟机里编了一遍,发现制品大小是一样的,但问题是,怎么比对里面的二进制内容?

其实真正的问题本质不是二进制内容该如何证明,真正的问题是,「别人凭什么信他」?一个写代码的人,要怎么向一个根本不信任他的人,证明出厂的东西没被动过手脚。

这个问题,整个软件行业给出的答案只有一个方向:不要信,去验证可复现,是验证,不是信仰。你想别让人相信你,那你就应该让别人能自己核对。

积木都造好了:一根纵轴,四层

为了回答"凭什么信",业界这些年其实已经把“可信积木”都造齐了。它看着乱,是一堆缩写,但有清晰的结构:一根纵轴,从下往上四层,每层引用下一层。

最底下,第一层,是密码学原语。靠什么成立。哈希(sha256)、签名(ed25519)、透明日志。这是整套体系的地基,是数学。

往上第二层,是格式与框架,也是最热闹的一层。这一层我按"它回答什么问题"分四组。物料清单回答"里面有什么" (SBOM、SPDX、CycloneDX),再加上回答"漏洞真不真有影响"的 VEX。溯源认证回答"怎么来的"(in-toto、SLSA),还有管媒体内容的 C2PA。签名身份回答"谁签的"(Sigstore、DID,以及多人签核的 N-of-M)。策略治理回答"符不符合规则" (OPA、Rego)。

第三层,是方法论与机构,该怎么合规的干活。NIST 的 SSDF 是一套安全开发实践,C-SCRM 是供应链风险管理框架;再加上 OpenSSF、CNCF 这些把标准养起来的机构。

最顶上第四层,是法规政策。欧盟的 CRA、NIS2、CE、ENISA,美国的一串行政令、OMB、CMMC、FedRAMP。这一层的特点是:它规定"必须拿出什么结果",但不点名工具。

但攻击搬家了:打的就是 AI 作者层

这套体系最初是被一批事故逼出来的。历史上,攻击打的是构建和依赖:2020 年的 SolarWinds,构建系统被植入后门;2021 年的 Log4Shell;还有各种依赖混淆。

但当下,2025 到 2026 年,攻击搬家了,它打的就是 AI 作者这一层。

2025 年 9 月出现了一个叫 Shai-Hulud 的蠕虫,能自传播。偷到一个开发者的发布令牌,就自动给他维护的每一个包注入恶意代码、重发,不用人插手。它瞄准谁?有个叫 codexui 的包,伪装成 OpenAI Codex 的客户端,专偷九家大模型厂商的密钥。今年 6 月,就在十天前,有人攻陷了 Mastra 这个 AI 框架的 npm 组织,在 144 个包里塞进仿冒依赖,专偷 LLM 密钥。还有蠕虫把自己写进 Claude Code 的会话钩子,做持久化,你 uninstall 都删不掉。以及红帽那起——合法签名,盖在恶意源码上,这个后面单独讲。

这些攻击有一个共同特征,我把它叫 Zero CVE:活跃期间,它们几乎都没有被分配 CVE,基于 CVE 的漏洞扫描器全程返回"干净"。

这句话的分量在于:旧的那套栈,在"作者与出身的完整性"这一维,是失明的。它会查有什么组件、有没有已知漏洞,但攻击根本不在这一维上。


二 · AI 高速发展

AI coding 正在进化成"软件工厂"

为什么"作者"这一维突然变得这么要紧?因为写代码的,越来越不是人了

AI coding 这两年的进化,是一条很清楚的阶梯。第一级,自动补全,行级的,比如 Copilot。第二级,对话助手,给你代码片段,比如 ChatGPT。第三级,单个 Agent,能自己跑命令、修 bug,比如 SWE-agent。第四级,Agent 工作流,多个 agent 协作跑很长的任务。第五级,软件工厂,意图进,系统出,你给一句话,它给你一个能跑的产品。

每往上一级,我们交给 AI 的"委托量"都在往上调。而比阶梯本身更深的一件事是:工程的重心,正在离开模型

重心离开模型:三根轴,CBV

重心离开模型,那它落到哪儿去了?最近三年,这块空间被各种名词所定义:Prompt 工程 、Context 工程、Harness 工程、Loop 工程等。

这些名词变换的背后,实际上是工程的重心离开模型向行业领域迁移的过程,也是 AI 从「缸中大脑」逐步长出「手脚」的过程。

在这里,我只想用一个三轴框架来定坐标,叫 CBV。

模型只决定一件事:做什么。模型之外,焊不焊得牢,看三根轴。

Contract,契约。把意图编译成可机检的规格和验收标准,而不是"看着像对"。Boundary,边界。用策略沙箱和不可跳过的人类门,把行为围起来。Verification,验证。让第三方不依赖那个产出它的工具,就能独立复验。

软件工厂能不能成,不取决于模型多强,取决于这三根轴。而工厂跑起来,会撞上两堵墙

第一堵是质量。开放式需求里,功能正确能做到 80%,但可维护性、不破坏历史功能这些维度,会塌成强随机。第二堵是信任:当工厂以机器速度往仓库里提交,第一部分那套信任体系,突然就失灵了。第二堵,是今天的重点。


三 · 工厂要合规

机器速度提交,四个问题突然没了答案

工厂一旦以机器速度提交,四个最朴素的问题,突然就没人答得上来。

AI Coding 让 程序员产生了身份危机。 代码是 AI 写的,为什么人类开发者还叫程序员?这身份危机背后的问题,其实是一个软件可信危机

代码谁写的?哪个模型、哪个 agent 身份、从哪条 prompt?谁负责?是真有人批准,还是测试碰巧绿了就合并了?真的达标了?它是满足了契约,还是只是看着像?能独立复验吗?事后、不依赖那个产出它的工具,任何人都能核一遍吗?

这四个问题答不上来,"信任"就无从谈起。

合规在收紧,但要讲准

而这撞上合规收紧。但这里真正硬的约束,只有欧盟。 CRA 是有约束力的法律,2026 年 9 月报告义务、2027 年 12 月全面合规,强制机器可读 SBOM,罚到全球营业额 2.5%。企业采购在把它沿供应链往下传导。但美国联邦这两年其实在松绑。一纸行政令删掉了强制认证,改成机构裁量。所以准确的说法是:欧盟法律硬、美国在退、合同在补位。

独缺 AI 作者那一维

现有供应链栈已经拥有了三样:组件清单,有 SBOM;构建出身,有 SLSA;签名身份,有 Sigstore、DID。独缺的,是 AI 作者这一维 ,谁、哪个模型、哪条 prompt、哪几行是 AI 哪几行是人、谁签核。为什么缺?因为造这套栈的时候,AI 还不写代码。

一个可信的软件工厂,需要补上这一维。它定义一个 in-toto predicate,叫 openfab/generation,跟 SLSA 同级,骑在 in-toto、SLSA、Sigstore、DID 这批现成原语上,只补那个缺失的维,不重新发明轮子。


四 · 两个闭环

AI 可信软件工厂其实要解决两个问题

AI 自动化软件,被当成一个问题,其实是两个。

一个是生成闭环,关于正确性:生成的代码,做了要求的事吗?这一半,学术界有个很好的代表叫 ARC(上海交大林云老师团队论文[1] ),把需求"编译"成可运行系统。另一个是信任闭环,关于问责:凭什么相信它做了它声称的事

这两个是正交的。 AI 写得对,和能证明写得对、能追溯谁写的,是两件事。

信任闭环:Spec Cycle 七步

信任闭环具体怎么转?我们目前做的 OpenFab[2] 的心脏是一条七步流水线,叫 Spec Cycle,每一步本身都是一个带溯源信息的签名提交。

第一步,意图,自然语言。第二步,Spec,把意图"编译"成可机检的契约加验收标准。第三步,Generate,agent 写代码,同时记下 AI-BOM——DID、模型、prompt 哈希。第四步,Verify,把验收放进策略沙箱里真跑一遍。第五步,Sign,出 in-toto/SLSA 认证并用 ed25519 签名。第六步是关键,Gate 信任门——N-of-M 人类签核,永不自批。第七步,Provenance,溯源以中立 JSON 入仓。

最后是复验,而且不依赖 OpenFab:任何人三步就能独立核对——重算摘要、验签名、重跑验收。

同构的接缝:“焊”成一个闭环

两个闭环不是相邻,是能咬合成一个的,因为它们的接缝是同构的。

生成闭环这边,ARC 这类 Agent 负责生成得对:自然语言意图,先用 DSL 形式化成 Given/When/Then,再走双向 TDD、测试先于代码,产出一个可运行系统,外加一张可追溯记录 M。

信任闭环这边,OpenFab 负责证明它可信:冻结验收契约,做 ai/human 署名加签名,过 N-of-M 人类门,最后产出一个签名构件,任何 forge 上、三步可复验。

中间的接缝,是 ARC 那张可追溯记录 M,约等于 OpenFab 那个 predicate。它们都是把意图锚到被验证构件的同一种溯源图。

映射到我前面提到的 CBV:Contract 就是验收,Boundary 就是沙箱加 N-of-M,Verification 就是三步复验。

一个回答"它对不对",一个回答"凭什么信",合起来,才是"可信的 AI 自动化软件"。

诚实校准之一:签名 ≠ 安全

先说一个反直觉的事实:签名不等于安全。两种真实的失败,正好划清了 provenance 的边界。

第一种,伪造签名。同一波攻击里,@antv 那起就是伪造 SLSA 认证来伪装合法。这种挡得住——靠透明日志,Sigstore 的 Rekor:有一份不可篡改、人人可查的记录,伪造的一比对就露馅。

第二种更难缠,合法签名盖在恶意源码上。红帽那起:攻击者用 OIDC 真签名,加孤儿提交绕过代码评审,把恶意代码合法地签了进去。证书是真的,包确实是合法流水线构建的。这种,签名根本挡不住。只能靠那道不可跳过的人类评审门,N-of-M。

所以 OpenFab 可信软件工厂的重点,不是"签了名就安全",而是"不可跳过的人类问责"。

本质上,OpenFab 改变不了"端点被完全接管就完蛋"这个物理极限,但对"攻击作者/出身"这一整层,它把原来一团黑的事变成了可归因、可遏制、可拉高成本的事。

具体可以分四点。

一、把"AI 作者"从盲区变成一等公民。 现有供应链栈(SBOM/SLSA/签名)焊住了组件、构建、身份,唯独缺"这段代码是人还是 AI 写的、哪个模型、哪条 prompt"。因为造它时 AI 还不写代码。OpenFab 的 openfab/generation predicate 就补这一维:逐文件、精确到行,记下 ai/human 署名、agent 身份、模型、prompt 哈希。这是它唯一真正新增的东西,也是别的栈给不了的。

二、把签核动作钉成不可抵赖的记录。 即便攻击者用合法身份签了恶意代码(红帽那种、或接管你电脑那种),他也在 append-only 的透明日志里、以真实身份、留下了一条带时间戳、带文件级 diff、带 prompt 哈希的证据,抹不掉。于是出事后能精确定位:哪个身份、哪次签核、动了哪几行。把"神不知鬼不觉"变成"必然留下一条以你名义、删不掉的供述"。

三、用 N-of-M 多人多机把单点沦陷和发布沦陷拉开。发布必须 M 个里有 N 个独立的人、在各自机器上签核、且永不自批,攻击者就得同时攻陷 N 台不同电脑,成本指数级上升。它消除不了端点沦陷,但让"放倒一台 = 发布完蛋"变成"得同时放倒好几台"。这是它在自己这一层对"接管作者"最实在的抵抗。

四、让出身可被第三方离线复验,不依赖信任它。 溯源是中立 JSON 入仓,任何人三步复验(重算摘要、验签名、重跑验收),不需要装 OpenFab、不需要信任你的工具。出身从"你说的"变成"谁都能自己核的"。

但要诚实划清它的两条边界(这也是它和"我们能防住一切"的根本区别):

  • 它防不住"端点被完全接管"和"合法签名盖恶意源码"。这两种攻击用的是真身份、真签名,密码学上跟本人无法区分。这是信任根的物理极限,不是 OpenFab 的缺陷。守住端点本身,是 HSM(私钥进硬件)+ N-of-M 多机多人的活,不是溯源这一层该解决的。
  • 它证明的是"来历",不是"安全"。"谁、用什么、写了哪几行"有锚点,它焊得死;"源码本身干不干净"没有锚点,签名和复现都焊不住,只能靠那道不可跳过的人类评审门。而那道门也只在人真的去读时才有用。

诚实校准之二:可复现,不等于可信

回到开头那位工程师的"证明无后门"。可复现构建能证明二进制对应源码。编译过程没插后门,这正切掉他外部方的恐惧。但它证明源码本身干净,一个写在源码里的后门,会完美地逐位复现。所以"复现/签名 ≠ 安全":复现挡住"编译期注入",签名挡住"事后篡改",但源码本身有没有后门,只能靠那道人类评审门。而那道门,正是 OpenFab 做成不可跳过的东西。

验收标准在自动模式下也是模型写的,同一个模型既写代码又写验收,所以人类门必须真验收,而不是看见绿就签。这里说的"可复现"是源码与签名摘要逐位一致,不是从 prompt 重新生成同样的代码,LLM 生成非确定。OpenFab 给的是验证的信封,不是锚点本身。它不替你造裁判,但这恰恰是对的,因为可验证性是任务自带的属性,你本来就造不出锚点,只能诚实地把它围起来、签下来。

当然,也得说两句公道话,因为一座诚实的工厂得知道自己的极限。

人这道门不是万能的。它只在人真的去读、真的去想的时候才有用。如果签字的人只是看见绿色就点同意,这道门就是个橡皮图章。机器能保证门存在、能记下谁签了字,但门后面那个人有没有用心,机器担保不了"人有没有认真审"这件事本身,也没有锚点。

还有一种攻击,这套体系也防不住:如果攻击者完全接管了签核人的电脑,他就是那个人,能用真身份、真签名签出恶意代码,密码学上和本人无法区分。这是信任根的物理极限,不是这套体系的缺陷——任何体系都跨不过去。守住那台电脑本身,是硬件密钥和多人多机的活,不是溯源这一层该解决的。这套体系能做的是另外两件:用 N-of-M 多人多机,把"攻陷一台"和"发布成功"之间拉开距离,逼攻击者同时放倒好几台;以及,无论谁签的,都让这次签核成为一条以真实身份留痕、删不掉的记录。它不让沦陷不可能,它让沦陷藏不住、且更贵。

这就是为什么我说它是"补齐",不是"魔法"。


五 · Demo

不是 PPT 概念,是能跑的东西

OpenFab 不是一套 PPT 概念,是能跑的东西。三种用法。可以看我们的展示 OpenFab demo 视频。

人在聊天室(基于我们用 Rust 开发的 Matrix IM Robrix[3] 和我们的 Agentic OS Octos[4])里提需求,自然语言;Coordinator 起草 spec 并触发构建;OpenFab 跑生成、验收、签名;信任门阻断,把待签核的请求推回房间;人在房间里回一句 approve;OpenFab 合并、溯源入仓;最后把合并回执推回房间。

人始终在自己熟悉的聊天室里,就完成了"提需求—审批—拿回执"的闭环。


结尾

所以,一座可信的软件工厂,不是一台能给你盖章"安全"的机器。它是一条产线把所有有锚点的事,工业化地变成谁都能复验的记录;在那些机器判不了的工位上,逼一个具体的人站出来,签上自己的名字。有锚点的,它可以与 AI 深度绑定;没锚点的,它老实交还给人,并且把"谁交还给了谁"记下来。

这就是为什么我说,赌注不该下在模型更强。模型再强,也跨不过锚点那道坎;真正稀缺的,是让有锚点的部分可被验证、让没锚点的部分有人负责的那套纪律。芯片厂用一百年磨出了这套纪律。软件,才刚开始。

而把这套纪律落到代码上,Rust 是个好材料。一个把"不可信"当一等公民、逼你在编译期就把边界讲清楚的语言,天生适合用来搭那一层可信。

可复现,不等于可信。能复现、能签名的,是来历;不能的,是安全。一座工厂能把来历做到极致,但安全,到今天为止,还得有人,站在那个工位上,签下名字。

参考资料
[1] 

上海交大林云老师团队论文: https://arxiv.org/pdf/2602.13723

[2] 

OpenFab: https://github.com/Open-fab-ai/openfab

[3] 

Robrix: https://github.com/Project-Robius-China/robrix2

[4] 

Octos: https://github.com/octos-org/octos

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-28 17:08:23 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/810007.html
  2. 运行时间 : 0.227367s [ 吞吐率:4.40req/s ] 内存消耗:4,704.92kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5f6914a456dd357eeadb9ef0513c48f7
  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.001245s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001929s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000816s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.003184s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001593s ]
  6. SELECT * FROM `set` [ RunTime:0.000619s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001732s ]
  8. SELECT * FROM `article` WHERE `id` = 810007 LIMIT 1 [ RunTime:0.001386s ]
  9. UPDATE `article` SET `lasttime` = 1782637703 WHERE `id` = 810007 [ RunTime:0.025776s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000793s ]
  11. SELECT * FROM `article` WHERE `id` < 810007 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001340s ]
  12. SELECT * FROM `article` WHERE `id` > 810007 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001196s ]
  13. SELECT * FROM `article` WHERE `id` < 810007 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002069s ]
  14. SELECT * FROM `article` WHERE `id` < 810007 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002406s ]
  15. SELECT * FROM `article` WHERE `id` < 810007 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.006141s ]
0.229098s