乐于分享
好东西不私藏

OpenSpec 完整教学:让 AI 编程助手听懂你在说什么

OpenSpec 完整教学:让 AI 编程助手听懂你在说什么

跟 AI 编程助手聊了半天,它写出来的东西跟你脑子里想的完全不一样——这种事太常见了。

问题出在需求描述不清。你说"加个暗黑模式",AI 理解成换个深色背景;你说"优化性能",它不知道从哪下手。聊天记录散落在对话框里,上周讨论过什么没人记得,每次新对话都得重新解释一遍。

没有 OpenSpec 时的典型场景:

You: 帮我加个暗黑模式AI:  好的,我来添加一个暗黑模式。     [生成了 500 行代码,但用了你不想要的 CSS 框架,      没考虑系统偏好检测,localStorage 也没做]You: 这不对,我要的是...AI:  抱歉,让我重新来。     [又生成 300 行,这次做了 localStorage,但样式全乱了]You: 样式不对,而且要支持跟随系统设置AI:  [继续改...]

来回折腾三四轮,时间浪费了,AI 也越改越糊涂。

有了 OpenSpec 之后:

You: /opsx:propose add-dark-modeAI:  我先生成一份规格说明,确认一下需求。     [自动生成 proposal.md、specs、design.md、tasks.md]     请检查一下这些文件,确认需求是否正确。You: [检查后发现少了一个需求,直接在 specs 里补上]You: /opsx:applyAI:  按照规格说明逐项实施...     ✓ 1.1 创建 ThemeContext     ✓ 1.2 添加 CSS 自定义属性     ✓ 1.3 实现 localStorage 持久化     ✓ 2.1 创建 ThemeToggle 组件     ...     全部完成!

一次到位。AI 在动手之前,已经通过规格说明跟你对齐了需求。

OpenSpec 是 Fission-AI 推出的开源规范框架,在你和 AI 之间加了一层"规格说明书"。说白了就是:先对齐要做什么,再动手写代码。

2025 年 8 月上线,GitHub 52000+ stars,支持 30 多种 AI 编程工具。


二、安装和初始化

需要 Node.js 20.19 以上版本:

npm install -g @fission-ai/openspec@latest

进入项目目录,跑初始化:

cd your-projectopenspec init

初始化时会让你选择用哪个 AI 工具(Cursor、Claude Code、Codex 等),然后自动生成对应的配置文件。

非交互式初始化,直接指定工具:

openspec init --tools cursor,claude

初始化完成后,项目根目录会多出一个 openspec/ 文件夹:

openspec/├── specs/              # 规格说明书(系统当前的行为描述)│   └── <domain>/│       └── spec.md├── changes/            # 正在进行的变更│   └── <change-name>/│       ├── proposal.md│       ├── design.md│       ├── tasks.md│       └── specs/      # 增量规格说明└── config.yaml         # 项目配置

specs/ 存放系统行为的真实描述,changes/ 里是正在规划或执行的修改。两者分开管理,互不干扰。


三、核心概念:两个目录的分工

搞清楚 specs/ 和 changes/ 的关系,就理解了 OpenSpec 的一半。

specs/ 是真相来源。 记录你的系统现在是怎么运作的——有什么功能、什么规则、什么约束。按领域组织,specs/auth/ 存认证,specs/payments/ 存支付。

changes/ 是提议的修改。 每个变更一个文件夹,包含这次修改的完整上下文。变更完成后,增量规格合并回 specs/,真相来源随之更新。

这种设计让你可以同时推进多个变更而不互相冲突。改完归档,规格自动更新,下一次变更基于最新的规格继续。

┌────────────────────────────────────────────────────────────────────┐│                        openspec/                                   ││                                                                    ││   ┌─────────────────────┐      ┌───────────────────────────────┐   ││   │       specs/        │      │         changes/              │   ││   │                     │      │                               │   ││   │  系统行为的真实描述   │◄─────│  正在提议的修改                │   ││   │  按领域组织          │ 归档 │  每个变更一个文件夹             │   ││   │                     │      │  包含规格和任务清单             │   ││   └─────────────────────┘      └───────────────────────────────┘   ││                                                                    │└────────────────────────────────────────────────────────────────────┘

四、四个工作产物详解

每个变更文件夹里有四个文件,各有分工:

