乐于分享
好东西不私藏

ClaudeCode源码学习笔记(一):如何派生子Agent?复现搞定最小的Agent Loop

ClaudeCode源码学习笔记(一):如何派生子Agent?复现搞定最小的Agent Loop

写在前面

最近把系统学习下Agent的日程的优先级往前排了下,做了个小实验项目,边学 Claude Code 源码,边把一些感兴趣的功能点先拆成不同的小模块动手复现一下

复盘的大致流程是:我分功能模块把源码解读完后,会简单回顾下各模块的设计思路,然后会挑其中1~2个点,简单写下Prompt,给到Opencode+GLM5.1,生成对应的实验Python代码,最后用Trae跑下实验,如果过程有一些我觉得新手可能需要注意的问题(我踩的坑),也会记录下来。

所以,后续这个系列会陆续分享一些我觉得好玩的功能点学习笔记,如果你自己也想进行深入学下ClaudeCode的源码,不是浅尝即止,或者想大概了解下Antropic的设计机制,那希望这个系列对你有所帮助~

之前读过 Anthropic 的 Agent 设计模式,里面有提到了 Orchestrator-Workers、上下文管理这些概念,不过看的时候好像懂和实际能落地是有巨大gap的~

这篇拆解的就是源码里runAgent.ts 里的设计runAgent.ts是CC里面派生子Agent的核心函数,代码也不多,900多行,覆盖了从参数解析到资源清理的完整生命周期,一个函数就能建立完整的 Agent 概念框架,这次,我实验复现的是循环执行这个点:

几分钟即可完成,展示一个最小 Agent loop长什么样~

阅读指引

简单欣赏下runAgent.ts有哪些设计? 👉 一  

三个实验分别跑了什么? 👉 二、三、四  

复现完有哪意外的收获? 👉 五  

下一个功能可能拆什么? 👉 六


一、runAgent.ts设计包含什么

这个函数是 Claude Code 里启动子 Agent 的核心处理逻辑

它处理的内容不光是派出子Agent “调一次模型” ,还包括子Agent的模型选择、权限处理、上下文组装、工具裁剪、执行循环、以及最后清理资源。

启动并运行一个子 Agent,本质上都绕不开这五个环节,先看下Antropic咋做的

1. 身份:这个 Agent 是谁?

使用中根据任务需要,同一个父Agent可能会派出多个子Agent执行不同任务

那需要一个机制定义"这个子Agent 是什么、做什么、不做什么"

 runAgent.ts 里面的做法是: 每个子 Agent 都需要有自己的类型定义(agentDefinition),预先注册好能力边界。

