乐于分享
好东西不私藏

GStack 的 SKILL.md 模板系统是怎么设计的?一文讲透"代码即文档"

GStack 的 SKILL.md 模板系统是怎么设计的?一文讲透"代码即文档"

2026 年 3 月,Y Combinator 的 CEO Garry Tan 公布了一组数据:过去 60 天,他在全职运营 YC 的同时,用一个叫 gStack 的工具完成了 60 万行生产代码。日均 1-2 万行,一周内 14 万行代码、362 次提交。

一个人,干了一支小工程团队的活。

消息传开后,很多人去看了 gStack 的源码。28 个专业 Skill,覆盖产品讨论、代码审查、QA 测试、浏览器自动化。每个 Skill 背后都有一个 SKILL.md 文件——AI 执行任务时读取的操作手册。

但真正让这套系统跑起来的,不是 Skill 本身,而是生成这些 Skill 文档的模板系统

这篇文章就拆解这个模板系统:它解决什么问题、怎么工作的、有哪些设计原则。最后我会用自己仿写 content-workflow 的真实经历,告诉你哪些坑可以避开。


一、为什么 AI Agent 需要"操作手册"

先想一个问题:你给新员工交代任务,可以说一遍,他不懂会追问。AI 不行。

AI 的特点是执行速度快但容错率低。你给它的文档写错一个命令,它不会说"这个命令好像不对"——它会直接用错误的命令执行下去,然后整个任务失败。

人读文档出了错,问一句就解决了。AI 读文档出了错,整个任务就废了。

所以 gStack 的做法是:给每个 Skill 写一份精确到每一步的操作手册,也就是 SKILL.md。AI 启动时读取这份手册,按步骤执行。手册里写什么,AI 就做什么。不多不少。

问题来了:gStack 有 28 个 Skill,每个 Skill 的手册还要区分 Claude Code 和 Codex 两个环境。手动维护 56 份文档?不现实。

这就是模板系统要解决的事。


二、模板系统的核心机制

2.1 三层架构

gStack 的模板系统只有三个角色:

SKILL.md.tmpl(人写)
       ↓
gen-skill-docs.ts(脚本处理)
       ↓
SKILL.md(AI 用)

模板文件 SKILL.md.tmpl 是人写的,里面用 {{PLACEHOLDER}} 标记需要自动生成的部分。构建脚本 gen-skill-docs.ts 读取模板,找到占位符,调用对应的函数生成内容,最后输出 AI 实际使用的 SKILL.md

人只需要维护模板,文档的生成和同步全部交给脚本。

2.2 占位符与 RESOLVER

模板里长这样:

{{PREAMBLE}}

# browse


{{COMMAND_REFERENCE}}

{{PREAMBLE}}{{COMMAND_REFERENCE}} 就是占位符。脚本处理时,用正则表达式 \{\{(\w+)\}\} 匹配所有占位符,然后查一个叫 RESOLVERS 的字典,找到对应的生成函数:

const RESOLVERS: Record<string, (ctx: TemplateContext) => string> = {
  PREAMBLE
: generatePreamble,
  COMMAND_REFERENCE
: generateCommandReference,
  SNAPSHOT_FLAGS
: generateSnapshotFlags,
  QA_METHODOLOGY
: generateQAMethodology,
  // ... 共 21 个

};

核心替换逻辑就几行:

let content = tmplContent.replace(/\{\{(\w+)\}\}/g, (match, name) => {
  const
 resolver = RESOLVERS[name];
  if
 (!resolver) throw new Error(`Unknown placeholder: {{${name}}}`);
  return
 resolver(ctx);
});

[数据来源:gStack/scripts/gen-skill-docs.ts]

注意这里的设计:遇到未知占位符直接报错,不会静默跳过。这就是"强制验证"——模板写了占位符但没注册 RESOLVER,构建就过不了。

2.3 PREAMBLE:最复杂的占位符

21 个占位符里,{{PREAMBLE}} 是最特殊的一个。它不是一段静态文字,而是由 10 个子函数组合生成的初始化脚本:

function generatePreamble(ctx: TemplateContext): string {
  return
 [
    generatePreambleBash
(ctx),              // bash 初始化
    generateUpgradeCheck
(ctx),              // 升级检查
    generateLakeIntro
(),                     // "Boil the Lake" 原则
    generateTelemetryPrompt
(ctx),           // 遥测提示
    generateAskUserFormat
(ctx),             // 交互格式
    generateCompletenessSection
(),          // 完整性原则
    generateRepoModeSection
(),              // 仓库模式
    generateSearchBeforeBuildingSection
(),  // 建造前搜索
    generateContributorMode
(),              // 贡献者模式
    generateSecurityPrompt
(ctx),            // 安全提示
  ].join('\n\n');
}

