乐于分享
好东西不私藏

DeerFlow 2.0 源码解析(二):prompt.py 如何把 Lead Agent 塑造成可执行系统

DeerFlow 2.0 源码解析(二):prompt.py 如何把 Lead Agent 塑造成可执行系统
上一篇我们拆了 lead_agent/agent.py

结论是:agent.py 是 DeerFlow 主 Agent 的装配入口,它负责把模型、工具、中间件、系统提示词和状态结构交给 LangChain 的 create_agent

这一篇继续往下看:

backend/packages/harness/deerflow/agents/lead_agent/prompt.py

如果说 agent.py 定义的是 DeerFlow Lead Agent 的运行骨架,那么 prompt.py 定义的就是这个 Agent 的行为协议。

这里的 prompt 不是简单的角色描述,而是把 DeerFlow 的运行规则、工具使用边界、澄清策略、子 Agent 调度方式、文件目录约束、技能加载机制和引用规范,全部写进 system prompt。

也就是说,DeerFlow 的 Lead Agent 并不是只靠模型“自由发挥”,而是通过 prompt 和 middleware 共同约束出来的。

一、prompt.py 在启动链路中的位置

回到 agent.py,创建 Lead Agent 时会调用:

return create_agent(    model=create_chat_model(...),    tools=get_available_tools(...),    middleware=_build_middlewares(...),    system_prompt=apply_prompt_template(...),    state_schema=ThreadState,)

其中:

system_prompt=apply_prompt_template(...)

就是 prompt.py 的核心出口。

agent.py 不直接拼接系统提示词,而是把这些运行参数传给 apply_prompt_template

apply_prompt_template(    subagent_enabled=subagent_enabled,    max_concurrent_subagents=max_concurrent_subagents,    agent_name=agent_name,)

bootstrap 模式下会稍微特殊一点:

apply_prompt_template(    subagent_enabled=subagent_enabled,    max_concurrent_subagents=max_concurrent_subagents,    available_skills=set(["bootstrap"]),)

这说明 prompt.py 的职责不是静态文本管理,而是根据运行时配置动态生成最终 system prompt。

二、prompt.py 的核心结构

从源码看,prompt.py 主要由几类函数组成:

_build_subagent_sectionSYSTEM_PROMPT_TEMPLATE_get_memory_contextget_skills_prompt_sectionget_agent_soulget_deferred_tools_prompt_section_build_acp_section_build_custom_mounts_sectionapply_prompt_template

可以分成三层理解:

第一层是静态模板:

  • SYSTEM_PROMPT_TEMPLATE

第二层是动态片段生成:

  • _build_subagent_section
  • _get_memory_context
  • get_skills_prompt_section
  • get_agent_soul
  • get_deferred_tools_prompt_section
  • _build_acp_section
  • _build_custom_mounts_section

第三层是最终组装入口:

  • apply_prompt_template

整体流程是:

三、SYSTEM_PROMPT_TEMPLATE:不是人设,而是运行协议

SYSTEM_PROMPT_TEMPLATE 是整个 prompt 的主体。

它里面不是单纯写一句“你是 DeerFlow”,而是用多个 XML 风格标签拆出不同约束块:

<role><soul><memory><thinking_style><clarification_system><skill_system><available-deferred-tools><subagent_system><working_directory><response_style><citations><critical_reminders><current_date>

这种写法的好处是边界明确。

每个模块负责约束 Agent 的一个行为维度:

  • role
    :定义默认身份
  • soul
    :注入自定义 Agent 人设
  • memory
    :注入长期记忆
  • thinking_style
    :约束任务分析方式
  • clarification_system
    :约束澄清优先级
  • skill_system
    :告诉模型如何加载技能
  • available-deferred-tools
    :告诉模型有哪些延迟工具
  • subagent_system
    :告诉模型如何调度子 Agent
  • working_directory
    :告诉模型文件目录和产物输出规则
  • response_style
    :约束回复风格
  • citations
    :约束引用格式
  • critical_reminders
    :最后再次强调关键规则
  • current_date
    :注入当前日期

这就是 DeerFlow prompt 设计中最重要的一点:

Prompt 不是文案,而是 Agent Runtime 的行为协议。

四、Role 与 SOUL:默认 Agent 和自定义 Agent 的分层

模板里默认角色是:

You are {agent_name}, an open-source super agent.

如果没有传入 agent_name,默认名称是:

agent_name or "DeerFlow 2.0"

