乐于分享
好东西不私藏

「AI杂记」轻量级规范驱动开发 OpenSpec与增量需求开发

「AI杂记」轻量级规范驱动开发 OpenSpec与增量需求开发

在正式开启本文之前,我想说明的是同 SpecKit 一样,OpenSpec 也只是规范驱动开发的一个具体实例,我们需要将重点放在理解 OpenSpec 针对规范驱动开发进行轻量化的“渐进式增强规范”这一核心思想上,而不仅仅只是关注于其使用。

AI Agent 工具层出不穷,对于我们使用者来说应当更多地关注这些优质工具的核心思想,在使用这些工具的过程中,逐步形成自己的 AI 应用方法论。通俗来讲就是“铁打的 AI 应用思想方法论,流水的 AI 工具”。

OpenSpec的核心要点:

  • • 规范驱动开发的轻量化 -> 渐进式增强规范(Progressive Rigor)
  • • 增量需求开发(Delta Specs)-> 已有 specs 与增量需求 specs 隔离管理

本文概览

  1. 1. spec kit 与 open spec 对比
  2. 2. OpenSpec轻量化的关键——规范的“渐进式增强”2.1. Lite spec(轻量级规范)—— 默认选项2.2. Full spec(完整规范)—— 用于高风险变更2.3. Lite spec 与 Full spec 对比
  3. 3. OpenSpec 对规范 specs 的管理
  4. 4. OpenSpec工作流4.1. 默认工作流4.2. 扩展版本的工作流4.3. sync 与 archive
  5. 5. 针对中间产出内容(artifact)的修改5.1. 中间产出内容(artifact)5.2. 修改原则5.3. 一些问题Q1:依赖链 proposal → specs → design → tasks → apply(代码)改上游时要不要改下游?Q2:各命令对修改已有 artifact 的行为是怎样的?
  6. 6. Delivery与Workflows
  7. 7. 相关参考

spec kit 与 open spec 对比

在这里首先需要强调的是,一般我们将 spec kit 与 open spec 搭配使用,二者不是互斥的:

  • • spec kit:greenfield,0->1,从零开发(scratch)
  • • open spec:brownfield,1->n,增量开发(delta)

spec kit 感觉有些“一板一眼,僵化”,open spec 相对“宽松,灵活”些。

open spec 用“快速迭代+人工审查”替代“强制问答”:

  • • spec kit 的做法:假设规范必须尽可能完美才能进入技术设计,因此需要主动、系统性地挖掘模糊点并强制澄清。
  • • open spec 的做法:承认规范在编写时不可能完全清晰。它的 propose 命令直接生成一个包含规范差异(deltas)的初步提案。如果某个变更需求存在不清晰的地方,开发者和 AI 会直接修改提案文件(比如编辑 specs/ 下的 delta 文件),或者通过一次简单的自然语言对话进行调整。整个“澄清对齐”的过程是非强制、嵌入式的,你可以随时反复修改提案,直到达成共识。

此外,虽然这些指令不是 spec kit 必须执行的,但个人感觉 spec kit 在使用过程中,比较繁琐(耗费精力和时间相对比较多,需要反复确认)的流程节点主要在:

  • • 需求澄清 clarify
  • • 需求质量检查 checklist
  • • 在最终执行实现前的交叉规范一致性校验 analyze

本质:open spec 流程节点间的转移要求降低(相对 spec kit 没那么严格),并简化了澄清确认核对的步骤。

OpenSpec is built around four principles:

fluid not rigid — no phase gates, work on what makes senseiterative not waterfall — learn as you build, refine as you goeasy not complex — lightweight setup, minimal ceremonybrownfield-first — works with existing codebases, not just greenfield

open spec 与 spec kit 流程对比:

对比维度OpenSpec:变更驱动的轻量规范Spec Kit:规范即流程的完整框架
核心理念把规范当作变更的“管理工具”。它专注在既有项目上做增量更新,强调“活文档”把规范当作生成代码的蓝图。它强调规范的“可执行性”,更像一个标准的工业化生产线。
工作流精简灵活:核心三步骤
proposeapplyarchive
既定与完整:固定的七阶段流程
constitution →specifyclarifyplantasksanalyzeimplement
规范格式简洁的差异
openspec/specs/(当前真实状态)+ openspec/changes/(变更提案)
复杂的模板化
包含
constitution.md(项目宪章)及spec.md(功能规范)、plan.md(技术计划)等多个模板和指令。
依赖与设置几乎没有:无需API密钥,无需复杂配置较高:工具包本身较轻量,但其流程决定了更多的前置环节和人工决策点。
适用场景优于演进中的“棕色地带”项目(即1→n的已有项目),尤其适合增量迭代擅长0→1的新项目,能帮助团队从零开始建立一套完整的规范体系

