乐于分享
好东西不私藏

OpenClaw 上下文处理深度解析:从消息接收到大模型输出

OpenClaw 上下文处理深度解析:从消息接收到大模型输出

本文基于 OpenClaw 源码分析,探讨一个消息从进入系统到生成回复的完整上下文生命周期。


一、整体架构:上下文处理的五个阶段

OpenClaw 的上下文处理并非一个单一的函数,而是贯穿整个消息生命周期的协作流水线。整体可分为五个阶段:

消息入口 → 预检过滤 → 上下文组装 → 模型调用 → 上下文维护

每个阶段职责清晰、边界明确,通过 ctxPayload 这个核心数据结构串联。


二、阶段一:消息接收与预检过滤

2.1 入口:preflightDiscordMessage

以 Discord 频道为例(message-handler-DbRk4Lwu.js),消息通过 WebSocket 事件进入后,首先经过 preflightDiscordMessage 函数进行预检。这不是一个简单的"有没有消息"的判断,而是一套完整的安全与路由决策引擎。

// 源码位置: message-handler-DbRk4Lwu.js
async function preflightDiscordMessage(params) {
  // 1. 认证与去重
  if (isProcessAborted(params.abortSignal)) return null;
  if (dedupeKey && recentInboundMessages.check(dedupeKey)) return null;
  // 2. 机器人过滤
  if (author.bot && allowBotsMode = "off" && !sender.isPluralKit) return null;
  // 3. 消息类型过滤(系统事件、斜杠命令等)
  if (isGuildMessage && (
    message.type = MessageType.ChatInputCommand ||
    message.type = MessageType.ContextMenuCommand
  )) return null;
  // 4. DM/频道权限策略
  if (dmPolicy = "disabled") return null;
  const dmAccess = await resolveDiscordDmCommandAccess({ ... });
  // 5. 提及检测(@机器人)
  const wasMentioned = matchesMentionWithExplicit({ text, mentionRegexes, ... });
  // 6. 成员白名单
  const { hasAccessRestrictions, memberAllowed } = resolveDiscordMemberAccessState({ ... });
  if (isGuildMessage && hasAccessRestrictions && !memberAllowed) return null;
  // 7. 其他频道消息忽略
  if (ignoreOtherMentions && hasUserOrRoleMention && !wasMentioned) return null;
  // 8. 系统事件注入
  const systemText = resolveDiscordSystemEvent(message, systemLocation);
  if (systemText) {
    enqueueSystemEvent(systemText, { sessionKey: effectiveRoute.sessionKey, ... });
    return null;
  }
}

2.2 频道历史管理

预检通过后,消息会进入频道历史记录(reply-history-CYr7j6cE.js):

// 构建历史上下文标记
const HISTORY_CONTEXT_MARKER = "[Chat messages since your last reply - for context]";
const CURRENT_MESSAGE_MARKER = "[Current message - respond to this]";
function buildHistoryContext(params) {
  const { historyText, currentMessage } = params;
  if (!historyText.trim()) return currentMessage;
  return [
    HISTORY_CONTEXT_MARKER,
    historyText,
    "",
    CURRENT_MESSAGE_MARKER,
    currentMessage
  ].join(lineBreak);
}
// 历史记录追加(带 LRU 驱逐)
const MAX_HISTORY_KEYS = 1e3;
function appendHistoryEntry(params) {
  const history = historyMap.get(historyKey) ?? [];
  history.push(entry);
  while (history.length > params.limit) history.shift(); // 超过限制时移除最旧记录
  historyMap.set(historyKey, history);
  evictOldHistoryKeys(historyMap);
}

关键设计点:频道历史以 Map 结构存储在内存中,而非每次都从磁盘读取。通过 MAX_HISTORY_KEYS = 1000 防止内存无限增长,通过 historyLimit(默认50条)控制每个频道的历史深度。


三、阶段二:上下文组装

3.1 核心结构 ctxPayload

通过 finalizeInboundContexttemplating-BpbUbFSs.js)构建最终传递给模型的上下文结构:

