乐于分享
好东西不私藏

OpenClaw 如何处理“帮我制作一个PPT”这个问题

OpenClaw 如何处理“帮我制作一个PPT”这个问题

"帮我打开PPT,制作一个「AI时代下SaaS数据产品的护城河与壁垒」为主题的PPT"


用户 Query(来自任意渠道:WhatsApp / Telegram / CLI / WebChat)

处理管线总览

  1. 查询接收&归一化
  2. Gateway路由&队列
  3. Bootstrap文件注入
  4. Prompt组装
  5. 1LLM推理
  6. 工具执行层
  7. ReAct工具循环
  8.  PPT文件生成
  9. 回复投递

S0 查询接收 & 渠道归一化

📡 这个阶段 OpenClaw 在做什么

渠道 SDK(如 Telegram grammY、WhatsApp Baileys、Discord.js)接收到原始消息,将其转换为内部统一的 InboundMessage 数据结构。此阶段无 LLM 参与,是纯数据归一化层。

涉及模块: src/channels、 src/media

内部数据结构(InboundMessage)

  1. // 渠道SDK将原始消息归一化为此结构
  2. interfaceInboundMessage{
  3. // 消息内容
  4.   text:"帮我打开PPT,制作一个「AI时代下...",
  5. // 来源识别
  6.   channel:"telegram",// 或 whatsapp/discord/...
  7.   accountId:"default",// 渠道账号
  8.   peerId:"telegram:123456789",// 发件人唯一ID
  9. // 媒体附件(本例无)
  10.   media:null,
  11. // 群组信息(本例为私聊)
  12.   chatType:"direct",
  13.   chatId:"telegram:123456789",
  14. // 元数据
  15.   messageId:"msg_8821",
  16.   timestamp:"2026-03-10T10:00:00Z"
  17. }

媒体处理管线(本 Query 无媒体,跳过)

如果用户发送了语音、图片或视频,此处会先经过 Media Pipeline( src/media):

  • 图片 → 格式检测 → 尺寸压缩 → base64 或临时文件
  • 语音 → 格式检测 → 可选 Transcription(语音转文字)
  • 视频 → 格式检测 → 截帧/临时文件

本 Query 为纯文字,媒体管线直接跳过

🔐 DM Policy 安全检查

在处理消息前,先核查 dmPolicy:若为 "pairing"(默认),检查 peerId 是否已被管理员批准。未批准的发件人将收到配对码请求,消息不继续处理。


S1 Gateway 路由 & 队列调度

🌐 这个阶段 OpenClaw 在做什么

Gateway 的核心路由引擎执行:Binding 匹配 → 确定目标 agentId;SessionKey 生成 → 确定对话上下文;命令检测 → 识别内置命令(/new /reset /stop);入队 → 按 per-session lane 串行化。此阶段无 LLM 参与。

涉及模块: src/routing、 src/commands

Binding Engine 路由决策(无 Prompt,纯逻辑)

路由配置(~/.openclaw/openclaw.json):

  1. {
  2. "agents":{
  3. "list":[
  4. {
  5. "id":"main",
  6. "workspace":"~/.openclaw/workspace",
  7. "default":true
  8. }
  9. ]
  10. },
  11. "session":{
  12. "dmScope":"per-channel-peer"
  13. }
  14. }
  15. //路由决策过程:
  16. // channel=telegram, peerId=telegram:123456789
  17. //Binding匹配(无特定绑定规则)
  18. //回落到 default agent:"main"
  19. //SessionKey:"agent:main:telegram:dm:telegram:123456789"

命令检测 & 队列入队

  1. // 1. 命令检测(优先级最高)
  2. 消息文本:"帮我打开PPT..."
  3. 检测/new/reset /stop 前缀:未检测到
  4. 普通消息,继续正常处理
  5. // 2. 检查 SessionKey 是否有正在运行的任务
  6. sessionKey:"agent:main:telegram:dm:..."
  7. 当前 session lane 状态:空闲
  8. 直接获取执行权,无需排队
  9. // 3. Gateway 发出 RPC 调用
  10. method:"agent"
  11. params:{
  12.   message:"帮我打开PPT,制作...",
  13.   sessionKey:"agent:main:telegram:dm:...",
  14.   thinking:"auto"
  15. }
  16. 立即返回{ runId:"run_xyz", acceptedAt:"..."}