OpenSpec轻量化的关键——规范的“渐进式增强”

渐进式增强(Progressive Rigor):可以从一个极简的规范开始,随着风险信号的出现,逐步增加规范的正式程度,而不是一开始就预设一个全量模板。

与 Skill 的渐进式披露(Progressive disclosure)的本质类似,这里 OpenSpec 的渐进式增强(Progressive Rigor)对于规范的要求也是“按需添加,懒加载”:

  • • 避免官僚主义:OpenSpec 认为,并非所有变更都需要同等程度的正式规范。如果为每个小修改都撰写长篇大论的正式文档,会拖慢开发节奏。
  • • 选择最轻的可用层级:要求开发者/用户主动判断:“为了能验证这个变更是否正确,我至少需要写多少规范?” 只写必要的,不多写一个字。
  • • “可验证”(verifiable) 是底线:无论选择多轻量的规范,最终都必须能够清晰判断一个实现是否满足需求(例如通过验收检查项)。

Keep It Lightweight: Progressive Rigor

OpenSpec aims to avoid bureaucracy. Use the lightest level that still makes the change verifiable.

为了实现针对规范的“渐进式增强”,OpenSpec 定义了两种预设的规范层级:Lite(轻量级,默认) 和 Full(完整级,用于高风险)。

Lite spec(轻量级规范)—— 默认选项

这是绝大多数日常开发应当使用的级别。它包含三个核心要素:

  • • 简短、以行为优先的需求(Short behavior-first requirements)用一两句话描述“系统应该做什么”,而不是“怎么实现”。例如:“当用户点击‘退出登录’按钮时,系统应清除本地会话并重定向到登录页。”
  • • 明确的范围与非目标(Clear scope and non-goals)用极简的方式说明“这个变更包含什么、不包含什么”,防止范围蔓延。例如:“本次变更不涉及修改密码流程,也不改变用户头像存储逻辑。”
  • • 几个具体的验收检查项(A few concrete acceptance checks)列出可执行的、客观的验证条件,通常以列表形式呈现,每个条目都是可以通过自动化或人工测试验证的。例如:
    • • [ ]点击退出登录后,本地 localStorage 中的 token 被清除。
    • • [ ]重定向到/login页面。
    • • [ ]未调用任何后端接口(因为使用了本地清除逻辑)。

适用场景:绝大多数日常功能开发、bug修复、UI微调、性能优化等,只要变更后果可控、不涉及跨团队协调,都使用 Lite 模式。

Full spec(完整规范)—— 用于高风险变更

当变更的风险显著增加时,OpenSpec 鼓励升级到 Full 级别,此时规范需要更详尽、更正式。典型的高风险信号包括:

  • • 跨团队或跨仓库变更(Cross-team or cross-repo changes)需要多个团队协商接口、数据格式、发布顺序等,规范必须足够清晰以避免误解。
  • • API/契约变更、数据库迁移、安全/隐私相关问题这些变更一旦出错,代价极高(破坏兼容性、数据丢失、安全漏洞),因此需要更严谨的规范,包括错误处理、回滚方案、权限模型等。
  • • 歧义可能导致昂贵返工的变更(Changes where ambiguity is likely to cause expensive rework)如果需求不清晰会导致后期大量推翻重做,那么前期花时间写完整规范是非常值得的投资。

Lite spec 与 Full spec 对比

Full spec 相比 Lite 会通常增加包括更详细的背景动机、技术约束、数据流图、时序图、详细的错误场景、非功能性需求(性能、安全、可观测性)等。OpenSpec 并不强制规定 Full spec 的固定模板,而是交给团队根据自身风险判断来扩展。

如何选择 Lite spec 与 Full spec?绝大多数变更应当保持在 Lite 模式。

Most changes should stay in Lite mode.