但 DeerFlow 还支持自定义 Agent。

自定义 Agent 的个性、职责、风格不是写死在主模板里,而是通过:

get_agent_soul(agent_name)

读取:

load_agent_soul(agent_name)

如果存在 SOUL 内容,就包进:

<soul>...</soul>

这是一种清晰的分层:

  • SYSTEM_PROMPT_TEMPLATE
     管通用运行规则
  • SOUL.md
     管自定义 Agent 的身份和风格

这样 DeerFlow 可以复用同一个 Lead Agent 运行骨架,同时支持多个不同的自定义 Agent。

五、Memory 注入:把长期记忆变成上下文

prompt.py 里有一个函数:

_get_memory_context(agent_name)

它的逻辑是:

  1. 读取 memory 配置
  2. 判断 memory.enabled 和 memory.injection_enabled
  3. 根据 agent_name 读取全局或当前 Agent 的 memory 数据
  4. 调用 format_memory_for_injection
  5. 如果有内容,则包进 <memory> 标签

最终格式类似:

<memory>...</memory>

这里要注意一点:memory 的写入不在 prompt.py 完成。

上一篇提到,DeerFlow 通过 MemoryMiddleware 在会话结束后异步更新 memory。prompt.py 只负责在下一次 Agent 启动时,把已经存在的 memory 读出来并注入到 system prompt。

所以 memory 链路可以理解为:

MemoryMiddleware 负责写入/更新prompt.py 负责读取/注入

这个设计把记忆系统拆成了两个方向:

  • 运行结束后沉淀经验
  • 下一次运行前注入经验

六、Clarification System:先澄清,再行动

clarification_system 是 SYSTEM_PROMPT_TEMPLATE 中非常重要的一段。

它明确规定工作流优先级:

CLARIFY → PLAN → ACT

也就是:

  1. 先分析用户请求是否清晰
  2. 如果缺少信息、存在歧义或涉及风险操作,必须先调用 ask_clarification
  3. 澄清完成之后才能开始计划和执行

源码里列了几类必须澄清的场景:

  • missing_info
    :缺少必要信息
  • ambiguous_requirement
    :需求存在多种解释
  • approach_choice
    :存在多种可行方案
  • risk_confirmation
    :涉及危险或破坏性操作
  • suggestion
    :有建议但需要用户确认

这段 prompt 不是孤立生效的。

它和 agent.py 里的两个点配合:

第一,工具层暴露了:

ask_clarification_tool

第二,middleware 链最后放了:

ClarificationMiddleware()

所以完整链路是:

这就是 DeerFlow 里“澄清优先”的实现方式:prompt 负责行为诱导,middleware 负责运行时中断。

七、Subagent Section:把主 Agent 变成调度器

当 subagent_enabled=True 时,apply_prompt_template 会调用:

_build_subagent_section(max_concurrent_subagents)

这段 prompt 会把 Lead Agent 的角色从普通执行者提升为任务调度器。

它给模型定义了三个动作:

DECOMPOSEDELEGATESYNTHESIZE

也就是:

  1. 把复杂任务拆成多个子任务
  2. 通过 task 工具并行分发给 subagent
  3. 收集子任务结果后综合回答

这里还有一个关键参数:

max_concurrent_subagents

prompt 会把它写成硬限制:

MAXIMUM {n} task CALLS PER RESPONSE

并且要求模型在调用 subagent 前先计数:

  • 如果子任务数小于等于上限,一批发起
  • 如果子任务数超过上限,拆成多批
  • 当前轮只发起第一批
  • 所有批次完成后再汇总

这个设计也不是只靠 prompt。

上一篇提到,agent.py 中还有:

SubagentLimitMiddleware(max_concurrent=max_concurrent_subagents)

所以 subagent 并发控制同样是双层约束:

prompt 告诉模型不要超过限制middleware 在运行时截断超出的 task 调用

这也是生产级 Agent 系统常见的设计:不要只相信模型遵守规则,要有后端硬约束。

八、Skills Section:按需加载能力,而不是一次性灌满上下文

get_skills_prompt_section 会调用:

load_skills(enabled_only=True)

拿到当前启用的 skills,然后生成:

<skill_system>  <available_skills>    <skill>      <name>...</name>      <description>...</description>      <location>...</location>    </skill>  </available_skills></skill_system>

它重点强调的是 Progressive Loading Pattern。

