new-project 与初始化工作流

📑 目录

这是「GSD 全景代码解析」专题的第 16 篇。在前面的文章中,我们从命令系统(第 06-12 篇)逐步深入到工作流的核心编排机制。命令是触发器,工作流才是剧本——而 new-project 正是 GSD 所有剧本的第一幕。它承担着将一个模糊的想法转化为结构化、可执行项目的使命,是整个 GSD 生命周期中杠杆率最高的时刻。

new-project 工作流位于 get-shit-done/workflows/new-project.md,文件大小约 44KB,是 GSD 仓库中最大的单体工作流文件之一。它的目标非常明确:通过深度对话提取需求、(可选)并行研究、结构化定义、分阶段 Roadmap,将一个「我想做点什么」的念头转化为 .planning/ 目录下完整的一套项目蓝图。

正如工作流文件开篇所言:

"This is the most leveraged moment in any project — deep questioning here means better plans, better execution, better outcomes."

本文将逐段拆解这个 44KB 的「庞然大物」,带你看懂 GSD 是如何用纯文本 Prompt 完成项目初始化的全部魔法。


一、new-project 概览:从想法到可执行蓝图

1.1 工作流定位

new-project 不是简单的「创建几个文件」,它是一个端到端的上下文工程流水线。它的输入是一个模糊的想法(或一份 PRD 文档),输出是 .planning/ 目录下的完整项目蓝图,包括:

输出文件职责
.planning/PROJECT.md项目上下文、核心价值、关键决策
.planning/REQUIREMENTS.md结构化需求(v1/v2/Out of Scope)
.planning/ROADMAP.md分阶段执行路线图
.planning/STATE.md项目状态与进度追踪
.planning/config.json工作流偏好配置
.planning/research/领域研究(可选)
CLAUDE.md / AGENTS.md项目级 AI 指令文件

对应的命令入口是 /gsd:new-project,定义在 commands/gsd/new-project.md。命令文件非常薄——它只是声明了参数([--auto])、可用工具和 execution_context,然后将所有工作委托给上述工作流文件。这是 GSD 「命令即触发器」 设计哲学的典型体现。

1.2 完整流程总览

整个 new-project 工作流包含 9 个主要步骤

flowchart TB
    Start([用户输入: /gsd:new-project]) --> S1[① Setup
初始化检测与配置] S1 --> S2[② Brownfield Offer
现有代码检测] S2 --> S3[③ Deep Questioning
Dream Extraction] S3 --> S4[④ Write PROJECT.md
项目上下文固化] S4 --> S5[⑤ Workflow Preferences
工作流偏好配置] S5 --> S6[⑥ Research Decision
是否并行研究] S6 --> S7[⑦ Define Requirements
需求结构化定义] S7 --> S8[⑧ Create Roadmap
分阶段路线图] S8 --> S9[⑨ Done
初始化完成与下一步引导] S9 --> End([/gsd:discuss-phase 1]) S6 -.->|选择研究| R1[Spawn 4× researchers
Stack/Features/Architecture/Pitfalls] R1 --> R2[Spawn synthesizer
生成 SUMMARY.md] R2 --> S7 S8 -.->|Roadmap 阻塞| S8r[用户反馈调整] S8r --> S8

这个流程的设计遵循了 GSD 的核心原则:渐进式信息披露(Progressive Disclosure)。用户不需要一次性提供所有信息,而是通过多轮对话逐步澄清;AI 也不需要一次性生成所有产物,而是按阶段提交、按阶段确认。


二、Dream Extraction:深度对话提取

2.1 什么是 Dream Extraction?

Dream Extraction 是 GSD 对需求澄清阶段的命名。它的核心理念是:用户最初的想法往往像梦一样模糊——有情绪、有画面、但缺少结构。工作流的目标不是记录这个梦,而是通过系统性的提问,把梦里的关键元素提取、结构化、可执行化