这 10 个子函数覆盖了 AI 执行任务前需要知道的所有上下文:环境怎么初始化、遇到测试失败怎么办、该不该搜一下再动手、安全边界在哪。

[数据来源:gStack/scripts/gen-skill-docs.ts generatePreamble 函数]

说白了,PREAMBLE 就是 AI 的"开机自检流程"。每个 Skill 启动时都先跑一遍,确保环境正确、认知对齐。


三、核心设计原则:"代码即文档"

模板系统背后有一个一以贯之的理念:代码即文档(Code as Documentation)。

唯一真相

gStack 的设计是:源代码是文档的唯一来源。不是先写代码再补文档,而是文档从代码自动生成。

最典型的例子是 commands.ts。这个文件定义了 gStack 所有的命令——名称、参数、用途。它同时被三个地方引用:

  • server.ts 运行时读它做命令分发
  • gen-skill-docs.ts 构建时读它生成文档
  • skill-check.ts 测试时读它做健康检查

命令定义只写一次,三个消费者各取所需。

构建时同步

gStack 不是"写完代码记得更新文档",而是"写完代码跑一下构建,文档自动更新"。

bun run gen:skill-docs

一条命令,28 个 Skill 的 SKILL.md 全部重新生成。你改了 commands.ts 里的命令定义,跑完构建,browse 的 SKILL.md 里的命令参考部分就自动更新了。

强制验证

gStack 在 commands.ts 末尾加了一段验证代码:

const allCmds = new Set([...READ_COMMANDS, ...WRITE_COMMANDS, ...META_COMMANDS]);
const
 descKeys = new Set(Object.keys(COMMAND_DESCRIPTIONS));

for
 (const cmd of allCmds) {
  if
 (!descKeys.has(cmd))
    throw
 new Error(`COMMAND_DESCRIPTIONS missing: ${cmd}`);
}

你加了新命令但忘了加描述?构建直接报错。不是提醒,是报错。

[数据来源:gStack/browse/src/commands.ts 验证代码段]

双环境兼容

gStack 同时支持 Claude Code 和 Codex 两个 AI 环境。两个环境的路径、frontmatter 格式、安全机制都不一样。

模板系统通过构建时的自动转换解决这个问题:

if (host === 'codex') {
  content = content.replace(/~\/\.claude\/skills\/gstack/g,
    '~/.codex/skills/gstack'
);
  content = content.replace(/\.claude\/skills\/gstack/g,
    '.agents/skills/gstack'
);
}

一份模板,跑两次构建,输出两个版本。人只维护一份,不会出现"改了 Claude 版忘了改 Codex 版"的情况。

[案例位置:gStack-03 中 Claude vs Codex 路径差异的具体对比]


四、实战:从零搭一个内容创作工作流

理论讲完了,下面用我自己仿写 content-workflow 的过程,演示怎么把这套模板系统用到自己的项目里。

第一步:创建目录和模板

content-workflow/
├── SKILL.md.tmpl           # 人写的模板
├── SKILL.md                # 脚本生成的产物
├── references/
│   ├── content-angles.md   # 内容角度库
│   ├── content-stages.md   # 阶段定义
│   └── platform-specs.md   # 平台规格
└── scripts/
    └── gen-content-skill-docs.ts

模板文件的 frontmatter 声明 Skill 的名称和允许使用的工具:

---
name:
 content-workflow
version:
 1.0.0
description:
 |
  端到端内容创作工作流。包含选题策划、大纲生成、初稿写作、
  审核润色、发布准备全流程。
allowed-tools:
  -
 Read
  -
 Write
  -
 Edit
  -
 WebSearch
  -
 WebFetch
  -
 AskUserQuestion
---

第二步:定义占位符和 RESOLVER

内容创作工作流有 5 个阶段,每个阶段对应一个占位符:

       
                                           
占位符对应阶段
{{TOPIC_PLAN}}选题策划
{{OUTLINE_GEN}}大纲生成
{{DRAFT_WRITING}}初稿写作
{{REVIEW_STEPS}}审核润色
{{PUBLISH_PREP}}发布准备
       
     

在脚本里注册 RESOLVER:

const RESOLVERS: Record<string, (ctx: TemplateContext) => string> = {
  PREAMBLE
: () => generatePreamble(),
  TOPIC_PLAN
: generateTopicPlan,
  OUTLINE_GEN
: generateOutlineGen,
  DRAFT_WRITING
: generateDraftWriting,
  REVIEW_STEPS
: generateReviewSteps,
  PUBLISH_PREP
: generatePublishPrep,
};