S2 Bootstrap 文件注入 — Agent 人格 & 记忆加载

🧠 这个阶段 OpenClaw 在做什么

Agent 运行时读取工作区( ~/.openclaw/workspace/)中的 Bootstrap 文件,这些文件是 Agent 的"长期记忆"和"人格设定"。所有非空文件都会被注入到 System Prompt 的上下文区域。文件过大时自动截断并附加截断标记。

涉及模块:Workspace Files、 src/agents

📄 AGENTS.md — 操作指令 & 长期记忆

文件路径:~/.openclaw/workspace/AGENTS.md(用户可编辑 / Agent 可自写)

  1. # Operating Instructions
  2. ## Workspace
  3. Working directory:/Users/leslee/.openclaw/workspace
  4. All file operations default to this directory.
  5. ## Memory Notes
  6. # (Agent 在此处写入持久记忆,跨会话保持)
  7. -User prefers concise replies inChinese
  8. -User timezone:Asia/Shanghai(UTC+8)
  9. -Preferred PPT style: dark theme, modern design
  10. -Last created: sales-report.pptx (2026-02-15)
  11. ## Task Conventions
  12. -When creating PPT: always use the pptx skill workflow
  13. -File naming:use kebab-case,Chinese topics use pinyin prefix
  14. -Output files to ~/Desktopunless specified
  15. ## Tool Usage Notes
  16. - pptx skill location:~/.openclaw/skills/pptx/
  17. - html2pptx.js path: skills/pptx/scripts/html2pptx.js
  18. -Always validate thumbnails after PPT creation

💡 此文件由用户和 Agent 共同维护——Agent 执行任务后会将重要信息写回此文件作为"记忆"


🎭 SOUL.md — Agent 人格 & 边界设定

文件路径:~/.openclaw/workspace/SOUL.md(用户配置,定义 Agent 性格)

  1. # Soul & Persona
  2. You are a highly capable personal AI assistant.Your core traits:
  3. ## Tone & Style
  4. -CommunicateinChinesebydefaultunless asked otherwise
  5. -Be direct and efficient no unnecessary preamble
  6. -Use structured formatting (headers, bullets)for complex outputs
  7. -When creating documents/presentations: aim for professional quality
  8. ## Capabilities & Boundaries
  9. -You CAN execute shell commands, create files, run scripts
  10. -You CAN create and edit presentations, documents, spreadsheets
  11. -You SHOULD ask for clarification when requirements are ambiguous
  12. -You SHOULD NOT expose system credentials orprivate paths in responses
  13. ## Work Philosophy
  14. -Prefer complete solutions over partial ones if asked to make a PPT,
  15.   actually make a good one, don't just describe how
  16. - Validate your work (check thumbnails, verify file was created)
  17. - Report results clearly: what was done, where the file is

💡 SOUL.md 决定了 Agent 的性格底色——中文优先、专业、直接、偏向完整解决方案


👤 USER.md — 用户画像

文件路径:~/.openclaw/workspace/USER.md(用户配置,关于用户自己的信息)

  1. # User Profile
  2. Name:Leslee
  3. Role:产品经理/数据产品负责人
  4. Company:互联网行业
  5. Language preference:Chinese(Simplified)
  6. ## Context
  7. -Works on B2B SaaS data products
  8. -Frequently creates presentations forinternal reviews and client pitches
  9. -Technical background: understands architecture, AI systems
  10. -Preferred tools:Mac, modern dark-theme apps
  11. ## Communication Preferences
  12. -Address me as:Leslee
  13. -ReplyinChinese
  14. -Keep responses concise but thorough for technical topics

💡 USER.md 让 Agent 了解"它在服务谁",可据此个性化回复内容与风格


🏷️ IDENTITY.md — Agent 身份标识

文件路径:~/.openclaw/workspace/IDENTITY.md(用户配置,Agent 自我认知)

  1. # Identity
  2. Name:小助手
  3. Emoji:🤖
  4. Tagline:Your personal AI  fast, capable, always on.
  5. ## Self-description
  6. I am a personal AI assistant running locally on your devices.
  7. I can help with research, writing, coding, file management,
  8. creating presentations and documents,and web browsing.

💡 IDENTITY.md 通常比较短,主要影响 Agent 的自我介绍和称谓


🔧 TOOLS.md — 工具使用约定(本 Query 关键!)

