SDD + Harness 四周学习计划 · Week 1 · Day 7(认知打底收官课 / 全计划第 1 个复盘日)
今日主题:周复盘:checklist 检查 Day 5 的 spec,写第一篇学习笔记
建议用时:90 分钟 | 前置:Day 5 的
Day5-spec-<你的功能名>.md+ Day 6 的工具选型小结论输出物:修订版 spec(v2) + 第一篇学习笔记《Week 1 周复盘》——Week 2 学 Harness 时,这两样是你的试验品和对照物
0. 一句话剧透
Day 1–6 你学的全是「什么样的 spec 合格」。今天不学新的,做三件事:串(六天内容一句一张卡)、查(拿 Day 5 那张 checklist 给 spec 复查,顺便校准量级)、写(第一篇研究式学习笔记)。
标准还是 Day 5 那句:把这份 spec 交给一个 AI,它应该能独立做到「不跑偏、可验收」。 复查没通过,就改到通过为止——这是 Week 1 唯一必须钉死的交付物。
Day 5 已经说过:写不好很正常。今天不是给你打分,是让你自己找到「哪里会被 AI 钻空子」。找不到问题,才是有问题。
1. 今日目标(学完你能做到)
- 不看讲义,能把 Day 1–6 各用一句话串成认知地图(第 3 节)
- 用 Day 5 那张 checklist(15 项)+ 量级校准(3 项)给 spec 复查,找出至少 3 处可改进
- 能校准 spec 里的数字量级(”大数据量”→”10 万条”;”快”→”≤500ms”)
- 产出 spec v2:复查不通过项全部修订,文末如实记录「本周最卡的地方」
- 写一篇 ≥500 字的研究式学习笔记(预期 → 观测 → 复盘三件套)
对应计划「评估标准」第 1 条的验收版:Day 5 只要求写完,Day 7 要求复查通过。
2. 学习动线(复盘专用时间盒)
复盘日按《研究式学习手册》的「实验三件套」收尾:预期(我以为自己写得多好)→ 观测(一查发现哪几条漏了)→ 复盘(漏的这几条教会我什么)。
| 步骤 | 内容 | 用时 |
|---|---|---|
| 1 | 串认知地图:先默写 Day 1–6 各一句话,再对照第 3 节 | 10 分钟 |
| 2 | 精读第 5 节复查清单(15+3 项) | 10 分钟 |
| 3 | 给 Day 5 的 spec 逐项复查、打分、记录问题 | 25 分钟 |
| 4 | 修订出 spec v2(重点:伪验收翻句 + 量级校准 + HOW 清扫) | 20 分钟 |
| 5 | 写第一篇学习笔记(第 7 节模板) | 15 分钟 |
| 6 | 本周打卡:勾选今日目标 + spec v2 存盘 | 5 分钟 |
3. 本周认知地图:Day 1–6 一句话串讲
先自己默写,再对照下表。能独立写出来,才说明这周没白学。
| 天 | 一句话(记住这个就够了) |
|---|---|
| Day 1 | Vibe Coding 三大瓶颈(出码率≠提效、上下文失控、无法验证)→ 需要 SDD 解决「想什么」、Harness 解决「怎么做」 |
| Day 2 | 完整闭环:spec.md → plan.md → tasks.md → delta spec(SDD 侧)+ CLAUDE.md+Skills / Plan Mode+Permission / Hooks / Subagents(Harness 侧) |
| Day 3 | spec 是人机验收契约,七要素一个不少——每个要素都在堵一个 AI 会「自由发挥」的空白 |
| Day 4 | 三种落地:Spec-Kit(AI 拆任务,快但有误差)、OpenSpec(人拆任务 + delta spec,稳)、轻量手工(粒度细)——按场景选 |
| Day 5 | 写作六步:目的摘要 → 骨架 → 填充 → 形容词翻成可测句 → 清扫 HOW → AI 视角反向通读 |
| Day 6 | 工具链:/specify → /plan → /tasks → /implement 四命令;delta spec 用 ADDED/MODIFIED/REMOVED/RENAMED 只写「这次改了什么」 |
串起来的逻辑链:为什么(Day1)→ 靠什么框架(Day2)→ 合格 spec 长什么样(Day3)→ 用什么方式落地(Day4)→ 亲手写(Day5)→ 有哪些现成工具(Day6)→ 今天:检验你写的那份够不够格(Day7)。
4. 复盘的第一性:spec 是契约,复查就是查「履约风险」
Day 3 的定义搬一次:人和 AI 读了同一份 spec,对「什么叫完成」能得出完全一致的判断吗?
复查清单的每一项,本质都在问同一件事:这份 spec 里,还有没有 AI 可以「自由发挥」的空白?
| 复查维度 | AI 会钻的空子 |
|---|---|
| 验收标准模糊 | 自己定义「完成」,做完还理直气壮 |
| 缺非目标 | 顺手多做点啥,范围悄悄膨胀 |
| 混入 HOW | 替你定技术方案,你 review 时才发现方向错了 |
| 边界缺失 | 异常路径全裸奔,上线才暴露 |
所以第 5 节的每一条,不要当「格式要求」看,要当「堵漏点」看。
5. 复查清单(Day 5 第 5 节复用 + 量级校准)
这张就是 Day 5 让你保存的那张。今天逐项复查,如实勾;✗ 项是今天的讨论点,不是你的失败。
A 结构(六项)
- 七要素标题齐全、顺序合理、易扫读
- spec 只写 WHAT,无 HOW(可换技术栈仍成立)
- 有编号约定(如背景 B / 目标 G / 故事 US / 验收 AC)
B 验收(最重要)
- 每条 AC 都是 Given-When-Then + 可量化断言,零形容词
- 每条 AC 都能直接变成一句自动化测试
- 至少覆盖:主路径成功 + 一条失败路径
C 防漂移
- 非目标 ≥3 条
- 边界条件覆盖:空结果 / 极限数据 / 超时或失败 / 并发中的至少 3 类
- 验证方式与 AC 一一对应(能指出用哪个脚本/指标证明哪条 AC)
D 方向
- 我(或 AI)拿到它能讲清:做给谁、改变什么、怎么算成功
- 我「顺手的念头」都被写进非目标,没留在脑子里
E 诚实项(今天用)
- 我最有把握的要素:;最没把握的要素:;没写出来的技术顾虑:__
F 量级校准(Day 7 新增,Day 5 附录预告过)
- 每个模糊词后面都有数字和量级(”大数据量”→”10 万条订单”、”快”→”≤500ms”)
- 数字的基线可复现(同规格测试机 / 压测记录 / 样例集,不是拍脑袋)
- 单位明确(ms / s / MB / 并发数 / 成功率%,没有裸奔的数字)
复查方法:A–E 组先过一遍,再看 F 组。F 组是 Day 5 故意留到今天做的——你写完 spec 隔几天再看,量级是否合理会更客观。
6. 修订 spec v2(20 分钟)
优先修这三类,它们是 AI 跑偏的重灾区:
① 伪验收 → 可测句(Day 5 附录 A 的方法,今天校准量级)
| 复查前(✗) | 修订后(✓) |
|---|---|
| 查询速度要快 | 10 万订单数据下,列表接口耗时从 3s 降到 500ms 以内(基线:压测记录) |
| 登录要安全 | 连续 10 次失败后锁定 30 分钟,返回错误码 AUTH_LOCKED |
| 界面更好看 | 首屏在 4G 网络下 2s 内完成渲染(验收:Lighthouse 截图) |
② 混入 HOW → 挪走或删掉(Day 3 铁律:spec 只写做什么,HOW 留给 plan)
| 复查前(✗) | 修订后(✓) |
|---|---|
| 用 Redis 做缓存,提升查询性能 | (目标层)查询耗时降到 500ms 以内;(HOW 挪到 plan 阶段再定) |
| 重构订单模块,拆成微服务 | 放入非目标(C 组第 4 条) |
③ 量级校准:把 spec 里所有「快 / 大 / 多 / 稳」圈出来,逐个补上数字 + 基线 + 单位。
修订完,把 spec 另存为
Day5-spec-<你的功能名>-v2.md,原 v1 保留——v1 和 v2 的差距,就是你 Week 1 的真实成长记录。
7. 写第一篇学习笔记(15 分钟,≥500 字)
按研究式学习三件套,模板如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Week 1 周复盘(Day 1–7)
## 一、预期(我以为)
这周学下来,我以为自己已经……(写 1–2 句,越具体越好)
## 二、观测(实际发生)
- 复查结果:A 组 __ / B 组 __ / C 组 __ / D 组 __ 项不通过;F 组量级缺 __ 处
- 我最意外的发现:______(例:我以为写得很清楚的验收,B 组一查全是形容词)
- 我 Day 5 写作时最卡的地方:______(翻出 Day 5 文末的记录对照)
## 三、复盘(新认知)
- 本周最大的认知:______
- 它推翻/强化了我原来的什么想法:______
- Week 2 学 Harness 时我要带着的问题:______
## 四、下周行动
- 我要把 spec v2 用到哪里:______
写笔记不是为了交差。Week 2 学 Harness 时,你会反复拿「我的 spec 够不够格」去验证 harness 的每条规则——这份笔记就是那时的对照物。
8. 本周自测(10 题,覆盖 Day 1–6)
- Vibe Coding 的三大瓶颈是哪三个?
- SDD 和 Harness 各自解决什么问题?一句话说清分工。
- spec 七要素是哪七个?各回答什么问题?
- 为什么说「spec 是契约,不是作文」?
- Spec-Kit 四命令的顺序和各自产物?
- delta spec 的四种标记是什么?为什么增量规范适合改造项目?
- 三对易混词怎么区分:目标 vs 用户故事、验收标准 vs 验证方式、非目标 vs 边界条件?
- 写 spec 的第一铁律是什么?
- Spec-Kit 和 OpenSpec 的核心取舍差异是什么?(谁拆任务?谁 review?谁担两轮推断风险?)
- 一句话:怎么判断一份 spec 是否合格?
答不上来的题,回去翻对应那天的讲义。这 10 题就是 Week 1 的结业考。
9. 下周预告:Week 2 · Harness 工程(Day 8–14)
Day 7 复查通过的 spec v2,将是 Day 13「跑通 spec-first 提交」的试验品。下周你将:
- Day 8:Harness 四大护栏(规则 / 权限 / 验证 / 隔离)
- Day 9:精读 sdd-harness 的
.ai/目录结构与 runtime-agnostic 思想 - Day 10:安装 harness 到测试仓库,体验「改了代码没写 spec → 提交被拦」
- Day 11:命令循环 spec → story → implement → verify → review
- Day 12:对比 harness-sdd、SDD-Agent-Harness 等其他实现
- Day 13:跑通 spec-first 提交(放行 / 拦截 / 显式例外)
- Day 14:周复盘——画自己的 Harness 理解图
预习动作(今天顺手做):
git clone https://github.com/iMark21/sdd-harness到本地,下周直接用。
10. 延伸阅读
- 本周回顾主参考:《SDD 和 Harness:AI 编程的两大支柱》:https://blog.csdn.net/qq_43284469/article/details/164267908
- Given-When-Then 场景写法(OpenSpec 官方术语表):https://openspec.dev/docs/glossary
- sdd-harness 仓库(下周预习):https://github.com/iMark21/sdd-harness
本工作纸依据《SDD+Harness四周学习计划.md》Day 7 主题编制。整理日期:2026-09-09