也就是:

  1. 用户请求匹配某个 skill 时,先读取 skill 的主文件
  2. 理解 skill 的 workflow 和 instructions
  3. skill 文件里如果引用了其他资源,再按需加载
  4. 不要一次性把所有资源塞进上下文

这个设计的目标很明确:控制上下文膨胀。

DeerFlow 不是把每个 skill 的完整内容都拼进 system prompt,而是只拼:

  • skill 名称
  • skill 描述
  • skill 文件位置

真正需要时,再让 Agent 用文件工具读取对应 skill。

这比“把所有工具说明、所有技能说明一次性塞给模型”更适合长期运行。

bootstrap 模式下还有一个细节:

available_skills=set(["bootstrap"])

这表示初始化自定义 Agent 时,只暴露 bootstrap skill,避免模型看到不相关技能。

九、Deferred Tools:大工具集下的工具检索机制

DeerFlow 支持 MCP tools。

问题是:MCP tools 一多,如果把所有工具 schema 都直接暴露给模型,上下文会膨胀,模型选择工具也会变差。

所以 DeerFlow 引入了 deferred tools。

get_deferred_tools_prompt_section 的逻辑是:

  1. 判断 tool_search.enabled 是否开启
  2. 获取 deferred registry
  3. 如果存在延迟工具,只把工具名写入 prompt

最终格式是:

<available-deferred-tools>tool_atool_btool_c</available-deferred-tools>

注意,这里不是完整 schema,只是工具名列表。

模型知道“有哪些工具可能存在”,但不会直接拿到所有工具定义。需要时再通过 tool_search 检索和加载。

这是一种工具规模治理能力。

当工具数量很少时,直接暴露所有工具问题不大;当工具数量越来越多,必须把工具发现和工具调用拆开。

十、Working Directory:把文件操作约束成固定协议

working_directory 这一段是 DeerFlow 文件任务的关键。

它告诉模型三个固定目录:

/mnt/user-data/uploads/mnt/user-data/workspace/mnt/user-data/outputs

含义分别是:

  • uploads
    :用户上传文件目录
  • workspace
    :临时工作目录
  • outputs
    :最终交付物目录

规则也很明确:

  • 上传文件会自动出现在 <uploaded_files> 上下文中
  • 读取上传文件要用 read_file
  • PDF、PPT、Excel、Word 等文件可能有转换后的 Markdown
  • 临时工作放在 workspace
  • 最终交付物必须复制到 outputs
  • 交付文件时使用 present_file

这段 prompt 解决的是一个常见问题:

Agent 可以读写文件,但它必须知道哪些目录可以读,哪些目录用来工作,哪些目录用来交付。

没有这层约束,模型可能把中间文件和最终文件混在一起,也可能生成了文件但用户无法下载。

所以 DeerFlow 通过 prompt 把文件系统操作约束成固定协议。

十一、ACP 和自定义挂载:把外部执行空间讲清楚

prompt.py 还有两个动态片段:

_build_acp_section()_build_custom_mounts_section()

ACP section 只有配置了 ACP agents 时才会生成。

它强调:

  • ACP agents 有自己的独立 workspace
  • 不在 /mnt/user-data/ 下执行
  • ACP 输出通过 /mnt/acp-workspace/ 只读访问
  • 如果要交付给用户,需要复制到 /mnt/user-data/outputs/

自定义挂载 section 则读取:

get_app_config().sandbox.mounts

然后把配置的挂载目录写入 prompt,并标记是 read-only 还是 read-write。

这两段的目标一致:让模型明确外部文件空间的边界。

Agent 一旦具备文件和命令执行能力,路径边界必须讲清楚。否则模型很容易把不同 workspace 混用。

十二、Response Style 与 Citations:输出也被协议化

DeerFlow 不只约束怎么执行,也约束怎么输出。

response_style 要求:

  • 清晰简洁
  • 默认少用复杂格式
  • 聚焦交付结果,不解释过多过程

citations 则专门约束研究任务。

它要求只要使用 web search、web fetch 或外部信息源,就必须写引用。

引用分两种:

正文里的 inline citation:

claim [citation:Title](URL)

文末 Sources:

[Title](URL) - Description

这个设计说明 DeerFlow 的 prompt 不只是面向代码执行,也面向 deep research 类任务。

研究型 Agent 的核心风险之一是来源不清。DeerFlow 把引用格式直接写成 system prompt 规则,尽量让模型在生成报告时保留可追溯性。