文件路径:~/.openclaw/workspace/TOOLS.md(用户配置,工具使用规范)

  1. # Tool Usage Guide
  2. ## PPTX Creation
  3. When creating PowerPoint presentations:
  4. 1.Load the pptx skill:Read SKILL.md at
  5. ~/.openclaw/skills/pptx/SKILL.md for full workflow
  6. 2.Use the html2pptx workflow fornew presentations from scratch
  7. 3.Script location: skills/pptx/scripts/html2pptx.js
  8. 4.Always generate thumbnail validation after creation:
  9.    python skills/pptx/scripts/thumbnail.py output.pptx
  10. ## File Conventions
  11. -Output directory:~/Desktop(unless user specifies)
  12. - PPT naming:{topic-kebab}.pptx
  13. ## Shell Execution
  14. -Use bash for file operations
  15. -Use node or bun forJavaScript scripts

S3 Context & Prompt 完整组装

📐 这个阶段 OpenClaw 在做什么

Pi Agent 运行时将所有来源的内容合并成一个完整的 API 请求 payload。包括:Base System Prompt(pi-mono内核基础指令)+ Skills Prompt(已加载的 pptx skill 指令摘要)+ Bootstrap Context(S2 阶段的所有文件内容)+ 会话历史(当前 sessionKey 的 JSONL 历史,首轮为空)+ 用户当前消息。

涉及模块: src/agents/runEmbeddedPiAgent

🔵 Base System Prompt(pi-mono 内核基础提示词)

来源:pi-mono 内核生成,用户不可直接编辑

  1. You are a capable AI assistant running as part of OpenClaw,
  2. a personal AI assistant system.
  3. ## Core Capabilities
  4. You have access to the following tools and can use them to
  5. complete tasks:
  6. FILE TOOLS:
  7. - read_file(path)Read the contents of a file
  8. - write_file(path, content)Write content to a file
  9. - edit_file(path, old,new)Edit specific parts of a file
  10. - list_directory(path)List files in a directory
  11. - create_directory(path)Create a directory
  12. SHELL TOOLS:
  13. - shell_exec(command, cwd)Execute a shell command
  14. Working directory defaults to:/Users/leslee/.openclaw/workspace
  15. BROWSER TOOLS:
  16. - browser_open(url)Open a URL in managed Chrome
  17. - browser_snapshot()Get page accessibility tree
  18. - browser_click(ref)Click an element
  19. - browser_fill(ref, text)Fill an input
  20. MESSAGING TOOLS:
  21. - send_message(channel, peer, text)Send a message back
  22. ## Behavior Guidelines
  23. 1.Think before acting For complex tasks, reason about the
  24.    approach before calling tools
  25. 2.Use tools sequentially Each tool call waits for result
  26. 3.Validate your work Check that files were created/edited
  27.    correctly before reporting success
  28. 4.Be concise in your final reply  don't narrate every step
  29. ## Workspace
  30. Current working directory: /Users/leslee/.openclaw/workspace
  31. All relative paths resolve to this directory.

💡 Base Prompt 由 pi-mono 内核固化,提供工具定义和基础行为规范


🟣 Skills Prompt Block(pptx skill 注入的提示词摘要)