const ctxPayload = finalizeInboundContext({
  Body: combinedBody,              // 格式化后的消息内容
  BodyForAgent: baseText ?? text,   // 供 Agent 使用的原始文本
  InboundHistory: inboundHistory,    // 频道历史(已格式化)
  RawBody: baseText,                // 未处理的原始文本
  CommandBody: baseText,            // 命令体(用于 /command 解析)
  // 路由信息
  From: effectiveFrom,             // 消息来源标识
  To: effectiveTo,                 // 目标会话
  SessionKey: boundSessionKey ?? threadKeys.sessionKey,
  AccountId: route.accountId,
  // 发送者信息
  SenderName: senderName,
  SenderId: sender.id,
  SenderUsername: senderUsername,
  SenderTag: senderTag,
  // 群组/频道信息
  GroupSubject: groupSubject,       // 群组主题
  GroupChannel: groupChannel,       // 频道标签
  GroupSystemPrompt: isGuildMessage ? groupSystemPrompt : void 0,
  GroupSpace: isGuildMessage ? (guildInfo?.id ?? guildSlug) : void 0,
  // 安全上下文
  UntrustedContext: untrustedContext,
  OwnerAllowFrom: ownerAllowFrom,
  // 回复上下文
  ReplyToId: replyContext?.id,
  ReplyToBody: replyContext?.body,
  ReplyToSender: replyContext?.sender,
  // 线程信息
  MessageThreadId: threadChannel?.id,
  ThreadStarterBody: threadStarterBody,
  ThreadLabel: threadLabel,
  // 媒体信息
  ...mediaPayload,
  // 元数据
  Provider: "discord",
  Surface: "discord",
  WasMentioned: effectiveWasMentioned,
  Timestamp: resolveTimestampMs(message.timestamp),
  MessageSid: message.id,
});

3.2 安全防护:输入净化

这是 OpenClaw 上下文处理中最体现安全意识的部分(templating-BpbUbFSs.js):

const BRACKETED_SYSTEM_TAG_RE = /\[\s*(System\s*Message|System|Assistant|Internal)\s*\]/gi;
const LINE_SYSTEM_PREFIX_RE = /^(\s*)System:(?=\s|$)/gim;
function sanitizeInboundSystemTags(input) {
  return input
    .replace(BRACKETED_SYSTEM_TAG_RE, (_match, tag) => `(${tag})`)
    .replace(LINE_SYSTEM_PREFIX_RE, "$1System (untrusted):");
}

防护逻辑:用户可能尝试在消息中注入 [System Message] 或 System: 前缀来冒充系统指令。sanitizeInboundSystemTags 会将这些标记替换为不可执行的格式,防止 Prompt Injection 攻击。

3.3 会话键(SessionKey)的路由逻辑

会话键是 OpenClaw 多租户/多会话隔离的核心机制(sessions-uRDRs4f-.js):

function deriveSessionKey(scope, ctx) {
  if (scope === "global") return "global";
  const resolvedGroup = resolveGroupSessionKey(ctx);
  if (resolvedGroup) return resolvedGroup.key; // 群组会话: "discord:group:123456"
  return (ctx.From ? normalizeE164(ctx.From) : "") || "unknown"; // 私聊 → main
}
// 群组会话键示例:
// discord:group:123456
// telegram:channel:-1002381931352
// whatsapp:group:123456789@g.us

关键设计:私聊消息全部归一化到 main 会话,群组/频道消息则保持隔离。这意味着 AI 在私聊中拥有完整的多轮上下文,在群组中则按频道隔离。


四、阶段三:上下文向 Prompt 的转化

4.1 上下文引擎注册机制

OpenClaw 实现了可插拔的上下文引擎架构(pi-embedded-BaSvmUpW.js):

// 注册表设计
function registerContextEngineForOwner(id, factory, owner, opts) {
  // id: "legacy" | "custom-plugin-slot"
  // owner: "core" | "public-sdk"
  // 支持第三方通过 api.registerContextEngine() 插入自定义引擎
}
// 内置 Legacy 引擎(默认)
var LegacyContextEngine = class {
  async ingest(_params) { return { ingested: false }; }
  async assemble(params) { return { messages: params.messages, estimatedTokens: 0 }; }
  async compact(params) { return await delegateCompactionToRuntime(params); }
};

4.2 引导文件与工作区上下文

OpenClaw 在启动时会加载工作区中的引导文件,组成初始系统上下文(pi-embedded-BaSvmUpW.js):

// 加载 bootstrap 文件
const bootstrapFiles = filterBootstrapFilesForSession({
  sessionKey, workspaceDir, bootstrapContextMode
});
// 典型文件: SOUL.md, AGENTS.md, USER.md, HEARTBEAT.md
// 构建初始上下文
async function loadWorkspaceBootstrapFiles(sessionKey, workspaceDir) {
  // 1. 读取 workspaceDir 下的 .md 文件
  // 2. 按文件名排序拼接
  // 3. 作为 system prompt 前缀注入
}

