这是「GSD 全景代码解析」专题的第 54 篇。
四、执行阶段
4.1 启动执行
$ /gsd-execute-phase
⚡ 启动执行阶段...
📋 加载任务计划: .planning/phases/m1-core-features.md
🤖 初始化 Agent 池...
🌊 Wave 1: 启动 3 个任务
[████████████████████░░░░░░░░░░] 60%4.2 Wave 执行模型
TaskMaster 的 M1 阶段采用 Wave 模型执行:
graph TD
subgraph Wave1
A1[m1-t1: 用户认证] --> A2[m1-t2: 数据模型]
A2 --> A3[m1-t3: API 层]
end
subgraph Wave2
B1[m1-t4: 看板 UI] --> B2[m1-t5: 任务操作]
B2 --> B3[m1-t6: 实时更新]
end
subgraph Wave3
C1[m1-t7: 评论系统] --> C2[m1-t8: 通知中心]
end
Wave1 --> Wave2
Wave2 --> Wave3Wave 1: 后端基础设施
[Wave 1/3] 执行中...
─────────────────────────────
✅ m1-t1 用户认证 (backend-dev)
耗时: 1.5d
提交: a1b2c3d 实现 NextAuth 配置
✅ m1-t2 数据模型 (backend-dev)
耗时: 0.8d
提交: e4f5g6h 定义 Prisma Schema
✅ m1-t3 API 层 (backend-dev)
耗时: 1.2d
提交: i7j8k9l 实现 tRPC routers
Wave 1 完成 ✅ (3.5d / 预估 4d)
─────────────────────────────Wave 2: 前端核心功能
[Wave 2/3] 执行中...
─────────────────────────────
✅ m1-t4 看板 UI (frontend-dev)
耗时: 2.1d
提交: m0n1o2p 实现 Kanban Board
✅ m1-t5 任务操作 (frontend-dev)
耗时: 1.5d
提交: q3r4s5t 实现 CRUD 操作
✅ m1-t6 实时更新 (frontend-dev)
耗时: 1.0d
提交: u6v7w8x 集成 WebSocket
Wave 2 完成 ✅ (4.6d / 预估 5d)
─────────────────────────────Wave 3: 协作功能
[Wave 3/3] 执行中...
─────────────────────────────
✅ m1-t7 评论系统 (fullstack-dev)
耗时: 1.2d
提交: y9z0a1b 实现评论线程
⚠️ m1-t8 通知中心 (fullstack-dev)
耗时: 2.0d
状态: 需要审查
提交: c2d3e4f 实现邮件通知
审查意见:
- 邮件模板缺少退订链接
- 建议添加批量通知合并4.3 原子提交策略
# 每个任务的提交历史
$ git log --oneline --graph
* c2d3e4f feat(notifications): 实现邮件通知中心
* y9z0a1b feat(comments): 实现任务评论线程
* u6v7w8x feat(realtime): 集成 WebSocket 实时更新
* q3r4s5t feat(tasks): 实现任务 CRUD 前端操作
* m0n1o2p feat(kanban): 实现看板拖拽界面
* i7j8k9l feat(api): 实现 tRPC task routers
* e4f5g6h feat(db): 定义 Task/User Prisma Schema
* a1b2c3d feat(auth): 配置 NextAuth.js 认证每个提交对应一个任务,清晰可追溯。
4.4 执行监控
// 执行期间的实时监控
{
"phase": "m1-core-features",
"progress": {
"total": 8,
"completed": 7,
"inProgress": 1,
"failed": 0
},
"agents": {
"backend-dev": { "status": "idle", "tasksCompleted": 3 },
"frontend-dev": { "status": "idle", "tasksCompleted": 3 },
"fullstack-dev": { "status": "reviewing", "tasksCompleted": 1 }
},
"timeline": {
"started": "2024-01-08T09:00:00Z",
"estimatedEnd": "2024-01-12T18:00:00Z",
"actualProgress": "87.5%"
}
}五、验证阶段
5.1 启动验证
$ /gsd-verify-work
🔍 启动验证阶段...
📋 检查交付物完整性...
🧪 运行自动化测试...
👁️ 执行代码审查...
🎨 进行 UI 审查...
验证报告生成中...5.2 功能测试
功能验证结果
═══════════════════════════════════════
✅ 用户注册/登录
测试: 12 个用例
通过: 12/12
✅ 任务 CRUD
测试: 20 个用例
通过: 20/20
✅ 看板拖拽
测试: 8 个用例
通过: 8/8
⚠️ 实时更新
测试: 6 个用例
通过: 5/6
失败: WebSocket 重连时丢失状态
建议: 添加重连状态恢复机制
✅ 评论系统
测试: 10 个用例
通过: 10/10
总体: 55/56 通过 (98.2%)
═══════════════════════════════════════5.3 代码审查
代码审查报告 (CodeReviewer Agent)
═══════════════════════════════════════
文件: src/components/KanbanBoard.tsx
─────────────────────────────────────
✅ 组件拆分合理
✅ TypeScript 类型完整
⚠️ 建议: 提取拖拽逻辑到自定义 hook
位置: Line 45-120
影响: 可维护性
文件: src/server/routers/task.ts
─────────────────────────────────────
✅ tRPC 路由结构清晰
✅ 输入验证完整
⚠️ 建议: 添加分页查询的 cursor 实现
位置: Line 88
影响: 大数据量性能
文件: src/lib/notifications/email.ts
─────────────────────────────────────
⚠️ 严重: 硬编码 SMTP 密码
位置: Line 12
影响: 安全风险
修复: 使用环境变量
审查评分: 82/100
═══════════════════════════════════════5.4 UI 审查
UI 审查报告 (UIReviewer Agent)
═══════════════════════════════════════
✅ 色彩对比度符合 WCAG AA
✅ 交互状态反馈清晰
✅ 响应式布局正确
⚠️ 建议改进:
1. 看板列标题在窄屏下截断
建议: 添加横向滚动或折叠
2. 任务卡片缺少优先级视觉标识
建议: 添加颜色标签
3. 加载状态统一使用 Skeleton
当前: 部分页面使用 Spinner
设计评分: 85/100
═══════════════════════════════════════5.5 安全审计
$ /gsd-security-audit
🔒 启动安全审计...
🔍 扫描 secrets...
🔍 检查依赖漏洞...
🔍 验证输入过滤...
安全报告
═══════════════════════════════════════
[CRITICAL] 发现硬编码凭证
文件: src/lib/notifications/email.ts:12
类型: SMTP 密码
修复: 移至环境变量
[HIGH] 依赖漏洞
包: lodash@4.17.20
CVE: CVE-2021-23337
修复: 升级至 4.17.21
[MEDIUM] 缺少 Rate Limiting
路由: /api/auth/
建议: 添加 5 req/min 限制
安全评分: 65/100 (需修复后重新审计)
═══════════════════════════════════════六、里程碑审计
6.1 启动审计
$ /gsd-audit-milestone m1
📊 里程碑 M1 审计
═══════════════════════════════════════
目标: 核心功能可用
期限: 2024-01-12
交付物检查:
✅ 用户认证系统
✅ 任务数据模型
✅ 看板界面
✅ 任务分配逻辑
✅ 评论系统
质量指标:
─────────────────────────────────────
测试覆盖率: 78% (目标: 70%+) ✅
代码审查: 82/100 (目标: 80+) ✅
UI 评分: 85/100 (目标: 80+) ✅
安全评分: 65/100 (目标: 90+) ❌
Bug 数量: 3 P1, 7 P2 (目标: <5 P2) ⚠️
工时统计:
─────────────────────────────────────
预估: 10 人天
实际: 9.5 人天
偏差: -5% (效率高于预期)
审计结论: 有条件通过
─────────────────────────────────────
需修复:
1. 移除硬编码凭证
2. 升级 lodash 版本
3. 修复 WebSocket 重连问题
修复后重新验证即可标记完成。
═══════════════════════════════════════6.2 修复与重新验证
# 修复安全 issues
$ sed -i 's/const SMTP_PASS = "secret123"/const SMTP_PASS = process.env.SMTP_PASS/' \
src/lib/notifications/email.ts
# 升级依赖
$ npm update lodash
# 修复 WebSocket
$ cat >> src/lib/realtime/socket.ts << 'FIX'
// 重连状态恢复
socket.on('reconnect', () => {
socket.emit('sync-state', { lastEventId });
});
FIX
# 重新验证
$ /gsd-verify-work --only-failed
✅ 所有检查通过
$ /gsd-audit-milestone m1 --confirm
🎉 里程碑 M1 正式完成!6.3 项目状态快照
TaskMaster 项目状态
═══════════════════════════════════════
已完成:
├── M0 基础架构 ✅
├── M1 核心功能 ✅
├── 规划文档 ✅
└── 测试套件 ✅
进行中:
├── M2 AI 集成 (未开始)
└── M3 部署 (未开始)
代码统计:
─────────────────────────────────────
TypeScript: 4,200 行
React 组件: 28 个
API 路由: 15 个
测试用例: 56 个
覆盖率: 78%
Agent 工作量:
─────────────────────────────────────
backend-dev: 3.5d
frontend-dev: 4.6d
fullstack-dev: 3.2d
CodeReviewer: 0.5d
UIReviewer: 0.3d
─────────────────────────────────────
总计: 12.1d
═══════════════════════════════════════下一篇预告: 第 55 篇《总结与架构启示》
我们将回顾 GSD 的设计哲学、Meta-Prompting 最佳实践,以及这套方法论对整个 AI 编程领域的启示。敬请期待。