乐于分享
好东西不私藏

AI-7D-SATS 平台的架构选型:为什么选择"Workflow + Multi-Agent"的混合架构?

AI-7D-SATS 平台的架构选型:为什么选择"Workflow + Multi-Agent"的混合架构?
7D第九期-AI大模型应用非功能能力评估(AI-SATS)培训招生简章
7D-AI大模型应用非功能能力评估(AI-SATS)培训大纲

架构选型说明,写给关心 AI-7D-SATS 技术路线的合作伙伴、客户和技术决策者。

Workflow + Multi-Agent 混合架构封面

一、我们面临的选择

AI 火了之后,每个做技术的人都被问过同一个问题:"你们用了 AI 吗?"

但"用 AI"三个字背后,其实藏着四种完全不同的做法。就像出行,走路、骑单车、坐公交、开私家车,都能到目的地,但成本和体验天差地别。选错了,轻则浪费钱,重则出事故。

AI-7D-SATS 是一个性能测试 Agent 应用,主要能力是帮用户完成从"需求理解"到"压测执行"再到"根因分析"的全链路。这里有一个问题必须先回答:哪些环节适合用 AI,哪些环节坚决不能用 AI?

这篇文章讲的就是我们为什么选择了"Workflow + Multi-Agent"这种模式。

二、从 SOP 到 JD:性能测试工程师思维的转变

在讲具体选型之前,有必要先说一线工程师思维的变化。不理解这个转变,后面的四种模式看起来就是"几种技术方案";理解了,你会发现这其实是工作方式的升级。

旧模式:面向过程(Defining the steps)

在传统的性能测试工作中,工程师接到一个压测任务后,需要按照标准流程一步步执行。

  • 第一步:读需求文档,手动标记出需要压测的接口
  • 第二步:打开 JMeter 或 Locust,逐个配置线程组、采样器、断言
  • 第三步:如果接口需要登录鉴权,手写 Cookie 管理器或 Token 提取器
  • 第四步:准备测试数据,根据业务规则造数据或从数据库导数据
  • 第五步:启动压测,盯着监控大屏,发现异常手动叫停
  • 第六步:从 Prometheus 或 Grafana 导出监控截图,粘贴到 Excel 里
  • 第七步:写一份 Word 报告,把响应时间、吞吐量、错误率填进固定模板

每一个判断逻辑、每一次数据流转,都依赖工程师的个人经验和手工操作。

这在 AI-7D-SATS 早期版本中体现得尤为明显。当时我们想把这个流程自动化,于是性能测试工程师开始写死每一步——

  • 第一步:用正则表达式提取 PRD 中的接口列表
  • 第二步:用固定模板生成 Locust 脚本
  • 第三步:硬编码判断"如果接口是 GET 就用这种压测策略,如果是 POST 就用另一种"
  • 第四步:固定报表格式输出结果
  • 异常处理:如果 PRD 格式变了、如果接口有鉴权、如果用户想要 JMeter 而不是 Locust——每一步都需要新增判断分支

这就像一位老工程师写了一本厚厚的《性能测试操作手册》,手册里写了 300 页的操作流程。但只要用户扔过来一份格式不同的需求文档,或者要求测试一个"非标准 REST 接口"(比如 WebSocket、GraphQL),整本手册就卡住了——因为"手册里没有写这种情况"。

新模式:面向组织(Defining the roles)

在 AI 时代,性能测试工程师的主要工作变成了写"角色说明书"——几张 JD(职位描述),定义清楚每个数字员工的职责和边界。

以 AI-7D-SATS 为例,现在的性能测试工程师不再写 300 页操作手册,而是定义这样几个角色:

  • 需求解析专家(RequirementAnalyzer):职责是从 PRD / OpenAPI / HAR / 自然语言中提取测试需求;能使用的工具是文档读取器、知识库查询器;边界是不能直接启动压测
  • 场景设计专家(ScenarioDesigner):职责是生成测试场景矩阵;能使用的工具是历史案例库、参数生成器;边界是产出必须经人工确认
  • 脚本生成专家(ScriptGenerator):职责是生成 Locust / JMeter 脚本;能使用的工具是代码模板库;边界是产出必须经过安全审核
  • 根因分析专家(RootCauseAnalyzer):职责是解读监控指标、给出瓶颈假设;能使用的工具是 Prometheus 查询、ChromaDB 知识库;边界是置信度低于 0.7 必须上报人工

写好了角色说明书,然后呢?Trust the Role,信任角色。