文件
作用
什么时候写
proposal.md
为什么要做这个、改什么、范围有多大
最先写,定义方向
specs/
增量规格,用 ADDED/MODIFIED/REMOVED 标记变更
proposal 之后,细化需求
design.md
技术方案,怎么实现
specs 之后,规划技术
tasks.md
实施清单,逐项打勾
最后写,拆解步骤

四个文件之间有依赖关系:proposal 定义方向,specs 细化需求,design 规划技术方案,tasks 拆解成可执行步骤。但它们不是瀑布式的——实施过程中发现新情况,随时可以回头改前面的文件。

proposal.md 示例:

# Proposal: Add Dark Mode## Intent用户反馈夜间使用时眼睛疲劳,需要暗黑模式。## Scope- 在设置页面添加主题切换- 支持跟随系统偏好- 用 localStorage 持久化用户选择## ApproachCSS 自定义属性做主题变量,React Context 管理状态。

design.md 示例:

# Design: Add Dark Mode## Architecture### Theme Provider- React Context 存储当前主题状态- 支持三种模式:light、dark、system- 初始化时读取 localStorage,fallback 到 system### CSS Variables- 在 :root 和 [data-theme="dark"] 上定义颜色变量- 所有组件使用 var(--color-xxx) 引用- 切换主题时修改 data-theme 属性### Persistence- localStorage key: "theme-preference"- system 模式下监听 prefers-color-scheme 变化## Tradeoffs- CSS Variables 而非 CSS-in-JS:性能更好,兼容性更强- React Context 而非 Redux:状态简单,不需要全局状态管理

tasks.md 示例:

# Tasks## 1. 主题基础设施- [ ] 1.1 创建 ThemeContext,支持 light/dark/system 三种模式- [ ] 1.2 在 :root 和 [data-theme="dark"] 上定义颜色变量- [ ] 1.3 实现 localStorage 读写逻辑## 2. UI 组件- [ ] 2.1 创建 ThemeToggle 组件,支持三档切换- [ ] 2.2 添加到设置页面- [ ] 2.3 在 Header 添加快速切换按钮## 3. 样式适配- [ ] 3.1 定义暗色主题色板(背景、文字、边框、强调色)- [ ] 3.2 所有组件改用 CSS 变量- [ ] 3.3 处理图片和图标的暗色适配

五、增量规格:变更追踪的核心机制

增量规格(Delta Spec)是 OpenSpec 最有意思的设计。它不重写规格说明,而是用标记告诉你这次变更对原有规格做了什么:

# Delta for Auth## ADDED Requirements### Requirement: Two-Factor Authentication系统登录时必须要求二次验证。#### Scenario: OTP required- GIVEN 用户已启用 2FA- WHEN 用户提交正确的账号密码- THEN 弹出 OTP 验证界面## MODIFIED Requirements### Requirement: Session Timeout会话超时时间从 60 分钟改为 30 分钟。(之前是 60 分钟)#### Scenario: Idle timeout- GIVEN 一个已认证的会话- WHEN 30 分钟无活动- THEN 会话失效## REMOVED Requirements### Requirement: Remember Me(已被 2FA 取代)

归档的时候:

  • • ADDED 的内容追加到主规格
  • • MODIFIED 的替换原有内容
  • • REMOVED 的删除

自动完成,不用手动合并。


六、全部指令详解

6.1 核心指令(core profile,默认可用)

/opsx:propose — 一步创建变更

最常用的起始指令。创建变更文件夹,一次性生成所有规划产物。

语法:

/opsx:propose [change-name-or-description]

参数:

  • • change-name-or-description(可选):kebab-case 名称或自然语言描述

它会做什么:

  1. 1. 创建 openspec/changes/<change-name>/ 目录
  2. 2. 生成 proposal.md
  3. 3. 生成 specs/(增量规格)
  4. 4. 生成 design.md
  5. 5. 生成 tasks.md
  6. 6. 停下来等你确认

示例:

You: /opsx:propose add-user-avatarAI:  Created openspec/changes/add-user-avatar/     ✓ proposal.md — 用户头像功能的需求和范围     ✓ specs/users/spec.md — 用户模块的增量规格     ✓ design.md — 技术方案     ✓ tasks.md — 实施清单     Ready for implementation. Run /opsx:apply.

