加载 spec-human-verify.md 验收清单,以 AI 作为驱动执行。
AI 自主运行所有 [A](自动化)子步骤,仅对 [H](人工)子步骤调用人类,人类只需回答是/否。
启动时声明: "我正在使用 sdd-start-human-verify 技能来执行 AI 驱动验收。"
.sdd-workspace 配置文件中 workspace_path 指定的根目录{workspace}/spec/ 下在任何操作之前,必须读取工作区配置:
.sdd-workspaceworkspace_path 作为工作区根目录 {workspace}/sdd-global-init 初始化工作区。" 并停止验证工作区目录存在,如果不存在提示用户重新初始化。
检查当前模型是否为 Opus。如果是 Opus,输出以下纯文本消息并继续(非阻塞):
⚠️ 当前模型是 Opus,验收执行任务不需要 Opus 级别的推理能力,建议切换到更快的模型以提升执行效率。输入 /model 切换模型。
{workspace}/spec/ 中所有匹配 feature_*/spec-human-verify.md 的文件AskUserQuestion 展示最新的 3 个文件:/sdd-plan-human-verify 生成验收清单。"使用此正则解析文件中所有验证项标题:
^####\s+-\s+\[([ x!])\]\s+(\d+\.\d+)\s+(.+)$
匹配如下格式的行:
#### - [ ] 1.1 验收项名称 → status: pending (space)#### - [x] 1.1 验收项名称 → status: passed (x)#### - [!] 1.1 验收项名称 → status: failed (!)构建项目列表:索引、编号(例如 "1.1")、名称、状态。
[x] 或 [!](部分完成):[ ](待处理)项目[x] 或 [!](完全完成):[x]/[!] 改回 [ ] 后重新运行。"[ ](全新开始):读取清单的 ## 验收前准备 部分。解析每个 - [ ] 行并按标签分类。
为 Step 6 清理维护一个 started_services 列表(条目:{pid, port, description})。
[AUTO] 项目 — 一次性命令执行✓ [description],继续下一个项目AskUserQuestion:「继续」/「中止」AskUserQuestion:「跳过」/「中止验收」[AUTO/SERVICE] 项目 — 长运行服务管理\(port:\s*(\d+)\))ss -tlnp | grep :PORT 或 lsof -i :PORT✓ [description](端口 PORT 已在使用,复用已有服务),跳过启动run_in_background: true✓ [description](服务已启动,PID: xxx)AskUserQuestion:「重试」/「跳过」/「中止」started_services 列表中记录启动服务的 PID,用于 Step 6 清理[MANUAL] 项目 — 人工确认AskUserQuestion:「已完成」/「跳过」/「中止验收」如果准备项没有 [AUTO]/[AUTO/SERVICE]/[MANUAL] 标签:
[AUTO][MANUAL]显示:"准备工作完成,开始 AI 驱动验收。"
按顺序处理每个待处理(#### - [ ])项目。
展示验收项的简要概览:
---
## [N.M] [验收项名称]
共 X 个步骤(自动: Y, 人工: Z)
---
解析 操作步骤: 部分。每个编号步骤以 [A] 或 [H] 开头。
[A] 步骤 — 自动化执行:→ 期望: 后的预期结果比较✓ [步骤描述]✓ [步骤描述](重试后通过)✗ [步骤描述],包含实际 vs 预期输出[H] 步骤 — 调用人类并提供微指令:→ 之前的所有内容)AskUserQuestion 提供正好 2 个选项:✓ [步骤描述]a. 用纯文本(不要用 AskUserQuestion)询问用户:"请描述观察到的异常情况:"
b. AI 根据用户描述分析问题并修复代码
c. 修复后,显示纯文本提醒:"✅ 已修复,请重新刷新页面/重新操作后再次检查。"
d. 重新显示同一步骤的微指令文本
e. 使用 AskUserQuestion 提供正好 2 个选项:「是」 / 「否」
f. 「是」 → 显示 ✓ [步骤描述](修复后通过),跳出循环
g. 「否」 → 回到步骤 a,继续循环
h. 无重试限制 — 用户可以随时通过 Other 输入 "跳过" 跳过,这将记录步骤为失败,带有 ✗ [步骤描述]
项目的所有子步骤处理完后:
#### - [x](通过)✓ [N.M] [名称]#### - [!](失败)✗ [N.M] [名称],包含失败步骤列表[A] 步骤通过但相关的 [H] 步骤失败):> 矛盾备注: API 层验证通过但 UI 层验证失败,以人工观察为准当项目的所有子步骤都是 [A] 时:
#### - [x],显示:✓ [N.M] [名称](自动验证通过)#### - [!],显示:✗ [N.M] [名称](自动验证失败),包含详情每个项目后,显示进度:
[N/Total] 已处理 — 通过: X, 不通过: Y, 跳过: Z
重复 4.1–4.5,直到处理完所有项目。
所有项目处理完成后(或所有待处理项目完成后):
## 验收执行完毕
- 通过: X 项 ✓(其中修复后通过: R 项)
- 不通过: Y 项 ✗
- 跳过: Z 项 -
- 总计: N 项
- 自动执行步骤: A 个
- 人工确认步骤: H 个
### 不通过项目
| 序号 | 验收项 | 失败步骤 | 备注 |
|------|--------|----------|------|
| 1.2 | [名称] | [A] step 2, [H] step 3 | [备注或无] |
| ... | ... | ... | ... |
💡 有 Z 个跳过的验收项,可重新运行 `/sdd-start-human-verify` 继续验收。
🎉 所有验收项全部通过!
💡 **建议下一步:** 运行 `/sdd-archive` 将此 feature 归档到全局知识库。
最终总结(Step 5)后,清理本次会话启动的服务:
started_services 列表started_services 中的每个条目,按 PID 终止进程已清理 N 个后台服务。[x] 通过,[!] 失败,[ ] 待处理/跳过[x] 或 [!] 项目共 1 个版本