OpenSpec技术规范+实例应用
不谈玄学,只讲落地。
我是一名深耕算法工程化一线的实践者,擅长将 新技术、关键技术、AI/ML 技术从论文和 demo 转化为可规模化部署的生产系统。在这里,你看不到堆砌公式的理论空谈,只有真实项目中踩过的坑、趟过的路,每一篇文章都源自实战经验的提炼。我相信技术的价值在于解决真实问题,而不是制造焦虑。如果你也厌倦了"收藏即学会",渴望掌握让算法真正跑起来的硬核能力,那么这里就是你的技术补给站。注意:内容有点长>>>>实例操作场景在最后
OpenSpec:面向 AI 辅助工作流的规范驱动开发技术白皮书
OpenSpec 是一个专为 AI 智能体(如 Claude Code、Cursor、Windsurf 等)设计的开源、轻量级规格驱动开发(Spec-Driven Development, SDD)框架和命令行工具(CLI)。
它的核心目标是解决 AI 编程中常见的“幻觉”或“需求偏移”问题,让开发者从“凭感觉聊天(Vibe Coding)”转向“基于规范开发”。

1. 挑战:AI 辅助开发中的不可预测性
强大的 AI 编码助手的普及引入了一个悖论:虽然个人开发者的生产力激增,但项目级别的可预测性却急剧下降。我们用规范的工程实践换来了"vibe coding"——一种开发者用模糊的自然语言提示和零散的聊天历史来指导 AI 的工作流。这种方法不仅仅是不便;它是对企业级软件质量和可预测性的生存威胁。在 AI 时代,这种非结构化的协作模式引入了不可接受的风险水平,并且无法可靠地扩展。
vibe coding的核心问题在于缺乏稳定、可验证的真相来源。没有正式规范,AI 助手被迫解释模糊的指令,导致一系列常见的挫败感。它们经常遗漏细微的需求,添加不需要的功能,忽略已建立的 TODO 列表,并生成"听起来正确但实际上无法运行"的代码。这将一个潜在强大的工程伙伴转变为一个有创造力但反复无常的协作者,在开发生命周期中引入了显著的摩擦。
这种不可预测性为软件项目中的每个利益相关者创造了独特且昂贵的痛点:
- 对于开发者:主要负担是不断返工的挫败感。从初始代码生成中获得的时间很快就被调试和重构偏离预期逻辑或无法与现有代码库集成的 AI 生成代码所消耗。
- 对于项目经理:基于提示的模糊工作流引入了巨大的风险。范围蔓延变得难以控制,项目截止日期因不可预见的返工而受到威胁,缺乏正式计划使得变更没有清晰的审计跟踪。
- 对于技术负责人:维护代码质量、一致性和架构完整性成为重大挑战。当每个开发者(及其 AI 助手)从对目标的略微不同解释中工作时,结果是分散且不一致的代码库。
为了充分利用 AI 在软件开发中的潜力,需要一种更结构化、以工程为主导的方法——一种在编写一行实施代码之前就建立清晰度和一致性的方法。
2. 范式转变:拥抱规范驱动开发(SDD)
规范驱动开发(SDD)为vibe coding的混乱提供了战略解决方案。这是一个优先在实施开始之前就构建内容达成清晰、共同协议的范式,类似于 GitOps 或基础设施即代码等已建立的方法论,其中声明性的真相来源是系统状态的无可争议的仲裁者。这种简单但深刻的转变将 AI 助手从随机建议的来源转变为执行锁定计划的可信工程工具。
这种方法的核心是开放规范的概念:通过开放、协作过程创建和控制的规范,而不是由单一公司控制。这种开放性质至关重要,因为它确保规范是一个工具无关的产物,允许使用不同 AI 助手(从 GitHub Copilot 到 Claude Code)的不同团队在单一、共享的真相来源上协作。
规范作为正式的、机器可读的合同发挥作用。这是关键洞察:合同不仅仅是为了人类对齐;它是约束 AI 创造性但往往不可靠的生成过程的主要指令。它提供了一个通用框架,使所有利益相关者——开发者、项目经理和 AI 助手本身——在需求和预期行为的单一真相来源上对齐。这种明确的对齐用工程纪律取代了vibe coding的猜测,为确定性和可审查的结果提供了基础。
OpenSpec 框架为实现这种强大方法提供了轻量级和实用的工具包。
3. 介绍 OpenSpec:有效 SDD 的轻量级框架
OpenSpec 是一个实用且轻量级的工具包,专门设计用于在 AI 辅助工作流中实施规范驱动开发。其核心设计原则是简单性和实用性。它需要最少的设置,不使用 API 密钥,并且构建为棕地优先——这意味着它被设计为在修改和发展现有项目方面表现出色,而不仅仅是从头创建新项目。OpenSpec 提供了在实施之前锁定意图所需的结构,产生确定性和高质量的结果。
“Brownfield-first”: 这个装修团队(OpenSpec)在动手前,默认你家里已经有复杂的旧管线、承重墙和奇怪的装修风格。它不会建议你“把房拆了重盖”,而是教你如何在不破坏老房子的前提下,精准地把新设施嵌进去。
为了理解其独特价值,将 OpenSpec 与替代开发方法进行比较是有帮助的。
| 方法 | 主要用例 | 变更管理方法 | 关键差异化因素 |
|---|---|---|---|
| OpenSpec | 修改现有功能(1→n 开发) | 将"真相来源"(specs/)与"提议的更新"(changes/)分离。将所有功能工件分组在单个文件夹中。 | 在具有清晰、可审计差异的代码库演进(1→n 开发)方面表现出色,并且在管理跨多个规范的更新方面特别有效。 |
| spec-kit | 绿地项目(0→1 开发) | 为演进功能或跨规范修改提供较少的结构。 | 在从头定义全新功能方面很强,但随着项目演进可能变得混乱。 |
| Kiro | 新功能开发 | 将更新分散到多个规范文件夹中,这可能使功能跟踪变得困难。 | 缺乏 OpenSpec 的集中式功能文件夹结构。 |
| 无规范("vibe coding") | 非结构化、基于提示的任务 | 需求仅存在于聊天历史或模糊提示中,导致 AI 猜测。 | 本质上不可预测,缺乏审计跟踪,经常产生遗漏需求的代码。 |
通过将系统的当前状态与提议的变更分离,OpenSpec 为在 AI 辅助下演进复杂软件系统提供了清晰、可管理和可审计的路径。
4. OpenSpec 工作流:从意图到实施
OpenSpec 的力量在于其结构化的四阶段工作流。此过程旨在将高级功能请求转换为完全实施、测试和文档化的变更。通过强制执行提案、审查、实施和归档的不同阶段,工作流确保每一步的清晰度、对齐和完全的可审计性。
4.1 基础设置和目录结构
开始使用 OpenSpec 需要两个简单的命令行操作。首先,CLI 全局安装:
npm install -g @fission-ai/openspec@latest
接下来,OpenSpec 在现有项目仓库中初始化:
openspec init
init 命令创建核心 openspec/ 目录,并通过创建原生斜杠命令或生成提供工作流说明的共享 AGENTS.md 文件来配置与支持的 AI 助手的集成。这建立了一个具有基本组织原则的清晰目录结构。
openspec/
├── specs/ # 所有系统规范的当前真相来源。
│ └── [capability]/
│ └── spec.md
└── changes/ # 所有提议、活动和已归档变更的目录。
└── [change-name]/
├── proposal.md # 变更的"原因"和"内容"。
├── tasks.md # AI 的实施检查清单。
└── specs/ # 规范的增量"补丁"。
└── [capability]/
└── spec.md
这种 specs/ 和 changes/ 的分离是核心架构原则,使可预测的 AI 驱动修改成为可能。它为 AI 提供了两个不同的上下文:用于稳定参考的不可变、系统范围的"真相来源"(specs/),以及用于即时任务的沙盒化、聚焦的"提议更新"(changes/)。这防止了困扰基于提示工作流的上下文漂移和范围蔓延。使用版本控制的类比,specs/ 像 Git 中的主分支一样工作——稳定的真相——而 changes/ 内的每个目录就像功能分支或拉取请求——一个提议的、隔离的更新。
4.2 阶段 1:起草变更提案
开发者通过自然语言提示(例如,"为...创建 OpenSpec 变更提案")或通过使用原生斜杠命令(如 /openspec:proposal,直接输入到其 AI 助手的聊天界面)启动变更。基于此初始意图,AI 搭建完整的变更文件夹结构,包括 proposal.md、详细的 tasks.md 检查清单和必要的规范增量文件。此阶段有效地将高级想法转换为结构化的、机器可读的计划。
4.3 阶段 2:审查和对齐
此阶段是关键的"人在回路"反馈循环。开发团队审查 AI 生成的 proposal.md 和规范增量,以确保它们准确捕获需求。团队与 AI 迭代,进行改进,直到计划得到所有利益相关者的完全批准。重要的是要注意,生成的 proposal.md、tasks.md 和规范增量文件是纯文本,可以由开发者直接编辑以进行细粒度控制。像 openspec show <change> 和 openspec validate <change> 这样的 CLI 命令提供了检查提议变更并验证规范格式正确的工具。
4.4 阶段 3:AI 驱动的实施
一旦提案获得批准并且规范被锁定,团队指示 AI 开始编码,使用诸如 /openspec:apply <change> 的命令,输入到 AI 助手的聊天面板中。此时,AI 仅从商定的 tasks.md 检查清单和变更文件夹中的相关规范文件工作。这是 OpenSpec 价值的核心:它约束 AI 实施锁定的意图而不偏离,确保最终代码精确地遵循计划。
4.5 阶段 4:归档并更新真相来源
实施完成并验证后,最后一步通过 AI 助手聊天界面中的 /openspec:archive <change> 命令启动。此操作将 changes/ 文件夹中已批准的规范增量合并到主 specs/ 目录中。此步骤至关重要,因为它正式更新系统的"真相来源"以包含新的或修改的功能。该过程创建项目当前状态的活的、持续更新的文档,确保所有未来的 AI 交互都基于最准确的上下文。
这种规范的工作流提供了一系列战略优势,提升了 AI 辅助开发的实践。
5. 集成 OpenSpec 的战略优势
通过将 OpenSpec 集成到开发工作流中,团队对其与 AI 的协作施加了必要的工程纪律。这种结构化方法超越了"vibe coding"的限制,在代码质量、项目效率和整体治理方面提供了显著、可衡量的改进。组织内所有角色都能感受到这些好处。
- 对于工程领导:
- 治理和风险缓解:OpenSpec 作为人机交互的关键治理层。它标准化了开发者与 AI 助手交互的方式,为每个 AI 生成的变更创建不可变的、可审计的跟踪。这缓解了未审查代码进入代码库的风险,并确保符合工程标准。
- 编码化的机构知识:通过在持久的
specs/目录中捕获需求,OpenSpec 将瞬态开发者知识转换为持久的、机器可读的资产。这防止关键业务逻辑在聊天历史中丢失或局限于个别团队成员。
- 对于软件开发者:
- 可预测和高质量的代码:从锁定的、验证的规范工作消除了 AI 猜测。AI 不再发明解决方案;它正在执行预先批准的计划。这产生确定性的、设计正确的、与项目需求对齐的代码。
- 减少返工:初始对齐阶段大幅减少了基于误解需求调试和重构代码所花费的时间。开发者可以信任 AI 正在构建正确的东西,使他们能够专注于更高级的架构任务。
- 对于项目经理:
- 明确的范围和可审计性:
proposal.md文件和结构化的changes/文件夹创建了请求、计划和实施内容的清晰、永久和可审计的记录。这为管理范围和跟踪项目历史提供了宝贵的工具。 - 共享可见性:工作流提供了所有工作的透明、实时视图。利益相关者可以轻松看到提议的变更、正在积极实施的变更以及已完成和归档的变更,改善了团队间的沟通。
- 明确的范围和可审计性:
- 对于技术负责人:
- 强制执行一致性:共享规范作为中央合同,确保所有团队成员——及其各自的 AI 助手——遵守相同的架构标准、编码约定和功能需求。
- 高效的代码审查:审查过程"左移"。不是只审查最终实施代码,负责人可以先审查规范。这允许他们在投入大量编码工作之前验证核心逻辑,使最终代码审查更快、更聚焦。
- 活的文档:工作流的归档阶段有机地构建和维护系统规范的最新存储库。随着功能的添加或修改,文档随之演进,消除了过时项目文档的问题。
采用这种方法是一个直接的过程,团队可以逐步开始。
6. 团队采用实用指南
集成 OpenSpec 被设计为一个增量过程,立即提供价值,而不需要对现有工作流进行破坏性大修。团队可以通过几个简单的步骤采用这种方法。
- 初始化仓库:第一步是在项目根目录中运行
openspec init。此单个命令创建openspec/结构并为团队首选的 AI 助手配置必要的集成。 - 从新功能开始:开始的最简单方法是将 OpenSpec 用于即将到来的工作。团队成员可以要求其 AI 助手为新功能或增强生成变更提案。这允许团队在明确定义的任务上熟悉工作流。
- 增量增长:随着每个实施和归档的变更,
openspec/specs/目录有机地增长。随着时间的推移,此过程构建整个系统的全面、活的文档。此规范存储库成为越来越有价值的资产,为所有未来的 AI 辅助开发提供更丰富的上下文。 - 保持工具灵活性:OpenSpec 在不强制工具统一的情况下促进一致性。团队成员可以自由使用其首选的、兼容的 AI 工具——如 Cursor、Claude Code 或 GitHub Copilot。因为所有工具都从同一个中央 OpenSpec 存储库工作,无论个人工具选择如何,跨团队一致性都得到维护。
使这种工具无关一致性成为可能的机制是 AGENTS.md 文件。此文件在初始化期间创建,提供任何兼容的 AI 助手都可以读取和遵循的标准工作流指令集,确保每个工具都遵循相同的提议、实施和归档变更的过程。
通过遵循此增量路径,团队可以逐步构建更规范和可预测的开发过程。
7. 结论:工程化人机协作的未来
阻碍 AI 编码助手专业采用的核心挑战不是缺乏力量,而是缺乏可预测性。当前的"vibe coding"范式——依赖模糊提示——持续产生不可靠的结果。OpenSpec 通过工程化方法论的 fundamental 转变直接面对这一挑战:从非结构化对话到规范的、规范驱动开发。
正如使用 Git 的版本控制成为可扩展人类协作的不可协商的基础一样,像 OpenSpec 这样的规范驱动框架正在成为可扩展和可靠的人机协作的基础。这些框架不仅仅是工具;它们是基础方法论,建立了将 AI 助手从反复无常的新奇事物转变为确定性和不可或缺的工程伙伴所需的结构和纪律。它们提供了将人类意图与机器执行对齐的机器可读合同,确保软件工程的未来不仅更快,而且从根本上更可靠。
实例场景
安装
npm install -g @fission-ai/openspec@latest
➜ openspec_wk npm install -g @fission-ai/openspec@latest
added 79 packages in 11s
25 packages are looking for funding
run `npm fund` for details
命令行
openspec list # 查看当前所有活跃的变更任务文件夹
openspec view # 启动规格与变更的交互式仪表盘(可视化界面)
openspec show <change> # 显示特定变更的详细信息(包括提案、任务清单及规格更新内容)
openspec validate <change> # 校验变更文档的格式和结构是否规范
openspec archive <change> [--yes|-y] # 将已完成的变更移入归档库(使用 --yes 跳过交互确认)
初始化项目
➜ demo openspec init
Note: OpenSpec collects anonymous usage stats. Opt out: OPENSPEC_TELEMETRY=0
Welcome to OpenSpec!
Step 2/3
Which natively supported AI tools do you use?
Use ↑/↓ to move · Space to toggle · Enter selects highlighted tool and reviews.
Natively supported providers (✔ OpenSpec custom slash commands available)
○ Amazon Q Developer
○ Antigravity
○ Auggie (Augment CLI)
› ○ Claude Code
○ Cline
○ Codex
○ CodeBuddy Code (CLI)
○ Continue
○ CoStrict
○ Crush
○ Cursor
○ Factory Droid
○ Gemini CLI
○ GitHub Copilot
○ iFlow
○ Kilo Code
○ OpenCode
○ Qoder (CLI)
○ Qwen Code
○ RooCode
○ Windsurf
Other tools (use Universal AGENTS.md for Amp, VS Code, GitHub Copilot, …)
○ Universal AGENTS.md (always available)
Selected configuration:
- No natively supported providers selected
Step 3/3
Review selections
Press Enter to confirm or Backspace to adjust.
▌ Claude Code
▌ OpenSpec structure created
▌ AI tools configured
✔ OpenSpec initialized successfully!
Tool summary:
▌ Root AGENTS.md stub created for other assistants
▌ Created: Claude Code
▌ Skipped: Amazon Q Developer, Antigravity, Auggie, Cline, Codex, CodeBuddy Code, Continue (VS Code / JetBrains / Cli), CoStrict, Crush, Cursor, Factory Droid, Gemini CLI, GitHub Copilot, iFlow, Kilo Code, OpenCode, Qoder, Qwen Code, RooCode, and Windsurf
Use `openspec update` to refresh shared OpenSpec instructions in the future.
Important: Restart your IDE
Slash commands are loaded at startup. Please restart your coding assistant
to ensure the new /openspec commands appear in your command palette.
Next steps - Copy these prompts to Claude Code:
────────────────────────────────────────────────────────────
1. Populate your project context:
"Please read openspec/project.md and help me fill it out
with details about my project, tech stack, and conventions"
2. Create your first change proposal:
"I want to add [YOUR FEATURE HERE]. Please create an
OpenSpec change proposal for this feature"
3. Learn the OpenSpec workflow:
"Please explain the OpenSpec workflow from openspec/AGENTS.md
and how I should work with you on this project"
目录文件介绍
openspec/
├── specs/ # 所有系统规范的当前真相来源。
│ └── [capability]/
│ └── spec.md
└── changes/ # 所有提议、活动和已归档变更的目录。
└── [change-name]/
├── proposal.md # 变更的"原因"和"内容"。
├── tasks.md # AI 的实施检查清单。
└── specs/ # 规范的增量"补丁"。
└── [capability]/
└── spec.md