使用技巧:

  • • 用自然语言描述也行:/opsx:propose 给用户加一个头像上传功能
  • • 想要更细粒度的控制?用扩展模式的 /opsx:new + /opsx:continue

/opsx:explore — 探索和调研

需求不清楚的时候先用这个。跟 AI 一起调研,不会生成任何文件。

语法:

/opsx:explore [topic]

参数:

  • • topic(可选):你想探索的主题

它会做什么:

  1. 1. 打开一个探索性对话
  2. 2. 分析代码库,回答你的问题
  3. 3. 比较不同的技术方案
  4. 4. 画图帮助理解
  5. 5. 准备好后可以转入 /opsx:propose

示例:

You: /opsx:exploreAI:  你想探索什么?You: 移动端的认证方案该怎么设计?AI:  让我看看现有的认证架构...     [分析代码库]     你目前用的是 session 认证。移动端有三个选项:     1. JWT(无状态,支持离线)     2. OAuth2(需要第三方登录时)     3. 扩展现有 session(简单但需要网络)     你想走哪个方向?You: JWT 吧。AI:  好,运行 /opsx:propose add-jwt-auth 开始正式变更。

使用技巧:

  • • 不确定需求时先探索,别急着创建变更
  • • 探索阶段可以随时转入正式流程
  • • AI 会读取代码库来回答问题

/opsx:apply — 实施任务

规格确认后,用这个指令开始写代码。

语法:

/opsx:apply [change-name]

参数:

  • • change-name(可选):要实施的变更名称(从上下文推断)

它会做什么:

  1. 1. 读取 tasks.md
  2. 2. 按顺序逐项实施
  3. 3. 每完成一项打勾
  4. 4. 实施过程中发现需要修改规格,会自动提醒

示例:

You: /opsx:applyAI:  Working through tasks for add-dark-mode...     ✓ 1.1 Created ThemeContext with light/dark/system modes     ✓ 1.2 Added CSS custom properties to globals.css     ✓ 1.3 Implemented localStorage persistence     ✓ 2.1 Created ThemeToggle component     ✓ 2.2 Added to settings page     ✓ 2.3 Added quick toggle to Header     ✓ 3.1 Defined dark theme color palette     ✓ 3.2 Updated components to use CSS variables     ✓ 3.3 Handled image/icon dark mode adaptation     All tasks complete! Run /opsx:archive when ready.

使用技巧:

  • • 实施过程中发现规格有问题?直接改 specs 文件,AI 会按新规格继续执行
  • • 可以指定变更名:/opsx:apply add-dark-mode
  • • 被打断了?下次再跑 /opsx:apply 会从上次停下的地方继续

/opsx:sync — 同步规格

实施完成后,把增量规格合并到主规格。

语法:

/opsx:sync [change-name]

它会做什么:

  1. 1. 读取变更的增量规格
  2. 2. 按 ADDED/MODIFIED/REMOVED 规则合并到 specs/
  3. 3. 显示合并结果

示例:

You: /opsx:syncAI:  Syncing specs for add-dark-mode...     ✓ ADDED: Theme Selection requirement → specs/ui/spec.md     ✓ ADDED: Theme Persistence requirement → specs/ui/spec.md     ✓ MODIFIED: None     ✓ REMOVED: None     Main specs updated. Ready to archive.

/opsx:archive — 归档变更

所有工作完成后,归档变更。

语法:

/opsx:archive [change-name]

它会做什么:

  1. 1. 合并增量规格(如果还没 sync)
  2. 2. 把变更文件夹移到 openspec/changes/archive/
  3. 3. 更新 specs 为最新的真相来源

示例:

You: /opsx:archiveAI:  Archiving add-dark-mode...     ✓ Specs synced     ✓ Change archived to openspec/changes/archive/2026-06-02-add-dark-mode/     Ready for the next feature!

6.2 扩展指令(需要手动启用)

默认 profile 是 core,只包含上面 5 个指令。想用更多指令,切换 profile:

openspec config profile    # 选择 workflowsopenspec update            # 更新配置

/opsx:new — 创建变更骨架

只创建文件夹,不生成产物。适合想要逐步控制的情况。

语法:

/opsx:new [change-name] [--schema <schema-name>]

示例:

You: /opsx:new add-dark-modeAI:  Created openspec/changes/add-dark-mode/     Schema: spec-driven     Ready to create: proposal     Use /opsx:continue to create it, or /opsx:ff to create all artifacts.