LLM 不能发明新的 Agent 类型,只能从已有类型里选、决定什么时候用

  1. agentDefinition:静态模板,预注册在 activeAgents目录里,定义能力边界

  2. model:按优先级确定 → 临时指定 > agentDefinition.model > 继承父 Agent

  3. agentId:实例标识符,用于 transcript 路由和追踪,不控制权限

  4. override:在不改静态模板的前提下临时覆盖系统提示、上下文、   agentId

    2.  权限:它能做什么?

    子 Agent 的权限肯定不能照搬父 Agent——专用 Agent 应该收窄权限

    父级的高权限授权也不该被子 Agent 随意覆盖,子 Agent 只能在父级允许的范围内收窄。

    用户在会话中临时点击”允许”的权限,也不会自动扩散给子 Agent。

    1. bypassPermissions:父级开启 → 子 Agent 不能降级

    2. acceptEdits:父级开启 → 子 Agent 不能降级

    3. agentDefinition.permissionMode:子 Agent 自定义,仅在父级非高权限时生效

    遇到异步 Agent 强制shouldAvoidPermissionPrompts: true,遇到未预授权操作直接拒绝,不弹窗等待用户确认 

    此外,CC在这里面还加了工具权限隔离,区分全局授权和父Agent临时批准给某个子Agent的权限。

    3. 上下文:它启动时知道什么?

     Agent 启动时会读取外部存储(CLAUDE.md、git 状态),组装成初始上下文。

    不同类型的 Agent 会做裁剪——只读型的 Agent 不需要提交规范,就不给它这些信息,省 token 也减少噪音。   

    这个设计就比较比较简单了,加载上下文后按 Agent 类型裁剪:  

    • Explore / Plan → 去掉 CLAUDE.md + git 状态(只读型不需要)    

    • 其他 → 保留完整

    4. 执行循环:它怎么持续运行?直到完成任务

    Agent 不是一次调用就结束,它要反复"想→做→看结果→再想",直到任务完成或达到限制(如时间、token 数量)。 

    核心是一个异步循环:   

    forawait (message of query(...)) {          记录消息          yield 给上层调用者      }

    query() 内部处理 "LLM 调用 → 工具执行 → 结果返回 → 再次 LLM  调用"的循环逻辑,runAgent 负责把每一轮的消息记录下来并向上传递。

    4.  终止:干完活后,它怎么离场?

     Agent 运行期间会申请很多资源:MCP 服务器连接、注册的 hooks、内存缓存、后台 shell 任务……Agent 结束后如果不主动释放,这些会一直占用资源   

    runAgent.ts将所有清理逻辑放在 finally {} 里:MCP 连接关闭、缓存释放、后台任务终止。

    不管是正常结束、报错还是被中断,清理都必须执行~

    任何用的Agent 框架(Claude Code、LangChain、CrewAI)都绕不过这五件事,只是实现方式有区别

    我自己做实验不需要完整复现 runAgent.ts 的所有,因为那相当于再手搓一个残缺框架,重复造轮子,

    只把自己感兴趣的地方最小成本复现出来,先挑的就是执行循环验证,完成单个Agent loop,简单来说就是完成

    发消息 — LLM判断是否要调用工具 —  调用工具,工具结果放回message — 继续问LLM — 直到模型不要工具

    这显然对新手更友好,接下来简单说下各部分的设计


    二、第一个部分:先确认模型能正常回话

    第一个实验先写的是 experiments/01_hello.py,负责调通和大模型的对话.env是包含 API key 的环境变量文件,提前配置好自己用的模型。

    • 读 .env
    • 创建 OpenAI client
    • 发一条消息
    • 打印回复
    • 打印 token 用量

    这个很简单,token 用量也不多,跑完这个,说明LLM 调用链路通了。

    Agent 虽然还没开始干活,但Agent后面都要接模型的,所以先确认Agent和模型能通话。


    三、第二个部分:让模型自己决定调不调工具

    第二个文件是 experiments/02_tools.py

    这一轮开始有点 Agent 的内容了,里面写了个特别简单的本地函数:

    python
    def get_current_time():    return datetime.now().strftime("%Y年%m月%d日 %H:%M:%S")

    然后把它包装成 function calling 的工具定义,交给模型。

    用户给的问题是:问几月几号,模型不会硬答,返回的就是工具调用

    text
    函数名: get_current_time参数: {}执行结果: 2026年05月30日 20:56:01

    程序执行完本地函数以后,把结果作为tool 消息塞回messages,再发第二次 API 请求。

    最后模型回答:

    text
    今天是2026年5月30日。

    调用日期本身没什么技术含量,不过这个模型能通过工具调用获取到当前时间的链路是可以跑通的

    text
    模型提出工具调用  ↓程序执行本地函数  ↓工具结果回填 messages  ↓模型基于结果继续回答

    这一步跑通以后,模型已经不只是在聊天,它开始能通过工具去碰外部世界。

    这里还有复现的时候,发现有个小点很重要,python里面写的:tool_calls 不能悬空。

    模型说“我要调用这个工具”,程序就必须给它一个对应的工具结果。这个对应关系靠 tool_call_id 串起来。

    如果中间断了,消息历史就不完整,下一轮就容易出错。之前看runAgent.ts里的 filterIncompleteToolCalls 时,对这个点还停留在源码注释层面,不理解为什么需要专门处理这种残缺消息,自己复现跑完就知道了


    四、第三个部分:加入 while 循环,实现工具调用的loop

    之前的两个都是单次的,后面要价格循环才能实现loop,python里面就是加个while true 

    设计逻辑也不复杂:

    text
    发 messages 给模型如果模型要工具,就执行工具,把结果塞回 messages如果模型不要工具,就打印最终回答,退出

    这里面我加了2个工具,一个获取当前时间,一个计算表达式。

    text
    今天是几号?再帮我算一下 2026 乘以 6

    工具有两个:

    get_current_time、calculate

    比较有意思的是,模型第一轮一次性要了两个工具:

    text
    调用工具: get_current_time({})返回结果: 2026年05月31日 19:56:11调用工具: calculate({"expression": "2026*6"})返回结果: 12156

    第二轮,它停止请求工具,直接给最终回答:

    text
    两个结果都出来了:- 今天是 2026 年 05 月 31 日(19:56)- 2026 × 6 = 12156

    这次一共跑了 2 轮:

    text
    总轮次: 2累计 Total tokens:      1038累计 Prompt tokens:      833累计 Completion tokens:  205

    这轮能看到就是,代码里没有写死“先查时间,再计算”的流程,模型自己判断这个问题是否需要两个工具。

    本地函数读模型的请求,执行工具,把工具结果递回去,这就是最小的 Agent loop


    五、复现完有哪些意外的收获

    项目做其实很简单,按实验一步步走,基本没碰到啥太大的问题:

    text
    0e3e1a4 init: 项目骨架,DashScope + openai 兼容接口80767e2 实验01:单轮对话跑通,验证 API 连通性47ec5cc 实验02-03:单次工具调用 + while循环工具调用,累计token统计

    验证的就是一个最小 Agent loop 里面有几个东西不能少

    messages:是状态

    tool_calls:是模型发出的行动请求

    工具结果是外部世界给回来的反馈

    while: 循环负责让它持续跑

    模型不再请求工具时,任务才自然结束

    这轮实验跑完以后,我对 runAgent.ts 里几个点的理解更具体了。

    第一个是message

    以前我知道 LLM API 是无状态的,每一轮都要把历史重新发过去。但在 02_tools.py 和 03_loop.py 里,messages 的增长过程是能直接看见的:

    text
    user messageassistant tool_callstool resultassistant final answer

    这让我重新理解了一次:Agent 的“记忆”来自程序维护的历史消息,再一轮一轮发回去;模型本身并不会在 API 调用之间保留这些内容。

    这个点和之前读的那篇:

    https://www.anthropic.com/engineering/building-effective-agents;

    文章是一致的   

    context window 更像工作记忆,外部存储靠工具按需拉进来。

    第二个是工具调用的边界

    get_current_time 和 calculate 都很简单,但它们刚好说明了工具的角色:模型只提出调用意图,真实动作由外部程序执行。

    这和runAgent.ts 里的工具裁剪、权限处理是类似的

    模型不能随便做任何事,它只能在你给的工具箱里发请求。工具箱里有什么、参数怎么定义、结果怎么返回,决定了 Agent 能接触到多大的外部世界。

    第三个是循环推出方式

    03_loop.py 的退出条件很单一:没有 tool_calls,就认为模型给出了最终回答。

    但ClaudeCode组作为生产系统,还要加 maxTurnsabort signal 和清理逻辑,这些防止无限循环的机制,因为真实系统里不是所有都会自然退出,还会有卡死、循环死、用户等不及kill等一系列问题

    maxTurns是为了防止模型无限循环,abort signal 是为了防止用户中断,clean up 是为了防止后台任务清理。

    第四个是日志和运行入口

    这个是我加给实验的记录,Trae本身自己做终端脚本运行的时候,log路径写的稀奇古怪,还有些编码问题,其他Agent审阅的时候,并不能找准,所以就补了这个基础要求。

    此外,还有些其他的小的容易踩坑的点

    Windows终端里看中文,很容易乱码,所以后面的实验的脚本都加了这一段:

    python
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")

    还有最小跑通的这个指令,带来的安全性问题

    比如第三部分,03_loop.py 里的calculate工具现在是用 eval() 算表达式

    自己做测试这么写很方便,能快速验证“模型调用计算工具”这个机制

    但这东西肯定进不了正式环境,这就是代码注入风险


    六、下一步功能拆什么

    跑完这个之后,我想过一个问题:要不要继续补完整

    不过后来感觉这个意义不大,因为真正做的时候,估计直接用 LangChain 或者 OpenAI Agent SDK这种框架就行

    后面应该会写复盘写CC的父子 Agent 怎么拆任务。

    因为一个 Agent 处理单任务,大致流程是这样子,但现实里的问题基本都更复杂

    一个任务太大怎么办?要不要拆给多个 Agent 并行干?拆了之后结果怎么汇聚回来?父 Agent 和子 Agent 的上下文怎么传、怎么隔离?

    ClaudeCode 设计里面,父 Agent 可以把完整的对话上下文 fork 给多个子 Agent,每个子 Agent 拿到一份相同的历史加上各自的任务指令,并行执行,最后汇报结果,这是对Context Window 中每一个token的极致利用

    所以,下一篇应该会复盘下父子 Agent 拆任务的机制~


    做这个事情有啥意义

    其实CC源码泄露后,与其自己看,丢给Agent自己学,肯定是效率更高的一种方式,不过Agent会,和我会,中间其实还是会有个更巨大的gap

    所以,系列开这个项目的复盘,就是帮助自己,从“让Agent能跑,但我知道Agent为什么能跑,怎么跑会更好”

    这次用 opencode 生成最小 loop,再对照源码和日志复盘,反而把很多忽视的问题带出来了

    有些问题想明白以后,再去看 LangGraph、CrewAI、Dify,或者继续读 Claude Code / Codex 的 harness,感觉会不一样。

    你会不自觉开始看它怎么设计runtime:

    怎么组上下文?给工具设边界?怎么退出?恢复?记录?怎么避免Agent自己绕死自己

    这个系列应该会持续更新,但是时间频率会慢一些,因为还有其他想看的主方向,但如果这个对你有帮助

    欢迎一键三连,下篇文章见~

    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-06-02 22:27:15 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/701880.html
    2. 运行时间 : 0.119853s [ 吞吐率:8.34req/s ] 内存消耗:4,718.22kb 文件加载:145
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=e11d1fb6f6d2ccd6d46e7ab7ebefbbdd
    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.000536s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000738s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000302s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000306s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000506s ]
    6. SELECT * FROM `set` [ RunTime:0.000213s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000559s ]
    8. SELECT * FROM `article` WHERE `id` = 701880 LIMIT 1 [ RunTime:0.004609s ]
    9. UPDATE `article` SET `lasttime` = 1780410435 WHERE `id` = 701880 [ RunTime:0.006423s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000251s ]
    11. SELECT * FROM `article` WHERE `id` < 701880 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000467s ]
    12. SELECT * FROM `article` WHERE `id` > 701880 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000392s ]
    13. SELECT * FROM `article` WHERE `id` < 701880 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000753s ]
    14. SELECT * FROM `article` WHERE `id` < 701880 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002174s ]
    15. SELECT * FROM `article` WHERE `id` < 701880 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004467s ]
    0.121633s