你不再 micromanage 他每一步做什么。以需求解析专家为例,你告诉他:"你是需求解析专家,目标是从混乱的输入中提取清晰的测试需求。你可以查阅文档、搜索知识库、提问澄清,但不能直接启动压测。我相信你能自主规划工作路径,但超出边界的事情必须上报。"

然后让他自己去干。他可能先通读文档,再标记疑点,再搜索历史案例,再整理输出——这些步骤是他在自己的"大脑"(LLM)里动态规划的,不是代码里写死的。

为什么要这么分?

Multi-Agent 协作的实际好处在于:你终于可以从"管步骤"的泥潭中解放出来,去做"管角色"的设计。

  • 业务变化时:以前新增"支持 gRPC 接口压测",需要改 20 处代码逻辑(需求解析模块要识别 gRPC 语义、脚本生成模块要新增代码模板、参数校验模块要适配 proto 结构……)。现在只需要调整"脚本生成专家"的工具箱,给他增加 gRPC 代码模板,其他角色不受影响。
  • 新需求出现时:以前新增"容量预测"功能,需要新增一整条 Workflow 分支,从数据抽取到模型调用到报告格式化全部写死。现在只需要新增一个"容量预测专家"角色,定义好他的输入(历史压测数据 + 业务增长趋势)、输出(容量预测报告)、工具(回归模型、趋势分析器),然后把他接入现有的组织即可。
  • 系统出问题时:以前脚本生成异常,你需要逐行 debug 代码逻辑,看是哪条正则、哪个模板出了问题。现在只需要看"哪个角色越界了"——是脚本生成专家生成了危险代码(比如包含 os.system 的脚本)?还是根因分析专家查询了不该查的生产环境指标?问题定位从"读代码"变成了"看角色行为日志"。

当然,SOP 并没有完全消失。实际上,最高效的架构是"SOP + JD"的混合:

  • 确定性环节:保留 SOP,用流水线确保稳定高效(Workflow)
  • 不确定性环节:引入 JD,用角色自主决策应对变化(Agent)

所以接下来你要看到的四种模式,本质上就是回答一个问题:在这个环节,该用 SOP,还是该用 JD?

从 SOP 到 JD 的性能测试工程师思维转变

三、四种 AI 应用模式

模式一:Prompt Engineering — 直接问专家一个问题

类比:你有一位博学的朋友,给他一个清晰的问题,他一次性给你答案。

适合场景:

  • 问题本身很明确
  • 不需要查资料、不需要做调研
  • 答案可以直接用,不需要后续加工

在 AI-7D-SATS 中的例子:

用户在 AI 聊天框输入:"请用一句话解释本次压测中 CPU 使用率 95% 可能意味着什么?"

平台直接调用大模型,一次性返回:"CPU 使用率 95% 通常意味着计算密集型瓶颈,可能是业务逻辑复杂、线程竞争或垃圾回收频繁导致。"

局限性:

  • 如果问题需要分多步解决,比如"先查监控指标 → 再对比历史基线 → 再定位具体代码段",Prompt 模式就搞不定了
  • 如果上下文太长,比如扔给 AI 一份 10MB 的压测日志,他会"失忆",只能处理前面几页

模式二:Workflow — 工厂流水线

类比:工厂里的流水线,每一步都是预先设计好的。零件来了,第一步冲压、第二步焊接、第三步质检,每一步该做什么、谁来干、异常了怎么处理,全写在操作手册里。

适合场景:

  • 流程步骤明确,可以一条条列出来
  • 分支条件清晰,比如"如果 A 就走到 B,如果 C 就走到 D"
  • 对稳定性、速度、成本要求高

在性能测试中的例子:

用户登录 → 读取项目信息 → 检查环境配置 → 校验输入参数 → 创建执行记录 → 提交任务队列 → 启动压测 → 采集监控数据 → 存储结果 → 记录审计日志

这条链路的每一步都是确定的,不需要 AI 来"思考"下一步该做什么。

优势:极其稳定、速度快、成本低、出了问题容易定位。

局限性:

  • 遇到"没写在手册里"的异常情况,流水线就卡住了
  • 比如用户丢过来一段自然语言描述的需求,流水线不知道怎么处理

模式三:Single Agent — 聘请一位独立Agent

类比:你请了一位专业Agent,给他一个任务目标,给他一套工具(电脑、数据库权限、搜索引擎),让他自己想办法完成。

Agent的工作方式是:思考 → 行动 → 观察结果 → 再思考 → 再行动,循环往复,直到任务完成。

