乐于分享
好东西不私藏

团队用 AI 写代码,最怕的不是慢,而是没人接得住

团队用 AI 写代码,最怕的不是慢,而是没人接得住

团队用 AI 写代码,最怕的不是慢,而是没人接得住

OpenSpec 工程化实践 03/03。 前两篇分别讲了“为什么要踩刹车”和“如何给 AI 一张施工单”。这一篇把视角放到团队:多人、多需求、多 AI 工具一起进入研发流程时,OpenSpec 怎么落地,才不会变成新的流程负担。

个人用 AI,问题通常还比较好收拾

一个人用 AI 写代码,即使走偏了,问题通常还在自己手里。

上下文是你给的。 代码是你让它改的。 出问题了,也大概率是你自己回头修。

团队里不一样。

一个需求可能来自产品,一个开发负责后端,一个开发负责前端,另一个人负责 Review,还有测试同学要验收。现在再加上 AI,事情会变得更快,也更容易散。

产品说的是 A。 开发理解成 B。 AI 实现成 C。 测试按 D 去验。

以前这种偏差也会发生,只是没那么快。

AI 加进来以后,偏差会被放大。因为它可以很快生成代码,也可以很快把一个模糊需求扩成一大堆改动。等团队发现“好像不是这么回事”的时候,代码可能已经堆了不少。

所以团队用 AI,先要解决的不是“怎么让 AI 更快写代码”。

更关键的问题是:

AI 写出来的东西,团队怎么接得住?

OpenSpec 能派上用场,也是因为它给团队提供了一个承载规则的地方。

团队落地,先别全员强制

我不建议一上来就规定:

以后所有需求都必须走 OpenSpec。

这种做法听起来很工程化,实际很容易让人反感。

因为不是所有改动都值得走完整流程。

改一个错别字。 调一个按钮边距。 写一个临时脚本。 修一个非常明确的小 bug。

这些事情如果都要求写 proposal、spec、design、tasks,大家很快就会觉得 OpenSpec 是负担。

更好的方式,是先定使用边界。

我会把需求分成三类:

第一类,可以直接改。

比如文案、样式微调、简单配置、非常小的 bug。这类改动 AI 可以直接辅助,不必为了流程而流程。

第二类,建议走 OpenSpec。

比如新增一个用户可见功能、修改一段已有业务行为、涉及多个文件或模块、后面需要别人 Review。这些改动不一定很大,但已经需要把范围和行为说清楚。

第三类,必须走 OpenSpec。

比如权限、支付、数据迁移、对外 API、核心业务流程、跨团队协作、线上风险较高的改动。这些需求如果只靠聊天和代码 diff,后面很容易出问题。

这条边界越早说清楚,团队越容易接受。

因为它传递的不是“又多了一个流程”,而是“有些事情值得认真一点,有些事情不必”。

工具不应该替代判断。

它应该服务判断。

把 change 当成团队的工作单元

团队真正开始用 OpenSpec 后,心智上要做一个转换:

不要把一次 AI 对话当成工作单元。

要把一个 change 当成工作单元。

也就是:

Issue / 需求 -> openspec change -> 分支 / PR -> archive

这不是要求每个团队都严格绑定 Issue、分支和 change 名称,但最好有一条能对上的线。

比如:

Issue: 用户希望夜间使用时支持暗色模式
Change: add-dark-mode
Branch: feature/add-dark-mode
PR: Add dark mode support

这样 Review 时,大家看的不只是代码 diff,而是同一件事的不同层面:

  • Issue 说明问题来源

  • proposal 说明本次范围

  • specs 说明行为变化

  • design 说明技术取舍

  • tasks 说明执行进度

  • PR 说明代码实现

  • archive 留下历史

这条线一旦连起来,AI 的输出就不再是一段聊天里的结果,而是进入了团队原本的研发结构。

每个 change 都应该有人负责

这里还有一个很实际的问题:谁来维护 OpenSpec artifacts?

我的建议是,每个 change 都要有 owner。

owner 不一定是唯一写代码的人,但他要对这次变更的上下文负责。