模板里只放占位符,具体内容全部由 RESOLVER 函数生成:

## Stage 1: 选题策划

{{TOPIC_PLAN}}

## Stage 2: 大纲生成

{{OUTLINE_
GEN}}

第三步:处理参考文件

内容角度库有 8 种内容类型、80 多个标题模板。平台规格覆盖 6 个平台。

错误做法:把这些内容直接塞进 SKILL.md(我一开始就是这么干的,文件膨胀到 20KB+)。

正确做法:放在 references/ 目录下,在 SKILL.md 里只放路径引用:

内容角度库详见 [references/content-angles.md](references/content-angles.md),
执行时读取该文件获取 8 种内容角度。

AI 需要时按需读取,不会一股脑全加载。

第四步:构建验证

bun run scripts/gen-content-skill-docs.ts --dry-run

先 dry-run 预览,确认没有未知占位符、没有格式问题,再正式生成。


五、踩过的坑和实际教训

仿写过程中踩了几个坑,值得提前知道。

坑一:内容重复冗余

现象:SKILL.md 膨胀到 500+ 行,每个阶段的内容出现了 2-3 遍。

原因:模板里硬编码了一版内容,RESOLVER 函数里又生成了一版。两份内容同时出现在最终产物里。

解决:模板里只放占位符,具体内容全部交给 RESOLVER。一个内容只有一个来源。

坑二:参考文件内联导致膨胀

现象:content-angles.md 和 platform-specs.md 的全部内容被读出来塞进 SKILL.md,文件超过 20KB 被截断。

原因:RESOLVER 里用 fs.readFileSync 把参考文件内容原样注入。

解决:改为路径引用,AI 按需读取。SKILL.md 体积从 20KB 降到 4KB。

坑三:占位符是空壳

现象{{PREAMBLE}}{{COMPLETION_STATUS}} 注入的只是一句"使用时需替换"。

原因:占位符注册了但函数没实现,占位符变成了无意义的占位文字。

解决:要么实现真正的功能(PREAMBLE 改为执行前检查指令),要么直接删掉(COMPLETION_STATUS 当前不需要就删)。

坑四:路径硬编码

现象:脚本里用 path.join(ROOT, '..', '..', '..') 定位项目根目录,换一台机器或改一层目录就崩。

解决:改为向上查找 .gitAGENTS.md 来动态定位项目根:

function findProjectRoot(startDir: string): string {
  let
 dir = startDir;
  while
 (dir !== path.dirname(dir)) {
    if
 (fs.existsSync(path.join(dir, '.git'))) return dir;
    dir = path.dirname(dir);
  }
  throw
 new Error('Project root not found');
}

结语

gStack 的模板系统看起来简单——模板加占位符加构建脚本——但它解决的是 AI 工程化中一个基础问题:怎么让 AI 的"知识"永远准确、永远最新

对于人来说,文档不准确可以追问。对于 AI 来说,文档就是它的全部认知。文档错了,AI 就错了。模板系统保证了文档从代码自动生成,不会和代码脱节。

如果你想给自己的 AI Agent 搭一套类似的系统,核心就三步:

  1. 1. 建目录SKILL.md.tmpl + scripts/gen-skill-docs.ts
  2. 2. 写占位符:识别哪些内容应该自动生成,用 {{PLACEHOLDER}} 标记
  3. 3. 跑构建:一条命令生成最终产物,验证无误后提交

gStack 开源在 GitHub(https://github.com/garrytan/gstack),MIT 协议。fork 下来,改成你自己的模板系统,让 AI 用上永远准确的操作手册。

                 
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-01 16:59:44 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/572289.html
  2. 运行时间 : 0.262219s [ 吞吐率:3.81req/s ] 内存消耗:4,564.73kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=7cdec02ee9f31a50f33f1181f82296f1
  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.001056s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001811s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000771s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000873s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001381s ]
  6. SELECT * FROM `set` [ RunTime:0.000527s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001485s ]
  8. SELECT * FROM `article` WHERE `id` = 572289 LIMIT 1 [ RunTime:0.006553s ]
  9. UPDATE `article` SET `lasttime` = 1777625984 WHERE `id` = 572289 [ RunTime:0.043083s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000663s ]
  11. SELECT * FROM `article` WHERE `id` < 572289 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001249s ]
  12. SELECT * FROM `article` WHERE `id` > 572289 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004254s ]
  13. SELECT * FROM `article` WHERE `id` < 572289 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001446s ]
  14. SELECT * FROM `article` WHERE `id` < 572289 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.006621s ]
  15. SELECT * FROM `article` WHERE `id` < 572289 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003912s ]
0.266672s