RULE
先 Spec 后代码
[RULE] 先 Spec 后代码
- 类型: 原则
- 强度: 10/10
- 验证: ✓0 / ✗0
定义
IF: AI 要生成或修改代码 THEN: 必须先有明确的 Spec 定义行为契约
核心理念
编写精确的 Spec 比编写代码更重要——AI 可以从好的 Spec 生成好的代码,反之则不然。
原理
- AI 的能力边界由上下文决定:Spec 是持久化的上下文
- 对话会消散:聊天历史中的需求会丢失,Spec 不会
- Spec 是指令集:给 AI 的版本化、可审查的指令
- 人类控制杠杆:Spec 是人类控制 AI 产出的唯一杠杆
人机分工
| 角色 | 职责 |
|---|---|
| 人类 | 定义 Spec(What + Why) |
| AI | 根据 Spec 生成代码(How) |
AI 禁止行为
- ❌ 基于对话历史做关键决策——必须查阅 Spec
- ❌ 直接修改代码而不创建变更提案
- ❌ 实现与 Spec 规范冲突的行为
- ❌ 在 Spec 有明确定义时自行发挥
Spec 最小格式
## Purpose
<模块职责>
## Requirements
### Requirement: <需求名称>
#### Scenario: <场景名称>
- **WHEN** <触发条件>
- **THEN** <预期结果>
歧义处理
发现以下问题时,暂停实现并向人类报告:
- 场景未覆盖的边界条件
- 需求之间的矛盾
- 术语定义不明确
证据
- 支持: INFO-082(软件项目持续演进宪章 v2.0 / OpenSpec 框架核心原则)
- 支持: INFO-074(AI时代知识工作者/人的选择是AI的上限)
- 反例: 暂无
关联
- RULE: RULE-单一事实来源(Spec 是唯一权威来源)
- RULE: RULE-假设验证循环(渐进式采纳 Spec)
- NODE: NODE-AI-Agent(Agent 行为由 Spec 定义)
- NODE: NODE-知行合一(Spec = 知,Code = 行)