他的职责不是“把文档补齐”这么简单,而是:

  • 确保 proposal 的范围说得清楚

  • 确保 specs 写的是行为,不是实现细节

  • 确保 design 反映真实技术方案

  • 确保 tasks 可执行、可验证

  • 确保 AI 改代码后 artifacts 没有过期

  • 确保 archive 前变更真的闭环

如果没有 owner,OpenSpec 很容易变成“AI 生成的一堆文件”。

刚开始看起来很完整,过几天没人维护,就开始失真。proposal 写着 A,代码实现了 B;design 说用现有能力,实际新造了一套;tasks 勾完了,但测试根本没覆盖关键场景。

这种 OpenSpec 不但没帮忙,反而会制造新的误导。

所以团队落地时,先别急着追求 artifacts 多漂亮。

先让每个 change 有人负责它的真实性。

名字起好,比想象中重要

OpenSpec 会把每一次变更放在 openspec/changes/<change-name>/ 下。

所以 change name 其实就是团队的变更索引。

名字起得好,后面查起来很舒服。

比如:

add-dark-mode
fix-login-redirect
optimize-product-query
implement-member-expiration

这些名字一眼能看出要做什么。

反过来,下面这些名字就很糟糕:

update
fix
test
wip
change-1

它们在刚创建时可能没问题,但过两周再看,基本等于没名字。

团队可以定一个很简单的命名规则:

动词 + 对象 + 必要限定

比如:

add-member-export
fix-payment-timeout
refactor-auth-session
remove-legacy-theme

这不是形式主义。

当一个项目里同时有十几个 changes 时,命名就是协作效率。

PR Review 不要只看代码 diff

很多团队接入 AI 后,Review 会变难。

以前 Review 一个人写的代码,至少还能从代码风格、提交习惯和沟通记录里看出一些上下文。现在 AI 可能一次改很多文件,而且看起来都挺像那么回事。

如果 Review 只看代码 diff,很容易漏掉更前面的偏差:

需求是不是理解错了? 范围是不是扩太大了? 行为是不是和产品预期不一致? 技术方案是不是绕过了现有架构? 测试是不是只验证了 happy path?

OpenSpec 可以把 Review 往前移一点。

一个比较实用的 PR Review 顺序是:

先看 proposal.md

这一步看的是:为什么做、做什么、不做什么,范围有没有说清楚。尤其要看 out of scope,因为 AI 很容易把“相关”理解成“应该一起做”。

再看 specs/

这一步看的是:用户可见行为有没有定义清楚,新增、修改、移除的行为有没有写对。spec 里如果出现内部类名、函数名、文件路径,就要警惕它是不是写偏了。

再看 design.md

这一步看的是:技术方案是否适合当前项目,有没有明显风险,是否复用了已有模式。如果 design 写的是方案 A,代码实现却走了方案 B,要么改代码,要么更新 design。不能让它们分叉。

再看 tasks.md

这一步看的是:任务是否可执行、可检查,是否有测试或手动验证项。任务全部勾上,不代表真的完成;要看每个勾选背后有没有证据。

最后才看代码 diff。

不是说代码不重要。

而是代码应该放在上下文里看。

如果 proposal 本身就没说清楚,代码再漂亮也可能是在解决错问题。

CI 里先接轻量检查

团队落地 OpenSpec,不一定第一天就做复杂自动化。

但我建议至少把 validate 接到 CI 里。

OpenSpec CLI 支持结构校验,比如:

openspec validate --all--json

或者更严格一点:

openspec validate --all --strict --concurrency 12

CI 里先做这件事就够了:

检查 specs 和 changes 的基本结构有没有问题。

它不能替你判断需求对不对,也不能替你判断技术方案好不好。

但它能避免一些低级问题:

  • spec 格式不对

  • requirement 缺少 scenario

  • change 结构不完整

  • delta 写法不符合预期

  • archive 前遗留明显结构问题

这类检查适合自动化。

因为它不需要人反复看格式。

人应该把精力留给更重要的判断:范围、行为、方案、风险。

多人并行时,changes 是隔离层