/opsx:continue — 逐个生成产物

按照依赖顺序,一次生成一个产物。适合想要逐步审核的情况。

语法:

/opsx:continue [change-name]

示例:

You: /opsx:continueAI:  Change: add-dark-mode     Artifact status:     ○ proposal.md    — ready to create     ○ specs/         — blocked (needs proposal)     ○ design.md      — blocked (needs specs)     ○ tasks.md       — blocked (needs design)     Creating proposal.md...     ✓ proposal.md created     Next ready: specs/     Run /opsx:continue to create it.

/opsx:ff — 快速生成所有产物

一次性生成所有规划产物(proposal、specs、design、tasks)。

语法:

/opsx:ff [change-name]

示例:

You: /opsx:ffAI:  Creating all planning artifacts for add-dark-mode...     ✓ proposal.md     ✓ specs/ui/spec.md     ✓ design.md     ✓ tasks.md     Ready for implementation! Run /opsx:apply.

/opsx:verify — 验证实施是否符合规格

实施完成后,检查代码是否符合规格说明。

语法:

/opsx:verify [change-name]

检查三个维度:

  1. 1. 完整性 — 所有任务都完成了吗?所有需求都有对应代码吗?
  2. 2. 正确性 — 实现符合规格的意图吗?
  3. 3. 一致性 — 代码和规格描述一致吗?

示例:

You: /opsx:verifyAI:  Verifying add-dark-mode...     COMPLETENESS     ✓ All 12 tasks in tasks.md are checked     ✓ All requirements in specs have corresponding code     ⚠ Scenario "System preference detection" not tested     CORRECTNESS     ✓ Theme toggle works as specified     ✓ localStorage persistence works     ✓ CSS variables defined correctly     CONSISTENCY     ✓ Implementation matches design.md     ⚠ Some components use hardcoded colors instead of variables     Issues found: 2     Run /opsx:apply to fix remaining issues.

/opsx:bulk-archive — 批量归档

同时归档多个已完成的变更。

语法:

/opsx:bulk-archive

示例:

You: /opsx:bulk-archiveAI:  Found 3 completed changes:     - add-dark-mode (all tasks done)     - fix-login-redirect (all tasks done)     - update-footer (all tasks done)     Checking for spec conflicts...     ⚠ add-dark-mode and update-footer both touch specs/ui/     Inspecting codebase to resolve...     Both changes are implemented. Will apply in chronological order.     Archive all 3 changes?You: YesAI:  ✓ Archived add-dark-mode     ✓ Archived fix-login-redirect     ✓ Archived update-footer     Specs merged in order: add-dark-mode → update-footer

/opsx:onboard — 新手引导教程

交互式教程,带你走一遍完整的 OpenSpec 流程。

语法:

/opsx:onboard

它会做什么:

  1. 1. 分析你的代码库
  2. 2. 找到一个小的改进点
  3. 3. 创建一个真实的变更
  4. 4. 逐步生成所有产物
  5. 5. 实施并归档
  6. 6. 总结整个流程

示例:

You: /opsx:onboardAI:  Welcome to OpenSpec!     I'll walk you through the complete workflow using your actual codebase.     We'll find something small to improve, create a proper change for it,     implement it, and archive it.     Let me scan your codebase for opportunities...     [分析代码库]     I found a few things we could work on:     1. Add input validation to the contact form     2. Improve error messages in the auth flow     3. Add loading states to async buttons     Which interests you? (or suggest something else)

使用技巧:

  • • 第一次用 OpenSpec 就跑这个,15-30 分钟走完全流程
  • • 用的是真实代码,不是玩具例子
  • • 创建的变更可以保留也可以删掉

6.3 CLI 命令(终端使用)

除了斜杠指令,OpenSpec 还有一系列终端命令:

命令
作用
openspec init
初始化项目
openspec update
更新配置和技能文件
openspec list
列出所有变更和规格
openspec show <item>
查看具体内容
openspec validate
验证变更和规格是否有问题
openspec status
查看当前状态
openspec archive
归档变更
openspec new change <id>
创建新变更
openspec set change <id>
设置当前变更
openspec instructions
获取下一步指引
openspec schemas
列出可用的 schema
openspec config
查看和修改配置
openspec workspace
管理工作区(beta)