来源: ~/.openclaw/skills/pptx/SKILL.md 的关键摘要

  1. ## Loaded Skills
  2. ### SKILL: pptx
  3. PowerPoint creation, editing,and analysis skill.
  4. WORKFLOW for creating a NEW presentation from scratch:
  5. STEP 1:Design approach
  6. -Analyze content  choose colors, layout, typography
  7. -State design rationale before writing code
  8. STEP 2:Create HTML slides
  9. -Dimensions:720pt×405pt(16:9)
  10. -Use web-safe fonts:Arial,Helvetica,Verdana, etc.
  11. -Useclass="placeholder"for chart areas
  12. -Rasterize gradients/icons as PNG first usingSharp
  13. STEP 3:Convert HTML  PPTX
  14. -Script: skills/pptx/scripts/html2pptx.js
  15. -Runwith: node skills/pptx/scripts/html2pptx.js
  16. STEP 4:Visual validation
  17. -Run: python skills/pptx/scripts/thumbnail.py output.pptx
  18. -Read thumbnail image
  19. -Checkfor text cutoff, overlap, contrast issues
  20. -Fixand regenerate if needed
  21. DESIGN PRINCIPLES (apply to this task):
  22. -Consider subject matter: AI/SaaS/BusinessStrategy
  23. -Suggested palette forthis topic:
  24. ClassicBlue(#1C2833,#2E4053) or Bold accent colors
  25. -Create clear visual hierarchy
  26. -Use structured layouts: title + content, two-column for comparisons
  27. CRITICAL RULE:After creating the file, always verify
  28. it exists and generate thumbnails for visual validation.

💡 Skills Prompt 是 Skill SKILL.md 的关键摘要注入——告诉模型"如何制作 PPT 的完整工作流"


🔴 最终 API 请求 Payload 完整结构

发送给 LLM 的完整 Messages Array(Anthropic Claude API / OpenAI API 格式):

  1. // ═══ SYSTEM PROMPT(合并层)═══
  2. {
  3.   role:"system",
  4.   content:`
  5. [BASE LAYER]
  6. You are a capable AI assistant running as part of OpenClaw...
  7. (工具定义+行为规范)
  8. [SKILLS LAYER]
  9. ##LoadedSkills
  10. ### SKILL: pptx
  11. WORKFLOW for creating a NEW presentation...
  12. (完整 pptx 技能工作流)
  13. [BOOTSTRAP CONTEXT]
  14. === AGENTS.md ===
  15. Working directory:/Users/leslee/.openclaw/workspace
  16. MemoryNotes:
  17. -User prefers concise replies in Chinese
  18. -Preferred PPT style: dark theme, modern design
  19. ...
  20. === SOUL.md ===
  21. You are a highly capable personal AI assistant.
  22. Communicate in Chinese by default...
  23. (性格设定)
  24. === USER.md ===
  25. Name:Leslee
  26. Role:产品经理/数据产品负责人
  27. ...
  28. === TOOLS.md ===
  29. When creating PowerPoint presentations:
  30. 1.Load the pptx skill...
  31. (工具使用规范)
  32. === IDENTITY.md ===
  33. Name:小助手🤖
  34. ...
  35. `
  36. }
  37. // ═══ 会话历史(本例为首轮对话,历史为空)═══
  38. // 如有历史: [ {role:"user",...}, {role:"assistant",...}, ... ]
  39. // ═══ 当前用户消息 ═══
  40. {
  41.   role:"user",
  42.   content:"帮我打开PPT,制作一个「AI时代下SaaS数据产品的护城河与壁垒」为主题的PPT"
  43. }
  44. // ═══ 工具定义(tools array)═══
  45. tools:[
  46. { name:"shell_exec", description:"Execute shell command",...},
  47. { name:"read_file",...},
  48. { name:"write_file",...},
  49. { name:"browser_open",...},
  50. // ... 全部可用工具
  51. ]

💡 这是真正发给 LLM 的完整 Payload——System Prompt 是所有层的合并结果,而非单独文件


S4 第 1 次 LLM 推理 — 任务理解 & 规划

🤔 这个阶段 OpenClaw 在做什么

LLM 接收到 S3 组装的完整 Prompt,进行第一次推理。模型会:① 理解用户意图(制作 PPT);② 识别需要的技能(pptx skill);③ 规划执行步骤;④ 输出第一个工具调用(通常是先读取技能文档或开始构建内容)。整个过程以流式方式推送 Assistant Token。

LLM 第一次推理 — Thinking(内部规划,若启用 Extended Thinking)

stream:"reasoning",仅在 --thinking high/low 时出现

  1. 【模型内部推理过程(ExtendedThinking)】
  2. 用户要求制作一个关于"AI时代下SaaS数据产品的护城河与壁垒"PPT
  3. 任务分析:
  4. 1.这是一个 PPT 创建任务
  5. 2.主题是 B2B SaaS+数据产品+竞争战略(护城河/壁垒)
  6. 3.用户是数据产品负责人(来自 USER.md),所以内容需要专业且有深度
  7. 执行路径(按 TOOLS.md  pptx skill 规范):
  8. Step1:需要先读取 pptx skill 文档(SKILL.md)获取完整工作流
  9. Step2:规划 PPT 结构和内容(5-8页)
  10. Step3:设计颜色方案(深色商务风格,符合主题)
  11. Step4:为每页创建 HTML 文件
  12. Step5:运行 html2pptx.js 转换
  13. Step6:生成缩略图验证
  14. PPT 内容结构规划:
  15. -Slide1:封面主题+副标题
  16. -Slide2:目录/议程
  17. -Slide3: AI时代下数据产品的战略价值
  18. -Slide4:五大护城河(数据网络效应/规模效应/技术壁垒/生态壁垒/转换成本)
  19. -Slide5:护城河量化评估框架
  20. -Slide6:竞争对手分析(内外部威胁)
  21. -Slide7:建立壁垒的行动路线图
  22. -Slide8:总结与展望
  23. 颜色方案选择:
  24. 主题:AI/科技/商业战略选择DeepBlue+AccentGold
  25. -背景:#0D1B2A (深海军蓝)
  26. -主色:#1A3A5C (深蓝)
  27. -强调:#E8A020 (金色)
  28. -文字:#E8EDF5 (近白)
  29. 第一步行动:
  30. 先读取 pptx skill  html2pptx.md 文档,获取语法细节

💡 Thinking Block 是模型的"草稿本",不直接发送给用户,但会影响后续输出质量


LLM 第一次推理 — 实际输出(Assistant 回复 + 第一个工具调用)

stream:"assistant",流式推送到 Gateway

  1. Assistant流式文本输出】
  2. 好的,我来为您制作这份 PPT。主题是「AI时代下SaaS数据产品的护城河与壁垒」,
  3. 我会创建一份专业的商业战略演示文稿。
  4. 让我先读取 PPT 制作工具的详细说明...
  5. // 然后模型立即输出第一个 tool_call

⚒️ 第 1 个工具调用 — 读取 html2pptx 语法文档

工具调用: read_file

  1. {
  2. "path":"skills/pptx/html2pptx.md"
  3. }
  4. //实际路径解析为:
  5. ///Users/leslee/.openclaw/workspace/skills/pptx/html2pptx.md
  6. //(相对路径基于 agents.defaults.workspace

返回结果: ✅

  1. # html2pptx Documentation
  2. ## Usage
  3. const html2pptx =require('./html2pptx.js')
  4. await html2pptx(pptx, htmlContent,{ width:720, height:405})
  5. ## HTML Structure
  6. -Use standard HTML elements: h1-h6, p, ul, ol, li
  7. -Inline styles for positioning and colors
  8. -class="placeholder"for chart areas (renders as gray box)
  9. ...(文档内容,约300行)

S5 工具执行层 & ReAct 循环规划

🔄 ReAct 工具循环机制

每次工具调用的结果被追加到 messages 历史中,然后再次调用 LLM 进行推理。这个循环持续进行,直到 LLM 输出纯文本的最终回复(无工具调用)为止。对于 PPT 制作任务,这个循环通常会执行 10-20次工具调用

ReAct Loop — LLM Call #2(读取文档后的规划)

messages 数组在追加了 tool_call+tool_result 后再次推理:

  1. // messages 数组现在包含(增量追加):
  2. [
  3. // ... 之前的 system prompt + user message + ...
  4. { role:"assistant", content:[
  5. { type:"text", text:"好的,我来为您制作这份 PPT..."},
  6. { type:"tool_use", id:"tool_1", name:"read_file",
  7.       input:{ path:"skills/pptx/html2pptx.md"}}
  8. ]},
  9. { role:"user", content:[
  10. { type:"tool_result", tool_use_id:"tool_1",
  11.       content:"# html2pptx Documentation\n## Usage\n..."}
  12. ]}
  13. ]
  14. // LLM 收到工具结果后,进行第二次推理
  15. // → 输出:开始创建 HTML 文件(第一张幻灯片)

⚒️ 工具调用 #2 — 创建工作目录

工具调用: shell_exec

  1. {
  2. "command":"mkdir -p slides && mkdir -p slides/assets",
  3. "cwd":"/Users/leslee/.openclaw/workspace"
  4. }

⚒️ 工具调用 #3 — 创建封面 Slide HTML

工具调用: write_file → slides/slide-01-cover.html

  1. {
  2. "path":"slides/slide-01-cover.html",
  3. "content":"<!DOCTYPE html>\n<html>\n<head>\n  <style>\n    * { margin: 0; padding: 0; box-sizing: border-box; }\n    body {\n      width: 720pt; height: 405pt;\n      background: linear-gradient(135deg, #0D1B2A 0%, #1A3A5C 100%);\n      ...\n    }\n    h1 { font-size: 32pt; color: #E8EDF5; ... }\n    h1 span { color: #E8A020; }\n    ...\n  </style>\n</head>\n<body>\n  <div class=\"logo-area\">SaaS Strategy 2026</div>\n  <div class=\"tag\">战略竞争力分析</div>\n  <h1>AI时代下SaaS数据产品的<br><span>护城河与壁垒</span></h1>\n  <p class=\"subtitle\">从数据网络效应到技术生态的竞争战略框架</p>\n</body>\n</html>"
  4. }

返回结果: ✅ File written: slides/slide-01-cover.html (1,243 bytes)

↓ ↓ ↓ (循环重复,每张 Slide 1次 write_file)

🔁 ReAct 循环中每次 LLM 推理时,messages 数组如何增长

每完成一次工具调用,messages 数组都会追加:1条 assistant(含 toolcall)+ 1条 user(含 toolresult)。到第5张 Slide 时,messages 数组中已包含约 15条 历史记录,LLM 每次推理都能"看到"之前所有的操作记录,从而保持上下文一致性(例如颜色风格保持统一、幻灯片编号正确递增)。


S6 ReAct 工具循环 — 完整执行序列

完整工具调用序列表(约 16 次工具调用)

调用#
工具名
参数摘要
LLM 调用前的"推理意图"
返回结果
T1
read_file
skills/pptx/html2pptx.md
读取语法文档,了解 html2pptx 的完整用法
✅ 文档内容(~300行)
T2
shell_exec
mkdir -p slides/assets
创建工作目录,准备存放 HTML slides
✅ 目录创建成功
T3
write_file
slides/slide-01-cover.html
创建封面 Slide HTML(深海蓝 + 金色强调色)
✅ 1.2KB 写入成功
T4
write_file
slides/slide-02-agenda.html
创建目录页(4个议题:战略价值/护城河/评估/路线图)
T5
write_file
slides/slide-03-value.html
AI时代数据产品战略价值 — 两栏布局(左文右图示)
T6
write_file
slides/slide-04-moats.html
五大护城河 — 五列卡片布局(核心 Slide)
T7
write_file
slides/slide-05-framework.html
护城河评估框架 — 表格 + 雷达图 placeholder
T8
write_file
slides/slide-06-competition.html
竞争格局分析 — 两栏(内部优势 vs 外部威胁)
T9
write_file
slides/slide-07-roadmap.html
行动路线图 — 时间轴布局(3阶段:0-6M/6-18M/18M+)
T10
write_file
slides/slide-08-summary.html
总结 Slide — 封底设计,呼应封面风格
T11
write_file
slides/create-pptx.js
生成转换脚本,调用 html2pptx.js 处理全部 8 张 Slides
T12
shell_exec
node slides/create-pptx.js
执行转换脚本,生成 .pptx 文件
✅ 输出 saas-moat-2026.pptx
T13
shell_exec
cp saas-moat-2026.pptx ~/Desktop/
将文件复制到桌面(TOOLS.md 约定的输出目录)
T14
shell_exec
python skills/pptx/scripts/thumbnail.py
生成缩略图网格,用于视觉验证
✅ thumbnails.jpg 生成
T15
read_file
thumbnails.jpg (as image)
读取缩略图,检查布局/文字/对比度是否有问题
✅ 8张 Slide 预览图
T16*
write_file
 + shell_exec
修复 slide-05 文字溢出 → 重新生成
(可选)发现 Slide5 表格溢出,修复后重新运行转换
✅ 重新生成

关键 LLM 推理 — T11 生成 create-pptx.js 时的完整 Prompt 上下文

此时 messages 已有约30条历史记录:

  1. // [system]: 完整 System Prompt(Base + Skills + Bootstrap)
  2. // [user]: "帮我打开PPT,制作..."
  3. // [assistant]: "好的..." + tool_call read_file
  4. // [user]: tool_result(html2pptx.md 内容)
  5. // [assistant]: tool_call mkdir
  6. // [user]: tool_result(目录创建成功)
  7. // [assistant]: tool_call write_file slide-01-cover.html
  8. // [user]: tool_result(✅ 1.2KB)
  9. // ... (T3-T10 共8次写入 Slide HTML)
  10. // [assistant]: tool_call write_file slide-08-summary.html
  11. // [user]: tool_result(✅ 成功)
  12. // 此时 LLM 推理,决定生成转换脚本:
  13. LLM 11次推理意图】
  14. 所有8Slide HTML 文件已全部创建。
  15. 现在需要生成一个Node.js 脚本,
  16. 调用 html2pptx.js 将它们合并成.pptx 文件。
  17. 根据 html2pptx.md 的语法,脚本应该:
  18. 1. require html2pptx
  19. 2.创建 pptx 实例
  20. 3.对每张Slide HTML 调用 html2pptx()
  21. 4.调用 pptx.writeFile('saas-moat-2026.pptx')

LLM 输出的 create-pptx.js 内容:

  1. constPptxGenJS= require('pptxgenjs');
  2. const html2pptx = require('../skills/pptx/scripts/html2pptx');
  3. const fs = require('fs');
  4. const path = require('path');
  5. async function createPresentation(){
  6. const pptx =newPptxGenJS();
  7.   pptx.layout ='LAYOUT_WIDE';// 16:9
  8. const slides =[
  9. 'slide-01-cover.html','slide-02-agenda.html',
  10. 'slide-03-value.html','slide-04-moats.html',
  11. 'slide-05-framework.html','slide-06-competition.html',
  12. 'slide-07-roadmap.html','slide-08-summary.html'
  13. ];
  14. for(const slideFile of slides){
  15. const html = fs.readFileSync(
  16.       path.join(__dirname, slideFile),'utf8'
  17. );
  18.     await html2pptx(pptx, html,{ width:720, height:405});
  19. }
  20.   await pptx.writeFile({ fileName:'saas-moat-2026.pptx'});
  21.   console.log('✅ Created: saas-moat-2026.pptx');
  22. }
  23. createPresentation().catch(console.error);

👁️ T15 读取缩略图后的 LLM 推理 — 视觉验证

messages 中包含图片格式的 tool_result:

  1. {
  2.   role:"user",
  3.   content:[
  4. {
  5.       type:"tool_result",
  6.       tool_use_id:"tool_14",
  7.       content:[
  8. {
  9.           type:"image",// 图片格式
  10.           source:{
  11.             type:"base64",
  12.             media_type:"image/jpeg",
  13.             data:"[thumbnails.jpg base64编码]"
  14. }
  15. }
  16. ]
  17. }
  18. ]
  19. }
  20. LLM 对缩略图的分析推理】
  21. 查看缩略图:
  22. -Slide1(封面):布局正确,标题居中,金色强调色
  23. -Slide2(目录):4个议题清晰可见
  24. -Slide3(价值):两栏布局,左右均衡
  25. -Slide4(护城河):五列卡片,内容适中
  26. -Slide5(框架):⚠️表格右侧有文字被截断
  27. -Slide6(竞争):正常
  28. -Slide7(路线图):三阶段时间轴清晰
  29. -Slide8(总结):封底风格与封面呼应
  30. 检测到问题:Slide5文字溢出
  31. 需要修复 slide-05-framework.html 的表格宽度

💡 模型直接"看"缩略图来验证输出质量——视觉验证是 pptx skill 工作流的强制步骤


S7 PPT 文件最终生成 & 验证完成

修复 Slide 5 后重新生成

工具调用: write_file — 修复 slide-05-framework.html

  1. {
  2. "path":"slides/slide-05-framework.html",
  3. "content":"...(修复表格宽度、减小字体后的 HTML)..."
  4. }

工具调用: shell_exec — 重新生成 PPTX

  1. node slides/create-pptx.js
  2. cp saas-moat-2026.pptx~/Desktop/

最终文件输出:

  1. Created: saas-moat-2026.pptx
  2. File size:2.8 MB
  3. Location:~/Desktop/saas-moat-2026.pptx
  4. Slides:8
  5. Dimensions:33.87cm×19.05cm(16:9)

最终 PPT 内容结构

页码
标题
布局
1
封面:主题 + 副标题
居中 + 金色装饰
2
议程目录
4项列表
3
AI时代数据产品战略价值
两栏
4
五大护城河
五列卡片
5
护城河评估框架
表格
6
竞争格局分析
两栏对比
7
行动路线图
时间轴 3阶段
8
总结与展望
封底

💾 Agent 写入记忆

任务完成后,Agent 会将关键信息写入 AGENTS.md(Memory Notes 区域),如:"Last PPT created: saas-moat-2026.pptx (2026-03-10), 8 slides, dark blue theme",供下次会话引用。


S8 最终回复成形 & 渠道投递

📤 这个阶段 OpenClaw 在做什么

所有工具调用完成后,最后一次 LLM 推理输出纯文本回复(不含 tool_call),Loop 检测到无工具调用,视为任务完成。回复经过分块(Chunking)处理后,通过原渠道的 SDK 发送回用户。同时触发 agent_end Hook、会话历史落盘、usage 统计更新。

最后一次 LLM 推理 — 最终回复(无工具调用)

stream:"assistant",无 tool_call,此为 Loop 终止条件:

  1. LLM 最终回复文本(发送给用户)】
  2.  PPT 制作完成!
  3. 已为您创建「AI时代下SaaS数据产品的护城河与壁垒」演示文稿:
  4. 📁文件位置:~/Desktop/saas-moat-2026.pptx
  5. 📊8张幻灯片
  6. 内容结构:
  7. 1.封面
  8. 2.议程目录
  9. 3. AI时代数据产品的战略价值
  10. 4.五大护城河(数据网络效应/规模/技术/生态/转换成本)
  11. 5.护城河量化评估框架
  12. 6.竞争格局分析
  13. 7.行动路线图(3阶段)
  14. 8.总结与展望
  15. 设计风格:深海蓝主色+金色强调,专业商业风格。
  16. 如需调整内容、配色或添加具体数据图表,请告诉我🎨

💡 LLM 输出纯文本(无 tool_call)→ pi-mono 检测到 Loop 结束条件 → 触发 lifecycle:end 事件

回复分块(Chunking)& 投递

分块策略:回复文本按渠道的消息长度限制进行分块(如 Telegram 限制4096字符)。本次回复约200字,不需要分块,直接投递。

渠道投递:

  • Telegram → bot.sendMessage(chatId,text)
  • WhatsApp → sock.sendMessage(jid,{text})
  • Discord → message.reply(text)
  • WebChat → WS event push

任务完成后的系统操作

  • agent_end Hook 触发:插件可在此处做后处理(如通知/日志)
  • JSONL 会话历史落盘:全部 messages(含工具调用)追加到 ~/.openclaw/agents/main/sessions/<sessionId>.jsonl
  • usage 统计更新:inputTokens + outputTokens 写入 sessions.json
  • 会话写锁释放:per-session lane 解锁,允许下一条消息进入
  • 临时文件清理:Media Pipeline 生成的临时文件按生命周期回收

📋 全流程速查表

维度
数值/内容
用户 Query
"帮我打开PPT,制作一个「AI时代下SaaS数据产品的护城河与壁垒」为主题的PPT"
LLM 调用次数
约 16-18 次(每次工具调用后各一次)
工具调用次数
约 16 次(read×2, shell×4, write×10)
System Prompt 组成
Base(pi-mono) + pptx Skill摘要 + AGENTS.md + SOUL.md + USER.md + IDENTITY.md + TOOLS.md
System Prompt 长度估算
约 4,000-6,000 tokens
最终 messages 数组长度
约 35-40 条(含全部工具调用历史)
总 Token 消耗估算
input: ~25,000 tokens / output: ~8,000 tokens
总执行时间估算
60-120 秒(受限于 html2pptx 渲染速度)
输出文件
~/Desktop/saas-moat-2026.pptx(8张,~2.8MB)
Loop 终止条件
LLM 输出纯文本(无 toolcall)→ messageend

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-03 08:45:13 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/487581.html
  2. 运行时间 : 0.111934s [ 吞吐率:8.93req/s ] 内存消耗:4,844.16kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=64c9073221d799eb4fb5f3ff2064e662
  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.000626s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000797s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000305s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000277s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000509s ]
  6. SELECT * FROM `set` [ RunTime:0.002895s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000679s ]
  8. SELECT * FROM `article` WHERE `id` = 487581 LIMIT 1 [ RunTime:0.000732s ]
  9. UPDATE `article` SET `lasttime` = 1775177113 WHERE `id` = 487581 [ RunTime:0.020563s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.003404s ]
  11. SELECT * FROM `article` WHERE `id` < 487581 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000493s ]
  12. SELECT * FROM `article` WHERE `id` > 487581 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.003067s ]
  13. SELECT * FROM `article` WHERE `id` < 487581 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000636s ]
  14. SELECT * FROM `article` WHERE `id` < 487581 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000803s ]
  15. SELECT * FROM `article` WHERE `id` < 487581 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003095s ]
0.113576s