乐于分享
好东西不私藏

OpenClaw 架构解析(上):消息如何变成 AI 行动

OpenClaw 架构解析(上):消息如何变成 AI 行动

OpenClaw 架构解析(上):消息如何变成 AI 行动

你在飞书里发了一句「帮我查一下明天北京的天气」,3 秒后收到了一条精确到小时的天气预报。

这 3 秒里发生了什么?消息从飞书服务器出发,穿过 OpenClaw 的六层管道,交给 AI 大脑理解意图、调用工具、拿到结果,再原路返回变成你看到的那条回复。

这 3 秒的背后,是一套经过精密设计的消息流水线——从协议翻译到意图理解,从队列调度到流式回发,每一步都有明确的分工。

今天我们拆开这个过程,看看 OpenClaw 这个 120 万行 TypeScript 的「AI 特工指挥部」,到底是怎么把一条普通消息变成 AI 行动的。


全局架构鸟瞰

先看全景。OpenClaw 的架构可以用一句话概括——单进程 Node.js,撑起了从消息接入到 AI 执行的全部链路

数据流是这样走的:

消息渠道(Telegram / 飞书 / Discord / ...)    → Channel Plugin(统一格式)    → Auto-Reply 消息管道(路由 + 预处理)    → Agent Runtime(LLM 调用 + 工具执行)    → Block Streaming(流式分块)    → Channel Plugin(格式化回发)    → 消息渠道

五个核心角色各司其职:

Gateway:指挥中枢,单进程承载一切,对外提供 WebSocket + HTTP 双协议

Channel Plugin:万能翻译官,把 22+ 种渠道的消息翻译成统一格式

Auto-Reply 管道:六层流水线,从收到消息到发出回复的完整调度

Agent Runtime:AI 大脑,负责与 LLM 交互、调用工具、多轮推理

Memory:长期记忆,向量搜索 + 全文检索的混合后端

这篇文章聚焦前三个——Gateway、Channel 和消息管道。Agent Runtime 的故事留给下篇。


Gateway:指挥中枢

如果把 OpenClaw 比作一个操作系统,Gateway 就是它的内核。所有渠道适配器、Agent 运行时、浏览器控制、定时任务……全部跑在 Gateway 这一个 Node.js 进程里。

为什么选择单进程?答案是极致的部署简洁性——npm install -g openclaw 一条命令装完,不需要 Redis、不需要消息队列、不需要容器编排。对于个人 AI 助手这个场景,单进程意味着零运维成本。代价当然也有:任何一个组件的阻塞都可能影响全局。OpenClaw 选择用异步 I/O + Lane 并发控制来化解这个问题,而不是引入多进程架构的复杂度。

启动流程:12 步点火

Gateway 的入口是一个 800 多行的 startGatewayServer() 函数,启动过程分 12 个阶段。精简来看,核心步骤是这些:

配置加载(Zod schema 校验)  → Secrets 激活(API Key 快照)  → Auth 引导(自动生成 Token)  → Plugin 加载(扫描 extensions/ 目录)  → Channel 启动(按配置逐个启动渠道适配器)  → WS + HTTP Server 创建  → Sidecar 启动(Browser / Canvas / Tailscale)  → Cron 引擎启动  → Config 热重载监听器

值得注意的是,Gateway 的返回值极其精简——只暴露一个 close() 方法:

type GatewayServer = {  close: (opts?: {    reason?: string;    restartExpectedMs?: number | null;  }) => Promise<void>;};

启动完毕,Gateway 就像一个安静的守卫——你只能叫它关门,其他一切都通过协议交互。这种「最小表面积」的 API 设计,体现了一个原则:Gateway 是控制面,不是产品本身——产品是运行在它之上的 AI Assistant。

WS + HTTP 双协议

Gateway 对外暴露的是单端口(默认 18789),同时承载 WebSocket 和 HTTP 两套协议。

WebSocket 是主力——采用 JSON-RPC 2.0 格式,注册了 80+ 个 RPC 方法。CLI、macOS App、iOS/Android Node 都通过 WS 连接。核心方法包括:

chat.send / chat.abort:消息收发与中断

sessions.list / sessions.reset:Session 管理

config.get / config.set:运行时配置读写

exec.approval.request:命令执行审批

HTTP 做的事情更有趣——它实现了完整的 OpenAI-compatible API:

POST /v1/chat/completions    → OpenAI 格式请求POST /v1/responses           → OpenResponses 规范GET  /health                 → 健康检查POST /api/channels/*/webhook → 渠道 Webhook 回调

这意味着任何能调 OpenAI API 的客户端,都能直接对接 OpenClaw——你的 Agent 瞬间变成了一个私有 LLM 网关。Cursor、Continue 这类开发工具配上 OpenClaw 的 HTTP 端点,就能用你自己的 Agent 作为后端,工具调用能力一个不少。

配置热重载:改配置不用重启

这是 Gateway 最优雅的设计之一。config.yaml 被文件 watcher 监听,任何修改都会触发变更检测。系统会把变更分成两类:

Hot Reload(热重载)——不需要重启: - Channel 启停 - Heartbeat 间隔调整 - Browser 配置变更 - Cron 任务增删

Cold Restart(冷重启)——必须重启: - 端口变更 - TLS 开关 - Auth 模式切换

热重载的实现是增量式的——只重启变更的组件。比如你修改了 Telegram 的配置,Gateway 会精确地只重启 Telegram 适配器,其他渠道纹丝不动。

背后的实现也值得一看:系统对配置变更做 diff,生成一个 ReloadPlan,精确标记哪些组件受影响:

type ReloadPlan = {  channelsChanged: boolean;    // Channel 需要重启  heartbeatChanged: boolean;   // 心跳间隔变了  cronChanged: boolean;        // 定时任务变了  needsRestart: boolean;       // 是否需要冷重启  restartReason?: string;      // 冷重启的原因};

这套热重载机制的另一个好处是 Secrets 管理——API Key 的切换是原子操作。系统先 prepare 新的 Secrets 快照,验证通过后再原子切换。如果验证失败,回退到上一次的 last-known-good 快照,不会出现「Key 换了一半,一部分请求用新的一部分用旧的」这种尴尬局面。


Channel Plugin:万能翻译官

OpenClaw 支持 22+ 种消息渠道:Telegram、Discord、Slack、WhatsApp、Signal、飞书、Line、iMessage、IRC、Matrix……每个渠道的消息格式、能力边界都不一样。

Channel Plugin 要解决的核心问题只有一个:让上层代码不需要知道消息从哪来

统一的 Plugin 接口

每个渠道适配器都实现同一套接口。接口按职责拆成了十几个 Adapter——消息发送、流式输出、线程管理、安全策略各归各管:

type ChannelPlugin = {  id: ChannelId;                   // "telegram" | "feishu" | ...  meta: ChannelMeta;               // 名称、图标、排序  capabilities: ChannelCapabilities; // 能力声明  // 核心能力  outbound?: ChannelOutboundAdapter;   // 发送消息  streaming?: ChannelStreamingAdapter; // 流式输出  security?: ChannelSecurityAdapter;   // 安全策略  actions?: ChannelMessageActionAdapter; // 投票、反应、按钮  // Agent 扩展  agentPrompt?: ChannelAgentPromptAdapter; // 注入渠道提示  agentTools?: ChannelAgentToolFactory;    // 渠道专属工具};

其中 ChannelCapabilities 是一个精巧的能力声明结构——每个渠道启动时告诉系统「我能做什么」:

type ChannelCapabilities = {  markdown?: boolean;       // 支持 Markdown?  inlineButtons?: boolean;  // 能发内联按钮?  reactions?: boolean;      // 能加表情反应?  editMessage?: boolean;    // 能编辑已发消息?  typing?: boolean;         // 能显示"正在输入"?  maxMessageLength?: number; // 单条消息长度上限};

上层消息管道会根据这些能力自动适配——Telegram 支持消息编辑,就用 Draft Stream 模式实时更新;Discord 单条消息限 2000 字,就自动分块发送。

20+ 适配器的规模差异

适配器之间的代码量差距惊人:

渠道
代码行数
核心库
Discord
43,043
discord.js
Telegram
40,303
grammY
Slack
20,283
Bolt
Line
9,744
LINE SDK
Signal
5,393
signal-cli
iMessage
4,124
BlueBubbles
IRC
~2,000
irc-upd

Telegram 和 Discord 各写了 4 万行,不是因为它们难接,而是因为功能太丰富——贴纸识别、Draft Stream、Thread 绑定、内联查询……每个平台特色功能都做了深度适配。

一条飞书消息怎么变成统一格式

当你在飞书发了一条消息,数据流是这样的:

飞书服务器 → Webhook → Gateway HTTP → Feishu Plugin.onMessage()  → 解析飞书消息体(富文本 / 图片 / 文件)  → 媒体下载到本地暂存  → 构建 MsgContext  → 交给 Auto-Reply 管道

MsgContext 是所有渠道共用的统一消息格式:

type MsgContext = {  CommandBody: string;       // 消息文本  CommandSender: string;     // 发送者名称  MessageProvider: string;   // "feishu" | "telegram" | ...  MessageTo: string;         // 目标 chat ID  MediaPath?: string;        // 本地媒体路径(如果有附件)  SenderIsOwner?: boolean;   // 是不是管理员};

从这一刻起,上层再也不关心这条消息来自飞书还是 Telegram——它只是一个 MsgContext。这正是 Channel Plugin 层存在的意义:把 22 种渠道的差异吸收掉,给消息管道一个干净统一的输入。

同样的逻辑反过来也成立——Agent 回复时只需要生成标准的 ReplyPayload(文本 + 可选的媒体/按钮),Channel Plugin 负责把它翻译成飞书的富文本卡片、Telegram 的 HTML 消息或 Discord 的 Embed。上层完全不需要操心格式适配。


消息管道:六层流水线

好了,消息已经穿过 Channel 变成了统一格式。接下来它要经历 Auto-Reply 管道的六层处理。这是整个 OpenClaw 最精密的部分——6.6 万行代码,每一层只做一件事。

完整链路

① Channel 收到消息 → dispatchInboundMessage()② 命令解析 → /status? /reset? /model? 拦截处理③ 内容预处理 → Link Understanding + Media Understanding④ 排队决策 → Queue Policy(enqueue / discard / interrupt)⑤ Agent 调用 → runReplyAgent() → Pi Agent Runtime⑥ 流式回发 → Block Streaming → Channel.send()

逐层拆解。

第一层:消息分发。dispatch.ts 是管道入口。它做的事情不多——把 MsgContext 最终化(补全缺失字段),然后交给 dispatchReplyFromConfig() 做路由决策。路由的核心是解析 Session Key——格式为 {channel}:{chatId},比如 telegram:12345 或 feishu:oc_abcdef

第二层:命令检测。 如果消息以 / 开头,系统会先检查是不是内置命令。OpenClaw 注册了十几个斜杠命令——/status 看状态、/reset 清空对话、/model sonnet 切换模型、/thinking high 开启深度思考。命中命令就直接返回结果,不走 Agent。

第三层:内容预处理。 两个重要的预处理步骤: - Link Understanding:消息里有 URL?提取网页内容注入上下文 - Media Understanding:消息里有图片?交给 Vision 模型描述;有语音?交给 Whisper 转录

经过这一步,Agent 拿到的不是一个孤零零的 URL 链接,而是完整的网页摘要。这些预处理对 Agent 的回答质量影响巨大——很多用户发消息时会随手贴个链接,如果 Agent 看不到链接内容,就只能泛泛而谈。

第四层:排队决策。 如果 Agent 正在处理上一条消息,新消息怎么办?这就是 Queue Policy:

type QueueAction =  | "enqueue"    // 排队等待(默认)  | "discard"    // 丢弃  | "interrupt"; // 中断当前,处理新的

默认是排队,最多排 5 条,队列满了就丢弃。这避免了用户疯狂发消息导致 Agent 瘫痪的问题。

第五层:Agent 调用。 核心函数 runReplyAgent() 做了五件事——发送「正在输入」信号、调用 Pi Agent Runtime 执行 LLM 推理、运行 Followup(如果 Agent 需要后续对话)、刷新 Memory 索引、统计 Token 用量。

这里有一个精巧的 Fallback 机制:如果默认模型(比如 Claude)不可用,系统会自动切换到备选模型(比如 GPT-4)重试。更细粒度的是 Auth Profile 轮转——同一个模型配了多个 API Key,Key A 限流了自动切 Key B,Key B 也挂了再切 Key C。用户完全无感知,只是回复可能慢了半秒。

第六层:流式回发。 Agent 的输出是逐 token 流式到达的。Block Streaming 管道把 token 流聚合成合适大小的文本块再发送——不会让用户等到全部生成完才看到回复,也不会每个 token 都发一条消息(太碎片化)。

Block Streaming:流式输出的艺术

Block Streaming 是 OpenClaw 消息管道的点睛之笔。它的配置参数直接影响用户体验:

const pipeline = createBlockReplyPipeline({  minChars: 30,                // 首块最小字符数  maxChars: 4000,              // 单块最大字符数  breakPreference: "paragraph", // 优先在段落边界断开});

Telegram 还有一个特殊的 Draft Stream 模式——不发新消息,而是持续编辑同一条消息。用户看到的效果就像 ChatGPT 网页版那样,文字在一条消息里逐渐「生长」出来。而对于不支持消息编辑的渠道(比如某些 IRC 客户端),系统会自动降级为分块发送。

这种基于 ChannelCapabilities 的自适应策略贯穿了整个 Block Streaming——有能力就用最好的方式,没能力就优雅降级,永远不会因为渠道限制而报错。

Queue Policy:为什么需要排队

你可能觉得排队机制多余——Agent 不够快就并发不就行了?

不行。同一个 Session 里的消息必须串行处理,因为对话有上下文依赖。你说了「帮我分析这段代码」,紧接着说「用 Python 重写」——第二条消息依赖第一条的结果。如果并发执行,第二条消息看不到第一条的分析结果,回复就会驴唇不对马嘴。

OpenClaw 用 Lane 系统实现了精确的并发控制:

Session Lane(同一 session 内串行)  → Global Lane(全局并发上限)

每个 Session 一个队列保证对话顺序,全局 Lane 控制总并发防止系统过载。简洁,但有效。


回顾:一条消息的完整旅程

把上面的内容串起来,一条飞书消息从发出到收到回复,完整路径是这样的:

你在飞书输入:"帮我查一下明天北京的天气"  → 飞书服务器 Webhook → Gateway HTTP 端点  → Feishu Channel Plugin 解析消息 → 构建 MsgContext  → dispatch.ts 分发 → Session Key: "feishu:oc_xxx"  → 命令检测:不是斜杠命令,继续  → 内容预处理:无 URL、无媒体,跳过  → Queue Policy:Session 空闲,直接执行  → Agent Runtime:LLM 理解意图 → 调用 weather 工具 → 拿到结果  → Block Streaming:聚合文本块  → Feishu Channel Plugin 格式化发送  → 你看到了天气预报

整个链路,6 层管道,每一层干净利落。


下篇预告:AI 大脑如何思考和行动

这篇文章我们走完了消息的「外部旅程」——从渠道进来,穿过管道,到达 Agent 门口。但最精彩的部分还没讲:Agent Runtime 到底怎么工作的?

下篇将深入 OpenClaw 的 AI 执行引擎:

Pi Agent Runtime:18.5 万行代码的 LLM 调用核心——多轮工具循环、Auth Profile 轮转、Context Overflow 自动压缩

40+ 内置工具:从文件读写到浏览器控制,Agent 的「手脚」是怎么接上的

Memory 系统:向量搜索 + BM25 全文检索的混合记忆——Agent 怎么记住你说过的话

ACP 子 Agent 编排:当一个 Agent 不够用,怎么 spawn 一群子 Agent 协同工作

安全模型:从 DM Policy 到 Exec Approval,多层防御是如何贯穿全栈的

Gateway 是指挥部,Channel 是翻译官,管道是流水线——但真正让 OpenClaw 与众不同的,是那个 18.5 万行的大脑。

下篇见。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-28 11:27:27 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/478505.html
  2. 运行时间 : 0.133779s [ 吞吐率:7.48req/s ] 内存消耗:4,738.32kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0b1902577b076e24bbfd79d55cb36c1a
  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.000662s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000825s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000293s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000281s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000477s ]
  6. SELECT * FROM `set` [ RunTime:0.000207s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000571s ]
  8. SELECT * FROM `article` WHERE `id` = 478505 LIMIT 1 [ RunTime:0.005408s ]
  9. UPDATE `article` SET `lasttime` = 1777346847 WHERE `id` = 478505 [ RunTime:0.010740s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.002034s ]
  11. SELECT * FROM `article` WHERE `id` < 478505 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000475s ]
  12. SELECT * FROM `article` WHERE `id` > 478505 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001385s ]
  13. SELECT * FROM `article` WHERE `id` < 478505 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001088s ]
  14. SELECT * FROM `article` WHERE `id` < 478505 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002370s ]
  15. SELECT * FROM `article` WHERE `id` < 478505 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002688s ]
0.135509s