乐于分享
好东西不私藏

OpenClaw 开发系列:第3篇-Provider 插件 — 接入 AI 模型与服务

OpenClaw 开发系列:第3篇-Provider 插件 — 接入 AI 模型与服务

前置阅读:第 1 篇 — Plugin SDK 入门

本篇讲解 Provider 插件的开发。Provider 是 OpenClaw 对外部 AI 服务的抽象——通过 Provider 插件,你可以接入新的 LLM 模型、语音合成、图像生成、媒体理解和网络搜索服务。

在进入技术细节之前,先理解 Provider 的角色。

OpenClaw 本身不提供 AI 能力——它是一个 “调度器” 和 “网关”。实际的 AI 能力(文本生成、图像理解、语音合成等)由外部服务提供。Provider 插件就是 OpenClaw 与这些外部 AI 服务之间的“翻译层”

例如:你想让 OpenClaw 使用 OpenAI 的 GPT-4,需要一个 OpenAI Provider 插件来调用 OpenAI 的 API;想让 OpenClaw 调用本地部署的 claude-cli,需要一个 CLI Backend Provider。

一个 Provider 插件可以同时注册多种能力。例如,OpenAI 官方插件同时注册了 LLM、图像生成、媒体理解和语音能力。

在阅读具体代码之前,先用两张图理解 :

1. Provider 在整个系统中的角色 以及 六种 Provider 之间的关系

2.当您开发一个 Provider 插件时,插件典型的内部组织如下:


01

Provider 能力全景

OpenClaw 通过六个注册方法覆盖了主要的 AI 服务类型:

一个插件可以同时注册多种 Provider 能力。例如,OpenAI 官方插件同时注册了 LLM、图像生成、媒体理解和语音能力。这个表格列出的就是 register(api) 回调中 api 对象上所有以 Provider 结尾的注册方法——它们都来自 api 对象,不需要额外的导入。


02

能力分层架构

Provider 系统采用三层架构:
  • 供应商插件层:负责与特定服务商的 API 交互,处理认证、速率限制、模型映射等

  • 核心能力层:提供统一的编排策略(如 Provider 回退、负载均衡、模型路由)

  • 通道/功能插件层:消费 Provider 提供的能力,面向用户呈现

这种分层使得更换底层 AI 服务商时,上层的通道和功能插件无需任何修改。


03

LLM Provider

LLM Provider 是最核心的 Provider 类型。通过 api.registerProvider() 注册——这个方法在 register(api) 回调中直接可用,无需额外导入。

注册结构

以下代码展示了注册一个 LLM Provider 的完整结构。每个字段的含义见注释:

api.registerProvider({  id"my-provider",         // Provider 的唯一标识,用户通过此 ID 引用  name"My LLM Provider",   // 人类可读的名称,会出现在配置界面中  models: [                  // 该 Provider 支持的模型列表    {      id"my-model-large",  // 模型 ID,用于用户配置中引用      name"My Large Model"// 模型的人类可读名称      contextWindow128000// 模型的上下文窗口大小(token 数)      supportsVisiontrue,  // 声明模型是否支持图像输入      supportsStreamingtrue// 声明模型是否支持流式输出      supportsToolUsetrue// 声明模型是否支持工具调用(Function Calling)    },    {      id"my-model-small",      name"My Small Model",      contextWindow32000,    },  ],  async createCompletion(params) {    // 核心方法:当 Agent 需要推理时,OpenClaw 核心会调用此方法    // params 包含 messages(对话消息数组)、model(模型 ID)、temperature 等参数    // 你的实现需要将这些参数转换为对应 AI 服务的 API 调用,并返回标准化的 completion 结果  },});

模型引用

注册后,用户可以在配置中通过 <provider-id>/<model-id> 的格式引用模型。这种格式让 OpenClaw 可以唯一确定要使用哪个 Provider 的哪个模型:

my-provider/my-model-large       # 使用你注册的 Provider 和模型openai/gpt-4o                    # 使用 OpenAI 官方插件的 GPT-4oanthropic/claude-sonnet-4-20250514 # 使用 Anthropic 官方插件的 Claude

在 OpenClaw 配置文件(~/.openclaw/config.json 或项目级 .openclaw/config.json)中,用户可以这样指定默认模型:

{  "agents": {    "defaults": {      "model": "my-provider/my-model-large"    }  }}

认证配置

Provider 插件通常需要用户的 API Key 或 Token 来调用外部服务。这些认证信息需要在清单文件(openclaw.plugin.json)中声明,这样 OpenClaw 才能知道需要用户提供哪些凭据,以及如何在配置界面中展示它们。

以下是一个典型的认证配置——声明了一个 API Key 类型的认证方式:

{  "id": "my-provider",  "providerAuthChoices": [    {      "provider": "my-provider",      "method": "api-key",      "choiceId": "my-provider-api-key",      "choiceLabel": "My Provider API Key",      "optionKey": "myProviderApiKey",      "cliFlag": "--my-provider-api-key"    }  ],  "uiHints": {    "myProviderApiKey": {      "label": "API Key",      "placeholder": "mpk-...",      "sensitive": true    }  }}

用户可以通过配置文件、CLI 参数或管理界面设置认证信息。插件在运行时通过 api.pluginConfig 访问这些值。具体来说,用户在配置文件中的写法如下:

{  "plugins": {    "entries": {      "my-provider": {        "config": {          "apiKey": "your-api-key-here"        }      }    }  }}

然后在插件代码中通过 api.pluginConfig.apiKey 读取。

能力声明

在清单文件的 contracts 字段中声明 Provider 能力。contracts 是一个静态声明机制——它告诉 OpenClaw 核心这个插件会提供哪些能力,方便系统进行初始化验证和能力发现:

{  "contracts": {    "providers": ["my-provider"]  }}

04

CLI Backend Provider

CLI Backend 是一种特殊的 Provider——它不调用远程 API,而是将本地安装的 CLI 工具注册为推理后端。这使得 OpenClaw 可以使用 claude-clicodex-cli 等本地 AI 工具作为模型提供商。

适用场景:你有本地部署的 AI 工具,希望 OpenClaw 直接通过命令行调用它们,而不是走网络 API。

注册结构

api.registerCliBackend({  id: "my-cli-backend",          // 后端 ID,用于模型引用(如 my-cli-backend/fast)  name: "My CLI Backend",        // 显示名称  command: "my-cli",             // CLI 可执行文件名(必须在系统 PATH 中可用)  args: ["--model""$MODEL"],   // 参数模板,$MODEL 占位符会在运行时被替换为实际模型名  modelMapping: {                // 将 OpenClaw 的模型 ID 映射为 CLI 工具接受的模型参数    "my-cli/fast""fast",       // 用户引用 my-cli/fast 时,传给 CLI 的参数是 fast    "my-cli/quality""quality",  },  normalizeConfig(config) {    // 可选的配置规范化函数    // 用于兼容旧版本的配置格式,避免用户升级时需要手动改配置    if (config.legacyFlag) {      config.newFlag = config.legacyFlag;      delete config.legacyFlag;    }    return config;  },});

配置优先级

CLI Backend 的配置遵循以下优先级:

  1. 用户配置agents.defaults.cliBackends.<id>)优先级最高

  2. 插件默认配置(通过 registerCliBackend 注册)次之

  3. OpenClaw 将用户配置合并到插件默认配置之上

  4. 如果定义了 normalizeConfig,在合并后执行规范化

模型引用

注册后,CLI Backend 的模型通过 <backend-id>/<model-name> 引用:

claude-cli/opuscodex-cli/gpt-4my-cli/quality

05

语音 Provider

语音 Provider 覆盖两个方向——文本转语音(TTS)和语音转文本(STT)。一个语音 Provider 可以同时实现这两个方向,也可以只实现其中一个:
api.registerSpeechProvider({  id"my-speech",  name"My Speech Provider",  // 文本转语音(TTS):将 Agent 的文字回复转为语音输出  async synthesize(text, options) {    // text: 要转换的文本    // options: 语速、音色等可选参数    // 返回:音频流(Buffer)或音频文件的 URL  },  // 语音转文本(STT):将用户的语音输入转为文字  async transcribe(audioBuffer, options) {    // audioBuffer: 音频数据    // options: 语言、采样率等可选参数    // 返回:识别出的文本字符串  },});
典型的语音 Provider 场景:ElevenLabs 用于 TTS、Azure Speech Services 用于 STT、Whisper 用于语音转录。

06

媒体理解 Provider

媒体理解 Provider 让 Agent 能够「看」和「听」——它接收图片、音频或视频,返回结构化的文本描述。这与 LLM Provider 的 supportsVision 不同:视觉能力是 LLM 的一部分,而媒体理解 Provider 是独立的能力,可以被任何 Agent 使用, regardless of 使用什么 LLM。
api.registerMediaUnderstandingProvider({  id"my-media-understanding",  name"My Media Understanding",  async understand(mediaInput) {    // mediaInput 可以是图片、音频或视频    // mediaInput.type 指示媒体类型:"image" | "audio" | "video"    // mediaInput.url 或 mediaInput.buffer 提供媒体数据    // 返回:文本描述字符串  },});
媒体理解 Provider 处理图像、音频、视频的非文本输入,返回结构化的文本描述。典型应用:图片描述、视频摘要、音频转录分析。

07

图像生成 Provider

图像生成 Provider 让 Agent 能够生成图片。当用户要求 Agent 「画一个…」或 「生成一张…」的图片时,OpenClaw 核心会调用已注册的图像生成 Provider。
api.registerImageGenerationProvider({  id"my-image-gen",  name"My Image Generator",  async generate(params) {    // params 包含 prompt(生成提示词)、size(图片尺寸)、style(风格)等    // 返回:生成的图像 URL 或 base64 编码的图像数据  },});

08

网络搜索 Provider

网络搜索 Provider 让 Agent 能够搜索互联网。当 Agent 需要获取实时信息(最新新闻、文档、事实核查等)时,会调用已注册的网络搜索 Provider。
api.registerWebSearchProvider({  id"my-search",  name"My Web Search",  async search(query, options) {    // query: 搜索关键词    // options: 可选参数(如 limit、language 等)    // 返回:搜索结果数组,每条结果包含 title、url、snippet    return [      { title"..."url"..."snippet"..." },      // ...    ];  },});

09

多能力 Provider 实战

到目前为止,我们分别介绍了六种 Provider 类型。在实际开发中,一个 Provider 插件往往会同时注册多种能力。例如,OpenAI 生态同时提供 LLM、图像生成、媒体理解和语音能力——一个插件全部覆盖。

下面是一个同时注册多种能力的示例——虽然简化了实际 API 调用部分,但展示了多能力注册的完整结构。注意 register(api) 回调中可以多次调用不同的注册方法:

import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";export default definePluginEntry({  id"unified-ai",  name"Unified AI Provider",  version"1.0.0",  register(api) {    const apiKey = (api.pluginConfig as { apiKey?: string })?.apiKey;    // 注册 LLM Provider    api.registerProvider({      id"unified-ai",      name"Unified AI",      models: [        {          id"ua-pro",          name"Unified AI Pro",          contextWindow200000,          supportsVisiontrue,          supportsStreamingtrue,          supportsToolUsetrue,        },      ],      async createCompletion(params) {        // 实现 LLM 调用逻辑      },    });    // 注册图像生成    api.registerImageGenerationProvider({      id"unified-ai",      name"Unified AI Image",      async generate(params) {        // 实现图像生成逻辑      },    });    // 注册网络搜索    api.registerWebSearchProvider({      id"unified-ai",      name"Unified AI Search",      async search(query, options) {        // 实现搜索逻辑      },    });    // 在清单中声明所有能力    // contracts 字段在 openclaw.plugin.json 中声明  },});
对应的清单文件:
{  "id": "unified-ai",  "providerAuthChoices": [    {      "provider": "unified-ai",      "method": "api-key",      "choiceId": "unified-ai-key",      "choiceLabel": "Unified AI API Key",      "optionKey": "apiKey",      "cliFlag": "--unified-api-key"    }  ],  "contracts": {    "providers": ["unified-ai"],    "imageGenerationProviders": ["unified-ai"],    "webSearchProviders": ["unified-ai"]  }}

10

配置规范化

Provider 插件经常需要处理配置兼容性问题。normalizeConfig 函数在用户配置合并到插件默认配置之后执行,允许插件将旧格式的配置转换为新格式:
api.registerCliBackend({  id"my-backend",  normalizeConfig(config) {    // 旧版使用 modelSize 字符串,新版使用 model 枚举    if (typeof config.modelSize === "string") {      const mappingRecord<stringstring> = {        fast"ua-small",        quality"ua-pro",      };      config.model = mapping[config.modelSize] ?? config.modelSize;      delete config.modelSize;    }    return config;  },});
这保证了向后兼容——老用户不需要改配置就能升级插件。

11

小结

本篇覆盖了 Provider 插件的完整体系:

  • 六种 Provider 类型覆盖文本、语音、图像、媒体、搜索

  • 三层架构实现 Provider 与通道的解耦

  • LLM Provider 是核心,通过 registerProvider() 注册

  • CLI Backend 让本地 AI 工具成为模型提供商

  • 多能力插件可以同时注册多种 Provider

  • 认证配置和配置规范化保证用户体验


下一篇:Channel 插件 — 连接任意消息平台。我们将学习如何通过 Channel 插件将 OpenClaw 连接到新的消息平台。
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-13 16:55:50 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/521720.html
  2. 运行时间 : 0.110567s [ 吞吐率:9.04req/s ] 内存消耗:4,746.05kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=38f7e4857b10496a3229e03e3fed904d
  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.80 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000471s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000681s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000336s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000285s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000549s ]
  6. SELECT * FROM `set` [ RunTime:0.000246s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000576s ]
  8. SELECT * FROM `article` WHERE `id` = 521720 LIMIT 1 [ RunTime:0.000506s ]
  9. UPDATE `article` SET `lasttime` = 1776070550 WHERE `id` = 521720 [ RunTime:0.004436s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000285s ]
  11. SELECT * FROM `article` WHERE `id` < 521720 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000455s ]
  12. SELECT * FROM `article` WHERE `id` > 521720 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000402s ]
  13. SELECT * FROM `article` WHERE `id` < 521720 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002896s ]
  14. SELECT * FROM `article` WHERE `id` < 521720 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.005427s ]
  15. SELECT * FROM `article` WHERE `id` < 521720 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.008033s ]
0.112286s