跳到主要内容
OpenSpec 完全使用指南:约束驱动 AI 编码 | 极客日志
TypeScript Node.js AI 大前端
OpenSpec 完全使用指南:约束驱动 AI 编码 OpenSpec 是一款通过规格驱动 AI 编码的工具,旨在解决 AI 编程中的沟通成本高、上下文丢失等问题。它通过将需求、技术方案和实现步骤持久化为 Markdown 文件,使 AI 基于共识文档工作。核心概念包括 Specs(系统行为描述)和 Changes(变更管理)。工具提供多种命令如 propose、explore、apply、archive 来管理开发流程,支持从需求清晰到模糊的各种场景,并强调归档前验证以确保质量。适用于需要多人协作或持续迭代的 TypeScript/Node.js 项目。
战神 发布于 2026/4/6 更新于 2026/5/22 38 浏览OpenSpec 完全使用指南
如果你正在用 AI 写代码,却总觉得沟通成本比写代码还高——OpenSpec 可能是你一直缺的那块拼图。
一、为什么需要 OpenSpec
AI 编码的真正瓶颈不是代码,是对齐
用 AI 结对编程一段时间后,你大概率会遇到几个反复出现的问题:
痛点 描述 📉 理解偏差 花了两段话描述功能,AI 写出来的代码却跑偏了 🔄 重复解释 纠偏、重来,几轮下来上下文窗口消耗大半 💨 记忆蒸发 对话关闭后,所有讨论、决策、设计全部消失 ⏸️ 中断丢失 被打断后回来,AI 完全不知道你之前做到哪了
这些痛点的根源都一样:AI 的记忆只存在于当前对话中。对话关了,一切归零。
OpenSpec 的解决思路
既然对话会消失,那就把重要的东西写成文件:
全部以 Markdown 文件 持久化在项目里。AI 每次开工,不是从你的口头描述出发,而是从这份共识文档出发。
二、安装与初始化
前置要求
安装
npm install -g @fission-ai/openspec@latest
初始化项目
cd your-project && openspec init
CLI 会问你使用哪些 AI 工具(Claude Code、Cursor、Copilot 等),然后自动往对应目录写入 Skill 和斜杠命令文件。
完成后项目里多出一个 openspec/ 目录:
openspec/
├── specs/
├── changes/
└── config.yaml
配置项目上下文(强烈推荐)
在 openspec/config.yaml 里告诉 AI 你的项目是什么样的:
schema: spec-driven
context:|
技术栈:TypeScript、React 18 、Node.js、PostgreSQL
API 风格:RESTful,文档在
docs/api.md
测试框架:Vitest
+
React
Testing
Library
代码规范:参考
.eslintrc.js
rules:
proposal:
-
必须包含回滚方案
-
标注影响的模块范围
specs:
-
使用
Given/When/Then
格式描述测试场景
context 会注入到所有工件的生成过程中——相当于一次配置,以后再也不用在对话开头反复交代我们用的是 React + TypeScript 了。
Please read openspec/config.yaml and help me fill it out with details about my project, tech stack, and conventions
启用扩展命令 openspec config profile openspec update
选择 Expanded Profile 后,new、continue、ff、verify、sync、bulk-archive、onboard 等高级命令就可以用了。
三、核心理念
为什么要先写规格再写代码? 你描述需求 → AI 直接写代码 → 发现理解不一致 → 返工
写规格 → AI 理解规格 → 基于规格写代码 → 基于规格验收
规格是给 AI 看的行为契约 ——它告诉 AI 系统应该表现出什么行为。你基于这份契约去验收。
四个设计原则 原则 说明 🧘 灵活,而非死板 没有规划阶段不许写代码这种锁定。写到一半发现 specs 不对?回去改就是了 🔄 迭代,而非瀑布 不要求一次把所有事情想清楚。先写个大概,边做边完善 📄 简单,而非复杂 就是几个 Markdown 文件,没有数据库、没有服务端、没有 Dashboard 🏗️ 存量优先 从第一天起就为改存量系统设计,而不是只能在空白项目上玩
两个核心概念:Specs 和 Changes openspec/
├── specs/ ← 系统现在是什么样的
│ ├── auth/
│ ├── payments/
│ └── ...
└── changes/ ← 我们打算改什么
├── add -dark-mode/
└── fix-login-bug/
概念 含义 回答的问题 Specs(主规格) 系统当前行为的权威描述——源真相 系统现在是怎么运作的? Changes(变更) 正在进行的修改——每个功能/Bug 修复独立一个文件夹 我们打算怎么改?
当一个变更完成并归档后,它里面的规格变化会合并进 specs——主规格因此更新,变更则移入归档目录。
Specs 长什么样? 核心两部分:需求(Requirements) 和 场景(Scenarios) 。
需求 - 用 RFC 2119 关键字表达意图强度 ## Purpose
用户认证模块,管理登录、登出和会话维护。
### Requirement: Login Authentication
系统 MUST 在用户提供有效凭证时签发 JWT token。
系统 MUST 在凭证无效时返回 401 错误,且不泄露是用户名还是密码错误。
系统 SHOULD 在连续 5 次失败后触发临时锁定。
系统 MAY 支持记住我功能以延长 token 有效期。
关键字 含义 MUST 必须实现,不实现就是 Bug SHOULD 强烈建议,除非有充分理由可以不做 MAY 可选的增强功能
场景 - Given/When/Then 格式 #### Scenario: Successful Login
Given 用户名 alice 存在且密码正确
When 用户提交登录请求
Then 系统返回 200 和有效的 JWT token
And token 有效期为 24 小时
#### Scenario: Invalid Password
Given 用户名 alice 存在但密码错误
When 用户提交登录请求
Then 系统返回 401
And 错误信息不区分用户不存在和密码错误
重要:specs 只描述外部可观察的行为,不描述内部实现。
判断标准:如果你把底层实现换了(比如从 bcrypt 换成 argon2),但系统对外的行为没有任何变化,那这个东西就不该出现在 specs 里。
工件(Artifacts):从为什么到怎么做 proposal.md → specs/ → design.md → tasks.md
为什么做?做什么?怎么做?具体步骤
工件 回答的问题 内容 proposal.md 为什么要做这件事? 动机、范围(做什么和不做什么)、预期收益 specs/ 系统行为会怎么改变? 用 Delta Specs 描述新增、修改、删除了哪些行为 design.md 技术上怎么实现? 架构决策、组件设计、技术选型的理由 tasks.md 具体要干哪几件事? 带复选框的实现清单,AI 在 /opsx:apply 时逐条执行
Delta Specs:改存量代码的秘密武器 每个变更的 specs/ 子目录里存放的是三类变化:
## ADDED Requirements
### Requirement: Theme Switching
系统 MUST 提供深色/浅色主题切换功能。
系统 SHOULD 支持跟随操作系统主题设置。
## MODIFIED Requirements
### Requirement: Page Background (MODIFIED)
- 原:系统 MUST 使用固定白色背景(#FFFFFF)
- 新:系统 MUST 根据当前主题设置显示对应的背景色
## REMOVED Requirements
### Requirement: Fixed Color Scheme (REMOVED)
- 原:系统 MUST 使用预设的固定配色方案
- 原因:被新的主题系统取代
归档时,这些增量会自动合并进 openspec/specs/ 主规格:
ADDED 的内容追加进去
MODIFIED 的内容替换旧版本
REMOVED 的内容被移除
看变更一目了然——审查时直接告诉你改了什么
并行开发不冲突——各自描述我改了什么
存量项目友好——不需要先给整个系统写完整规格
渐进式严格:不需要一步到位 场景 规格详细程度 日常开发(Lite Spec) 简短的行为描述、清晰的范围界定、基本的验收条件 高风险变更(Full Spec) 完整的 Given/When/Then 场景、边界条件分析、错误处理路径
判断标准: 如果这个变更搞砸了的返工成本很高,就多花点时间写规格;如果改错了 5 分钟就能修好,那写个大概就够了。
四、命令详解
核心命令(Core Profile,默认可用)
/opsx:propose — 需求清晰时,一步到位你已经想好了要做什么,AI 会一口气生成全套工件:
You: /opsx:propose 用户可以通过 GitHub OAuth 登录,登录后自动创建账号,支持关联已有邮箱账号
AI: ✓ Created openspec/changes/add-github-oauth/
✓ proposal.md — scope & intent
✓ specs/auth.md — delta specs for authentication
✓ design.md — OAuth flow, token handling, account linking
✓ tasks.md — 8 implementation tasks
Ready for review!
生成后花几分钟扫一遍工件——尤其是 tasks.md 的拆分是否合理、specs/ 有没有遗漏边界条件。
/opsx:explore — 不确定的时候,先探索还没想清楚要做什么?用 explore 让 AI 先帮你搞清楚情况,零副作用 :
You: /opsx:explore 我们应该用 WebSocket 还是 SSE 来实现实时通知?请分析当前的架构,评估两种方案
AI: Let me investigate your codebase...
Comparison:
• WebSocket: bidirectional, but requires nginx upgrade config
• SSE: simpler, works through existing HTTP stack
Recommendation: SSE for your use case .
explore 完成后可以自然衔接到 propose 或 new。
/opsx:apply — 按清单执行实现工件准备好了,让 AI 按 tasks.md 里的清单逐条干活:
You: /opsx:apply add-github-oauth
AI: Reading tasks.md...
Found 8 tasks, 0 completed.
Working on task 1 : Install passport-github2 dependency
✓ Added to package.json, ran npm install
Working on task 2 : Create OAuth strategy configuration
✓ Created src/auth/github-strategy.ts
... All 8 tasks complete!
每完成一项,AI 会在 tasks.md 里打上勾。如果中途被打断,下次重新执行 /opsx:apply,它会从未完成的任务接着来。
/opsx:archive — 收尾归档You: /opsx:archive add-github-oauth
AI: ✓ All 8 tasks completed
✓ Syncing delta specs to openspec/specs/auth.md
✓ Archived to openspec/archive/2026 -02 -27_ add-github-oauth/
Change closed.
把 Delta Specs 合并进 openspec/specs/ 主规格
把变更目录整体移到带时间戳的归档目录
这个变更的生命周期正式结束
扩展命令(需启用 Expanded Profile)
/opsx:new — 只建骨架,不急着填内容和 propose 不同,new 只创建变更目录和元数据,不生成任何工件内容:
You: / opsx:new add - logout- button
AI: Created openspec/ changes/ add - logout- button/
Ready to create : proposal
后续用 /opsx:continue 或 /opsx:ff 来生成工件。
/opsx:continue — 一步一步来,每步都能审查You: /opsx:continue add-logout-button
AI: Creating proposal.md...
✓ proposal.md created
Next artifact: specs
You: (审查 proposal,发现范围需要调整,手动编辑)
You: /opsx:continue add-logout-button
AI: Creating specs/...
✓ specs/session.md created (delta)
Next artifact: design
/opsx:ff — 快进生成所有剩余工件和 continue 对应——如果你已经确认方向没问题,直接快进补全:
You: /opsx:new add-logout-button
AI: Created openspec/changes/add-logout-button/
You: /opsx:ff
AI: Creating all planning artifacts...
✓ proposal.md
✓ specs/
✓ design.md
✓ tasks.md
Ready for implementation!
场景 选择 需求清晰、能一口气描述完 ff需求还在打磨、想每步审查 continue赶时间 ff复杂变更、需要精细控制 continue
/opsx:verify — 归档前的质量检查让 AI 拿着规格去对照实际代码,从三个维度报告问题:
You: /opsx:verify add-logout-button
AI: Verifying implementation against specs...
✅ Completeness: 4 /4 tasks done, all scenarios covered
⚠️ Correctness: WARNING — logout doesn't clear localStorage
✅ Coherence: Design patterns consistent
1 issue found. Recommend fixing before archive.
维度 检查内容 完整性 所有任务是否完成?需求场景是否覆盖? 正确性 实现是否匹配规格意图?边界条件是否处理? 一致性 代码结构是否反映设计决策?命名和模式是否统一?
报告分为 CRITICAL 、WARNING 、SUGGESTION 三个级别。
/opsx:sync — 只同步规格,不归档有时候一个变更还在进行中,但你希望它的规格先合并进主规格:
You: /opsx:sync add-logout-button
AI: Merging delta specs into main specs...
✓ openspec/specs/session.md updated
Change remains active (not archived).
/opsx:bulk-archive — 并行开发后的批量收尾You: / opsx:bulk- archive
AI: Found 3 completed changes:
• add - logout- button (4 / 4 tasks)
• fix- session- timeout (3 / 3 tasks)
• update - user - profile (6 / 6 tasks)
⚠️ Conflict in specs/ session.md detected → Resolved by checking actual implementation
✓ All 3 changes archived.
/opsx:onboard — 交互式上手教程第一次用 OpenSpec?让它用你的真实代码库走一遍完整流程:
You: /opsx:onboard
AI: Welcome to OpenSpec! Let
CLI 工具命令 openspec list
openspec view
openspec show add-dark-mode
openspec status add-dark-mode
openspec validate --all --strict
openspec archive add-dark-mode
openspec config profile
五、实战场景
场景一:需求清晰,直接开干 /opsx:propose → 审查 → /opsx:apply → /opsx:verify → /opsx:archive
You: /opsx:propose 在用户设置页面添加深色模式开关,支持跟随系统主题,选择结果持久化到 localStorage
AI: ✓ Created openspec/changes/add-dark-mode/
✓ proposal.md — scope & intent
✓ specs/ui-theme.md — delta specs
✓ design.md — CSS variables approach, theme context
✓ tasks.md — 6 implementation tasks
Ready for review!
You: (扫了一遍 tasks.md,拆分合理,specs 覆盖了跟随系统和手动切换两种场景)
You: /opsx:apply add-dark-mode
AI: Working through tasks...
✓ Created ThemeContext with system preference detection
✓ Added CSS variables for light/dark themes
✓ Implemented toggle switch in Settings page
✓ Added localStorage persistence
✓ Updated existing components to use theme variables
✓ Added transition animations
All 6 tasks complete!
You: /opsx:verify add-dark-mode
AI: ✅ Completeness: 6 /6 tasks, all scenarios covered
✅ Correctness: Matches spec intent
✅ Coherence: Consistent use of CSS variables
No issues found.
You: /opsx:archive add-dark-mode
AI: ✓ Synced delta specs → openspec/specs/ui-theme.md
✓ Archived to openspec/archive/2026-02-27_add-dark-mode/
Change closed.
Expanded Profile 路径(更可控):
/opsx:new → /opsx:ff → /opsx:apply → /opsx:verify → /opsx:archive
场景二:需求模糊,需要边探索边明确 /opsx:explore → /opsx:new → /opsx:continue → ... → /opsx:apply → /opsx:archive
You: /opsx:explore 首页加载时间超过 3 秒,用户反馈很多。帮我分析一下瓶颈在哪,有哪些优化方向
AI: Investigating your codebase...
Found performance bottlenecks:
1 . Homepage fetches 5 API endpoints sequentially (not parallel)
2 . Product images are unoptimized PNGs (avg 2.3 MB each )
3 . No code splitting — main bundle is 1.8 MB
4 . SSR is disabled, full client-side rendering
Recommended priority:
1 . Parallelize API calls (quick win, ~40% improvement)
2 . Image optimization pipeline (medium effort, big impact)
3 . Code splitting (one-time setup, ongoing benefit)
4 . SSR (largest effort, evaluate ROI separately)
You: 先做第 1 和第 2 个吧,第 3 个后续再说
You: /opsx:new homepage-performance-fix
You: /opsx:continue homepage-performance-fix
场景三:并行开发多个功能
/opsx:propose feature-a → /opsx:apply feature-a
/opsx:propose feature-b → /opsx:apply feature-b
/opsx:bulk-archive
每个变更在各自的 changes/ 子目录里工作,互不干扰。
场景四:已标记完成但未归档的 change 发现 Bug 如何修复 问题: 一个 change 已经全部任务完成(tasks.md 全勾),但测试时发现 Bug,还没归档。
/opsx:verify → 定位问题 → 手动修复或追加任务 → /opsx:apply → /opsx:verify → /opsx:archive
You: /opsx:verify add-dark-mode
AI: Verifying implementation against specs...
✅ Completeness: 6 /6 tasks done
⚠️ Correctness: WARNING — Theme doesn't persist after page refresh
✅ Coherence: Design patterns consistent
1 issue found: localStorage write missing
You: 发现 localStorage 写入逻辑缺失,请补充
AI: Fixing the issue...
✓ Added localStorage.setItem(
✓ Added loadSavedTheme() on app initialization
Fix complete!
You: /opsx:continue add-dark-mode
AI: All planning artifacts exist. You can:
- Edit tasks.md manually to add new tasks
- Or describe what needs to be added
You: 在 tasks.md 里追加两个任务:
1 . 添加 localStorage 读取逻辑
2 . 添加主题切换后的持久化写入
AI: ✓ Updated tasks.md with 2 new tasks
Ready for /opsx:apply
You: /opsx:apply add -dark-mode
AI: Reading tasks.md...
Found 2 new tasks, 0 completed.
Working on task 1 : Add localStorage read logic
✓ Added loadSavedTheme () in App.tsx
Working on task 2: Add persistence on theme change
✓ Added useEffect hook in ThemeContext
All tasks complete!
You: /opsx:verify add-dark-mode
AI: ✅ Completeness: 8 /8 tasks done
✅ Correctness: Theme persists correctly after refresh
✅ Coherence: No issues found
Ready for archive!
You: /opsx:archive add-dark-mode
AI: ✓ Synced delta specs → openspec/specs/ui-theme.md
✓ Archived to openspec/archive/2026-03-11_add-dark-mode/
Change closed.
如果 Bug 涉及规格遗漏,先更新 specs/ 再修复代码
修复后务必再跑一次 /opsx:verify
如果 Bug 是规格设计问题,可能需要 /opsx:explore 重新评估方案
场景五:重新开启客户端,如何继续工作 问题: 关闭对话/客户端后重新打开,如何继续之前的工作。
核心原理: OpenSpec 的所有状态都持久化在 openspec/ 目录中,新对话只需读取即可继续。
You: /opsx:list
AI: Active changes:
• add-dark-mode (6 /6 tasks) — Ready for verify
• fix-login-bug (2 /5 tasks) — In progress
• new -feature (0 /4 tasks) — Planning complete
You: /opsx:show fix-login-bug
AI: Change: fix-login-bug
Status: In progress (2/5 tasks completed)
Artifacts:
✓ proposal.md
✓ specs/auth.md
✓ design.md
✓ tasks.md (2 checked, 3 pending)
Pending tasks:
☐ Task 3: Add rate limiting to login endpoint
☐ Task 4: Implement account lockout after 5 failures
☐ Task 5: Add unit tests for lockout logic
openspec status fix-login-bug
You: /opsx:apply fix-login-bug
AI: Reading tasks.md...
Found 3 tasks pending.
Working on task 3 : Add rate limiting to login endpoint
✓ Added express-rate-limit middleware
... All 3 tasks complete!
You: /opsx:continue fix-login-bug
AI: Last completed artifact: specs
Next artifact: design.md
Creating design.md...
✓ design.md created
Next artifact: tasks
You: 帮我读一下 openspec/changes/fix-login-bug/specs/auth.md
AI: Reading specs...
Current delta specs for auth module :
- ADDED: Account lockout after 5 failed attempts
- MODIFIED: Login error response (no distinction between user not found and wrong password)
Based on these specs, the implementation should...
You: /opsx:sync fix-login-bug
AI: Merging delta specs into main specs...
✓ openspec/specs/auth.md updated
Change remains active (not archived).
每天下班前用 /opsx:list 看一眼活跃变更
新对话第一件事:/opsx:show <change-name> 了解进度
长期中断后,先用 /opsx:verify 检查已完成的部分
场景六:发现未完成的 change 有场景遗漏,怎么处理 问题: 做到一半发现 specs 里的场景(Scenarios)有遗漏,需要补充。
编辑 specs/ → /opsx:sync → 更新 tasks.md → /opsx:apply → /opsx:verify
You: /opsx:verify fix-login-bug
AI: Verifying implementation against specs...
⚠️ Completeness: WARNING — Missing scenario coverage
The following scenario is not tested:
- Scenario: Account Unlock After Timeout
Recommendation: Add this scenario to specs and implement corresponding logic.
手动编辑 openspec/changes/fix-login-bug/specs/auth.md:
## ADDED Requirements
### Requirement: Account Lockout (MODIFIED)
系统 MUST 在连续 5 次登录失败后锁定账户。
系统 MUST 在锁定 30 分钟后自动解锁。← 新增
#### Scenario: Account Lock After Failed Attempts
Given 用户连续 5 次输入错误密码
When 第 5 次登录请求提交
Then 系统返回 401
And 账户被锁定 30 分钟
#### Scenario: Account Unlock After Timeout ← 新增场景
Given 账户因多次失败被锁定
When 30 分钟过去
Then 账户自动解锁
And 用户可以重新尝试登录
You: /opsx:sync fix-login-bug
AI: Merging delta specs into main specs...
✓ openspec/specs/auth.md updated
Change remains active.
手动编辑 openspec/changes/fix-login-bug/tasks.md,追加任务:
## Tasks
- [x] Task 1: Install rate limiting library
- [x] Task 2: Create login attempt counter
- [x] Task 3: Implement account lockout logic
- [ ] Task 4: Add automatic unlock after 30 minutes ← 新增
- [ ] Task 5: Add unit tests for unlock logic ← 新增
You: 在 tasks.md 里追加两个任务:
1 . 添加 30 分钟后自动解锁逻辑
2 . 添加解锁场景的单元测试
AI: ✓ Updated tasks.md with 2 new tasks
You: /opsx:apply fix-login-bug
AI: Reading tasks.md...
Found 2 new tasks.
Working on task 4 : Add automatic unlock logic
✓ Added scheduled job to clear lockouts
Working on task 5 : Add unit tests
✓ Created auth-unlock.test.ts with 3 test cases
All tasks complete!
You: /opsx:verify fix-login-bug
AI: ✅ Completeness: 5 /5 tasks done, all scenarios covered
✅ Correctness: Implementation matches updated specs
✅ Coherence: No issues found
Ready for archive!
Specs 是活的文档,发现遗漏随时可以改
改了 specs 后,记得同步更新 tasks.md
用 /opsx:verify 验证场景覆盖是否完整
如果遗漏影响很大,可能需要 /opsx:explore 重新评估方案
场景七:有明确的需求文档,怎么开始 问题: 手里已经有 PRD/需求文档,如何用 OpenSpec 开始工作。
路径 A:让 AI 从需求文档生成工件(推荐) You: / opsx:new user - registration- module
AI: Created openspec/ changes/ user - registration- module /
Ready to create : proposal
Step 2: 提供需求文档,生成 proposal
You: 这是我们的 PRD 文档,请帮我生成 proposal.md:[粘贴 PRD 内容或上传文件]
AI: Analyzing requirements...
✓ Created proposal.md with:
- Problem statement: User registration friction
- Scope: Email registration, verification, welcome flow
- Out of scope: Social login, SSO (future phases)
- Expected impact: 30 % reduction in signup drop-off
Step 3: 基于 proposal 生成 specs
You: /opsx:continue user-registration-module
AI: Creating specs/...
✓ specs/registration.md created (delta)
Generated 8 requirements and 12 scenarios based on the proposal. Please review for accuracy.
You: (阅读 specs/registration.md,发现需要调整)
You: 第 3 个场景需要修改,密码强度要求应该是:
- 至少 8 个字符
- 包含大小写字母和数字
而不是现在的 6 个字符
AI: ✓ Updated specs/registration.md
Step 5: 继续生成 design 和 tasks
You: /opsx:ff user-registration-module
AI: Creating remaining artifacts...
✓ design.md — Database schema, API endpoints, validation logic
✓ tasks.md — 12 implementation tasks
Ready for /opsx:apply!
路径 B:手动创建 proposal,再让 AI 生成后续 在 openspec/changes/user-registration-module/proposal.md 中写:
# Proposal: User Registration Module
## Problem
当前注册流程转化率仅 45%,主要流失点在邮箱验证环节。
## Scope
### In Scope
- 邮箱注册表单
- 邮箱验证邮件发送
- 验证码校验接口
- 欢迎邮件流程
### Out of Scope
- 社交账号登录(后续迭代)
- SSO 企业登录(后续迭代)
## Expected Impact
- 注册转化率提升至 65%
- 验证邮件打开率 > 80%
Step 2: 让 AI 基于 proposal 生成 specs
You: /opsx:continue user-registration-module
AI: Reading proposal.md...
✓ Creating specs/registration.md
Generated 8 requirements and 12 scenarios
Step 3: 继续生成 design 和 tasks
You: /opsx:ff user-registration-module
AI: ✓ design.md created
✓ tasks.md created — 12 tasks
Ready for /opsx:apply!
路径 C:需求文档是外部链接或文件 You : 请读取这个需求文档并帮我创建 OpenSpec 工件:https :
AI : Fetching and analyzing document ...
✓ Created openspec/changes/user-registration-module /
✓ proposal.md — extracted from PRD
✓ specs/registration.md — 8 requirements, 12 scenarios
✓ design.md — technical approach
✓ tasks.md — 12 implementation tasks
Ready for review!
You: (审查生成的工件,调整 specs 中的边界条件)
You: specs 里需要增加一个场景:当邮箱已经被注册时,应该提示该邮箱已注册而不是注册失败
AI: ✓ Updated specs/registration.md
Added Scenario: Duplicate Email Registration
PRD 内容 OpenSpec 工件 问题陈述/背景 proposal.md — Problem 功能范围 proposal.md — Scope 功能列表 specs/ — Requirements 用户故事/用例 specs/ — Scenarios 技术方案 design.md 任务分解 tasks.md 验收标准 specs/ — Scenarios
PRD 越详细,AI 生成的工件越准确
生成后务必人工审查 specs,确保边界条件完整
需求文档中的非功能需求(性能、安全)也要写入 specs
用 /opsx:verify 确保最终实现覆盖所有需求
六、最佳实践
✅ 推荐做法 做法 说明 📝 先写规格再写代码 花 5 分钟写规格,可能节省 1 小时返工 🎯 渐进式严格 日常开发用 Lite Spec,高风险变更用 Full Spec 🔄 及时归档 功能完成后立即归档,保持 specs 最新 🔍 归档前 verify 跑一次 /opsx:verify 抓住遗漏 📁 配置 context 一次配置,AI 永远知道你的技术栈 🧩 小步快跑 一个变更聚焦一个功能,不要贪大
❌ 避免的坑 坑 建议 🚫 跳过 specs 直接写代码 失去规格驱动的意义 🚫 规格写得太细 描述行为,不要描述实现细节 🚫 长期不归档 specs 会过时,失去参考价值 🚫 一个大变更包含太多功能 拆分成小变更,便于审查和回滚 🚫 忽略 context 配置 每次都要重复交代技术栈
工作流总结 ┌─────────────────────────────────────────────────────────┐
│ OpenSpec 工作流 │
├─────────────────────────────────────────────────────────┤
│ │
│ 需求清晰 需求模糊 │
│ ↓ ↓ │
│ /opsx:propose /opsx:explore │
│ ↓ ↓ │
│ 审查工件 /opsx:new │
│ ↓ ↓ │
│ /opsx:apply /opsx:continue /ff │
│ ↓ ↓ │
│ /opsx:verify /opsx:apply │
│ ↓ ↓ │
│ /opsx:archive /opsx:verify │
│ ↓ │
│ /opsx:archive │
│ │
└─────────────────────────────────────────────────────────┘
附录
相关资源
常见问题 Q: 小项目需要用 OpenSpec 吗?
A: 如果项目会持续迭代、或者需要多人协作,建议用。一次性脚本项目可以不用。
Q: 规格要写多详细?
A: 够 AI 理解你要干什么就行。返工成本高的变更多写,改错了 5 分钟能修好的少写。
Q: 可以和现有工作流混用吗?
A: 可以。OpenSpec 不搞规划阶段不许写代码这种锁定,灵活使用即可。
Q: specs 和项目文档有什么区别?
A: specs 描述外部可观察的行为 ,是给 AI 看的行为契约;项目文档可以是任何内容(架构说明、API 文档等)。
相关免费在线工具 RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online