乐于分享
好东西不私藏

为什么所有 AI 工具都在用 TypeScript

为什么所有 AI 工具都在用 TypeScript

上个月我在做一件无聊的事:翻 GitHub 上的 MCP server 仓库。

MCP 发布一年多,GitHub 上已经长出上千个 server 实现。我花了一个下午,按星标从高到低翻了大约三十个。

翻到第二十个的时候,我停下来。

不对劲。

这三十个仓库里,二十多个是 TypeScript 写的。剩下的零星几个 Python,一两个 Go,偶尔一个 Rust。当然,"所有"是夸张了——但比例悬殊到让人想问一个基本问题:为什么?

TypeScript 不是一门"前端语言"吗?AI 的主流生态不是 Python 吗?PyTorch、TensorFlow、LangChain、HuggingFace——AI 世界的基础设施几乎全是 Python 写的。为什么在 AI 工具这个新兴领域,TS 的占有率能碾压式地超过 Python?

我后来花了一些时间研究这件事。结论让我意外——或者说,让我意识到我一直在用错误的框架理解这个问题。我以为这是一个"开发者偏好"问题。实际上,这关乎 AI 怎么理解工具接口。

翻 GitHub 仓库的发现

一、表面答案:所有人都在说的三件事

在你搜索"为什么 AI 工具用 TypeScript"时,大概率会看到三个答案。

类型安全。TS 的静态类型系统能在编译期捕获错误。对于需要处理复杂数据流的 AI 工具来说,一个 Agent 可能同时编排十几个工具调用,每个调用的参数和返回值格式都不同,类型检查是基础设施。没有类型,你在运行时才知道某个工具返回了 null 而你在对它取属性。有了类型,编辑器直接给你画红线。

全栈统一。前后端都用同一种语言,团队不需要在 Python 后端和 React 前端之间切换。一个人能从数据库查询写到 UI 渲染,中间不用换脑子。YC 最近两批(2025-2026)大量 AI 创业公司选了 TypeScript 做全栈。对于 3-5 人的早期团队来说,少一门语言就是少一个招人岗位。

npm 生态。npm 是世界上最大的包管理器,超过两百万个包。AI 工具需要的各种集成(HTTP 客户端、JSON 解析、OAuth 认证、数据库 ORM、WebSocket、队列)在 npm 上都有现成的轮子。更重要的是 npx,一行命令就能运行一个包,不需要全局安装。这让 AI 工具的分发摩擦接近零。

这三个答案都对。但它们有一个共同的问题:它们解释的是"人"为什么喜欢 TypeScript。

人喜欢类型安全,因为能少写 bug。人喜欢全栈统一,因为能少学一门语言。人喜欢 npm,因为能少造轮子。这些都是开发者体验的视角,DX 视角。从 DX 视角看,TypeScript 确实好。但 DX 好的语言不只 TypeScript 一个。Kotlin 的 DX 也很好,Swift 的 DX 也很好,为什么它们没有在 AI 工具领域占一席之地?

如果我们换一个视角呢?如果 AI 自身也在"选择"这门语言呢?

Python雾团 vs TypeScript清晰卡片:AI视角的信息量对比

二、第一性原理:LLM 眼中的世界

让我们从 AI 怎么理解代码说起。

一个大语言模型本质上在做一件事:接收一段 token 序列,预测下一段 token 序列。它不"理解"代码的语义,至少不像人类那样理解。它不会"执行"代码去看结果,至少在理解工具接口定义这件事上不会。它做的是:从输入的结构化信息中,推断出统计学意义上最可能的正确输出。

这意味着一个核心推论:

你给 AI 的信息越结构化、约束越明确,它输出正确结果的概率就越高。

这不是猜测——大量 function calling 的工程实践验证了这一点。当你在 prompt 中写"请输出一个 JSON"时,模型能给出正确 JSON 的概率远高于你写"请输出一些数据"。因为"JSON"这个约束大幅缩小了可能的输出空间。

同样的逻辑适用于 AI 如何"理解"一个函数接口。

想象两个场景。

场景一,你给 AI 看一个 Python 函数:

defget_weather(city, unit="celsius", days=None):"""获取天气信息"""    ...

AI 看到这段代码,需要做多少"猜测"工作?

  • city 的类型是什么?从参数名推断大概是字符串。但万一是城市 ID(整数)呢?AI 不确定。
  • unit 只能是 "celsius" 或 "fahrenheit" 吗?还是也接受 "kelvin"?从默认值看只有 celsius,但没有约束说明。AI 不确定。
  • days 是什么?天数?日期列表?如果是天数,范围是多少?AI 不确定。
  • docstring 只写了"获取天气信息"——和没说一样。

AI 面对的是一个充满歧义的接口。它可以猜,而且大概率猜对——但"大概率"和"确定"之间的差距,在工程中就是 bug 率。

场景二,你给 AI 看同一个函数的 TypeScript 版本:

functiongetWeather(input: {  city: string;  unit: "celsius" | "fahrenheit";  forecast_days?: number// 1-7}): Promise<WeatherResult{ ... }

现在 AI 需要猜什么?什么都不用猜。

  • city 是 string,确定。
  • unit 只能是两个值之一,确定。
  • forecast_days 是可选的 number,确定。

对 LLM 来说,第二种写法的价值在于"我能确定这段代码要什么"。类型声明消除了歧义,把 AI 的"猜测空间"从一个开放集合压缩到一个封闭集合。

换个角度想:类型声明本质上是一种机器可解析的约束。人类可以通过阅读注释、查看文档、运行代码来理解一个接口。但在理解工具接口这个具体场景里,AI 处理的是纯文本形式的 schema 定义。在这个范围内,结构化的类型声明比自然语言注释高效得多。

结构化表示天然比自由文本紧凑——一个 z.enum(["celsius", "fahrenheit"]) 用远少于自然语言的 token 数就传递了完整的约束信息。而同样的约束写在 docstring 里,"unit 参数只接受 celsius 或 fahrenheit",不仅更冗长,还需要 AI 从自然语言中额外提取结构化信息。

这就是我说的"AI 选了 TypeScript"的意思。不是有人投票选了它——而是 LLM 的认知架构,天然更擅长处理结构化的类型约束。偏好还是效率?对 AI 来说没区别。

用一个类比:类型声明之于 AI,就像图纸之于施工队。没有图纸你也能盖房子,但有图纸时所有人都知道该做什么。类型声明就是 AI 的工程图纸。

如果你写过 AI Agent 应用,你可能已经有过类似的体感——当你把一个工具的接口定义写得越精确(参数类型、返回值结构、可选性),AI 调用这个工具的成功率就越高。类型约束减少歧义,减少歧义提升成功率。

Zod → JSON Schema → LLM tool_use 推导链

三、证据:一条推导链的完整拆解

在 MCP 协议、OpenAI 的 function calling、Claude 的 tool use 中,AI 调用外部工具时都需要一个东西:JSON Schema

JSON Schema 是一种描述 JSON 数据结构的标准格式。当你告诉 Claude "你可以调用一个查天气的工具"时,你实际上发送的是一段 JSON Schema,告诉它:"这个工具接受一个 city 参数(字符串)、一个 unit 参数(只能是 celsius 或 fahrenheit)、一个可选的 days 参数(1-7 的整数)"。

这是 AI 理解"这个工具能干什么、需要什么"的唯一途径。不是 docstring,不是注释,不是 README——是 JSON Schema。

现在,问题变成了:哪门语言能最自然地生产 JSON Schema?

答案是 TypeScript。具体来说,是 TypeScript + Zod。

看看从 TypeScript 代码到 AI 可调用的 tool 之间,整条链路发生了什么:

开发者写 Zod schema → 自动转 JSON Schema → 直接作为 LLM tool_use 的 input_schema

让我拆开给你看。

第一步:开发者用 Zod 声明参数类型。

import { z } from"zod";const WeatherInput = z.object({  city: z.string().describe("城市名称,如 Beijing"),  unit: z.enum(["celsius""fahrenheit"]).default("celsius")       .describe("温度单位"),  forecast_days: z.number().min(1).max(7).optional()       .describe("预报天数,1-7"),});

注意这段代码做了什么:它同时声明了类型(string/enum/number)、约束(min/max/enum 值)、描述(.describe())和可选性(.optional())。所有信息在一个地方,格式统一。

第二步:一行代码,自动变成 JSON Schema。

import { zodToJsonSchema } from"zod-to-json-schema";const schema = zodToJsonSchema(WeatherInput);

生成的 JSON Schema:

{"type""object","properties": {"city": { "type""string""description""城市名称,如 Beijing" },"unit": {"type""string","enum": ["celsius""fahrenheit"],"default""celsius","description""温度单位"    },"forecast_days": {"type""number","minimum"1,"maximum"7,"description""预报天数,1-7"    }  },"required": ["city"]}

第三步:这段 JSON Schema 直接就是 Claude/GPT 接收到的工具定义。

没有翻译,没有额外转换,没有信息丢失。开发者用 TypeScript 写的每一个类型约束——字符串、枚举值、数值范围、可选性——一字不差地传递给了 AI。

你意识到这意味着什么了吗?

意味着当开发者写 z.enum(["celsius", "fahrenheit"]) 的时候,他同时在做两件事:

  1. 给 TypeScript 编译器一个约束——编译期检查,传错值直接报错(人的工具链)
  2. 给 LLM 一个约束——AI 知道这个参数只有两个合法值(AI 的工具链)

同一段代码,同时服务人和 AI,核心约束信息几乎无损传递。 这种契合不是有意设计的,但结构上确实合理——Zod 最初是为 TypeScript 的运行时校验设计的,zodToJsonSchema 是后来社区加的转换层。TypeScript 类型系统和 JSON Schema 之间存在结构性的亲缘关系,Zod 只是把它暴露出来了。

我第一次真切体会到这种差异,是在调试一个 Agent 应用的时候。AI 传了一个 "kelvin" 给 unit 参数,运行时才报错。回头看接口定义,果然是 docstring 里漏写了约束——如果用的是 Zod schema,这种情况根本不会发生。

现在让我们看 Python 的等价实现。Python 的 MCP SDK 用 decorator + type hints:

@mcp.tool()asyncdefget_weather(    city: str,    unit: str = "celsius",    days: int | None = None) -> dict:"""获取天气预报。    Args:        city: 城市名称        unit: 温度单位,celsius 或 fahrenheit        days: 预报天数,1-7    """    ...

这段代码的问题在哪?

  • unit: str 告诉 AI 这是一个字符串。但"只能是两个值之一"这个约束,藏在 docstring 的自然语言里。AI 需要从 "温度单位,celsius 或 fahrenheit" 这句话中解析出枚举值。
  • days: int | None 没有 min/max。AI 不知道上限是 7——它可能传 30,运行时才报错。
  • 返回值是 dict——等于没说。什么结构的 dict?有哪些字段?AI 一无所知。

Python 当然能做到和 Zod 一样精确。你可以用 Pydantic:

classWeatherInput(BaseModel):    city: str = Field(description="城市名称")    unit: Literal["celsius""fahrenheit"] = "celsius"    days: Optional[int] = Field(None, ge=1, le=7, description="预报天数")

这和 Zod 几乎等价。但关键在于:Python SDK 的入门教程以 decorator + docstring 为主要示范方式(虽然也支持 Pydantic 集成)。而在 TypeScript 生态中,Zod 就是 MCP SDK 的标准做法——你用 @modelcontextprotocol/sdk,第一个接触到的就是 Zod schema。

这是哪门语言的默认工程实践,天然生产 AI 可消费的结构化信息的问题。TypeScript 的自然写法产出 JSON Schema。Python 的自然写法产出自然语言注释。前者是机器可解析的;后者需要 AI 做一次自然语言理解。

MCP 协议中 Zod 到 tool definition 的工程路径

四、生态信号:行业发生了什么

Anthropic 的 MCP 官方示例仓库中,TypeScript 实现是主推路径。SDK 发布时 TypeScript 版本的文档完整度和示例丰富度明显更高。官方文档中的入门教程、示例代码,TS 版本更完整。协议设计者在工程层面认定 TS 是最佳匹配。

GitHub 上搜索 "mcp server"(2026 年 4 月),按星标排序,前 30 个仓库中 TypeScript 占比超过 70%。翻到第二页,比例依然悬殊。飞轮开始转了——当官方 SDK 和早期社区惯例都指向 TS 时,生态的聚集效应是自我强化的:更多 TS 实现 → 更多 TS 示例 → 新人更容易用 TS 上手 → 更多 TS 实现。

大量 YC AI 创业公司选择了 TypeScript 做应用层开发。这些公司的技术选型考量很现实:3 人团队、3 个月内把 AI 产品推向市场。答案不约而同指向了 TypeScript。

有意思的是,这些创业公司很多在模型训练侧仍然用 Python(因为 PyTorch/TensorFlow 的地位不可动摇),但在应用侧(Agent 逻辑、工具编排、API 集成)一致选了 TypeScript。

这形成了一个清晰的行业分层:

层面
主流语言
核心原因
模型训练
Python
PyTorch/TensorFlow 生态不可替代
应用编排(Agent 逻辑)
TypeScript
类型系统 + 全栈统一 + npm 生态
工具接口(MCP/Plugin)
TypeScript
Zod → JSON Schema 的天然契合
前端展示
TypeScript
React/Next.js 的 Web 原生优势

训练层和应用层的分裂,恰恰验证了核心论点:Python 的优势在"跑模型",TypeScript 的优势在"让 AI 理解工具接口"。两者是分层互补的关系。

模型训练 vs 应用编排 vs 工具接口的语言分层

五、边界:为什么不是 Python、Go、Rust?

让我正面回应三个最常见的反对意见。

"Python 在 AI 领域生态更成熟,为什么不用 Python?"

需要精确界定"AI 领域"。如果你说的是模型训练和数据科学,Python 不可替代,我完全同意。PyTorch 的灵活性、NumPy 的性能、Pandas 的便利性,这些在 TypeScript 世界没有对等物。

但本文讨论的是 AI 工具的应用层。在应用层,Python 的动态类型反而成了劣势。def foo(x, y) 不告诉 AI 任何有用的结构信息,除非你额外加 type hints + Pydantic + 完善的 docstring。而 TypeScript 的类型声明是自然做法——你不需要额外做什么,正常写代码就在生产 AI 可消费的结构化信息。

此外还有一个现实问题:Python 的依赖管理。virtualenv、conda、poetry、pip,包管理器比语言本身还分裂。一个用户想运行你的 MCP server,先得搞清楚用 pip 还是 conda,然后处理依赖冲突。TypeScript 的方案?npx your-mcp-server,一行搞定,零安装摩擦。

有人会说:LLM 对代码的理解能力在快速进步,语言间的差异正在缩小。这说得对——但这里讨论的不是"AI 能不能理解 Python 代码"(它当然能),而是"哪门语言的常规工程实践天然产出 AI 可直接消费的结构化接口定义"。LLM 进步消除的是理解层的差异,消除不了工程链路上的结构性优势。

"Go 性能更强,为什么不用 Go?"

Go 确实在高并发场景比 Node.js 强得多。编译成单个二进制文件的部署便利性也是实打实的优势。但 AI 工具的性能瓶颈不在 CPU,在网络 I/O。一个 MCP server 大部分时间在等 LLM API 返回(通常 1-30 秒),Node.js 的事件驱动模型处理这种 I/O 密集场景绰绰有余。

更关键的问题是 Go 的类型系统。Go 有静态类型,但缺少一些对 AI 而言很重要的表达力:

  • 没有 union type("celsius" | "fahrenheit" 在 Go 里得靠常量+手动校验)
  • 语言原生不支持编译期穷举检查(需依赖第三方 lint 工具)
  • 没有内建的 "description" 机制(需要靠 struct tag 或注释)

对 AI 来说,"有类型"不够——需要"表达力足够丰富的类型"。Go 的类型系统偏实用主义,够用但不够细致。TypeScript 的类型系统偏表达主义——union、intersection、conditional type、template literal type——这些在给 AI 描述约束时极其有用。

"Rust 更安全,为什么不用 Rust?"

Rust 的类型系统表达力甚至比 TypeScript 更强。enum 是 sum type,pattern matching 是穷举的。从纯粹的"类型表达力"角度,Rust 理论上可以做得更好。

但现实中有两个硬伤:

  1. 学习曲线。同样功能的 MCP server,TypeScript 版本的代码量显著少于 Rust 版本。更重要的是认知负担的差异:TypeScript 开发者只需关注业务逻辑,Rust 开发者还需处理所有权和生命周期。AI 工具生态的竞争是摩擦最小化,开发者想在一小时内写完一个 MCP server,Rust 做不到。
  2. 生态体量。npm 有 200 万+包,crates.io 有 15 万。一个 AI 工具开发者需要 OAuth 集成、数据库连接、JSON 处理,npm 上现成的轮子质量和数量都碾压 crates.io。

你不会用 Rust 写一个"帮我查天气"的 MCP server,就像你不会用 C++ 写一个 todo app。场景不需要那么高的认知成本。

核心论点不变:AI 工具选语言的标准和人的直觉不完全一样。人看性能、安全性、成熟度。AI 看的是一件更具体的事:你的类型系统能不能让我确定你要什么、你能给什么。

AI 工具生态的飞轮效应

结尾:回到那个下午

翻 GitHub 的那个下午,我最初以为自己在看一个"社区偏好"问题——就像十年前 Ruby 社区偏好 Rails、Go 社区偏好微服务、Rust 社区偏好命令行工具。

但这次不一样。

TypeScript 在 AI 工具领域的主导地位,来自一个结构性的契合——当 LLM 需要通过 JSON Schema 理解工具接口时,能自动且几乎无损地生成 JSON Schema 的语言,天然占了先手优势。某个框架带起来的风潮做不到这种深度绑定,某个 KOL 的推荐效应也做不到。

这当然是一种拟人化的说法——更准确地讲,是 LLM 的认知架构天然偏好了 TypeScript 提供的结构化信息。但如果允许我用一句话概括:

不是人选了 TypeScript。

是 AI 选了它。

而当 AI 用得越多、生态越成熟、文档和示例越丰富,人也跟着用——这个飞轮一旦转起来,其他语言要追赶就不只是"写一个更好的 SDK"的事了。而 AI 编码助手在 TS 代码上训练得越多,生成 TS 的质量就越高——这又进一步降低了开发者选择 TS 的门槛。你需要改变整个语言的自然做法——让类型声明变成每个开发者的本能习惯,而不是一个需要额外学习的最佳实践。

当我们讨论 AI 工具的语言选型,真正的问题从来不是"开发者喜欢什么",而是"AI 能从你的代码中读出多少确定性"。这两个问题的答案,恰好指向同一门语言。

如果你正在写 AI 工具,不妨打开你的接口定义看一眼:AI 能从中读出多少确定性?如果答案是"不够",也许是时候让类型替你说话了。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-20 09:50:23 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/644472.html
  2. 运行时间 : 0.091679s [ 吞吐率:10.91req/s ] 内存消耗:4,769.61kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=62e3fe62f330a0c2f813e53e6d6671ad
  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.000665s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000898s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000383s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000266s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000583s ]
  6. SELECT * FROM `set` [ RunTime:0.000225s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000654s ]
  8. SELECT * FROM `article` WHERE `id` = 644472 LIMIT 1 [ RunTime:0.000505s ]
  9. UPDATE `article` SET `lasttime` = 1779241823 WHERE `id` = 644472 [ RunTime:0.000807s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000253s ]
  11. SELECT * FROM `article` WHERE `id` < 644472 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000458s ]
  12. SELECT * FROM `article` WHERE `id` > 644472 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000411s ]
  13. SELECT * FROM `article` WHERE `id` < 644472 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000814s ]
  14. SELECT * FROM `article` WHERE `id` < 644472 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001062s ]
  15. SELECT * FROM `article` WHERE `id` < 644472 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000935s ]
0.093367s