这正是 AGENTS.md 中描述的行为:每次会话启动时,读取 SOUL.md → USER.md → memory/ 当日文件 → MEMORY.md,这些文件共同构成了 AI 的"人格"和"记忆"。

4.3 Skills 系统:动态工具上下文注入

Skills 是 OpenClaw 的可扩展工具集,通过 SKILL.md 文件描述(skills-Xrdxpo0d.js):

// Skill 解析流程
function loadSkillsFromDir(skillDir) {
  const entries = [];
  const files = listMarkdownFilesRecursive(skillDir); // 递归查找 .md 文件
  for (const filePath of files) {
    const frontmatter = parseFrontmatterBlock(raw);
    const promptTemplate = stripFrontmatter(raw);
    // frontmatter.name → 技能名称
    // frontmatter.description → 技能描述(用于 agent 理解何时调用)
    // promptTemplate → 技能的完整指令文本
  }
}
// Skill 过滤与选择
function filterSkillEntries(entries, config, skillFilter, eligibility) {
  let filtered = entries.filter(entry => shouldIncludeSkill({ entry, config, eligibility }));
  if (skillFilter !== void 0) {
    const normalized = normalizeSkillFilter(skillFilter) ?? [];
    filtered = normalized.length > 0
      ? filtered.filter(entry => normalized.includes(entry.skill.name))
      : [];
  }
  return filtered;
}

关键设计:Skill 的路径在注入 Prompt 前会被压缩为 ~/... 格式compactSkillPaths),节省大量 token:

// 原始: /Users/alice/.bun/node/lib/skills/github/SKILL.md
// 压缩后: ~/.bun/node/lib/skills/github/SKILL.md
function compactSkillPaths(skills) {
  const home = os.homedir();
  return skills.map(=> ({
    ...s,
    filePath: s.filePath.startsWith(prefix) ? "~/" + s.filePath.slice(prefix.length) : s.filePath
  }));
}

五、阶段四:会话存储与历史持久化

5.1 双层存储架构

OpenClaw 实现了内存缓存 + 磁盘持久化的双层会话存储(sessions-uRDRs4f-.js):

// 内存层: SessionManager (来自 pi-coding-agent 包)
// 磁盘层: session store (JSON 文件)
const CURRENT_SESSION_VERSION = "...";
async function loadSessionStore(storePath) {
  const raw = await readFile(storePath, "utf-8");
  return JSON.parse(raw);
}
async function saveSessionStore(storePath, store) {
  await writeJsonAtomic(storePath, store);
}

5.2 会话元数据管理

function mergeSessionEntry(existing, patch) {
  return mergeSessionEntryWithPolicy(existing, patch);
}
function mergeSessionEntryWithPolicy(existing, patch, options) {
  const sessionId = patch.sessionId ?? existing?.sessionId ?? crypto.randomUUID();
  const updatedAt = resolveMergedUpdatedAt(existing, patch, options);
  if (!existing) {
    return normalizeSessionRuntimeModelFields({ ...patch, sessionId, updatedAt });
  }
  return normalizeSessionRuntimeModelFields({
    ...existing,
    ...patch,
    sessionId,
    updatedAt
  });
}

5.3 磁盘预算控制

会话文件会不断增长,OpenClaw 实现了磁盘预算控制:

// 预算配置
const maintenance = {
  maxDiskBytes: 100 * 1024 * 1024,  // 100MB 上限
  highWaterBytes: 80 * 1024 * 1024,  // 80MB 时开始清理
  keepArchivedTranscripts: true,
  removeEmptySessionFiles: true,
};
// 按修改时间排序,删除最旧的会话文件直到低于预算
async function enforceSessionDiskBudget(params) {
  const files = await readSessionsDirFiles(sessionsDir);
  files.sort((a, b) => a.mtimeMs - b.mtimeMs); // 最旧的先删
  while (total > highWaterBytes && files.length > 0) {
    const removed = await removeFileForBudget({ filePath: files.shift().path });
    total -= removed;
  }
}

六、阶段五:上下文压缩与溢出处理

6.1 溢出检测

当模型上下文窗口接近上限时,OpenClaw 会触发压缩(agent-runner.runtime-i_gf132J.js):