十三、Critical Reminders:最后一道行为约束

模板最后还有:

<critical_reminders>...</critical_reminders>

这里再次强调几个关键规则:

  • 需求不清晰时先澄清
  • subagent 模式下要遵守调度限制
  • 复杂任务优先加载相关 skill
  • 输出文件必须放到 /mnt/user-data/outputs
  • 使用同一种语言回复用户
  • thinking 是内部过程,最终必须给用户可见回复

这一段的作用是收尾强化。

对于长 prompt 来说,重要规则只出现一次通常不够稳定。DeerFlow 会在不同位置重复强调关键边界,提升模型遵守概率。

这不是冗余,而是工程化 prompt 的常见做法。

十四、current_date:每次动态注入当前日期

apply_prompt_template 最后会追加:

return prompt + f"\n<current_date>{datetime.now().strftime('%Y-%m-%d, %A')}</current_date>"

这意味着每次生成 system prompt 时,都会带上当前日期。

这个字段对研究类任务、时效性问题、计划类任务都有价值。

需要注意的是,它使用的是运行环境当前时间,而不是用户输入中的时间。

十五、最终组装流程

把 apply_prompt_template 展开看,流程是:

对应到架构上:

这张图可以说明 prompt.py 的定位:它是多个运行时信息源进入模型上下文的汇总层。

十六、核心源码:apply_prompt_template 是信息汇聚器

如果只看一个函数,prompt.py 最值得看的就是:

def apply_prompt_template(    subagent_enabled: bool = False,    max_concurrent_subagents: int = 3,    *,    agent_name: str | None = None,    available_skills: set[str] | None = None,) -> str:    memory_context = _get_memory_context(agent_name)    n = max_concurrent_subagents    subagent_section = _build_subagent_section(n) if subagent_enabled else ""    subagent_reminder = (...) if subagent_enabled else ""    subagent_thinking = (...) if subagent_enabled else ""    skills_section = get_skills_prompt_section(available_skills)    deferred_tools_section = get_deferred_tools_prompt_section()    acp_section = _build_acp_section()    custom_mounts_section = _build_custom_mounts_section()    acp_and_mounts_section = "\n".join(        section for section in (acp_section, custom_mounts_section) if section    )    prompt = SYSTEM_PROMPT_TEMPLATE.format(        agent_name=agent_name or "DeerFlow 2.0",        soul=get_agent_soul(agent_name),        skills_section=skills_section,        deferred_tools_section=deferred_tools_section,        memory_context=memory_context,        subagent_section=subagent_section,        subagent_reminder=subagent_reminder,        subagent_thinking=subagent_thinking,        acp_section=acp_and_mounts_section,    )    return prompt + f"\n<current_date>{datetime.now().strftime('%Y-%m-%d, %A')}</current_date>"

这段代码的核心不是复杂算法,而是把多个运行时信息源汇聚到同一个 system prompt:

  • agent_name
     决定默认角色名
  • SOUL.md
     决定自定义 Agent 个性
  • memory 决定长期记忆注入
  • skills 决定可按需加载的能力索引
  • deferred tools 决定大工具集下的工具发现入口
  • subagent 配置决定是否进入任务调度器模式
  • ACP 和 sandbox mounts 决定外部执行空间边界
  • current date 决定时间上下文

所以 apply_prompt_template 可以理解为 DeerFlow 的 Prompt 汇聚器

它把“系统有什么能力、当前运行环境是什么、模型应该遵守什么协议”统一压缩进 system prompt。

十七、Prompt 和 Middleware 的闭环

DeerFlow 的设计不是单纯依赖 prompt。

很多关键能力都采用了“双层约束”:

prompt 负责告诉模型应该怎么做middleware 负责在运行时校验、拦截或兜底

对应关系可以这样看:

能力
Prompt 中的约束
Runtime 中的兜底
澄清优先
clarification_system
 要求先澄清再行动
ClarificationMiddleware
 拦截 ask_clarification 并中断执行
子 Agent 并发
subagent_system
 要求最多发起 N 个 task
SubagentLimitMiddleware
 截断超出的 task 调用
文件交付
working_directory
 要求最终文件放入 outputs
ThreadDataMiddleware
 / SandboxMiddleware 提供实际目录和执行环境
工具错误恢复
prompt 要求继续基于上下文行动
ToolErrorHandlingMiddleware
 把工具异常转成错误 ToolMessage
