当前位置:首页>python>零 Python 资源定义:Flink Agents YAML 声明式配置实战

零 Python 资源定义:Flink Agents YAML 声明式配置实战

  • 2026-08-21 19:27:34
零 Python 资源定义:Flink Agents YAML 声明式配置实战

本文是"基于 Flink Agents 构建智能股票交易系统"系列的第四篇(终篇)。第一篇介绍了框架原理,第二篇和第三篇分别展示了 ReAct 和 Workflow 两种 Agent 模式。本篇将把 Workflow Agent 的全部资源声明迁移到 YAML 文件中,展示声明式配置的开发体验。

可点击跳转:

基于 Flink Agents 构建智能股票交易系统|框架原理篇

用 60 行代码构建智能股票分析 Agent — Flink Agents ReAct 模式实战

构建多阶段股票交易决策系统 — Flink Agents Workflow 模式实战

01

为什么需要 YAML 声明式

在上一篇的 Workflow Agent 中,Agent 类包含了两类代码:一类是资源声明(连接、prompt、工具、模型配置),另一类是事件处理逻辑(process_input 和 process_response)。这两类代码的变更频率和变更角色通常不同。

资源声明变更频繁且门槛低。运维人员可能需要切换 LLM 服务的连接地址,数据分析师可能想调整模型的温度参数或更换 prompt,产品经理可能要求增减 Agent 可用的工具。这些变更本质上是"配置调整",不需要理解 Python 代码的完整上下文。

事件处理逻辑则相对稳定。process_input 解析 tick 数据、操作记忆、发起 LLM 调用的流程,以及 process_response 区分阶段、传递上下文的逻辑,在 Agent 架构确定后很少变动。

YAML 声明式配置的设计思路就是将这两类代码分离:YAML 文件负责资源声明,Python 代码只保留处理逻辑。这样,配置变更不需要触碰 Python 源文件,降低了协作门槛和误改风险。

02

YAML 文件结构

stock_analyst.yaml 是这个 Demo 的核心。它完整定义了一个 Agent 的全部资源——连接、prompt、工具、模型配置和 Action 绑定——而不需要编写一行 Python 资源声明代码。

agents:  - name: stock_analyst    description: YAML 声明式股票分析 Agent。    actions:      - name: process_input        function: workflow_agent_demo:StockTradingAgent.process_input        listen_to: [input]      - name: process_response        function: workflow_agent_demo:StockTradingAgent.process_response        listen_to: [chat_response]    chat_model_connections:      - name: tongyi_conn        clazz: tongyi    prompts:      - name: technical_prompt        messages:          - role: system            content: |              你是一位股票技术分析师。请根据输入的行情数据,              使用可用的工具计算技术指标,然后给出技术面分析结论。          - role: user            content: "请分析以下行情数据:\n{input}"      - name: decision_prompt        messages:          - role: system            content: |              你是一位交易决策专家。根据技术分析结果和当前持仓,              做出最终的交易决策。如果决定交易,使用 execute_trade 工具执行。          - role: user            content: |              技术分析结果: {technical_analysis}              当前持仓: {portfolio}              当前行情: {tick}    chat_model_setups:      - name: technical_model        clazz: tongyi        connection: tongyi_conn        model: qwen-plus        prompt: technical_prompt        tools: [calculate_rsi, calculate_macd, check_portfolio]      - name: decision_model        clazz: tongyi        connection: tongyi_conn        model: qwen-plus        prompt: decision_prompt        tools: [execute_trade]    tools:      - name: calculate_rsi        function: tools:calculate_rsi      - name: calculate_macd        function: tools:calculate_macd      - name: check_portfolio        function: tools:check_portfolio      - name: execute_trade        function: tools:execute_trade

这个 YAML 文件和 Demo 2 的 Python 代码在语义上是等价的。对比一下:Demo 2 中 @chat_model_connection 装饰器声明的通义千问连接,在 YAML 中变成了 chat_model_connections 段落下的一个条目。Demo 2 中 @chat_model_setup 声明的双模型配置,在 YAML 中变成了 chat_model_setups 段落下的两个条目。Demo 2 中 @tool 装饰器包裹的四个工具函数,在 YAML 中变成了 tools 段落下的四个函数引用。

03

别名系统

YAML 文件中有几个看起来"简写"的值:clazz: tongyilisten_to: [input]listen_to: [chat_response]。这些并不是随意简写,而是框架提供的别名系统

当 YAML 加载器遇到 clazz: tongyi 时,它会在内部的别名表(CLAZZ_ALIASES)中查找,根据当前资源类型和语言将其解析为完整的类路径。对于 CHAT_MODEL_CONNECTION 类型的 Python 资源,tongyi 被解析为 flink_agents.integrations.chat_models.tongyi_chat_model.TongyiChatModelConnection。对于 CHAT_MODEL 类型(即 chat_model_setups 段落),同样的 tongyi 被解析为对应的 Setup 类路径。