真实团队不会只有一个需求。

常见情况是:

一个人在做暗色模式。 一个人在修登录跳转。 一个人在优化商品查询。 另一个人在调整会员权益。

如果所有讨论都堆在聊天里,很快就乱了。

OpenSpec 的 changes/ 目录,天然适合做工作隔离。

每个 change 有自己的 proposal、specs、design、tasks。

这意味着团队可以并行推进多个变更,而不是把所有需求塞进同一个“大文档”。

比如:

openspec/   changes/     add-dark-mode/     fix-login-redirect/     optimize-product-query/     implement-member-expiration/

每个目录都回答同一组问题:

为什么做? 行为怎么变? 方案怎么定? 任务怎么拆? 现在做到哪里?

这对团队协作非常实际。

当某个人被临时拉去修线上问题,他可以新建一个 change,不会把原来的需求上下文弄乱。当他回到原需求,也能从 tasks 里继续。

如果多个 change 都改了同一个 spec,归档时就要更谨慎。OpenSpec 在 expanded workflow 里也提供 /opsx:bulk-archive 这类能力,帮助处理多个已完成 changes 的归档。

但我的建议是:团队刚开始不要急着批量归档。

先养成单个 change 清晰收尾的习惯。

先让每一次变更可读,再追求批量效率。

团队规则应该写进 config

团队规范如果只靠口头说,很快就会忘。

OpenSpec 的 openspec/config.yaml 可以放一些项目上下文和生成规则。

比如:

schema: spec-driven  context: |   技术栈:TypeScript、React、Node.js、PostgreSQL   API 风格:RESTful   测试:Jest + React Testing Library   所有公开 API 需要保持向后兼容  rules:   proposal:     - 必须写清楚本次不做什么     - 涉及线上风险时必须写回滚方式   specs:     - 使用 Given/When/Then 或同等清晰的场景描述     - 不要把内部类名、函数名写进 spec   design:     - 说明是否复用现有架构     - 涉及数据迁移时必须写风险和回滚   tasks:     - 每个任务必须可验证     - 涉及用户行为变化时必须包含测试或手动验证项

这样做的好处是:AI 在生成 artifacts 时,会带着团队上下文。

它不会每次都像第一次进项目一样,从零猜你的技术栈、测试偏好和兼容性要求。

当然,config 不应该写得太长。

它不是团队制度大全。

它只需要写那些会反复影响 AI 输出质量的东西。

什么时候需要自定义 schema?

大部分团队一开始用默认 spec-driven 就够了。

也就是:

proposal -> specs -> design -> tasks -> implement

不要一开始就急着定制复杂流程。

但如果团队已经形成比较明确的研发习惯,可以考虑自定义 schema。

比如有的团队希望在 tasks 前增加一个 review.md

proposal -> specs -> design -> review -> tasks -> implement

这适合高风险变更比较多的团队。

还有些团队会做 research-first:

research -> proposal -> specs -> design -> tasks

这适合性能优化、架构重构、疑难问题排查。

但我建议把自定义 schema 放到第二阶段。

第一阶段先让大家理解 OpenSpec 的基本模型,形成习惯。等默认流程真的不够用了,再加新 artifact。

流程不是越完整越好。

流程是刚好能托住当前团队的问题,就够了。

跨仓库协作,不要一开始就复杂化

有些团队会问:如果一个需求同时改前端、后端、网关、文档,OpenSpec 应该放在哪里?

这个问题没有一个永远正确的答案。

我的建议是先分清两层:

repo-local change:某个仓库自己负责的实现变更 coordination context:跨仓库需求的协调上下文

大多数团队刚开始用 OpenSpec,先从 repo-local 做起就够了。哪个仓库承担主要实现,就在哪个仓库里维护 change。

如果团队已经频繁做跨仓库项目,再去看 OpenSpec 的 workspace / initiative 这类能力会更合适。它们更像是多仓库场景下的协调视图,而不是每个团队第一天就必须引入的东西。

别一上来就把工具用到最复杂。

先把单仓库、单 change 的闭环做好。