async function runAgentTurnWithFallback(params) {
  while (true) {
    try {
      const result = await runWithModelFallback({
        ...resolveModelFallbackOptions(params.followupRun.run),
        runId,
        run: (provider, model, runOptions) => {
          return runEmbeddedPiAgent({
            ...embeddedContext,
            // 模型调用
            onCompactionStart: async () => {
              // 通知用户正在压缩
              await params.opts.onCompactionStart?.();
            },
            onCompactionEnd: async () => {
              // 压缩完成,重新计数
              attemptCompactionCount += 1;
              await params.opts.onCompactionEnd?.();
            }
          });
        }
      });
    } catch (error) {
      if (isContextOverflowError(error)) {
        // 触发上下文压缩后重试
        await compactEmbeddedPiSessionDirect({ sessionFile, tokenBudget, force: true });
        continue; // 重试
      }
      throw error;
    }
  }
}

6.2 委托式压缩

自定义上下文引擎可以将压缩委托给内置运行时:

async function delegateCompactionToRuntime(params) {
  const { compactEmbeddedPiSessionDirect } = await import("./compact.runtime-C_quO5Zm.js");
  const result = await compactEmbeddedPiSessionDirect({
    sessionId: params.sessionId,
    sessionFile: params.sessionFile,
    tokenBudget: params.tokenBudget,
    force: params.force,
    customInstructions: params.customInstructions,
    workspaceDir: params.workspaceDir
  });
  return { compacted: result.compacted, ... };
}

七、完整的上下文流图

Discord/Telegram/Signal 等消息源         │         ▼  ┌──────────────────┐  │ preflightMessage │  ← 预检过滤(权限/白名单/去重/系统事件)  └────────┬─────────┘           │ ctxPayload           ▼  ┌──────────────────────────┐  │ finalizeInboundContext   │  ← 净化用户输入、构建标准上下文结构  └────────┬─────────────────┘           │           ▼  ┌──────────────────────────┐  │ recordInboundSession     │  ← 写入会话存储、更新元数据  └────────┬─────────────────┘           │           ▼  ┌──────────────────────────┐  │ buildPendingHistoryContext│  ← 追加频道历史  └────────┬─────────────────┘           │           ▼  ┌──────────────────────────┐  │ dispatchInboundMessage   │  ← 触发 Agent 执行  └────────┬─────────────────┘           │           ▼  ┌──────────────────────────────────────────────┐  │ runEmbeddedPiAgent                            │  │  ├─ 加载引导文件 (SOUL.md / AGENTS.md / USER.md) │  │  ├─ 注入 Skills (SKILL.md 系统)                  │  │  ├─ 注入会话历史 (SessionManager)                │  │  └─ 构建最终 messages[] 数组                    │  └────────┬─────────────────────────────────────┘           │           ▼        模型 API 调用           │     ┌─────┴─────┐     │ 成功      │ 溢出错误     │           │     ▼           ▼  回复投递   触发压缩 (compact)           │           ▼        重试调用模型

八、关键设计哲学总结

设计点
实现方式
价值
安全净化sanitizeInboundSystemTags
 过滤 [System] 等注入
防止 Prompt Injection
会话隔离
群组按频道隔离,私聊归一到 main
多租户安全
历史热存储
频道历史存内存 + 磁盘持久化
低延迟访问
上下文压缩
可插拔引擎 + 委托运行时
扩展性强
Skills 动态加载
SKILL.md 按需解析 + 路径压缩
token 优化
磁盘预算
LRU 删除 + 高水位触发
自动健康管理
多渠道统一抽象ctxPayload
 标准化所有渠道
架构一致

源码版本: OpenClaw (Node.js), 2026-03-26 基于 dist/ 目录分析

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-28 07:23:50 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/488473.html
  2. 运行时间 : 0.195184s [ 吞吐率:5.12req/s ] 内存消耗:4,933.22kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=635e18164446428cfc19986fd8804f02
  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.68 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.000444s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000614s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002510s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001537s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000525s ]
  6. SELECT * FROM `set` [ RunTime:0.000225s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000570s ]
  8. SELECT * FROM `article` WHERE `id` = 488473 LIMIT 1 [ RunTime:0.006144s ]
  9. UPDATE `article` SET `lasttime` = 1774653830 WHERE `id` = 488473 [ RunTime:0.014078s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.004068s ]
  11. SELECT * FROM `article` WHERE `id` < 488473 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000704s ]
  12. SELECT * FROM `article` WHERE `id` > 488473 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000503s ]
  13. SELECT * FROM `article` WHERE `id` < 488473 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003180s ]
  14. SELECT * FROM `article` WHERE `id` < 488473 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.006344s ]
  15. SELECT * FROM `article` WHERE `id` < 488473 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005788s ]
0.196763s