OpenSpec 认为,过度规范化规范化不足一样有害。因此它提供了一个简单的决策树:

  • • 这个变更是否涉及跨团队协调? → 是 → Full
  • • 是否涉及API 或数据库 schema 的破坏性变更? → 是 → Full
  • • 是否可能导致安全或隐私事故? → 是 → Full
  • • 如果需求写得不清楚,返工成本是否极高(例如影响核心交易链路)? → 是 → Full
  • • 以上都不是 → Lite(默认)

OpenSpec 对规范 specs 的管理

OpenSpec 对于 specs 的管理分成两个部分:

  • • /specs:这个目录下存放的是项目当前对应的规范(类似 git 分支中的 main 分支)specs structure 例如:
openspec/specs/├── auth/│   └── spec.md           # Authentication behavior├── payments/│   └── spec.md           # Payment processing├── notifications/│   └── spec.md           # Notification system└── ui/    └── spec.md           # UI behavior and themes
  • • /changes:这个目录下则存放的是正在进行开发的新需求的规范(类似 git 分支中的 feature 分支)注:一个需求一个目录(/changes/需求名),最终归档时会被转移,归档至 /changes/archive 目录,用于日后的履历审计changes structure 例如:
openspec/changes/add-dark-mode/├── proposal.md           # Why and what├── design.md             # How (technical approach)├── tasks.md              # Implementation checklist├── .openspec.yaml        # Change metadata (optional)└── specs/                # Delta specs    └── ui/        └── spec.md       # What's changing in ui/spec.md

与 git 合并分支代码类似,OpenSpec 合并 spec 的过程就像将新开发功能的 feature 分支合并到 main 分支一样。

这种增量需求 specs 与已有 specs 的隔离,也有类似 git 分支开发的这种好处,便于并行地协作开发。

┌────────────────────────────────────────────────────────────────────┐│                        openspec/                                   ││                                                                    ││   ┌─────────────────────┐      ┌───────────────────────────────┐   ││   │       specs/        │      │         changes/              │   ││   │                     │      │                               │   ││   │  Source of truth    │◄─────│  Proposed modifications       │   ││   │  How your system    │ merge│  Each change = one folder     │   ││   │  currently works    │      │  Contains artifacts + deltas  │   ││   │                     │      │                               │   ││   └─────────────────────┘      └───────────────────────────────┘   ││                                                                    │└────────────────────────────────────────────────────────────────────┘

OpenSpec organizes your work into two main areas:

Specs are the source of truth — they describe how your system currently behaves.

Changes are proposed modifications — they live in separate folders until you're ready to merge them.

This separation is key. You can work on multiple changes in parallel without conflicts. You can review a change before it affects the main specs. And when you archive a change, its deltas merge cleanly into the source of truth.

OpenSpec工作流

默认工作流

Default quick path (core profile):

/opsx:explore(可选) ──► /opsx:propose ──► /opsx:apply ──► /opsx:sync(可选) ──► /opsx:archive

注:在正式开始实现之前(/opsx:apply 之前),我们最好人工地确认下 propose 阶段输出的 artifacts(proposal.md,/specs,design.md,tasks.md)是否符合要求,如果不符合则需要进行修改。

CommandPurpose
/opsx:explore
“需求尚不明确,与 agent 进行需求讨论,头脑风暴”> Think through ideas before committing to a change
/opsx:propose
需求明确了,agent 直接生成需求对应的需求规格说明文档(proposal.md + /specs)、详细设计文档(design.md)、任务拆解文档(tasks.md)。这些文档在 open spec 中被称为 artifact 文档> Create a change and generate planning artifacts in one step
/opsx:apply
按照 artifact 文档进行实现> Implement tasks from the change
/opsx:sync
将本次需求合并到主spec中(像git提交代码,将feature内容合并到main分支的感觉)> Merge delta specs into main specs
/opsx:archive
将本次需求相关的内容进行归档(类似操作日志记录)> Archive a completed change
需求还不清楚?    → /opsx:explore(可选)需求清楚了    → /opsx:propose <变更名或描述>     ← 自动生成规划文档(自动挡)    → 你看一下 proposal/design/tasks 是否 OK开始写代码    → /opsx:apply <变更名>            ← 按 tasks 实现(必须单独触发)做完了    → /opsx:archive <变更名>          ← 归档到 openspec/specs/

扩展版本的工作流

Expanded path (custom workflow selection):

