乐于分享
好东西不私藏

给 AI Agent 装上「黑匣子」:用 OpenTelemetry + OpenInference 手写可观测性(附 Python 实战)

给 AI Agent 装上「黑匣子」:用 OpenTelemetry + OpenInference 手写可观测性(附 Python 实战)

给 AI Agent 装上「黑匣子」:用 OpenTelemetry + OpenInference 手写可观测性(附 Python 实战)

📖 摘要:只有约 5% 的企业级 Agent 能真正上生产,根因往往不是模型不行,而是「看不见」——它选了哪个工具、为什么跑偏、烧了多少 token,全靠猜。本文用 OpenTelemetry + OpenInference 语义约定,从零手写一个最小 Agent Tracer,覆盖 Span/Trace/Thread 层级模型、LLM 与工具调用埋点、OTLP 导出对接 Langfuse/Phoenix,并落地「轨迹/质量/安全/成本」四大监控支柱与三条生产避坑清单。读完你能给自己的 Agent 装上可 replay 的黑匣子。

🏷️ 关键词:AI Agent,可观测性,OpenTelemetry,OpenInference,Tracing

目录

  • 一、为什么 Agent 需要「黑匣子」
    • 1.1 传统 APM 为什么看不见 Agent
    • 1.2 只有 5% 的 Agent 能上生产
    • 1.3 可观测性的四个支柱
  • 二、核心概念:Span / Trace / Thread 与 OpenInference
    • 2.1 三层层级模型
    • 2.2 OpenTelemetry 与 OpenInference 是什么(以及边界)
    • 2.3 GenAI 语义约定长什么样
  • 三、实战:手写一个最小 Agent Tracer
    • 3.2.1 关键步骤
    • 3.1 环境准备
    • 3.2 用 OTel SDK 手动埋点
    • 3.3 导出到控制台 / OTLP
    • 3.4 一个 ReAct Agent 的完整链路追踪
  • 四、从「日志」到「可观测」:四个支柱落地
    • 4.1 成本归因:把 token 花到模型/用户/功能
    • 4.2 质量评估:在线 eval + LLM-as-judge
    • 4.3 安全信号:prompt injection 与越权
    • 4.4 延迟瓶颈:span 级耗时定位
  • 五、生产落地避坑清单
    • 5.1 采样率:别用 100%
    • 5.2 隐私:trace 里别打 PII
    • 5.3 别把可观测性当「昂贵的日志」
  • 六、总结与选型建议

一、为什么 Agent 需要「黑匣子」

1.1 传统 APM 为什么看不见 Agent

传统 APM(如 Datadog、New Relic)擅长看「HTTP 状态码、CPU、延迟」,但面对 Agent 时会失明。原因有三:

  • 输入是无限的
    :同样的请求,Agent 这次走工具 A、下次走工具 B,行为非确定性。
  • 质量藏在对话里
    :返回了「一段文字」≠「完成了目标」,APM 看不出语义层面的失败。
  • 失败模式是全新的
    :幻觉、无限循环、prompt 注入、工具误调用——这些在传统软件里不存在。

💡 一句话:APM 告诉你「服务挂没挂」,可观测性告诉你「Agent 这次到底怎么想的、为什么错」。

1.2 只有 5% 的 Agent 能上生产

多个 2026 年的行业统计指向同一个数字:企业级 Agent 真正上生产的比例约 5%。为什么?当一个请求会扇出几十条模型调用、检索、工具调用时,一旦出错、变慢或悄悄烧预算,你必须有能力回放完整链路,看清「哪一步失败、为什么、花了多少」。没有这层能力,就只能靠人工逐条 review——而人工上限约 50~100 条 trace/小时,日请求过千就要 10~20 小时/天,不可持续。

1.3 可观测性的四个支柱

把监控维度拆成四根柱子,缺一根都会「看得见却救不了」:

支柱
衡量什么
关键指标
轨迹 / 工具使用
选对工具了吗?是否跑题、回退、死循环?
推理深度、工具错误率、loop 次数
质量 / 幻觉
回答满足需求吗?有依据吗?
任务完成率、忠实度、幻觉率
安全 / 策略
越权、被 jailbreak、数据外泄?
注入尝试、越权访问、策略违规
成本 / 延迟
每步花多少 token 和时间?
单次成本、step 耗时、重试次数

二、核心概念:Span / Trace / Thread 与 OpenInference

2.1 三层层级模型

Agent 的每次运行不是一条线,而是三层嵌套:

  • Span(跨度)
    :一次原子操作——一次 LLM 调用、一次工具调用、一次检索。
  • Trace(链路)
    :一次 Agent 交互里所有 Span 的集合,从请求到响应完整回放。
  • Thread(会话)
    :一组 Trace 组成的多轮对话,保留跨轮上下文。

理解这三层,你就明白为什么「在日志里 print 一下」救不了 Agent:print 是扁平的,而 Agent 的真相在嵌套的因果树里。