事件类型同样有别名。listen_to: [input] 被解析为 ["_input_event"]listen_to: [chat_response] 被解析为 ["_chat_response_event"]。这组别名包括 inputoutputchat_requestchat_responsetool_requesttool_responsecontext_retrieval_requestcontext_retrieval_response 八个。

别名系统的存在让 YAML 配置变得简洁可读。使用者不需要知道框架内部的类路径结构,只需记住 tongyiopenaiollama 这样的短名称即可。如果将来框架重构了内部包结构,只要更新别名映射表,已有的 YAML 配置文件不需要任何修改。

04

函数引用

YAML 中的 function 字段使用 module:qualname 格式来引用 Python 代码中的函数或方法。这个格式由冒号分隔为两部分:冒号前是 Python 模块名,冒号后是模块内的限定名称(可以包含类名)。

以 workflow_agent_demo:StockTradingAgent.process_input 为例。框架首先对 workflow_agent_demo 执行 importlib.import_module() 加载模块,然后按点号路径逐层获取属性——先获取 StockTradingAgent 类,再获取 process_input 方法。最终得到的是一个可调用对象,框架将其封装为 PythonFunction 用于 Action 注册。

工具函数的引用更简单:tools:calculate_rsi 表示从 tools 模块(即 tools.py)导入 calculate_rsi 函数。注意这里的模块名不是完整的包路径,而是相对于 sys.path 的模块名——这就要求运行时当前目录(或 YAML 文件所在目录)必须在 Python 的模块搜索路径中。

在 yaml_agent_demo.py 中,有一行代码正是处理这个问题的:

current_dir = str(Path(__file__).parent)if current_dir not in sys.path:    sys.path.insert(0, current_dir)

这确保了 tools 和 workflow_agent_demo 这两个模块名能被正确解析。如果不加这一行,Python 可能在其他路径下寻找这些模块而导致 ModuleNotFoundError

05

加载与执行

YAML Agent 的加载和执行代码极其简洁——整个 yaml_agent_demo.py 只有不到 30 行有效代码。

from data_source import generate_stock_ticks, parse_args, set_sourceargs = parse_args()set_source(args.source)env = AgentsExecutionEnvironment.get_execution_environment()# 加载 YAML Agent 定义yaml_path = str(Path(__file__).parent / "stock_analyst.yaml")env.load_yaml(yaml_path)# 生成行情数据(模拟或真实)symbols = args.symbols or ["GOOGL"]input_list = generate_stock_ticks(symbols, num_ticks=1)# 用 Agent 名称引用并执行output_list = env.from_list(input_list).apply("stock_analyst").to_list()env.execute()

env.load_yaml() 的内部处理过程可以分为几个阶段。首先读取 YAML 文件并用 Pydantic 模型 YamlAgentsDocument 验证结构。然后解析别名——将 clazz: tongyi 替换为完整类路径,将 listen_to: [input] 替换为 ["_input_event"]。接着解析函数引用——将 tools:calculate_rsi 解析为实际的 PythonFunction 对象。最后将解析完成的 Agent、资源和 Action 注册到执行环境中。

注意 apply("stock_analyst") 的调用方式:不像 Demo 1 和 Demo 2 传入一个 Agent 实例,这里传入的是一个字符串名称。框架会在已注册的 Agent 列表中查找这个名称——它对应的就是 YAML 文件中 agents[0].name 的值。

运行效果与 Demo 2 完全一致——同样的两阶段处理链、同样的工具调用流程、同样的事件流转逻辑。唯一的区别在于资源的定义方式:Python 装饰器换成了 YAML 配置。

06

运行结果解读

Demo 支持两种运行方式:

python yaml_agent_demo.py                                    # 模拟数据(默认)python yaml_agent_demo.py --source real --symbols GOOGL      # 美股真实行情

模拟数据模式下,分析 GOOGL(价格 174.24)的结果展示了完整的两阶段处理。

技术分析阶段,technical_model 调用了 RSI、MACD 和持仓查询三个工具。RSI 为 63.86(中性偏强,未达超买),MACD 呈金叉形态(MACD 线高于信号线,柱状图为正),当前无持仓。综合判断为"温和看涨,适合关注低吸机会"。

进入决策阶段后,decision_model 做出了比 Demo 2 更激进的决策——它直接调用 execute_trade 工具以 $174.24 买入了 100 股 GOOGL。这是因为 GOOGL 当前空仓(无持仓风险),技术面呈明确看涨信号(RSI 未超买 + MACD 金叉),模型判断这是一个较好的建仓时机。

真实行情模式下(--source real --symbols GOOGL),Agent 使用 AKShare 获取谷歌的最新日线数据。分析过程与模拟数据完全一致——同样的两阶段处理链、同样的工具调用——唯一的区别是输入的行情数据和历史价格来自真实市场。这验证了 YAML 声明式配置和 Python 处理逻辑在切换数据源时的无缝兼容性。