/opsx:explore(可选) ──► /opsx:new ──► /opsx:ff or /opsx:continue*N ──► /opsx:apply ──► /opsx:verify ──► /opsx:sync(可选)──► /opsx:archive
CommandPurpose
/opsx:new
Start a new change scaffold
/opsx:continue
Create the next artifact based on dependencies
/opsx:ff
Fast-forward: create all planning artifacts at once
/opsx:verify
Validate implementation matches artifacts
/opsx:bulk-archive
Archive multiple changes at once
/opsx:onboard
Guided tutorial through the complete workflow

核心指令(Core)与扩展指令(Expanded):

步骤CoreExpanded(精细)Expanded(快进)
调研
/opsx:explore
同左
可跳过
建 change + 规划
/opsx:propose
 一条
new
 + 4×continue
new
 + ff
写代码
/opsx:apply
同左
同左
验证
人工 / 测试
/opsx:verify
可选
合并 spec
archive 时提示
/opsx:sync
 或 archive
archive 时提示
归档
/opsx:archive
同左
同左
最少命令数
3 条
7~9 条
4 条

/opsx:propose = 把 /opsx:new 和多次 /opsx:continue 打包成一条命令,自动跑完规划阶段,中间不等你确认。

sync 与 archive

sync 负责“提前同步”,而 archive 则同时完成“最终合并”与“文件归档”这两个终结操作。

sync:Optional command. Merge delta specs from a change into main specs. Archive will prompt to sync if needed, so you typically don't need to run this manually.

archive:Archive a completed change. Finalizes the change and moves it to the archive folder.

archive 是规范合并的必经之路:无论你中间是否执行过 sync,执行 archive 命令时,OpenSpec 都会执行一次最终的、完整的规范合并。不执行 sync 不会影响最终结果。

那这个sync有什么意义呢?反正archive早晚都会将变更内容合并到主spec,既然 archive 最终也会合并,那 sync 看起来确实像是多此一举。

实际上,sync 的核心价值在于引入了一个可选的、在开发周期中间就同步规范的“检查点”,它解决了三个 archive 无法直接处理的问题:

  1. 1. 长周期变更中的“规范漂移”与冲突预防:如果一个大变更持续几周甚至一个月,不执行 sync,所有规范修改都只存在于 changes/ 目录下。其他人(或另一个分支)基于旧的 specs/ 开发时,很可能做出与你的变更冲突的修改。最终 archive 时,OpenSpec 需要处理大量合并冲突,有时甚至需要人工介入。sync 的作用:在开发进行到某个里程碑(比如完成了 30% 的功能)时,执行 sync 把已确定的规范提前合并到主 specs/。这样,其他人就能看到最新的规范,避免后期大规模冲突。同时,你的变更分支依然活跃,可以继续添加、修改规范。
  2. 2. 团队协作中的“可见性”需求:archive 只在所有任务都完成后才能合并规范。但在团队协作中,设计师、测试人员、其他开发人员往往需要尽早了解当前变更的规范细节,以便并行工作(如编写测试用例、准备文档)。sync 的作用:你可以在 apply 中途、部分规范已经稳定但功能未完全实现时,执行 sync,让团队的规范库立即反映最新设计。而 archive 要等到代码全部完成、测试通过之后,这显然太晚了。
  3. 3. 分阶段合并与部分发布:有时一个变更包含多个独立但相关的规范更新。你可能希望先合并其中一部分规范到主库,另一部分继续修改。archive 只能一次性合并全部。sync 的作用:你可以先 sync 确定的部分,让它们生效;然后从变更中删除已 sync 的规范 delta,只保留未稳定的部分继续开发。这样实现了对主规范的“部分发布”,而 archive 无法做到。

针对中间产出内容(artifact)的修改

中间产出内容(artifact)

首先我们需要明确下这里的中间产出内容(artifact)是指什么?

在 /opsx:propose,/opsx:continue,/opsx:ff 阶段,产出的是 artifact 文档

Artifact文件内容
proposal
proposal.md
做什么,为什么,范围> The "why" and "what" - captures intent, scope, and approach
specs
specs/**/*.md
需求场景,具体细化的变更内容> Delta specs showing ADDED/MODIFIED/REMOVED requirements
design
design.md
技术方案> The "how" - technical approach and architecture decisions
tasks
tasks.md
实现清单,任务列表> Implementation checklist with checkboxes

修改原则

在开发过程中,大部分情况下,我们的输出内容并非一次就能令我们满意,这时我们就要对输出内容进行修改,那么我们要如何对 openspec 的产出结果进行修改呢?