适合场景:

  • 任务有一定不确定性,步骤无法预先穷举
  • 需要探索、调研、判断
  • 输入可能是自然语言、非结构化数据

在性能测试中的例子:

"用户上传了一份 PRD 文档,请帮我提取出需要做性能测试的场景和指标。"

Agent会打开文档、逐段阅读、提取关键信息、整理成结构化的测试场景矩阵。这个过程需要"阅读 → 理解 → 归纳 → 输出",步骤不是预先固定的。

优势:能处理不确定性和复杂性,有自主决策能力。

局限性:

  • 如果他需要查太多资料、用太多工具,脑子会"过载"
  • 如果他同时要"写报告"又要"审报告",容易"自己骗自己"
  • 如果让他处理敏感操作(比如直接启动压测),风险极高

模式四:Multi-Agent  — 组建专家团

类比:一个复杂项目,你组建了一个专家团,有调研员、分析师、质检员、项目经理。每个人有明确分工,互相协作,最终产出一份报告。

适合场景:

  • 任务极其复杂,一个人搞不定
  • 需要多个领域专家交叉验证
  • 质量要求高,不能出错

在性能测试中的潜在例子:

"请四位专家(需求专家、脚本专家、性能专家、报告专家)共同评审一份测试报告草案,各自从不同角度提出修改意见。"

优势:专业分工、质量高、可交叉验证。

局限性:

  • 成本高,多个人工智能体并行运行,Token 消耗大
  • 速度慢,协调多人需要时间
  • 系统复杂度高,出问题难定位
  • 如果没有完善的管理机制(审批、审计、预算控制),容易失控

四、性能测试这件事,到底有多"乱"?

要选对架构,首先要搞清楚:性能测试本身,属于"极其有序"还是"高度混沌"?

我们用一个简单指标来衡量,事情的混乱程度(技术上叫"业务熵")。混乱程度越低,越适合流水线;混乱程度越高,越需要Agent甚至专案组。

低混乱的环节(适合流水线)

环节
为什么低混乱
用户登录
用户名+密码,验证通过或不通过,规则固定
读取项目信息
根据项目 ID 查数据库,有就返回,没有就报错
校验输入参数
并发用户数是不是数字、目标地址格式对不对,规则明确
启动压测
按配置启动 Locust/JMeter,步骤固定
采集监控数据
定时从 Prometheus 拉指标,流程标准化
记录审计日志
谁、什么时候、做了什么,格式固定

这些环节的共同特点:输入格式固定、执行路径明确。用流水线解决,又快又便宜。

高混乱的环节(适合Agent)

环节
为什么高混乱
理解用户需求
用户可能扔过来 PRD、OpenAPI 文档、HAR 文件,或者一段微信语音转文字,格式千差万别
设计测试场景
"这个接口要不要测高并发?""这个数据量够不够真实?"需要领域知识判断
诊断根因
监控指标异常了,是数据库慢查询?还是内存泄漏?还是网络抖动?没有标准答案
容量预测
"当前系统能撑多少用户?"需要结合历史数据、业务增长趋势、架构特点做综合判断
生成报告摘要
给 CEO 看的摘要和给运维看的详细报告,侧重点完全不同,需要"理解受众"

这些环节的输入不可预测,处理路径需要探索,输出标准也偏主观。用流水线硬编码,成本高且效果不好;请一位"Agent"来处理,反而更合适。

五、核心原则:用多大的网,捞多大的鱼

我们选型时遵循一条原则,来自控制论中的阿什比定律:

"只有多样性才能对抗多样性。"

通俗地说:用多大的网,捞多大的鱼。

  • 如果池塘里只有几种鱼,且游得很规律,不需要撒一张巨网,一根鱼竿就够了(Prompt / Workflow)
  • 如果池塘里鱼种繁多、游得杂乱无章,拿一根鱼竿就会漏掉很多,必须撒网(Agent / Multi-Agent)

但反过来也成立:

  • 过设计:池塘里明明只有几种鱼,你却动用了巨网,浪费钱、增加复杂度
  • 欠设计:池塘里鱼群混乱,你却只用一根鱼竿,根本捞不上来

AI-7D-SATS 的性能测试链路,横跨了"低混乱"和"高混乱"两种状态:

  • 执行链路(登录 → 校验 → 启动 → 采集 → 存储)是低混乱的,用流水线
  • 分析链路(理解需求 → 诊断根因 → 预测容量 → 生成报告)是高混乱的,用Agent

所以我们的选择很明确:不做纯流水线,也不做纯Agent团队,而是"Workflow 为主骨架,在关键节点引入 Multi-Agent 帮忙"。这就是混合架构。