不同的技术面信号确实驱动了不同的交易决策。这个结果与 Demo 2 中 AAPL(RSI 超买,选择持有)和 TSLA(MACD 死叉,选择持有)形成了有趣的对比。尽管三个 Demo 使用了不同的 Agent 定义方式(ReAct 配置式、Workflow 装饰器式、YAML 声明式),LLM 的推理质量和工具调用行为是一致的——这验证了框架的三种定义方式在运行时是完全等价的。

07

YAML vs Python 对比

两种定义方式各有适用场景。

YAML 声明式的优势在于配置与逻辑分离。当你需要频繁调整模型参数(换模型、改温度)、修改 prompt 内容、增减工具列表时,只需编辑 YAML 文件,无需理解或触碰 Python 源代码。这对于多角色协作(开发者写逻辑、运维调配置、分析师改 prompt)非常友好。YAML 文件还天然支持版本控制和差异对比——一个 prompt 的修改在 git diff 中一目了然。

Python 装饰器方式的优势在于类型安全和 IDE 支持。所有资源声明都是有类型注解的 Python 代码,IDE 可以提供自动补全和错误检查。装饰器方式还支持动态计算——比如根据环境变量选择不同的模型,或者在工具函数中使用闭包捕获外部状态。这些逻辑在纯 YAML 中无法表达。

在实践中,两种方式可以混合使用。Agent 的骨架逻辑(Action 方法)用 Python 编写,稳定不变的资源声明(连接、prompt、工具、模型配置)放在 YAML 中。这正是 Demo 3 的做法:YAML 引用了 Python 中的 process_input 和 process_response 方法,但资源声明完全在 YAML 中完成。

08

系列总结

四篇文章走完了 Flink Agents 从原理到实战的完整路径。第一篇拆解了框架的核心设计——三层架构、事件驱动模型、资源延迟实例化、三级记忆、工具元数据提取、编译执行流程,并与 LangChain/CrewAI/AutoGen 等主流框架进行了系统对比。第二篇用 60 行代码展示了 ReAct Agent 的"零事件编排"体验——LLM 自主驱动工具调用并输出结构化决策。第三篇构建了双模型两阶段的 Workflow Agent,综合运用了装饰器全家桶、记忆系统和 Skills。本篇将资源声明从 Python 迁移到 YAML,展示了声明式配置的简洁与灵活。三个 Demo 都通过数据源代理层(data_source.py)支持模拟数据和 AKShare 真实行情的一键切换,Agent 核心代码无需任何修改。

三个 Demo 对框架能力的覆盖如下:

能力
Demo 1 (ReAct)
Demo 2 (Workflow)
Demo 3 (YAML)
ReAct Agent 模式
Workflow Agent 模式
@tool 工具系统
 (环境级)
 (装饰器)
 (YAML)
@prompt 提示词
@chat_model_setup
 (双模型)
 (双模型)
短期记忆
结构化输出
YAML 声明式
Skills 技能系统
多步骤事件链
真实行情数据

本系列的所有 Demo 都运行在本地模式(LocalRunner)下,使用 from_list().apply().to_list() 的调试模式。要将它们部署到生产环境的 Flink 集群上,只需将数据源从 from_list() 切换为 from_datastream()(如从 Kafka 读取实时行情流),并为输入数据指定一个 key_selector(如 lambda x: x.symbol)。Agent 代码本身不需要任何修改——这就是 Flink Agents "一次编写,两种模式运行"的核心承诺。

from pyflink.datastream import StreamExecutionEnvironmentflink_env = StreamExecutionEnvironment.get_execution_environment()agents_env = AgentsExecutionEnvironment.get_execution_environment(flink_env)result_stream = (    agents_env    .from_datastream(input=tick_stream, key_selector=lambda x: x.symbol)    .apply(agent)  # 同一个 Agent,无需修改    .to_datastream())agents_env.execute("Stock Trading Job")

项目链接:github.com/apache/flink-agents


完整代码下载地址:https://github.com/apache/flink-agents-demos?tab=readme-ov-file

▼ 「Flink AI 训练营」 

面对海量电商评论,难以直接指导电商商品运营。本期 Flink 实训教你实时对评论进行话题分类,自动打标评论中的关注点, 实现高性能实时数据分析与处理!

使用 Flink AI 参照教程完成实操,根据任务完成进度即有机会获得 Flink 定制洗漱包等奖品

点击查看详情【Flink AI训练营】基于Flink对电商评论AI实时分类与情感分析

  • 作业提交链接:https://survey.aliyun.com/apps/zhiliao/2lBuSMpa_

  • 实操文档链接https://alidocs.dingtalk.com/i/nodes/EpGBa2Lm8aZxe5myCw0ajxqaWgN7R35y

(扫码查看文档)

(加入钉钉共学群)

▼ 「实时计算 Flink 版」 
复制下方链接或者扫描左边二维码
即可免费试用阿里云 Serverless Flink体验新一代实时计算平台的强大能力!
了解试用详情:https://free.aliyun.com/?productCode=sc

▼ 关注「Apache Flink」 
回复 FFA 2026 获取大会资料
点击「阅原文跳转阿里云实时计算 Flink~

最新文章

随机文章

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