核心原则:三种改法

  • • 方式1:直接改文件(最常用)
  • • 方式2:对话里让 AI 改(不用特殊命令)
  • • 方式3:改上游后,同步改下游(避免文档不一致)

注:/opsx:continue 只会创建 下一个尚未完成的 artifact;不会自动重写已标记为 done 的文件。已生成的文档要改,主要靠“编辑文件”或“让 AI 编辑”,而不是再跑一遍 continue。

一些问题

Q1:依赖链 proposal → specs → design → tasks → apply(代码)改上游时要不要改下游?

越改上游,越要主动要求同步下游,OpenSpec 不会自动级联重写。

改动部分建议
proposal.md
(scope/意图)
检查并更新 specs、design、tasks
specs/
(需求场景)
检查 design、tasks
design.md
(方案)
检查 tasks;已写代码则 apply 时调整
tasks.md
(任务拆分)
一般不必改上游;apply 按新 tasks 执行即可

Q2:各命令对修改已有 artifact 的行为是怎样的?

如下表所示

命令能否用来修改已生成的 artifact?
/opsx:continue
❌ 只创建下一个未完成的 artifact
/opsx:ff
⚠️ 偏向补齐规划 artifact;不是专门的「重写某文档」命令
/opsx:propose
❌ 用于新建 change;change 已存在时会问是否继续,不是改单文件
直接编辑 / 对话修改
✅ 主要方式
/opsx:apply
✅ 读最新 artifact;实现中可暂停并回改 design/tasks

Delivery与Workflows

openspec config profile 指令用来对 openspec 可使用的功能进行配置

Delivery 管“怎么装”,Workflows 管“装哪些命令”:

  • • workflows 是指令集合,表示要安装哪些指令(propose, new, continue, ff, apply ……)
  • • delivery 则是 workflows 中指令的安装方式(以skill的形式,还是以"/"指令的形式,还是both两者都要)

Delivery = where workflows are installed (skills, commands, or both)

Workflows = which actions are available (propose, explore, apply, etc.)

我们以 App 商店进行类比:

OpenSpec 概念
类比
Workflow
一个 App(微信、地图、相机…)
Delivery
安装方式(桌面图标、Spotlight、Siri 快捷指令)
openspec update
点「安装/更新」
  • • 选 Workflows:决定装微信、地图还是相机(装哪些)
  • • 选 Delivery:决定每个 App 是只放桌面、只加 Siri,还是两种都有(怎么装)

没选“地图” Workflow,Delivery 选什么都不会出现这个功能。选了“地图”,Delivery 只决定它是斜杠命令形式还是 Skill 形式,不会决定有没有这个功能。

在项目根目录执行 openspec init 指令后默认自动生成的 workflows,commands 和 skills 这两个目录则表示 Delivery 为 both 模式

The default global profile is core. To enable expanded workflow commands, run openspec config profile, select workflows, then run openspec update in your project.

相关参考

open spec 快速开始:https://github.com/Fission-AI/OpenSpec/blob/main/docs/getting-started.md

open spec 工作流:https://github.com/Fission-AI/OpenSpec/blob/main/docs/workflows.md

open spec 命令说明:https://github.com/Fission-AI/OpenSpec/blob/main/docs/commands.md

open spec 设计理念:https://github.com/Fission-AI/OpenSpec/blob/main/docs/concepts.md

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-03 03:12:04 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/702836.html
  2. 运行时间 : 0.186288s [ 吞吐率:5.37req/s ] 内存消耗:4,795.80kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c73f7b8d36c4f2e5e80c6518b0cc4969
  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.000768s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001086s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000356s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000292s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000745s ]
  6. SELECT * FROM `set` [ RunTime:0.000222s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000757s ]
  8. SELECT * FROM `article` WHERE `id` = 702836 LIMIT 1 [ RunTime:0.000508s ]
  9. UPDATE `article` SET `lasttime` = 1780427524 WHERE `id` = 702836 [ RunTime:0.007446s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000270s ]
  11. SELECT * FROM `article` WHERE `id` < 702836 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000598s ]
  12. SELECT * FROM `article` WHERE `id` > 702836 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000500s ]
  13. SELECT * FROM `article` WHERE `id` < 702836 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003683s ]
  14. SELECT * FROM `article` WHERE `id` < 702836 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000719s ]
  15. SELECT * FROM `article` WHERE `id` < 702836 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.010730s ]
0.189890s