按复杂度和不确定度选择 AI 架构模式

六、压测执行:一条绝对不能碰的红线

在混合架构中,有一个问题必须回答:为什么压测执行(启动 Locust/JMeter、连接目标服务器)不能交给 AI Agent来做?

答案就三个字:安全、审计、追责。

想象一下这个场景:

AI Agent收到了用户的请求:"帮我压测一下生产环境。"

Agent自己判断:"用户说生产环境,我觉得没问题,直接启动吧。"

结果:生产环境被压垮了,核心业务中断 30 分钟。

谁来负责?AI 吗?AI 没有法律责任。开发团队吗?"是 AI 自己做的决定",甩锅循环开始。

所以我们的红线很清楚:

操作类型
能否交给 AI
原因
理解用户需求
可以
错了可以人工修正,不直接产生破坏
生成测试脚本
可以
生成后需要人工审核,不直接执行
启动压测
绝对不行
直接作用于生产系统,一旦出错后果严重
访问目标服务器
绝对不行
涉及网络安全和权限边界
写入数据库/知识库
绝对不行
数据变更必须经审批和审计
发布报告到外部
绝对不行
对外发布需经合规审核

AI Agent在我们架构里的定位是"建议者",不是"执行者"。它可以生成脚本、提出根因假设、起草报告,但所有高风险操作必须经过人工审批闸机(DispatchGate),由人来最终决定是否执行。

七、评估架构的"三把尺子"

实际做决策时,我们用三把尺子来量一个需求该用什么架构:

第一把尺子:复杂度(Complexity)

这件事本身有多复杂?

维度
简单(AI-7D-SATS 场景)
复杂(AI-7D-SATS 场景)
交互复杂度
用户在聊天框问"什么是 TPS?",一问一答搞定
用户上传 50 页 PRD 文档,要求提取全部性能测试场景和指标
依赖复杂度
只需大模型自身知识回答常识问题
需要查询 ChromaDB 知识库、调用 Prometheus API 拉取指标、读取 HAR 文件分析接口
过程复杂度
单步生成测试脚本即可交付
生成脚本 → 人工审核 → 提交队列 → 启动 Locust 压测 → 采集监控 → 根因分析 → 生成报告

第二把尺子:不确定度(Uncertainty)

这件事有多"说不准"?

维度
确定(AI-7D-SATS 场景)
不确定(AI-7D-SATS 场景)
输入不确定度
用户在表单中填写固定参数:并发数 1000、持续时间 300 秒、目标地址 https://api.example.com
用户在微信群发了一段语音:"帮我测一下这个接口能不能撑住双十一"
过程不确定度
执行路径固定:校验参数 → 启动 Locust → 采集 Prometheus 指标 → 存储结果到数据库
根因分析路径动态:先看 CPU → 正常 → 转看数据库慢查询 → 正常 → 转看网络延迟 → 找到瓶颈
目标不确定度
压测是否通过:错误率 < 1% 且响应时间 P99 < 500ms,可自动判定
容量预测报告质量是否达标?是否覆盖了所有关键场景?需要领域专家判断

第三把尺子:性能要求(Performance)

这件事对速度、成本、资源有多敏感?

约束类型
AI-7D-SATS 场景
对架构的影响
响应时间
用户在 AI 聊天界面提问,期望 2 秒内看到第一个字;或压测报警后需在 5 分钟内定位根因
不能用 Multi-Agent(协调多个Agent太慢),必须用 Single Agent 或 Workflow
成本约束
每天自动采集上千个监控指标并生成摘要报告,高频低价值任务
不能用高 Token 消耗的Agent方案,降级为 Prompt 批量处理或轻量 Workflow
上下文约束
用户上传了 10MB 的压测日志文件,要求 AI 找出所有异常模式
直接塞进 Agent 会超出上下文窗口,必须用文件传书 + RAG 检索 + 分段分析

三把尺子中,Performance 有一票否决权。

即使复杂度和不确定度都很高(理论上应该用专家团),但如果性能要求极其严苛(比如压测根因定位必须在 5 分钟内完成),我们会强制降级,收缩能力边界,把不确定的环节尽量固定化,退回到"Workflow 骨架 + 局部 Multi-Agent"的模式。

八、AI 能力建设路线图

引入 AI 能力不是一蹴而就的,业内有一条公认的六阶进阶路线,这也是 AI-7D-SATS 的建设蓝图:

阶段
名称
通俗解释
建设重点
Level 0
准备
工具、环境、团队就位
搭建开发环境、选定基座模型、组建 AI 工程小组
Level 1
跑通 MVP
核心闭环能转起来
Agent 能接收任务、调用技能、输出推理结果,端到端可演示
Level 2
工具生态
AI 能调用外部工具
建立 SkillRegistry,覆盖需求解析、脚本生成、监控查询等核心工具
Level 3
记忆与知识
AI 能记住事情、查资料
接入知识库,建立长短期记忆机制,支持上下文回溯
Level 4
多智能体协作
多个 AI Agent能协作
仅限低风险场景试点(如报告评审),明确角色隔离和成本上限
Level 5
稳定与安全
有护栏、有监控、能审计
Prompt 注入防护、危险脚本检测、循环调用熔断、全链路审计

这条路线图的核心理念是:先单点验证,后生态扩展,再谈协作,最后上护栏。

各阶段之间存在明确的依赖和先后关系:

  • Level 1 是底线:如果单个 Agent 连"接收任务 → 调用工具 → 输出结果"的闭环都跑不通,后续所有建设都是空中楼阁。必须在单 Agent 端到端可演示之后,才进入下一阶段。
  • Level 2-3 是翅膀:工具生态和记忆能力决定了 Agent 能做什么、记得住什么。没有丰富的技能和知识库,Agent 只能回答常识问题,无法处理性能测试领域的专业任务。
  • Level 4 是禁区门槛:Multi-Agent 协作的成本、复杂度和风险都远高于单 Agent。只有在单 Agent 能力充分验证、安全护栏基本就位后,才允许在低风险场景下试点。任何涉及执行、写库、发布的任务都不在此列。
  • Level 5 是入场券:没有完善的安全护栏,任何 AI 能力都不允许接触生产数据或执行敏感操作。这是硬性门槛,不是可选项。安全护栏全部到位后,Agent等协作模式才可能从"低风险试点"走向"生产可用"。
AI 建议区、人工审批闸机与安全能力路线图

九、未来可能的变化

我们并不是永远排斥 Multi-Agent。满足以下条件时,可能会引入"专家团"模式:

  1. 任务性质:仅限低风险的内容评审(如报告评审、场景设计复核),不涉及执行、写库、发布
  2. 角色隔离:每个 AI Agent有明确独立的职责,不互相越界
  3. 有评估基准:单 Agent的结果 vs 专家团的结果,能量化对比
  4. 有成本上限:试点预算、Token 消耗上限、最大运行时间已明确
  5. 有回滚路径:随时可关闭,不影响主业务流程
  6. 安全护栏到位:Prompt 注入防护、循环检测、成本熔断等机制已运行稳定

不是不用,是时候未到。

十、总结

AI-7D-SATS 选择混合架构,基于对业务的理解:

  1. 性能测试链路天然分层:执行链路是有序的,适合流水线;分析链路是混沌的,适合Agent
  2. 安全红线不可逾越:压测执行、权限判断、数据写入、对外发布等高风险操作,必须留在确定性工程链路中,由人来审批
  3. 阶段性务实:当前处于"单Agent可用、多Agent待验证"的阶段,优先补齐安全护栏,而非盲目增加 AI 复杂度
  4. 架构选型是可复用的过程:每一个新需求都经过"四层漏斗 + 三把尺子"的评估,确保不过设计、不欠设计

Workflow 保稳定,Multi-Agent 解难题。各管各的事,各用各的场。这就是我们的做法。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-23 18:01:13 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/638267.html
  2. 运行时间 : 0.135630s [ 吞吐率:7.37req/s ] 内存消耗:4,818.02kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0245159e492d2da4e30e0907924a8bf6
  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.000461s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000707s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000291s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000258s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000701s ]
  6. SELECT * FROM `set` [ RunTime:0.000252s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000723s ]
  8. SELECT * FROM `article` WHERE `id` = 638267 LIMIT 1 [ RunTime:0.012832s ]
  9. UPDATE `article` SET `lasttime` = 1784800873 WHERE `id` = 638267 [ RunTime:0.016077s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000437s ]
  11. SELECT * FROM `article` WHERE `id` < 638267 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002350s ]
  12. SELECT * FROM `article` WHERE `id` > 638267 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000603s ]
  13. SELECT * FROM `article` WHERE `id` < 638267 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006545s ]
  14. SELECT * FROM `article` WHERE `id` < 638267 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007391s ]
  15. SELECT * FROM `article` WHERE `id` < 638267 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001011s ]
0.137408s