new-project 工作流中,Dream Extraction 对应 Step 3(Deep Questioning) 阶段。它有两个分支:

  • 交互模式(默认):多轮对话,逐层深入
  • 自动模式(--auto:从提供的文档中提取上下文,跳过对话

2.2 多轮对话的设计哲学

Deep Questioning 不是一份固定的问题清单,而是一个动态跟随线程的对话引擎。工作流文件明确要求:

"Keep following threads. Each answer opens new threads to explore."

具体来说,每轮对话遵循以下策略:

策略含义示例
Challenge vagueness挑战模糊表述用户说"做一个社交平台" → 追问"用户之间如何互动?"
Make abstract concrete将抽象具体化用户说"要智能" → 追问"具体解决什么场景的什么问题?"
Surface assumptions暴露隐含假设追问"你为什么认为需要实时同步而非异步?"
Find edges寻找边界情况追问"如果用户没有安装客户端,体验应该退化成什么样?"
Reveal motivation揭示动机追问"是什么问题促使你想做这个项目?"

2.3 五个核心维度的提取

虽然对话是动态的,但工作流背后维护着一个心理检查清单,确保五个核心维度被覆盖:

flowchart TD
    subgraph DE["Dream Extraction — 五维提取"]
        D1["What excited them?
兴奋点 — 核心驱动力"] D2["What problem sparked this?
问题源 — 痛点验证"] D3["What do they mean by vague terms?
术语澄清 — 消除歧义"] D4["What would it actually look like?
具象描述 — 功能/界面/流程"] D5["What's already decided?
已决事项 — 技术栈/约束/边界"] end

工作流文件引用了一份外部参考文档 questioning.md,其中包含了更详细的提问技巧。这种**「工作流引用参考文档」**的模式是 GSD 工作流设计的常见手法——将易变的技巧性内容抽离为独立文档,工作流只保留流程骨架。

2.4 决策门控:Ready? Gate

当 AI 认为自己已经足够理解用户的意图时,不会直接继续,而是主动停下来请求确认:

header: "Ready?"
question: "I think I understand what you're after. Ready to create PROJECT.md?"
options:
  - "Create PROJECT.md" — Let's move forward
  - "Keep exploring" — I want to share more / ask me more

这是 GSD 门控(Gate)模式的典型应用。如果用户选择 "Keep exploring",对话会继续深入,直到用户满意为止。这个循环保证了 PROJECT.md 的生成不是草率的,而是充分共识后的产物


三、需求分析与结构化:从自然语言到 REQUIREMENTS.md

3.1 需求的三态模型

在 Deep Questioning 完成后,工作流进入 Step 7(Define Requirements)。GSD 采用一种独特的需求三态模型

状态含义REQUIREMENTS.md 中的标记
Validated已验证的需求(已交付并通过测试)✓ [REQ-ID] — validated in Phase N
Active当前迭代要实现的需求- [ ] [REQ-ID]
Out of Scope明确排除的需求(附理由)- [Exclusion] — [why]

对于 Greenfield 项目(全新项目),初始状态是:

## Requirements

### Validated
(None yet — ship to validate)

### Active
- [ ] [Requirement 1]
- [ ] [Requirement 2]
- [ ] [Requirement 3]

### Out of Scope
- [Exclusion 1] — [why]

对于 Brownfield 项目(已有代码库),则从 codebase map 中推断已验证的能力:

## Requirements

### Validated
- ✓ [Existing capability 1] — existing
- ✓ [Existing capability 2] — existing

### Active
- [ ] [New requirement 1]
- [ ] [New requirement 2]

3.2 REQ-ID 格式与可追溯性

每个需求都有唯一的 REQ-ID:

[CATEGORY]-[NUMBER]

例如:AUTH-01CONTENT-02PAYMENT-03。这种格式不仅便于引用,还为后续的 Roadmap 映射Traceability(可追溯性) 提供了基础。

3.3 需求质量检查清单

工作流对需求质量有严格的内建标准:

标准反例正例
Specific and testable"Handle password reset""User can reset password via email link"
User-centric"System does Y""User can X"
Atomic"User can login and manage profile""User can login" + "User can manage profile"(拆分为两个)
Independent强依赖其他需求最小化依赖,可独立实现验证

如果需求不够具体,工作流会主动推回(push back)

"Reject vague requirements. Push for specificity."

3.4 研究的输入(可选)

如果用户在 Step 6 选择了研究,则 REQUIREMENTS.md 的生成会参考 .planning/research/FEATURES.md 中的研究发现。研究将功能分为三类:

  • Table stakes:行业标准功能,不做用户会流失
  • Differentiators:差异化功能,竞争优势
  • Anti-features:明确不做的功能(比「做什么」更重要的是「不做什么」)

Auto Mode 下,工作流会自动包含所有 table stakes 和文档中明确提到的功能,自动 defer 未被提及的 differentiators。


四、项目结构初始化:技术栈检测与目录生成

4.1 Setup 阶段的前置检测

在 Deep Questioning 之前,Step 1(Setup) 执行了一系列关键的初始化检测:

INIT=$(gsd-sdk query init.new-project)
AGENT_SKILLS_RESEARCHER=$(gsd-sdk query agent-skills gsd-project-researcher)
AGENT_SKILLS_SYNTHESIZER=$(gsd-sdk query agent-skills gsd-synthesizer)
AGENT_SKILLS_ROADMAPPER=$(gsd-sdk query agent-skills gsd-roadmapper)

这些查询返回的 JSON 包含了大量状态信息:

字段含义
project_exists项目是否已初始化(防止重复运行)
has_codebase_map是否已有代码库地图
has_existing_code目录中是否已有代码
has_package_file是否检测到 package.json 等包管理文件
is_brownfield是否判定为 brownfield(现有代码)项目
needs_codebase_map是否需要先运行 codebase map
has_git是否已有 git 仓库
agents_installedGSD 子 Agent 是否已安装

4.2 Brownfield 检测与处理

如果检测到现有代码但无 codebase map,工作流会主动提出:

I detected existing code in this directory. Would you like to map the codebase first?
  - "Map codebase first" — Run /gsd:map-codebase
  - "Skip mapping" — Proceed with project initialization

这是 GSD 「检测-建议-确认」 模式的典型体现。它不会默默假设用户想做什么,而是显式沟通、让用户选择

4.3 Git 初始化

如果检测到没有 git 仓库,工作流会自动执行:

git init

这是 new-project 中**唯一会修改项目文件系统(非 .planning/)**的操作。它保证了后续所有规划文档都可以通过 gsd-sdk query commit 被版本控制。


五、.planning/ 目录的完整生成

5.1 目录结构全景

.planning/ 是 GSD 项目的「大脑」,所有规划产物都集中于此:

.planning/
├── PROJECT.md              # 项目上下文与核心决策
├── REQUIREMENTS.md         # 结构化需求
├── ROADMAP.md              # 分阶段路线图
├── STATE.md                # 项目状态与进度
├── config.json             # 工作流偏好配置
├── research/               # 领域研究(可选)
│   ├── STACK.md
│   ├── FEATURES.md
│   ├── ARCHITECTURE.md
│   ├── PITFALLS.md
│   └── SUMMARY.md
└── codebase/               # 代码库地图(brownfield 时)
    ├── ARCHITECTURE.md
    └── STACK.md

5.2 PROJECT.md:项目上下文

PROJECT.md 使用模板 templates/project.md,在 Dream Extraction 完成后生成。对于 Greenfield 项目,它包含:

  • What This Is:一句话描述项目
  • Core Value:核心价值——如果只能实现一个功能,是什么?
  • Context:目标用户、使用场景、关键约束
  • Requirements:三态需求(Validated / Active / Out of Scope)
  • Key Decisions:初始化阶段的关键决策与理由
  • Evolution:文档的更新规则(在 Phase 过渡和 Milestone 完成时如何演进)

PROJECT.md 底部有一个强制性的时间戳:

---
*Last updated: [date] after initialization*

5.3 config.json:工作流偏好

config.json 是用户的「工作流偏好配置文件」,在 Step 5 生成。它包含两类配置:

核心工作流设置

字段选项默认推荐
modeYOLO / InteractiveYOLO
granularityCoarse / Standard / FineCoarse
parallelizationtrue / falsetrue
commit_docstrue / falsetrue

Agent 设置

字段含义
workflow.research每个 Phase 前是否研究
workflow.plan_checkPlan 生成后是否验证
workflow.verifierPhase 执行后是否验证
model_profileAI 模型偏好(Quality/Balanced/Budget/Inherit)

config.json 支持全局默认值(~/.gsd/defaults.json),用户可以在初始化时选择「使用默认值」、「修改部分」或「全新配置」。

5.4 ROADMAP.md:分阶段路线图

ROADMAP.md 不是由 new-project 工作流直接编写的,而是委托给 gsd-roadmapper Agent 生成。这是 GSD 「工作流委托 Agent」 模式的典型案例。

Roadmapper 的输入上下文包括:

- .planning/PROJECT.md (项目上下文)
- .planning/REQUIREMENTS.md (v1 需求)
- .planning/research/SUMMARY.md (研究发现,如存在)
- .planning/config.json (粒度与模式设置)

Roadmapper 的输出必须满足:

  1. 从需求推导阶段,不强行套用模板结构
  2. 每个 v1 需求映射到且仅映射到一个阶段
  3. 每个阶段有 2-5 个 Success Criteria(可观察的用户行为)
  4. 100% 覆盖率验证

Roadmap 生成后,new-project 工作流会展示一个漂亮的摘要表格:

| # | Phase | Goal | Requirements | Success Criteria |
|---|-------|------|--------------|------------------|
| 1 | [Name] | [Goal] | [REQ-IDs] | [count] |
| 2 | [Name] | [Goal] | [REQ-IDs] | [count] |

5.5 STATE.md:项目状态

STATE.md 是 GSD 的状态机持久化文件。它在初始化时创建,随着项目进展不断更新:

# Project State

## Current Phase
Phase 1: [Name]

## Completed
(None yet)

## In Progress
- [ ] [Requirement 1]

## Blocked
(None)

STATE.md 的设计确保了即使 AI 会话的上下文丢失,项目状态仍然可以从文件系统中恢复。

5.6 项目指令文件(AGENTS.md / CLAUDE.md

在初始化完成前,工作流会执行:

gsd-sdk query generate-claude-md --output "$INSTRUCTION_FILE"

其中 $INSTRUCTION_FILE 根据运行时决定:

运行时指令文件名
CodexAGENTS.md
Claude / OpenCode / GeminiCLAUDE.md

这个文件将 GSD 的工作流规则(如必须先 plan 再 execute、每个 Phase 结束必须 verify 等)注入到项目的 AI 指令中,确保后续所有 AI 交互都遵循 GSD 规范。


六、与 gsd-planner 和 gsd-project-researcher 的协作

6.1 子 Agent 协作模型

new-project 工作流本身不直接生成所有产物,而是通过委托子 Agent 完成专业任务:

flowchart LR
    subgraph NP["new-project 工作流"]
        NP1["主控流程"]
    end

    subgraph Agents["专业 Agent 层"]
        R1["gsd-project-researcher ×4"]
        R2["gsd-research-synthesizer ×1"]
        R3["gsd-roadmapper ×1"]
    end

    NP1 -->|"Step 6: 并行研究"| R1
    R1 -->|"4 份研究报告"| R2
    R2 -->|"SUMMARY.md"| NP1
    NP1 -->|"Step 8: Roadmap"| R3
    R3 -->|"ROADMAP.md + STATE.md"| NP1

6.2 gsd-project-researcher 的四维并行研究

当用户选择「Research first」时,new-project 会同时 spawn 4 个 researcher Agent,每个负责一个维度:

维度输出文件核心问题
Stackresearch/STACK.md2025 年该领域的标准技术栈是什么?
Featuresresearch/FEATURES.mdTable stakes vs Differentiators vs Anti-features
Architectureresearch/ARCHITECTURE.md系统通常如何结构化?组件边界与数据流?
Pitfallsresearch/PITFALLS.md这个领域常见的错误是什么?如何预防?

每个 researcher 都有统一的输出模板(位于 templates/research-project/),确保输出格式一致、下游消费者(synthesizer 和 roadmapper)可以可靠解析。

6.3 gsd-research-synthesizer 的整合

4 个 researcher 完成后,会 spawn 一个 synthesizer Agent,将四份报告整合为 research/SUMMARY.md。这个设计遵循了 GSD 的 Map-Reduce 模式:先并行处理(Map),再串行整合(Reduce)。

6.4 gsd-roadmapper 的规划

Roadmapper 是整个初始化流程中最关键的 Agent。它的任务不是简单地列出阶段,而是:

  1. 从需求推导结构:需求之间的依赖关系决定了阶段的先后顺序
  2. 平衡粒度:根据 config.json 中的 granularity 设置决定阶段的粗细
  3. 定义成功标准:每个阶段必须有可观测的 Success Criteria

Roadmapper 的输出可能有两种状态:

  • ## ROADMAP CREATED:成功,进入审批流程
  • ## ROADMAP BLOCKED:阻塞,需要用户介入解决

这种显式状态返回是 GSD Agent 通信协议的重要约定。


七、初始化失败的处理与恢复

7.1 前置验证失败

new-project 工作流在 Setup 阶段有多层前置验证:

验证项失败行为
project_exists == true报错:「Project already initialized. Use /gsd:progress.」
agents_installed == false警告:子 Agent spawn 会失败,跳过研究阶段,直接生成 Roadmap
Auto mode 无文档报错:「Error: --auto requires an idea document.」

7.2 Roadmap 阻塞处理

如果 Roadmapper 返回 ROADMAP BLOCKEDnew-project 不会强行继续,而是:

  1. 向用户展示阻塞信息
  2. 与用户协作解决阻塞
  3. 解决后重新 spawn Roadmapper

7.3 原子提交与断点恢复

整个 new-project 流程遵循 「原子提交」 原则:

"Each phase commits its artifacts immediately. If context is lost, artifacts persist."

每完成一个阶段,产物都会通过 gsd-sdk query commit 提交到 git。这意味着:

  • 如果 AI 会话意外中断,已生成的 PROJECT.mdconfig.json 等不会丢失
  • 用户可以重新运行 /gsd:new-project,工作流会检测到 project_exists 并给出正确提示
  • 每个文件都是独立的恢复点

7.4 自动模式的失败降级

Auto mode 虽然跳过了交互,但并非无条件的「全自动驾驶」。它在关键决策点仍然遵循门控逻辑:

  • 如果提供的文档信息不足,仍然会生成**假设(hypotheses)**而非断言
  • 如果研究阶段网络失败,会静默跳过研究,基于已有信息继续
  • 所有「自动批准」的决策都会记录在 config.json 中,可追溯

八、小结

new-project 工作流是 GSD 框架的门面工程。它用 44KB 的纯文本 Prompt,实现了一套媲美专业项目管理工具的初始化流程:

特性实现方式
深度需求提取Dream Extraction + 五维检查清单 + 动态线程跟随
结构化需求管理三态模型(Validated/Active/Out of Scope)+ REQ-ID
并行领域研究4× researcher + 1× synthesizer 的 Map-Reduce
智能分阶段规划gsd-roadmapper 从需求推导结构
状态持久化.planning/ 目录 + 原子提交 + STATE.md
失败恢复前置验证 + Roadmap 阻塞处理 + 断点恢复

它的设计哲学可以用一句话概括:在项目的起点投入足够多的思考,后续的每一步都会更轻松。

正如工作流文件反复强调的:

"One workflow takes you from idea to ready-for-planning."

当你下一次输入 /gsd:new-project 时,你会知道背后那 44KB 的 Prompt 正在执行怎样精密的上下文工程——从检测你的代码库状态,到追问你模糊想法背后的真实动机,再到协调多个专业 Agent 并行研究,最终为你生成一套完整的项目蓝图。


📌 下一篇预告:第 17 篇《discuss-phase 与交互工作流》将深入解析 GSD 中最具特色的交互式工作流——/gsd:discuss-phase。我们将看到 GSD 如何在每个 Phase 开始前通过深度对话澄清实现细节、处理不确定性、协调人类判断与 AI 执行之间的张力。如果说 new-project 是「运筹帷幄」的起点,那么 discuss-phase 就是「决胜千里」前的最后一次校准——它是 GSD 工作流中人与 AI 协作最密集、最精妙的环节,敬请期待!