长上下文治理
prompt 约束模型保留关键上下文
SummarizationMiddleware
 在 token 接近限制时压缩历史
任务计划
prompt 要求复杂任务按步骤执行
TodoMiddleware
 注入 write_todos 工具和 todos 状态
工具规模治理
deferred tools 只告诉模型有哪些工具名
DeferredToolFilterMiddleware
 隐藏延迟工具 schema
图片理解
prompt 说明可处理图片和 Markdown 展示
ViewImageMiddleware
 在模型调用前注入图片内容

这张表是理解 DeerFlow 的关键。

一个生产级 Agent 系统不能只靠“提示词写得好”。模型可能忘记规则,可能过度调用工具,也可能在异常后无法恢复。

DeerFlow 的处理方式是:能写进 prompt 的写进 prompt,必须稳定执行的放到 middleware。

这也是 prompt.py 和上一篇 agent.py 能连起来的地方:

  • prompt.py
     定义行为协议
  • agent.py
     注册中间件
  • middleware 在运行时兜底协议执行

十八、prompt.py 的设计重点

从源码看,DeerFlow 的 prompt 设计有几个明显特点。

第一,prompt 是结构化的。

它用 XML 风格标签拆出不同协议块,而不是写成长段自然语言。

第二,prompt 是动态的。

不同 Agent、不同配置、不同工具环境下,最终 system prompt 不一样。

第三,prompt 和 middleware 配合。

比如 clarification 和 subagent 限流,都不是只靠 prompt。prompt 负责告诉模型该怎么做,middleware 负责在运行时兜底。

第四,prompt 控制上下文成本。

skills 只注入索引,不注入全文;deferred tools 只注入工具名,不注入完整 schema。

第五,prompt 明确文件系统协议。

uploads、workspace、outputs 的分工直接写进 system prompt,保证文件任务能被稳定交付。

十九、总结

prompt.py 是 DeerFlow Lead Agent 的行为协议层。

它不是简单定义“你是谁”,而是在 system prompt 中约束了一个 Super Agent 应该如何运行:

  • 如何判断需求是否清晰
  • 什么时候必须先澄清
  • 如何加载 skill
  • 如何读取 memory
  • 如何发现 deferred tools
  • 如何调度 subagent
  • 如何处理文件目录
  • 如何交付输出产物
  • 如何引用外部来源
  • 如何保持回复语言和输出风格

如果说上一篇的 agent.py 解决的是:

Lead Agent 怎么被创建出来?

那么这一篇的 prompt.py 解决的是:

Lead Agent 被创建出来之后,应该按照什么协议行动?

DeerFlow 的核心思路很清楚:

agent.py 提供运行骨架middlewares 提供运行时钩子和兜底prompt.py 提供模型行为协议ThreadState 提供长期状态承载tools 提供真实执行能力

这几个模块组合起来,才构成 DeerFlow 的 Super Agent Harness。

参考源码

  • backend/packages/harness/deerflow/agents/lead_agent/prompt.py
  • backend/packages/harness/deerflow/agents/lead_agent/agent.py
  • backend/packages/harness/deerflow/tools/tools.py
  • backend/packages/harness/deerflow/tools/builtins/task_tool.py
  • backend/packages/harness/deerflow/agents/middlewares/clarification_middleware.py
  • backend/packages/harness/deerflow/agents/middlewares/subagent_limit_middleware.py
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-15 12:43:07 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/629781.html
  2. 运行时间 : 0.118095s [ 吞吐率:8.47req/s ] 内存消耗:4,645.51kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2ca263f5e3db79266462cd8db57aa7cc
  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.000567s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000940s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000337s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000283s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000602s ]
  6. SELECT * FROM `set` [ RunTime:0.000283s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000688s ]
  8. SELECT * FROM `article` WHERE `id` = 629781 LIMIT 1 [ RunTime:0.000617s ]
  9. UPDATE `article` SET `lasttime` = 1778820188 WHERE `id` = 629781 [ RunTime:0.012591s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.003404s ]
  11. SELECT * FROM `article` WHERE `id` < 629781 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000712s ]
  12. SELECT * FROM `article` WHERE `id` > 629781 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001867s ]
  13. SELECT * FROM `article` WHERE `id` < 629781 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003331s ]
  14. SELECT * FROM `article` WHERE `id` < 629781 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000811s ]
  15. SELECT * FROM `article` WHERE `id` < 629781 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002008s ]
0.119708s