第一步:起草提案
❯ 请阅读 openspec/project.md 并帮助我填写包含我的项目、技术栈和约定等详细信息
● Read(openspec/project.md)
⎿ Read 35 lines
● 让我先查看 openspec 目录的结构和 AGENTS.md 来了解项目规范的标准格式。
● Search(pattern: "openspec/**/*")
⎿ Found 5 files (ctrl+o to expand)
● Read(openspec/AGENTS.md)
⎿ Read 457 lines
● 让我查看 project_zh.md 看看是否有模板或更好的参考格式。
● Read(openspec/project_zh.md)
⎿ Read 33 lines
● 我现在了解了情况。当前的 project.md 包含了一些项目需求,但没有按照 OpenSpec 的标准格式组织。我看到这是一个音乐人演出排班管理系统 (Gig Staffing Dashboard)。
让我帮你整理成标准格式。首先需要确认一些信息:
─────────────────────────────────────────────────────────────────────────────────
← ☐ 前端框架 ☐ 后端框架 ☐ 部署平台 ☐ 测试策略 ✔ Submit →
你打算使用什么前端框架?
❯ 1. React + TypeScript
流行的组件化框架,生态丰富
2. Vue.js + TypeScript
渐进式框架,易于上手
3. Next.js
React全栈框架,支持SSR
4. 其他
自定义选择
5. Type something.
← ☒ 前端框架 ☒ 后端框架 ☒ 部署平台 ☒ 测试策略 ✔ Submit →
Review your answers
● 你打算使用什么前端框架?
→ React + TypeScript
● 你打算使用什么后端框架?
→ Python + FastAPI/Django
● 你计划部署到哪个平台?
→ docker-compose
● 你使用什么测试策略?
→ Jest + React Testing Library
● 已完成 project.md 的整理。文件现在包含以下结构化内容:
主要内容:
- 目的 - 音乐人演出排班管理系统
- 技术栈 - React+TS 前端、FastAPI 后端、PostgreSQL、Docker 部署
- 项目约定 - 代码风格、架构模式、测试策略、Git 工作流
- 领域上下文 - 核心概念(Gig/Assignment/Sub-out)、用户角色、状态流转图
- 重要约束 - 移动端优先、打印支持、邮件通知、审计日志
- 外部依赖 - SMTP、PostgreSQL
- V1 功能清单 - 8 个核心功能的 checklist
如果需要调整任何部分(比如添加更多技术细节、修改架构选择、或补充业务规则),请告诉我。
project.md
# 项目上下文
## 目的
音乐人演出排班管理系统(Gig Staffing Dashboard),帮助管理员安排音乐人的演出任务,让音乐人查看、接受或拒绝演出分配,并支持替换请求流程。
## 技术栈
### 前端
- React 18+ (TypeScript)
- TailwindCSS (响应式/移动端友好)
- React Router (路由)
- React Query 或 SWR (数据获取)
### 后端
- Python 3.11+
- FastAPI (REST API)
- SQLAlchemy (ORM)
- Pydantic (数据验证)
- Alembic (数据库迁移)
### 数据库
- PostgreSQL 15+
### 基础设施
- Docker + docker-compose (本地开发和部署)
- Nginx (反向代理)
### 认证
- JWT Token 认证
- bcrypt 密码哈希
- 邮件密码重置功能
## 项目约定
### 代码风格
- 前端:ESLint + Prettier, 使用函数式组件和 Hooks
- 后端:Black + isort + mypy, PEP 8 规范
- 命名:
- 组件:PascalCase (如 `GigDashboard.tsx`)
- 函数/变量:camelCase (前端) / snake_case (后端)
- 常量:UPPER_SNAKE_CASE
- API 端点:kebab-case (如 `/api/gig-assignments`)
### 架构模式
- 前端:组件分层 (pages → components → hooks → utils)
- 后端:分层架构 (routers → services → repositories → models)
- RBAC 权限控制必须在后端强制执行,不仅仅是前端隐藏
### 测试策略
- 前端:Jest + React Testing Library (组件单元测试)
- 后端:pytest (API 集成测试)
- 覆盖率目标:核心业务逻辑 > 80%
### Git 工作流
- 主分支:`main` (生产环境)
- 功能分支:`feature/<描述>`
- 修复分支:`fix/<描述>`
- 提交信息格式:`type(scope): description`
- 类型:feat, fix, docs, refactor, test, chore
## 领域上下文
### 核心概念
- **Gig (演出)**: 一场演出活动,包含日期、地点、所需人员配置
- **Assignment (分配)**: 将音乐人分配到演出的某个角色/位置
- **Sub-out Request (替换请求)**: 音乐人请求找人替换自己的分配
### 用户角色
- **Admin (管理员)**: 创建演出、分配音乐人、处理替换请求
- **Musician (音乐人)**: 查看分配、接受/拒绝、请求替换
### 分配状态流转
pending → accepted
→ declined
→ sub_out_requested → (admin 处理) → reassigned / cancelled
## 重要约束
### 技术约束
- 移动端优先设计(音乐人主要使用手机)
- 必须支持打印功能(演出当天工作表)
- 数据库定期备份
- 错误日志记录
### 业务约束
- 音乐人拒绝或请求替换时,管理员必须立即收到邮件通知
- 所有状态变更需记录审计日志(谁、何时、改了什么)
- V1 阶段通知方式:仅邮件(SMS/Push 留待后续版本)
## 外部依赖
### 必需服务
- SMTP 邮件服务 (发送通知和密码重置邮件)
- PostgreSQL 数据库服务
### 可选服务 (V2+)
- SMS 网关 (Twilio 等)
- Push 通知服务
## 核心功能清单
### V1 必须实现
- [ ] 演出排班仪表板(按日期、地区、状态筛选)
- [ ] 分配状态管理(接受/拒绝/待定/替换请求)
- [ ] 可打印的演出工作表页面
- [ ] 审计日志(基本的活动历史记录)
- [ ] CSV 导出(演出和分配数据)
- [ ] 邮件通知(拒绝/替换请求时通知管理员)
- [ ] 安全认证 + 密码重置
- [ ] RBAC 后端权限控制
## 交付物
- 可运行的生产环境 Web 应用
- 源代码(交付至 GitHub 仓库)
- 部署文档
第二步:优化并编辑执行任务
优化
❯ /openspec:proposal 管理员用户创建和编辑
● Bash(openspec list)
⎿ No active changes found.
● Bash(openspec list --specs)
⎿ No specs found.
● Bash(ls -la /home/nile/bigdata/projects/openspec_wk/demo)
⎿ 总计 40
drwxrwxr-x 4 nile nile 4096 1月 11 19:17 .
drwxrwxr-x 3 nile nile 4096 1月 11 19:44 ..
… +8 lines (ctrl+o to expand)
● 当前没有现有的 specs 和 changes。这是一个新项目,我需要为"管理员用户创建和编辑"功能创建第一个变更提案。
在开始之前,我需要确认一些细节:
Todos · ctrl+t to hide todos
☐ Review current project state (openspec list, specs, project.md)
☐ Draft proposal.md for admin user management
☐ Draft spec delta for user-management capability
☐ Draft tasks.md implementation checklist
☐ Validate with openspec validate --strict
────────────────────────────────────────────────────────────────────────────────
← ☐ 用户角色 ☐ 管理范围 ☐ 音乐人字段 ✔ Submit →
管理员用户管理需要哪些角色?
❯ 1. Admin + Musician
只有管理员和音乐人两种角色
2. Super Admin + Admin + Musician
超级管理员可以管理其他管理员
3. 自定义角色
可配置的角色权限系统
4. Type something.
● 现在开始创建提案。change-id 选择 add-user-management。
● Bash(mkdir -p
/home/nile/bigdata/projects/openspec_wk/demo/openspec/changes/add-user-management/specs/user-management)
⎿ (No content)
● Write(openspec/changes/add-user-management/proposal.md)
⎿ Wrote 25 lines to openspec/changes/add-user-management/proposal.md
# Change: 添加用户管理功能
## Why
系统需要管理员能够创建和管理用户账户,包括其他管理员和音乐人。这是系统的基础功能,是演出分配、通知等其他功能
的前置依赖。
## What Changes
- 新增三种用户角色:Super Admin、Admin、Musician
- 新增用户 CRUD 操作(创建、读取、更新、禁用)
- 新增音乐人完整档案管理(基础信息、地区、可用时间、技能等级、备注)
- 新增 RBAC 权限控制
… +15 lines (ctrl+o to expand)
● Write(openspec/changes/add-user-management/specs/user-management/spec.md)
⎿ Wrote 142 lines to openspec/changes/add-user-management/specs/user-management/spec.md
# User Management
用户账户和角色管理功能。
## ADDED Requirements
### Requirement: User Roles
系统 SHALL 支持三种用户角色,具有不同权限级别:
- **Super Admin**: 可管理所有用户(包括其他管理员),拥有系统全部权限
- **Admin**: 可管理音乐人和普通管理员,可执行演出排班操作
… +132 lines (ctrl+o to expand)
● Write(openspec/changes/add-user-management/tasks.md)
⎿ Wrote 49 lines to openspec/changes/add-user-management/tasks.md
# Tasks: 用户管理功能
## 1. 数据库设计
- [ ] 1.1 创建 `users` 表 (id, email, password_hash, name, phone, role, status, created_at, updated_at)
- [ ] 1.2 创建 `musician_profiles` 表 (user_id FK, instruments, region, availability_notes, skill_level,
notes)
- [ ] 1.3 创建 `audit_logs` 表 (id, action, actor_id, target_user_id, changes_json, created_at)
- [ ] 1.4 编写 Alembic 迁移脚本
## 2. 后端 API
- [ ] 2.1 创建 User Pydantic schemas (UserCreate, UserUpdate, UserResponse, UserListResponse)
… +39 lines (ctrl+o to expand)
● Bash(openspec validate add-user-management --strict)
⎿ Change 'add-user-management' is valid
● 提案已创建并通过验证。
---
提案摘要: add-user-management
目标: 添加用户管理功能,支持管理员创建和编辑用户账户
角色设计:
┌─────────────┬──────────────────────────────┐
│ 角色 │ 权限 │
├─────────────┼──────────────────────────────┤
│ Super Admin │ 管理所有用户(含其他管理员) │
├─────────────┼──────────────────────────────┤
│ Admin │ 管理音乐人和普通管理员 │
├─────────────┼──────────────────────────────┤
│ Musician │ 仅查看和响应自己的演出分配 │
└─────────────┴──────────────────────────────┘
核心功能:
- 用户 CRUD(创建、查看、编辑、禁用)
- 音乐人完整档案(姓名、邮箱、电话、乐器、地区、可用时间、技能等级、备注)
- RBAC 权限控制
- 审计日志
文件结构:
openspec/changes/add-user-management/
├── proposal.md # 变更说明
├── tasks.md # 实现任务清单 (22 项)
└── specs/
└── user-management/
└── spec.md # 7 个需求,13 个场景
请审阅并确认是否可以开始实现?
执行任务
❯ 开始执行任务
● Bash(openspec list)
⎿ Changes:
add-user-management 0/24 tasks 6m ago
● 好的,开始执行任务。让我先查看项目结构,然后按顺序实现。
● Read(openspec/changes/add-user-management/tasks.md)
⎿ Read 49 lines
● Bash(ls -la /home/nile/bigdata/projects/openspec_wk/demo)
⎿ 总计 40
drwxrwxr-x 4 nile nile 4096 1月 11 19:17 .
drwxrwxr-x 3 nile nile 4096 1月 11 19:44 ..
… +8 lines (ctrl+o to expand)
● 项目还没有代码,需要从头开始搭建。让我创建项目结构并开始实现。


该项目属实有点难看,对于前端的设计可用figma/ux-design,亦可提供一个好看的管理页面来处理,太耗费时间了,我就不演示了。
之前做了个供应商管理系统,如下, 用时1天时间:
