乐于分享
好东西不私藏

ECC 源码架构解析:别把配置大全当能力本身

ECC 源码架构解析:别把配置大全当能力本身

ECC 最容易被看轻,因为它的外表很像一个配置仓库。

我更在意的是另一件事:它把团队工作方式拆成了不同 AI Coding 工具都能加载的部件,skill、rule、command、hook、MCP、插件 manifest,各归各位。

这件事听起来不性感,但很接近 AI Coding 进团队后的真实问题:模型已经够强了,团队经验怎么进模型的工作现场?

先别把它当配置仓库

看 ECC 这种仓库,第一反应很容易是:

这不就是一大堆 Claude Code / Codex / Cursor / OpenCode 配置吗?

如果只看文件数量,这个判断也不算离谱。

仓库里能看到 .claude.codex.cursor.opencode.kiro.github.agents 等多套目录,还能看到 skills、rules、commands、hooks、MCP 配置、GitHub prompt、团队配置和企业控制文件。

只停在“配置大全”这个判断,后面的架构就看不到了。

ECC 更像是在回答一个更难的问题:

怎么把一套工程团队的方法论,迁移到不同 AI Coding Harness 里?

这里的 Harness 可以理解成 AI Coding 工具的运行壳:Claude Code、Codex、Cursor、OpenCode、Gemini CLI、Kiro 等。模型负责生成和推理,Harness 负责加载指令、暴露工具、执行命令、触发 hook、管理上下文和权限。

ECC 的源码形态说明了一件事:

AI Coding 的能力不是只从模型参数里长出来的。它还来自宿主加载了什么规则、暴露了什么工具、在哪些事件上拦截、用什么流程逼 Agent 验证。

我按这个问题往下读源码。

一套能力包,拆成六层

ECC 的入口很多,能串起来的主要是六层:

插件层:.claude-plugin / .codex-plugin技能层:.agents/skills / .claude/skills规则层:.claude/rules / .cursor/rules / .codex/AGENTS.md命令层:.claude/commands / .github/promptsHook 层:.cursor/hooks/*工具层:.mcp.json / .codex/config.toml / ecc-tools.json

看起来散,其实职责并不一样。

插件层回答“怎么被宿主发现和安装”。

技能层回答“什么时候该触发哪套工作流”。

规则层回答“在这个仓库里什么能做,什么不能做”。

命令层回答“某类任务应该怎么启动”。

Hook 层回答“在 prompt 提交、文件编辑、shell 执行前后怎么拦一下”。

工具层回答“Agent 能调用哪些外部能力”。

如果用普通工程系统类比,ECC 不是一个业务服务,更像一个跨 IDE / CLI 的“团队工程制度发布包”。

它把团队规范拆成文件,然后投递到不同 Harness 能识别的位置。

普通 prompt pack 到这里就结束了。ECC 还多了一层分发、适配和运行时约束。

把它放进一次真实 session 里看,会更清楚:

安装阶段:manifest 把 skills / commands / MCP 注册给宿主启动阶段:AGENTS.md、rules、默认配置进入上下文任务阶段:用户用 command 或自然语言启动某类工作流执行阶段:skill 约束步骤,MCP 提供外部能力事件阶段:hook 在 prompt、tool、edit、stop 等节点插入检查收尾阶段:verification / review / compact 把结果和证据整理出来

这条链路里,模型只占中间一段。前面有加载,旁边有工具,后面有验证。

ECC 这类仓库和“收藏一堆 prompt”的差别也在这里:prompt 是一次输入,能力包是运行时环境。一个只影响模型下一段话,另一个影响 Agent 从看到需求到收尾验证的整条路径。

插件层:让能力包先被宿主识别

先看两个 manifest。

.codex-plugin/plugin.json 里声明了:

{  "name": "ecc",  "version": "2.0.0-rc.1",  "skills": "./skills/",  "mcpServers": "./.mcp.json",  "interface": {    "displayName": "ECC",    "category": "Coding",    "capabilities": ["Interactive", "Read", "Write"]  }}

.claude-plugin/plugin.json 则把 Claude Code 能识别的入口列出来:

{  "name": "ecc",  "version": "2.0.0-rc.1",  "skills": ["./skills/"],  "commands": ["./commands/"]}

这两个文件的意义不在字段本身,而在抽象边界:

插件 manifest 只声明能力入口,不直接规定每一步怎么做。具体行为规则在 skills、commands、hooks、rules、MCP 里。

也就是说,插件层是发现机制,不是能力本体。

很多人装插件时会问“这个插件是不是能让模型更聪明”。更准确的问法应该是:

这个插件把哪些能力入口注册进了 Harness?这些入口会在什么时机进入模型上下文?哪些入口会变成可执行工具?哪些入口只是可读规则?

ECC 的 manifest 给了一个最小答案:Codex 侧暴露 skills 和 MCP,Claude 侧暴露 skills 和 commands。

不同宿主能接住的能力不同,所以同一套方法论必须做适配。

技能层:把“该怎么做”拆成可触发工作流

.agents/skills/ 下面有很多 SKILL.md,比如:

tdd-workflowverification-loopsecurity-reviewstrategic-compactapi-designbackend-patternsfrontend-patternseval-harnessdeep-researchdocumentation-lookup

这些文件不是普通说明文。

它们的典型结构是:

---name: verification-loopdescription: "A comprehensive verification system for Claude Code sessions."---

然后正文规定什么时候触发、怎么执行、输出什么格式。

比如 verification-loop 不是泛泛地说“写完要测试”,而是把验证拆成构建、类型检查、lint、测试、安全扫描、diff review 六段,并要求输出固定报告。

这类 skill 的作用是把模糊要求变成可执行流程:

“注意质量”  ↓build / typecheck / lint / test / security / diff  ↓结构化 verification report

这才是 Agent 可执行的东西。

模型并不缺“知道要测试”的常识。缺的是在上下文复杂、用户催促、任务很长的时候,还能坚持走完整流程。

Skill 的价值就在这里:

把经验压成触发条件和执行步骤,让 Harness 在合适时机把它喂给模型。

规则层:不是让模型自由发挥,而是给它仓库边界

ECC 还有一层容易被忽视:rules。

例如 .claude/rules/everything-claude-code-guardrails.md 里有 prompt defense、commit workflow、architecture、code style、detected workflows 等内容。

里面有一句提示很值得保留:

Generated by ECC Tools from repository history. Review before treating it as a hard policy file.

这句话很工程化。

它承认规则可以从仓库历史生成,但不能盲信。也就是说,ECC 并不是把生成结果伪装成绝对真理,而是把它变成可审查的规则文件。

团队落地 AI Coding,绕不开这一步:

不要只把规范写在人的脑子里。也不要只靠模型“理解项目风格”。把规范落成文件,让 Agent 每次都能读到。

这里可以用一个退款 Agent 的例子来理解。

如果项目里有这样的隐含规则:

退款金额不能由前端传入值直接决定。必须以后端订单明细、支付流水、优惠券抵扣重新计算。

你把它写成 prompt,可能某次有效。

你把它写进仓库规则,并让 Harness 在相关文件读取或编辑时注入,才更接近工程控制。

规则层管的就是这些不该靠临场发挥的边界。

Hook 层:把“事后提醒”改成“事件拦截”

ECC 里 .cursor/hooks/ 很值得看。

例如 before-submit-prompt.js 会读取用户提交的 prompt,检查里面是否像是带了 OpenAI key、GitHub token、AWS key、Slack token、private key。如果匹配到,就在提交前打印警告。

伪代码大概是:

const prompt = input.prompt || input.content || input.message || "";const secretPatterns = [  /sk-[a-zA-Z0-9]{20,}/,  /ghp_[a-zA-Z0-9]{36,}/,  /AKIA[A-Z0-9]{16}/,  /xox[bpsa]-[a-zA-Z0-9-]+/,  /-----BEGIN (RSA |EC )?PRIVATE KEY-----/];for (const pattern of secretPatterns) {  if (pattern.test(prompt)) {    console.error("[ECC] WARNING: Potential secret detected in prompt!");  }}

这段代码不复杂,但能看出 hook 的作用:

不要等模型生成完再提醒。在事件发生前后插入检查点。

在 AI Coding 里,很多风险不是“模型不知道”,而是“没有人在那个时机拦”。

比如:

  • • 提交 prompt 前检查是否泄露密钥;
  • • 执行 shell 前检查危险命令;
  • • 读文件后注入附近规则;
  • • 编辑文件后跑格式化或安全检查;
  • • session 结束时保存摘要;
  • • compact 前把重要状态写到 memory。

Hook 把 AI Coding 从“聊天”变成“事件驱动系统”。

没有 hook,很多约束只能写在 prompt 里。

有 hook,约束就可以挂到真实操作点上。

命令层:把高频任务变成入口,而不是每次重新讲需求

ECC 还有 .claude/commands/ 和 .github/prompts/

例如:

.claude/commands/database-migration.md.claude/commands/feature-development.md.claude/commands/add-language-rules.md.github/prompts/tdd.prompt.md.github/prompts/security-review.prompt.md

这些文件的作用不是让用户少打几个字那么简单。

它们把高频任务的启动方式标准化了。

“做一个数据库迁移”不是一句话能讲清的。它通常涉及 schema、migration、回滚、数据兼容、测试、发布顺序。如果每次都靠用户临时描述,Agent 的执行路径一定会漂。

命令层把这类任务变成固定入口:

/database-migration  ↓读取迁移工作流  ↓按固定顺序检查 schema / migration / types / tests  ↓输出可审查结果

这和公司里沉淀 runbook 是同一件事。

只是读 runbook 的人,变成了 Agent。

工具层:MCP 不是越多越好,默认边界更要紧

ECC 的 Codex 指南里有一段对 MCP 的说明:

Treat the project-local .codex/config.toml as the default Codex baseline.

它还强调配置合并策略:

Add-only by defaultExisting servers are never modified or removedDrift warningsUser config is always preserved

这比“我给你配了 7 个 MCP”更重要。

MCP 工具一多,真实问题不是“能不能调用”,而是:

谁来管理这些配置?新增工具会不会覆盖用户已有配置?凭证放哪里?远程工具默认是不是只读?高风险操作要不要用户确认?

ECC 的 .codex/AGENTS.md 里还写了外部动作边界:networked tools 默认按只读处理;posting、publishing、pushing、merging、opening paid jobs、changing third-party resources、modifying credentials 需要明确用户批准。

有工程价值的是这层边界感。

不是“接了很多工具”。

而是“工具接进来以后,谁负责权限和边界”。

这里还有一个更底层的判断:跨宿主能力不是等价的。

ECC README 里明确写到,Codex 还没有 Claude-style hook execution parity。也就是说,Claude Code 里可以靠 hook 做运行时拦截的东西,到 Codex 侧就要退回到 AGENTS.mdmodel_instructions_file、sandbox / approval 设置和 MCP 配置上。

这不是一个小差异。

如果一个团队把“安全检查”全部设计成 hook,那它迁移到 Codex 以后就会丢一部分执行力。反过来,如果你把所有约束都写成长期指令,Claude Code 里又会浪费 hook 能提供的事件拦截能力。

所以 ECC 的跨宿主适配,本质上不是文件路径映射,而是能力降级:

Claude Code:plugin manifest + skills + commands + hooks + MCPCodex:AGENTS.md + skills + MCP + sandbox/approval + agent rolesCursor / OpenCode:rules / hooks / MCP 能力各有差异

这也是为什么 .claude/ecc-tools.json 里会记录 selectedComponentsselectedPackagesdependencyGraphresolutionOrdermanagedFiles。它不是只在复制文件,而是在保存一次“能力选择和投递计划”。

工程上最怕的是假装所有宿主一样。ECC 的价值,恰好在它把这些不一样暴露了出来。

ECC 的运行模型:把团队经验编译成 Harness 能加载的文件

把这些层串起来,ECC 的运行模型大概是:

团队经验 / 仓库历史 / 工作流  ↓生成或维护 skills、rules、commands、hooks、MCP 配置  ↓按 Claude / Codex / Cursor / OpenCode 等宿主格式投递  ↓Harness 在 session、prompt、tool、edit、command 等时机加载  ↓模型在更强约束下执行 AI Coding 任务

所以 ECC 的价值不在“文件够多”。

文件多只是表象。

架构点在这里:

同一套工程制度,要能被多个 Agent Harness 消费。

这件事做不好,就会变成到处复制粘贴规则。

做得好,团队规范就能像依赖一样升级、裁剪、审查。

这里还有一个容易忽略的工程点:ECC 把“生成”和“运行”分开了。

规则可以从仓库历史生成,MCP 可以按 profile 安装,skills 可以按宿主投递。但这些生成出来的文件,最终还是落到 .claude.codex.cursor.opencode 这类宿主目录里,由 Harness 在运行时读取。

这就避免了一种常见坏味道:所有东西都塞进一个超级 prompt。超级 prompt 读起来很完整,运行时却很难知道哪句话在什么时候生效,也很难禁用其中一段。拆成文件以后,至少可以做到:

规则可以审查技能可以按任务触发命令可以单独维护MCP 可以按权限裁剪hook 可以挂到具体事件

从团队治理角度看,这比“写一份万能提示词”更像工程资产。

一个具体例子:退款逻辑怎么进入 Agent

假设你们在做一个订单退款系统,真实约束是:

退款金额必须由后端重新计算;优惠券、余额、支付渠道、部分退款都要进入计算;高金额退款需要审批;退款接口必须幂等;每次退款状态变化要写审计日志。

如果只靠用户在聊天框里写:

帮我实现退款,注意安全。

Agent 很容易只写 happy path。

按 ECC 的思路,这些约束会被拆到不同层:

rules:退款金额、审批、审计、幂等规则skills:api-design、security-review、verification-loopcommands:feature-development 或 database-migrationhooks:编辑后跑测试、提交前查密钥MCP:查订单文档、查接口规范、跑测试、查日志

当 Agent 修改 refund-service 文件时,规则层告诉它业务边界。

当它准备提交时,verification skill 逼它跑验证。

当它调用外部工具时,MCP 权限边界决定它能查什么、能不能写。

当 prompt 里出现敏感 token,hook 在提交前拦一下。

这不是“更会写代码”。

这是把 Agent 放进一个有制度的工程环境。

别急着全量照抄

这类仓库最容易出两个问题。

第一个是上下文污染。

skills、rules、commands、hooks、MCP 都有用,但不是每一条都应该在每次任务里出现。无关规则太多,模型会被噪声拖慢,甚至把不相关约束误用到当前任务。

所以好的能力包必须能裁剪。

ECC 的 ecc-tools.json 里能看到 profile、selectedComponents、selectedPackages、dependencyGraph、managedFiles 这类字段,说明它不是简单全量复制,而是在做 install plan。

第二个是规则陈旧。

仓库演进后,生成规则可能过期。比如测试框架换了、包管理器换了、目录结构变了,旧规则继续注入,Agent 反而会稳定地做错事。

所以规则层一定要有审查和再生成机制。

所以 Generated by ECC Tools from repository history. Review before treating it as a hard policy file. 这句话值得保留。

团队该怎么抄

如果你想借鉴 ECC,我建议别从“复制所有配置”开始。

先问五个问题:

1. 哪些规则必须每次进入上下文?2. 哪些能力只在特定任务触发?3. 哪些风险应该用 hook 拦,而不是写进 prompt?4. 哪些工具默认只读,哪些需要确认?5. 规则变更以后,怎么测试和回滚?

一个团队需要的 AI Coding 能力包,通常不必一开始做得很大。

最小可用版本可以只有:

AGENTS.md:项目边界和工作方式skills:验证、代码审查、安全审查rules:语言规范、业务边界、危险操作hooks:密钥扫描、危险命令、编辑后检查MCP:文档检索、代码搜索、测试执行

先把这几层跑通,再扩 agents、commands、memory、parallel workflow。

不要反过来。

否则配置越多,Agent 越像背着一车过期 SOP 的实习生。

为什么这类仓库会火

AI Coding 工具正在从“聊天框”变成“工程系统”。

早期大家关心模型会不会写代码。

现在该问的是:

它有没有流程?有没有边界?有没有上下文?有没有验证?有没有权限?有没有团队规范?

ECC 的源码恰好把这些问题摊在了文件系统里。

它不是一个可以无脑复制的答案。

它更像一个信号:AI Coding 的下一段竞争,不只是“谁的模型更会写代码”,而是谁能把团队的工程纪律变成 Agent Harness 能加载、能触发、能验证的能力层。

资料来源

  • • affaan-m/everything-claude-code / ECC,源码快照:edebcc89efa09dc2705748151d98286ff3bb6023,2026-06-08。
  • • README.md:项目定位、跨 Harness 支持、版本说明。
  • • .codex-plugin/plugin.json.claude-plugin/plugin.json:Codex / Claude Code 插件入口。
  • • .codex/AGENTS.md:Codex 侧 skills、MCP、外部动作边界。
  • • .agents/skills/*/SKILL.md:TDD、verification、security、context compact 等技能定义。
  • • .claude/rules/everything-claude-code-guardrails.md:仓库规则与 prompt defense 基线。
  • • .cursor/hooks/before-submit-prompt.js:prompt 提交前密钥模式检查。
  • • .claude/ecc-tools.json:install profile、dependency graph、managed files。
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-24 21:14:21 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/767912.html
  2. 运行时间 : 0.084134s [ 吞吐率:11.89req/s ] 内存消耗:4,765.84kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=68df4c92d7796accf6a0a4e6cc67995d
  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.000400s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000727s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000812s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000291s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000699s ]
  6. SELECT * FROM `set` [ RunTime:0.000245s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000774s ]
  8. SELECT * FROM `article` WHERE `id` = 767912 LIMIT 1 [ RunTime:0.000553s ]
  9. UPDATE `article` SET `lasttime` = 1784898861 WHERE `id` = 767912 [ RunTime:0.000988s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000325s ]
  11. SELECT * FROM `article` WHERE `id` < 767912 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000534s ]
  12. SELECT * FROM `article` WHERE `id` > 767912 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000489s ]
  13. SELECT * FROM `article` WHERE `id` < 767912 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000997s ]
  14. SELECT * FROM `article` WHERE `id` < 767912 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000970s ]
  15. SELECT * FROM `article` WHERE `id` < 767912 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000988s ]
0.085785s