常用场景:

# 查看当前有哪些变更openspec list# 查看某个变更的状态openspec status --change add-dark-mode# 验证所有变更openspec validate --all# 归档一个变更openspec archive add-dark-mode

七、使用前后的对比

场景一:加一个新功能

没有 OpenSpec:

You: 帮我加一个用户头像上传功能AI:  好的,我来添加头像上传。     [生成代码,但没考虑文件大小限制、图片裁剪、      存储方案、默认头像等问题]You: 要支持裁剪AI:  [加了裁剪,但用了你不想要的第三方库]You: 不要用这个库,用原生 canvasAI:  [改了,但忘了处理大文件]You: 还要加文件大小限制...AI:  [继续改...]

有 OpenSpec:

You: /opsx:propose add-user-avatarAI:  [生成规格说明]     proposal.md: 头像上传功能,包含裁剪、大小限制、存储     specs/: 定义了 5 个需求,8 个场景     design.md: 用 canvas 裁剪,上传到 S3,CDN 分发     tasks.md: 12 个任务     请检查规格说明。You: [检查后补上了"默认头像"的需求]You: /opsx:applyAI:  [按照规格一次性完成所有任务]

场景二:修一个 Bug

没有 OpenSpec:

You: 登录有时候会失败AI:  我来看看...[分析后修了一个地方]You: 还是会失败AI:  [又修了一个地方]You: 好像好了,但不确定有没有其他问题

有 OpenSpec:

You: /opsx:explore 登录偶尔失败的问题AI:  让我分析一下...     [发现三个可能的原因]     1. Session 过期处理有问题     2. 并发请求导致 token 刷新冲突     3. 网络超时没有重试机制     你想先处理哪个?You: 先处理 token 刷新的问题You: /opsx:propose fix-token-refresh-raceAI:  [生成规格说明,明确了问题、修复方案、测试场景]You: /opsx:applyAI:  [按照规格修复,并验证所有场景]You: /opsx:verifyAI:  验证结果:     ✓ 所有任务完成     ✓ 所有场景通过     ✓ 代码和规格一致     可以归档了。

场景三:重构代码

没有 OpenSpec:

You: 把认证模块重构一下AI:  好的...[改了一堆代码]You: 这不对,原来的接口要保持兼容AI:  [又改...]You: 测试跑不过了AI:  [继续修...]

有 OpenSpec:

You: /opsx:explore 认证模块重构AI:  让我分析现有架构...     [分析代码库,画出依赖关系图]     现有模块有 3 个主要问题:     1. Session 和 JWT 混用     2. 没有统一的错误处理     3. 测试覆盖不足     重构建议:     - 保持现有接口不变     - 内部改为 JWT     - 添加统一的错误处理层     要开始正式变更吗?You: 好,开始You: /opsx:propose refactor-auth-moduleAI:  [生成规格说明,包含:     - 哪些接口保持不变(MODIFIED Requirements)     - 哪些内部实现要改(ADDED Requirements)     - 哪些废弃代码要删(REMOVED Requirements)     - 向后兼容性保证     - 测试场景]You: [仔细检查规格,确认接口兼容性]You: /opsx:applyAI:  [按照规格重构,每一步都打勾]You: /opsx:verifyAI:  验证结果:     ✓ 所有接口保持兼容     ✓ 所有测试通过     ✓ 代码符合新架构

八、工作流程详解

8.1 快速路径(默认)

/opsx:propose → /opsx:apply → /opsx:sync → /opsx:archive

最简单的流程,适合大部分场景。

8.2 扩展路径

/opsx:new → /opsx:ff → /opsx:apply → /opsx:verify → /opsx:archive

扩展模式适合需要更细粒度控制的情况。

8.3 探索路径

/opsx:explore → /opsx:propose → /opsx:apply → /opsx:archive

需求不清楚时先探索。

8.4 并行变更

Change A: /opsx:propose → /opsx:apply (进行中)                              │                         紧急 bug 需要修                              │Change B: /opsx:propose ───→ /opsx:apply → /opsx:archive回到 Change A: /opsx:apply add-dark-mode → 继续未完成的任务

8.5 何时更新现有变更 vs 创建新变更