2.2 OpenTelemetry 与 OpenInference 是什么(以及边界)

  • OpenTelemetry(OTel)
    :厂商中立的遥测标准,一次埋点可发往不同后端(Langfuse、Phoenix、Datadog、Grafana),本质是「日志/指标/链路」的通用协议,不绑定任何 Agent 框架
  • OpenInference
    :基于 OTel 的 GenAI 语义约定层,它定义了「LLM 调用」「工具调用」该带哪些标准属性(模型名、prompt、completion、token 数),让后端能自动识别并可视化 agent 链路。本质是 OTel 的「AI 方言扩展」,不是另一个独立体系

⚠️ 边界澄清:OpenInference 不是可观测性平台本身,它只定义属性规范;真正存数据、画链路图的是 Langfuse/Phoenix 这类后端。它也不是评估框架——评估要靠下文第四支柱另外接。

2.3 GenAI 语义约定长什么样

OpenInference 把一次 LLM Span 应携带的属性标准化了,常见键:

  • llm.model.name
    llm.input_messagesllm.output_messages
  • llm.token_count.prompt
    llm.token_count.completionllm.token_count.total
  • tool.name
    tool.argstool.result

后端拿到这些标准键,就能自动渲染出「对话气泡 + token 消耗」的漂亮视图,而不用你写一堆自定义解析。

三、实战:手写一个最小 Agent Tracer

3.1 环境准备

安装 OTel SDK 与 OpenInference 语义约定包(示例数据,仅作演示):

pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlppip install openinference-semantic-conventions

3.2 用 OTel SDK 手动埋点

我们用标准 OTel API 创建 TracerProvider,并挂两个导出器:控制台(调试)和 OTLP(对接后端)。

3.2.1 关键步骤

第 1 步:初始化 Provider 与导出器

# agent_tracer.pyfrom opentelemetry import tracefrom opentelemetry.sdk.trace import TracerProviderfrom opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporterfrom opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter# 初始化全局 TracerProvider(一个进程一个即可)provider = TracerProvider()# 控制台导出:本地调试时直接看 span 树provider.add_span_processor(BatchSpanProcessor(ConsoleSpanExporter()))# OTLP 导出:发往 127.0.0.1:4318(Langfuse/Phoenix 的 OTel 接收端点)provider.add_span_processor(    BatchSpanProcessor(OTLPSpanExporter(endpoint="http://127.0.0.1:4318/v1/traces")))trace.set_tracer_provider(provider)tracer = trace.get_tracer("demo.agent.tracer")

第 2 步:用 OpenInference 标准属性包裹 LLM 调用

from opentelemetry.trace import SpanKindfrom openinference.semconv.trace import SpanAttributes  # OpenInference 语义约定def traced_llm_call(prompt: str, model: str = "example-model") -> str:    with tracer.start_as_current_span("llm.call", kind=SpanKind.CLIENT) as span:        # 注入标准属性:后端一看就知道这是一次 LLM 调用        span.set_attribute(SpanAttributes.LLM_MODEL_NAME, model)        span.set_attribute(SpanAttributes.LLM_INPUT_MESSAGES,                           [{"role""user""content": prompt}])        span.set_attribute(SpanAttributes.LLM_INVOCATION_PARAMETERS, '{"temperature": 0.2}')        # —— 此处替换为你的真实模型调用;示例用占位返回 ——        completion = f"[示例] 针对「{prompt[:20]}…」的回复"        span.set_attribute(SpanAttributes.LLM_OUTPUT_MESSAGES,                           [{"role""assistant""content": completion}])        span.set_attribute(SpanAttributes.LLM_TOKEN_COUNT_PROMPT, 128)        span.set_attribute(SpanAttributes.LLM_TOKEN_COUNT_COMPLETION, 64)        span.set_attribute(SpanAttributes.LLM_TOKEN_COUNT_TOTAL, 192)        return completion

第 3 步:包裹工具调用