不要把 OpenSpec 变成“文档税”

这是我觉得最需要警惕的地方。

OpenSpec 的目标不是让团队多写文档。

它的目标是让 AI 参与研发后,需求和实现之间有一条可追踪的线。

所以团队落地时,最好避开几个反模式。

第一个反模式:所有小改动都强制走完整流程。

这会让大家很快讨厌它。

第二个反模式:spec 写成实现文档。

比如把具体类名、函数名、文件路径塞进 spec。这样 spec 很快会过期,也会让行为定义变得很难读。

第三个反模式:tasks 写得太大。

一个任务叫“完成会员系统”,这对 AI 没什么帮助,也不方便 Review。

第四个反模式:archive 不及时。

change 做完后一直放在 active changes 里,久了以后大家就不知道哪些是正在做,哪些已经结束。

第五个反模式:把 OpenSpec 当成替人判断的工具。

它能帮你组织上下文,但不能替你判断业务优先级、技术风险和用户价值。

如果这些反模式出现,团队应该先收缩范围,而不是继续加规则。

我建议的落地路线

如果让我在一个团队里引入 OpenSpec,我不会一上来开会讲一堆概念。

我会分三步。

第一步,选一个中等复杂度需求试点。

不要选太小的,也不要选风险最高的。最好是一个需要前后端协作、用户能感知、但风险可控的需求。

用它跑一次完整流程:proposal、specs、design、tasks、apply、sync、archive。

第二步,把 Review 顺序固定下来。

以后遇到类似需求,PR 不只看代码,也看 OpenSpec artifacts。先看 proposal,再看 specs,再看 design/tasks,最后看代码。

第三步,把少量规则写进 config 和 CI。

比如 config 里写技术栈、测试要求、spec 写法;CI 里加 openspec validate --all --json

这三步做完,OpenSpec 就不再只是个人习惯,而开始进入团队流程。

后面如果团队真的需要,再考虑 expanded workflow、verify、bulk-archive、自定义 schema、workspace 这些能力。

不要把成熟形态当成起步形态。

最后,团队需要的是能接住速度的结构

这组三篇文章写到这里,我想表达的其实不是“大家一定要用 OpenSpec”。

更准确地说,我想表达的是:

AI 进入研发流程后,我们需要重新设计协作方式。

以前我们习惯讨论人和人怎么协作。 现在还要考虑人和 AI 怎么协作。 更进一步,还要考虑多人、多 AI、多需求怎么协作。

只靠 Prompt,很难托住这些复杂度。

OpenSpec 提供的是一个很朴素的思路:

把需求说清楚。 把行为写下来。 把方案留下来。 把任务拆出来。 把完成后的历史归档。

这几件事并不新。

它们本来就是工程里该做的事。

只是 AI 把代码生成速度拉快以后,这些事变得更重要了。

团队用 AI,最怕的不是慢。

最怕的是快得没人接得住。

OpenSpec 的意义,就是让团队在享受 AI 速度的同时,还有一套能接住它的工程结构。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-10 12:32:54 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/731284.html
  2. 运行时间 : 0.114434s [ 吞吐率:8.74req/s ] 内存消耗:4,828.35kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=bf5499c026587d3997e457a2c83e0a9a
  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.000544s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000805s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000432s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000292s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000602s ]
  6. SELECT * FROM `set` [ RunTime:0.000278s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000661s ]
  8. SELECT * FROM `article` WHERE `id` = 731284 LIMIT 1 [ RunTime:0.001761s ]
  9. UPDATE `article` SET `lasttime` = 1781065974 WHERE `id` = 731284 [ RunTime:0.018506s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000689s ]
  11. SELECT * FROM `article` WHERE `id` < 731284 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001726s ]
  12. SELECT * FROM `article` WHERE `id` > 731284 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002226s ]
  13. SELECT * FROM `article` WHERE `id` < 731284 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001693s ]
  14. SELECT * FROM `article` WHERE `id` < 731284 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001222s ]
  15. SELECT * FROM `article` WHERE `id` < 731284 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002037s ]
0.116409s