适用版本:v6.15.x+
💡 命令类型: 本文档中的
speccore execute为 🔒 AI 命令,需在 AI IDE 中通过@spec-ask使用。详见 快速开始。
SpecCore 生成的所有 Spec 文件分为多个层次:全局知识库(analyze --full 自动生成)、全局约束(init 时配置)、期次上下文(迭代级文档)、Task 执行(任务级输入)。
Layer 0 — 全局知识库(analyze --full 自动生成 + 智能注入)
🤖 GLOBAL/platforms/{端}/ → Phase 1 逐端分析
🤖 GLOBAL/synthesis/ → Phase 2 跨端综合
🤖 GLOBAL/INDEX.md → Phase 2 后自动生成的轻量索引
✅ split/execute/analyze → 必读注入 + TOC 目录,AI 自主 Read
Layer 1 — 全局约束(execute 自动解析)
✅ CONSTITUTION.md spec-rule 区块 → 代码规范自动生效
✅ TECH_STACK.md tech-stack 区块 → 技术栈自动检测
Layer 2 — 期次上下文(人类文档,手动查阅)
📖 010-requirements/ 本期需求总览
📖 020-specs/ 架构决策、技术分析
Layer 3 — Task 执行(execute 核心输入)
✅ Task/REQ.md 需求文档(接口表格解析 ✓)
✅ Task/TECH.md 技术方案
✅ Task/TASK.md 任务分解(状态更新 ✓)
Phase 1: 逐端分析
CLI 读源码 → AI 按端类型生成专业分析 → 写入 GLOBAL/platforms/{端}/
端类型自动识别:后端 / Web管理端 / 移动H5 / 小程序 / 原生App
通用 10 维度 + 端专属专业维度
Phase 2: 跨端综合
CLI 读 Phase 1 结果 → AI 生成三份综合文档 → 写入 GLOBAL/synthesis/
- CROSS_PLATFORM.md — 跨端业务关系图
- ARCHITECTURE.md — 全量系统架构 + ADR + 安全架构
- TECH_FULL.md — 全量技术方案 + 容量规划
完成后自动生成 GLOBAL/INDEX.md 轻量索引
Phase 3: 功能单元合成
CLI 读 Phase 2 结果 → AI 按功能单元拆分 → 写入迭代级 010-requirements/
每个功能单元含:用户故事 + 各端需求 + 接口汇总 + 数据字典 + 测试要点
设计理念:CLI 给地图 + 标必读物,AI 自己看目录决定读哪些文件。
TOC 目录覆盖 6 个来源:
| 分组 | 来源 | 用途 | AI 何时参考 |
|---|---|---|---|
| 📚 跨端综合文档 | GLOBAL/synthesis/ | 架构、技术方案、跨端关系 | execute 生成代码时参考架构约束 |
| 📱 各端分析文档 | GLOBAL/platforms/ | 各端专业分析 | execute 开发特定端时参考 |
| 🏗 工程级文档 | GLOBAL/PROJECTS/ | 逐工程分析 | execute 开发特定工程时参考 |
| 📖 参考文档 | GLOBAL/*.md | 术语、代码索引、全景、技术栈 | 任何命令需要项目上下文时 |
| ✏️ 写作模板 | PATTERNS/TEMPLATES/ | Spec 文档写作模板 | analyze 写 Spec 时参考格式 |
| 📏 规则与检查清单 | RULES/ | 代码审查、完成检查 | execute/done 时参考 |
analyze --full Phase 2 完成后
├── 写入 GLOBAL/synthesis/(CROSS_PLATFORM + ARCHITECTURE + TECH_FULL)
├── 写入 GLOBAL/platforms/{端}/(各端专业分析)
├── 自动生成 GLOBAL/INDEX.md(轻量索引)
│
├──→ split 的 Prompt 自动注入:
│ ├── 📌 必读:INDEX.md 全文(≤ 1500 字)
│ └── 📂 可选:TOC 目录(文件路径 + 描述 + ## 标题列表)
│
├──→ execute 的 Prompt 自动注入:
│ ├── 📌 必读:INDEX.md 全文
│ ├── 📂 可选:TOC 目录(综合文档 + 各端文档)
│ └── 💡 当前端标记 ⬅ 箭头,AI 自行 Read 需要的文件
│
└──→ analyze 的 Prompt 自动注入:
├── 📌 必读:INDEX.md 全文
└── 📂 可选:TOC 目录
## 🌐 全局知识库
> 必读内容已注入,其余文件请按需自行 Read。
### 📌 必读(已注入)
(INDEX.md 全文 — 工程列表、各端文档清单、跨端综合文档清单)
### 📂 可选参考(按需 Read)
> 当前任务涉及 **admin** 端,建议优先参考该端文档
**全局综合文档** (.speccore/GLOBAL/)
- `synthesis/ARCHITECTURE.md` — 全量系统架构
章节: 系统架构概览 | 服务依赖 | 技术栈 | 部署架构 | 架构决策(ADR) | 安全架构
- `synthesis/TECH_FULL.md` — 全量技术方案
章节: 公共模块 | API版本策略 | 数据一致性 | 性能优化
**各端分析文档** (.speccore/GLOBAL/)
📂 admin/ ⬅ 当前端
- `platforms/admin/ANALYSIS.md` — admin 端 — ANALYSIS
章节: 功能清单 | 接口定义 | 数据模型 | 业务规则 | 安全分析
📂 h5/
- `platforms/h5/ANALYSIS.md` — h5 端 — ANALYSIS
章节: 功能清单 | 接口定义 | 适配方案 | 首屏性能
### 💡 使用方式
以上文件均可通过 Read 工具直接读取(路径相对于 `.speccore/GLOBAL/`)。
建议根据当前任务需要选择性阅读,不必全部读取。| 函数 | 位置 | 作用 |
|---|---|---|
buildGlobalTOC() |
prompt-builder.ts | 扫描 6 个来源,提取每个文件的 ## 标题行 |
loadGlobalContext() |
prompt-builder.ts | 必读 INDEX.md 直接注入 + 其余只给 TOC 目录 |
generateGlobalIndex() |
synthesize.ts (analyze --full) | Phase 2 apply 后自动生成 INDEX.md |
formatGlobalContext() |
prompt-builder.ts | 格式化为分组 Markdown,formatPrompt 和 split.ts 共用 |
关键设计决策:
- 不预取内容,只给目录 — AI 自己决定读什么,避免关键词匹配不准
- 只读 ## 标题行 — 每个文件只读几行,TOC 生成非常快
- 过滤时间戳备份文件 —
isTimestampBackup()排除.bak类文件 - 当前端标记 — execute 时自动标记当前端的文档,引导 AI 优先参考
- 6 个来源全覆盖 — synthesis/platforms/PROJECTS/扁平文件/PATTERNS/RULES 全部纳入 TOC
formatGlobalContext()公共函数 — formatPrompt 和 split.ts 共用同一套分组逻辑
在 CONSTITUTION.md 中用 <!-- spec-rule: xxx --> 标记的规则,会在 speccore execute 时自动注入到生成的代码中。
标记格式:
<!-- spec-rule: exception-handler -->
- 统一异常:所有 Controller 抛出 BusinessException
- 全局捕获:@ControllerAdvice 处理
<!-- speccore rule -->支持的五类规则及效果:
| 规则名 | 作用 | 生成代码变化 |
|---|---|---|
exception-handler |
异常处理方式 | return ok() → throw new BusinessException() |
response-format |
返回格式 | ResponseEntity<?> → Result<T> |
orm |
ORM 框架 | JPA → MyBatis-Plus 模板 |
validation |
参数校验 | 自动 import @Valid / javax.validation.* |
naming |
命名约定 | Controller → XxxController 等 |
改动后效果:改一处 CONSTITUTION,所有后续 speccore execute 自动生效。
用 <!-- tech-stack: backend --> 和 <!-- tech-stack: frontend --> 标记,execute 自动检测语言和框架。
<!-- tech-stack: backend -->
- 语言: Go 1.21
- 框架: Gin
- ORM: GORM
<!-- /tech-stack -->
<!-- tech-stack: frontend -->
- 框架: React 18
- UI: Ant Design
<!-- /tech-stack -->执行时显示当前技术栈:
speccore execute --task=Task-001 --force
# → Tech Stack: Gin + React支持检测的语言:Java / TypeScript / Go / Python
这些文件不参与代码生成,但提供关键的项目信息:
| 文件 | 用途 | 谁看 |
|---|---|---|
010-requirements/REQUIREMENT.md |
本期要做的所有需求、优先级、里程碑 | PM、开发者 |
020-specs/ANALYSIS.md |
需求分析 | 开发者 |
020-specs/TECH.md |
技术方案 | 开发者 |
每个 Task 目录是 execute 的核心输入:
Task-001-订单管理/
├── _shared/
│ └── API_CONTRACT.yaml → 接口契约
├── 00-specs/
│ ├── REQ.md → 需求文档
│ ├── TECH.md → 技术方案
│ ├── CONTEXT.md → 任务上下文
│ └── TASK.md → 任务分解
├── 10-backend/
│ └── api/
│ └── order-api/ → 后端子任务
│ ├── src/ + tests/
│ └── TASK.md
└── 20-frontend/
└── web/
└── order-page/ → 前端子任务
├── src/ + tests/
└── TASK.md
execute 的工作流程:
- 加载 CONSTITUTION.md → 提取 spec-rule 规则
- 加载 TECH_STACK.md → 检测语言/框架
- 读取 00-specs/REQ.md → 解析接口表格
- 根据 REQ.md 接口 + spec-rule 规则 + 技术栈 → 生成代码到子任务目录
这些文件不参与代码生成,但同样重要:
| 文件 | 用途 | 谁看 |
|---|---|---|
GLOBAL/OVERVIEW.md |
项目全景描述 | 新人/管理者 |
GLOBAL/INDEX.md |
需求全局索引 | 开发者查找 |
GLOBAL/CHANGELOG.md |
版本变更历史 | 全员 |
GLOBAL/GLOSSARY.md |
术语定义表 | 全员统一用语 |
GLOBAL/CODE_INDEX.md |
代码路径映射 | 开发者查文件 |
RULES/CODE_REVIEW.md |
代码审查清单 | Code Review 时对照 |
RULES/POST_COMPLETION.md |
Task 完成检查清单 | 开发者 |
PROJECT/INDEX.md |
项目索引 | 项目管理者 |
PROJECT/TEAM.md |
团队成员与分工 | 全员 |
1. "我的 Java 项目用 Spring Boot + JPA,异常统一用 ApiException"
→ AI 自动创建 CONSTITUTION.md spec-rule + TECH_STACK.md
2. "创建 Q3 期次"
→ AI 调用 speccore iteration create --name=Q3
3. "创建一个订单管理的 Feature 任务"
→ AI 调用 speccore task new --name="订单管理"
4. "订单管理 Task-001 需要 CRUD,加上分页和软删除"
→ AI 填充 REQ.md 接口表格
5. "开发 Task-001"
→ AI 调用 speccore execute --task=Task-001 --force
6. "检查代码和 Spec 是否一致"
→ AI 调用 speccore sync --task=Task-001 --detect
# 1. 配置全局规则(一次性)
vim .speccore/CONSTITUTION.md # 加 spec-rule 标记
vim .speccore/GLOBAL/TECH_STACK.md # 加 tech-stack 标记
# 2. 创建期次和任务
speccore iteration create --name=Q3
speccore task new --name="订单管理" --platforms=web,backend
# 3. 写需求文档
vim Iteration-Q3/Task-001-订单管理/backend/REQ.md
# | POST | /api/v1/orders | 创建订单 |
# | GET | /api/v1/orders | 查询列表 |
# 4. 执行(全局规则 + 技术栈自动注入)
speccore execute --task=Task-001 --force
# → Tech Stack: Spring + Vue
# → 生成 Controller: Result<?> create() throw BusinessException()
# → 生成 Vue 组件AI 修改任何 Spec 文件前自动创建 .bak 备份,防止改坏:
# 对话回滚
"刚才改的 Task-001 不对,帮我回滚" → AI 从 .bak 恢复
# CLI 回滚
speccore rollback --task=Task-001 --list # 查看备份
speccore rollback --task=Task-001 --confirm # 确认恢复备份存在同目录下(如 REQ.md.bak),恢复后自动清理,24 小时后过期。