def traced_tool_call(tool_name: str, args: dict) -> str:    with tracer.start_as_current_span(f"tool.{tool_name}"as span:        span.set_attribute(SpanAttributes.TOOL_NAME, tool_name)        span.set_attribute(SpanAttributes.TOOL_ARGS, str(args))        # 示例:真实场景替换为 search_orders 等工具的返回值        result = f"[示例] {tool_name} 返回结果"        span.set_attribute(SpanAttributes.TOOL_RESULT, result)        return result

3.3 导出到控制台 / OTLP

上面的 ConsoleSpanExporter 会把 span 直接打印到终端,适合本地联调;OTLPSpanExporter 则用 HTTP 把数据推到 127.0.0.1:4318/v1/traces。该端点同时被 Langfuse(self-hosted) 与 Arize Phoenix 兼容——也就是说,你写一遍埋点,就能在两者里看到同一棵链路树,彻底避免厂商锁定。

3.4 一个 ReAct Agent 的完整链路追踪

把上面两个包裹器串起来,就得到一个「思考 → 选工具 → 调工具 → 合成」的多步 Trace:

def run_react_agent(question: str):    with tracer.start_as_current_span("agent.run"as root:        root.set_attribute("agent.question", question)          # 顶层 Thread/Trace 上下文        thought = traced_llm_call(question)                      # Span: llm.call        tool_out = traced_tool_call("search_orders",            # Span: tool.search_orders                                    {"user_id""u_1001"})        answer = traced_llm_call(f"基于工具结果回答:{tool_out}")  # Span: llm.call        root.set_attribute("agent.answer", answer)        return answerif __name__ == "__main__":    run_react_agent("帮我查 u_1001 最近的订单状态")  # 示例问题,仅作演示

运行后,你会在控制台看到三个嵌套 Span;接上 Langfuse/Phoenix 后则是一张可点击回放的瀑布图——哪次 LLM 调用最慢、哪个工具报错、总共烧了多少 token,一目了然。

四、从「日志」到「可观测」:四个支柱落地

4.1 成本归因:把 token 花到模型/用户/功能

在 LLM Span 上记录 llm.token_count.total,并把 user_idfeature 作为 span 属性。后端就能按「模型 × 用户 × 功能」聚合成本,快速定位「是哪个功能的哪段 prompt 在烧钱」。

4.2 质量评估:在线 eval + LLM-as-judge

可观测性离开评估就是「昂贵的日志」。在 Trace 上挂在线评估:抽 10~20% 的线上流量,用 LLM-as-judge 或数据集打分,跟踪「任务完成率、忠实度、幻觉率」随时间变化。Score 下滑自动告警,才能把「猜测它行」变成「证明它行」。

4.3 安全信号:prompt injection 与越权

在工具 Span 记录 tool.name 与入参,对「未授权工具调用」「疑似注入的 prompt 片段」做规则/模型检测。越权或 jailbreak 尝试会像普通调用一样出现在链路里——关键是你要对这些 Span 打 security.flag 并触发告警。

4.4 延迟瓶颈:span 级耗时定位

每个 Span 自带起止时间。把慢检索、冗余模型调用、过多重试的耗时叠加,就能定位「总响应 8 秒里,6 秒卡在检索」。没有 span 级计时,这个 6 秒会被埋没在一次不透明的请求里。

五、生产落地避坑清单

5.1 采样率:别用 100%

全量记录既贵又没必要。线上评估通常取 10~20% 的 trace 做抽样即可,既覆盖异常分布,又把存储与成本压住。关键路径可全采,长尾流量抽样。

5.2 隐私:trace 里别打 PII

链路会原样记录 prompt / 工具入参,极易夹带手机号、token、密钥、用户隐私。生产环境务必在导出前做脱敏(敏感字段替换为 ***),或只对非敏感功能开启全量记录。示例里的 u_1001 也是虚构占位,真实场景要评估合规。

5.3 别把可观测性当「昂贵的日志」

这是最常见的误区:接了 tracing 却从不接 eval,等于只花钱存了一堆看不懂的树。tracing 揭示「发生了什么」,evaluation 回答「好不好」——两者必须闭环,否则可观测性只是更贵的日志系统。

六、总结与选型建议

本文用约 60 行 Python,基于 OpenTelemetry + OpenInference 给 Agent 装上了一个可 replay 的「黑匣子」:从 Provider 初始化、LLM/工具 Span 埋点、OTLP 导出,到四支柱落地与生产避坑。核心结论三条:

  1. Agent 上不了生产,多半是「看不见」,不是「模型弱」
    ——先补可观测性再谈优化。
  2. OTel 一次埋点、多后端通用
    ,OpenInference 让 AI 语义被标准识别,避免厂商锁定。
  3. tracing 必须接 eval 才闭环
    ,否则只是昂贵的日志。

💡 延展阅读:本系列前文已覆盖 Agent 记忆层、并行多 Agent 协作、MCP/A2A 协议、Skills 加载机制;可观测性正好是「上线运营」这一环,串起来就是一条完整的 Agent 工程知识链。

如果觉得有用,欢迎点赞收藏,评论区聊聊你用哪套后端做 Agent 可观测~

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-20 22:29:31 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/953415.html
  2. 运行时间 : 0.277880s [ 吞吐率:3.60req/s ] 内存消耗:4,882.82kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=adca7d0a3f12a66ff25a3d6566c5052a
  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 ( 4.22 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 ( 10.56 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.11 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000922s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001311s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001127s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.008710s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001286s ]
  6. SELECT * FROM `set` [ RunTime:0.000825s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001389s ]
  8. SELECT * FROM `article` WHERE `id` = 953415 LIMIT 1 [ RunTime:0.001058s ]
  9. UPDATE `article` SET `lasttime` = 1787236172 WHERE `id` = 953415 [ RunTime:0.033042s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000576s ]
  11. SELECT * FROM `article` WHERE `id` < 953415 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002516s ]
  12. SELECT * FROM `article` WHERE `id` > 953415 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000953s ]
  13. SELECT * FROM `article` WHERE `id` < 953415 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.019777s ]
  14. SELECT * FROM `article` WHERE `id` < 953415 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007365s ]
  15. SELECT * FROM `article` WHERE `id` < 953415 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005135s ]
0.281777s