更新现有变更:

  • • 同一意图,调整执行方式
  • • 范围缩小(先做 MVP,剩下的以后再说)
  • • 实施过程中发现新情况,需要调整
  • • 设计细节需要修改

创建新变更:

  • • 意图根本改变了
  • • 范围膨胀成了完全不同的工作
  • • 原来的变更可以独立完成
  • • 补丁会让人更困惑

九、如何很好地使用 OpenSpec

9.1 命名要具体

变更文件夹用描述性的名字:

好的命名:                    不好的命名:add-dark-mode                feature-1fix-login-redirect           updateoptimize-product-query       changesimplement-2fa                wip

9.2 保持变更聚焦

一个变更只做一件事。如果你在做"加功能 X 同时重构 Y",拆成两个变更。

好处:

  • • 更容易理解和审查
  • • 归档历史更清晰
  • • 可以独立发布
  • • 出问题更容易回滚

9.3 需求不清楚时先探索

别急着创建变更。先用 /opsx:explore 调研:

You: /opsx:exploreAI:  你想探索什么?You: 我们要不要引入 GraphQL?AI:  让我看看你们现在的 API 架构...     [分析代码库]     你们目前用的是 REST,有 47 个端点。     引入 GraphQL 的话:     - 优点:减少 over-fetching,前端更灵活     - 缺点:学习曲线,需要重构现有端点     建议:先在一个新模块试水,不要全面迁移。     要开始一个试点变更吗?

9.4 归档前验证

用 /opsx:verify 检查实施是否符合规格:

You: /opsx:verifyAI:  Verifying add-dark-mode...     ✓ All tasks in tasks.md are checked     ✓ Requirements in specs have corresponding code     ✓ Design decisions are reflected in implementation     Ready to archive!

9.5 实施过程中可以改规格

发现规格有问题?直接改。OpenSpec 的设计就是支持迭代的:

You: /opsx:applyAI:  Working on task 3.2...     I found that some components use inline styles that     can't use CSS variables. Should I:     1. Refactor those components to use CSS variables     2. Add a fallback mechanism     What do you prefer?You: 选 1,顺便更新一下 design.mdAI:  ✓ Updated design.md with inline style refactoring approach     ✓ Refactored components to use CSS variables     ✓ Updated tasks.md to include the new task     Continuing...

9.6 用高推理能力的模型

OpenSpec 的效果跟模型能力直接相关。官方推荐:

  • • Codex 5.5
  • • Opus 4.7

弱模型生成的规格说明可能不够准确,需要更多人工修正。

9.7 保持上下文干净

开始实施前清理一下上下文窗口。规格文件本身会注入上下文,窗口里还有旧的对话记录容易互相干扰。


十、支持的工具

OpenSpec 支持 30 多种 AI 编程助手:

工具
命令语法示例
Claude Code
/opsx:propose
/opsx:apply
Cursor
/opsx-propose
/opsx-apply
Windsurf
/opsx-propose
/opsx-apply
Codex
/opsx:propose
/opsx:apply
GitHub Copilot
/opsx-propose
/opsx-apply
Cline
/opsx-propose
/opsx-apply
RooCode
/opsx-propose
/opsx-apply
Continue
/opsx-propose
/opsx-apply
Amazon Q
/opsx-propose
/opsx-apply
Gemini CLI
/opsx-propose
/opsx-apply
OpenCode
/opsx-propose
/opsx-apply
Kiro
/opsx-propose
/opsx-apply
CodeBuddy
/opsx-propose
/opsx-apply
Qwen Code
/opsx-propose
/opsx:apply
Lingma
/opsx-propose
/opsx:apply
Kimi CLI
/skill:openspec-propose
/skill:openspec-apply
Trae
/openspec-propose
/openspec-apply

初始化时选择你用的工具,OpenSpec 会自动在对应目录生成 skill 文件和 command 文件。


十一、和其他工具的对比

对比 GitHub 的 Spec Kit

维度
OpenSpec
Spec Kit
重量级
轻量
重量级
阶段门
无,随时回头改
严格,必须按顺序
配置
简单,YAML
复杂,Python
学习曲线
适合场景
快速迭代
严格流程

对比 AWS 的 Kiro

维度
OpenSpec
Kiro
工具绑定
无,任何工具都能用
绑定 Kiro IDE
模型限制
无,任何模型都能用
只支持 Claude
灵活性
功能
基础但够用
强大但受限

对比不用任何工具

维度
用 OpenSpec
不用
需求对齐
先写规格,再写代码
靠聊天,容易误解
变更追踪
增量规格,自动合并
手动记录,容易遗漏
并行工作
支持多变更并行
容易混乱
归档
自动归档,有历史
没有历史记录
可预测性

十二、自定义和扩展

通过 schema 机制,你可以定义自己的产物类型和依赖关系。

创建自定义 Schema

openspec schema init my-workflow

这会创建一个 schema 配置文件,你可以定义:

  • • 有哪些产物类型
  • • 产物之间的依赖关系
  • • 每个产物的模板

社区 Schema

社区有第三方 schema 包,提供针对特定场景的预设工作流:

  • • 敏捷开发工作流
  • • 文档驱动工作流
  • • 测试驱动工作流

配置文件

配置文件在 openspec/config.yaml

# 默认 schemaschema: spec-driven# 语言(影响生成的文档语言)language: zh-CN# 产物模板templates:  proposal: ./templates/proposal.md  design: ./templates/design.md

十三、常见问题排查

"Change not found"

指令找不到要操作的变更。

解决:

  • • 明确指定变更名:/opsx:apply add-dark-mode
  • • 检查变更文件夹是否存在:openspec list
  • • 确认在正确的项目目录

"No artifacts ready"

所有产物要么已完成,要么被依赖阻塞。

解决:

  • • 查看状态:openspec status --change <name>
  • • 检查是否有缺失的依赖产物
  • • 先创建缺失的依赖

"Schema not found"

指定的 schema 不存在。

解决:

  • • 列出可用 schema:openspec schemas
  • • 检查拼写
  • • 如果是自定义 schema,先创建它

指令不被识别

AI 工具不认识 OpenSpec 指令。

解决:

  • • 确认已初始化:openspec init
  • • 重新生成技能文件:openspec update
  • • 检查对应目录是否存在(比如 .claude/skills/
  • • 重启 AI 工具

产物生成不完整

AI 生成的产物有问题。

解决:

  • • 在 openspec/config.yaml 里添加项目上下文
  • • 用 /opsx:continue 而不是 /opsx:ff,逐步控制
  • • 给变更描述里加更多细节

十四、总结

OpenSpec 解决一个问题:AI 编程助手需要明确的规格才能干活。

你说"加个暗黑模式",AI 可能理解成十种不同的东西。OpenSpec 的做法是在动手之前,先让你们在一份规格说明上达成一致。规格确认了,再按任务清单一项项实施。

四个核心流程:/opsx:propose 创建变更 → /opsx:apply 实施 → /opsx:verify 验证 → /opsx:archive 归档。

两个关键目录:specs/ 存系统当前行为(真相来源),changes/ 存正在规划的修改。变更完成归档后,增量规格自动合并回 specs/

适合用的人: 用 AI 编程助手写正经项目的开发者,尤其是需求经常变、需要并行处理多个功能的场景。

不太适合的情况: 只写一两行脚本、不愿意花时间写规格说明、或者用的模型太弱。

如果你用 AI 编程助手写代码,但总觉得产出质量不稳定——先跑一个 /opsx:onboard,15 分钟走完一遍,自己感受。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-03 05:09:34 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/702897.html
  2. 运行时间 : 0.161194s [ 吞吐率:6.20req/s ] 内存消耗:4,680.64kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=31f80be85d91416cba8a083a68a9c6bd
  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.000653s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000876s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000375s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000352s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000938s ]
  6. SELECT * FROM `set` [ RunTime:0.000407s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001010s ]
  8. SELECT * FROM `article` WHERE `id` = 702897 LIMIT 1 [ RunTime:0.001110s ]
  9. UPDATE `article` SET `lasttime` = 1780434574 WHERE `id` = 702897 [ RunTime:0.011175s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000466s ]
  11. SELECT * FROM `article` WHERE `id` < 702897 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000770s ]
  12. SELECT * FROM `article` WHERE `id` > 702897 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.019998s ]
  13. SELECT * FROM `article` WHERE `id` < 702897 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004819s ]
  14. SELECT * FROM `article` WHERE `id` < 702897 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.005075s ]
  15. SELECT * FROM `article` WHERE `id` < 702897 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.021099s ]
0.162917s