SDD + Harness 四周学习计划 · Week 2 · Day 8(全计划第 8 课)
今日主题:Harness 四大护栏:项目规则(CLAUDE.md+Skills)、前置规划与权限(Plan Mode+Permission)、事后验证(Hooks)、上下文隔离(Subagents)
建议用时:60–90 分钟 | 前置:Week 1 全周(Day 1–7),重点 Day 2 的完整闭环图
输出物:一张「四大护栏 × 防什么」对照卡 + 一份护栏→sdd-harness 的猜测清单(Day 9 开卷验证)
0. 一句话剧透
Week 1 你已经搞懂了 SDD 告诉 AI「做什么」——spec 是人与 AI 的验收契约。但契约写得再好,AI 会自觉遵守吗?谁来检查它遵守了?答案是 Harness(驾驭工程):一套围在 AI 身边的护栏,保证它「做对」。
今天把四大护栏一次看全:项目规则(CLAUDE.md+Skills)、前置规划与权限(Plan Mode+Permission)、事后验证(Hooks)、上下文隔离(Subagents)。记住 Week 1 就立下的分工一句话:SDD 告诉 AI 做什么,Harness 保证 AI 做对。
1. 今日目标(学完你能做到)
- 能背出四大护栏的名字,并用一句话说清各自「防什么」
- 能说出 CLAUDE.md+Skills 的本质是「项目规则 / 知识底座」,告诉 AI 项目怎么运作
- 能区分 Plan Mode 与 Permission:一个管「先规划后执行」,一个管「权限边界」
- 能讲清 Hooks 是「事后验证 / 守门」,并说出它和 Git 钩子的关系
- 能说出 Subagents 防的是「上下文污染」
- 完成实操:填对照卡 + 写护栏→sdd-harness 猜测清单(Day 9 验证)
对应计划 Week 2 主题:Harness 工程(把 AI 的执行管起来),Day 8 是本周开门课。
2. 学习动线(建议时间分配)
| 步骤 | 内容 | 用时 |
|---|---|---|
| 1 | 精读「3」:Week 1 → Week 2 的转折 | 10 分钟 |
| 2 | 精读「4」–「7」:四大护栏逐个拆 | 30 分钟 |
| 3 | 精读「8」:四护栏如何咬合成闭环 + 映射猜测 | 10 分钟 |
| 4 | 实操「9」:填对照卡 + 猜测清单 | 15–25 分钟 |
| 5 | 自测「10」+ 打卡 | 10 分钟 |
3. 开门:Week 1 是「想清楚」,Week 2 是「管得住」
Week 1 你完成了一条完整的认知链:为什么 AI 编程需要工程化(Day 1)→ SDD 与 Harness 的分工(Day 2)→ spec 七要素(Day 3)→ 三种落地方式(Day 4)→ 亲手写 spec(Day 5)→ 工具链 Spec-Kit / OpenSpec(Day 6)→ 复查出 spec v2(Day 7)。
这条链解决的全是「做什么」:需求有没有写清、验收能不能量化、增量怎么表达。但 Week 1 你很可能已经遇到一个隐隐的不安:spec 写好了,AI 真的会照着做吗?
- 它会不会把「只做登录」顺手做成「登录 + 注册 + 找回密码」?
- 它会不会在改代码时,把无关的旧 bug 也「好心」修了?
- 它会不会为了完成任务,执行一条危险命令(删库、清缓存、推送到不该推的分支)?
- 它会不会因为对话太长,把前面说好的约束忘光?
这就是 Harness 的战场。它不是又一种「写文档的规范」,而是一组机制:让 AI 的行为被约束、被检查、被隔离。Day 2 精读《SDD 和 Harness:AI 编程的两大支柱》时你已经见过完整闭环图的右半边,今天把它展开成四个护栏。
4. 护栏一:项目规则——CLAUDE.md + Skills
一句话:把「这个项目怎么运作」写进文件,AI 一进项目就读到。
CLAUDE.md(以及同类工具里的 AGENTS.md 等)是放在项目根目录的规则文件。它告诉 AI:本项目的技术栈是什么、目录怎么组织、代码风格怎么定、测试怎么跑、提交规范是什么、哪些目录不能碰。Skills 则是可复用的能力包——把高频操作(比如「怎么跑本项目测试」「怎么按团队规范写 commit」)固化成可调用的技能,AI 不用每次重新摸索。
它防的是:AI 把每个项目都当成「默认项目」来猜。 没有规则文件,AI 会按自己的通用经验行事——这往往和你的项目实际不符。有了 CLAUDE.md+Skills,AI 第一次进入项目就知道「这里不是随便一个仓库,这里的规矩是这样」。
本质:知识底座。 它不是约束 AI「不能做什么」,而是告诉 AI「这里是怎么运作的」,让它少猜、猜对。
5. 护栏二:前置规划与权限——Plan Mode + Permission
一句话:先想清楚再动手(Plan Mode),并且只能碰允许碰的东西(Permission)。
Plan Mode(规划模式):要求 AI 在执行前先输出计划——准备改哪些文件、分几步、每步做什么、影响面多大——等确认后再动手。它防的是「边想边做」:AI 直接开写,写到一半方向错了,浪费一大片。
Permission(权限边界):对 AI 能执行的操作分级授权。读文件可以,写文件要允许,执行危险命令(删除、覆盖、发布、访问网络等)要单独确认。它防的是:AI 执行危险命令。 没有权限边界,一句「帮我清理一下项目」可能真的触发 rm -rf;有了权限分级,高风险操作会停在确认环节。
分工:Plan Mode 管「先规划后执行」,Permission 管「权限边界」。 一个管顺序,一个管范围。
6. 护栏三:事后验证——Hooks
一句话:在关键节点(提交、合并、发布)自动检查,不合格就拦下。
Hooks 是挂在 Git 生命周期上的自动检查脚本——最典型的是 pre-commit hook:每次 git commit 之前跑一遍校验,不通过就不允许提交。Week 2 的主角 sdd-harness 就靠它实现「改了代码没写 spec → 提交被拦」。
它防的是:AI 说「做完了」但没证据。 SDD 的验收标准写在 spec 里(Given-When-Then),但谁来证明代码真的满足了?Hooks 把「验证」变成不可跳过的一步——不是靠人记得去查,而是靠机制强制查。事后验证 / 守门,这是四个护栏里最「硬」的一个:规则文件可以被无视,权限可以被绕过,但钩子拦在必经之路上。
类比:进地铁的安检门。平时感觉不到它的存在,但带违禁品时它一定响。
7. 护栏四:上下文隔离——Subagents
一句话:把任务拆给专门的小 AI,各管一段,互不污染。
Subagents(子代理)把一个大任务拆成多个专业小代理:一个负责写 spec、一个负责审代码、一个负责写测试……每个子代理只拿到自己需要的上下文,只输出自己负责的产物。
它防的是:上下文污染。 AI 的上下文窗口有限,一个会话里塞进太多无关信息,前面的关键约束就会被「挤」出去或相互干扰——写代码的 AI 脑子里还残留着 review 意见,就容易改错地方。隔离之后,每个 AI 的「记忆」干净、聚焦,主代理只负责调度和汇总。
本质:防上下文污染 / 防上下文失控——Week 1 Day 1 讲过的 Vibe Coding 第二大瓶颈,在这里有了机制化的解法。
8. 四条护栏怎么咬合成闭环
四个护栏不是四个孤立的开关,而是覆盖一次 AI 开发全程的防线:
| 阶段 | 护栏 | 防什么 |
|---|---|---|
| 动手前 | 项目规则(CLAUDE.md+Skills) | AI 不知道项目怎么运作,靠猜 |
| 动手前 | 前置规划与权限(Plan Mode+Permission) | 边想边做、执行危险命令 |
| 动手时 | 上下文隔离(Subagents) | 上下文污染、约束被挤丢 |
| 动手后 | 事后验证(Hooks) | 「做完了」无证据、悄悄跑偏 |
拆开看是四件事,合起来是一件事:把「AI 会自由发挥」这个风险,从人的记忆负担,变成机制的结构约束。
回到 Day 2 的分工:SDD 告诉 AI 做什么,Harness 保证 AI 做对。 spec 解决「做什么」,四大护栏解决「怎么做对」——规则让它知道怎么做对,权限让它不能做错,hooks 让做错了过不去,subagents 让它别乱做。
8.1 猜测清单:四大护栏会怎么落在 sdd-harness 里?
Day 9 我们要精读 sdd-harness(github.com/iMark21/sdd-harness,Day 7 已让你 clone 到本地)。精读之前,先写下你的猜测——Day 9 开卷验证:
| 护栏 | 我猜 sdd-harness 里对应什么 | Day 9 验证结果 |
|---|---|---|
| 项目规则 | ?(提示:根目录有没有一个「唯一入口」文件?) | |
| 前置规划与权限 | ?(提示:它只有 bash+git,权限可能靠什么?) | |
| 事后验证 | ?(提示:README 里提过 pre-commit……) | |
| 上下文隔离 | ?(提示:目录里有没有 agents/?) |
猜错完全没关系——猜测清单的意义是让你带着「找答案」的眼睛去精读,而不是被动浏览。
9. 今日实操(约 25 分钟)
9.1 填四大护栏对照卡(15 分钟)
不看讲义,默写一张卡:
1
2
3
4
5
护栏名 一句话职责 防什么 动手前/动手时/动手后
① 项目规则 告诉 AI 项目怎么运作 AI 靠猜 动手前
② 前置规划与权限 先规划后执行 + 权限边界 边想边做、危险命令 动手前(权限贯穿全程)
③ 事后验证 ? ? 动手后
④ 上下文隔离 ? ? ?
填完对照讲义第 4–7 节,把漏的补上,并在每条后面补一个你自己的真实例子(例:「上周 AI 改订单模块时顺手重命名了一个公共函数,这就是没管住『范围』」)。
9.2 写猜测清单(10 分钟)
把 8.1 的表抄到你的学习笔记里,先凭直觉填「我猜」三列,不要翻 sdd-harness 的 README——留到 Day 9 精读时验证。
自测题
- 四大护栏是哪四个?各用一句话说清「防什么」。(简答)
- CLAUDE.md+Skills 的本质是什么?它防的是 AI 的哪种行为?(简答)
- Plan Mode 和 Permission 的区别是什么?各自管住哪个风险?(简答)
- 为什么说 Hooks 是四个护栏里「最硬」的一个?(简答)
- Subagents 防的具体问题叫什么?(填空)
- 判断:只要 spec 写得足够好,AI 就一定会照做,不需要 Harness。(判断,说明理由)
- 判断:Permission 只在 AI 动手之前起作用,动手之后就管不着了。(判断)
- 选择题:pre-commit hook 在什么时机运行?
A. 每次 AI 生成代码时 B. 每次
git commit之前 C. 每次git push之后 D. 每次打开编辑器时 - 把四大护栏按「动手前 / 动手时 / 动手后」归类。(简答)
- 一句话:SDD 和 Harness 的分工是什么?(简答)
提示:第 6 题——Week 1 Day 1 的 Vibe Coding 三大瓶颈里,有一个正是「无法验证」,你想想 spec 再好,验证谁来做?第 10 题是 Week 1 的结业句,必须能脱口而出。
延伸阅读
- 《SDD 和 Harness:AI 编程的两大支柱》(四大护栏出处,Day 2 精读过,今天回看右半边):https://blog.csdn.net/qq_43284469/article/details/164267908
- 《AI 编程可闭环协作·卷三:Harness 与 SDD》(合并前自动检查、书面审查,Week 4 会精读,先存着):https://juejin.cn/post/7647333934796537919
- sdd-harness 仓库(Day 9–13 的主实操对象):https://github.com/iMark21/sdd-harness
本工作纸依据《SDD+Harness四周学习计划.md》Day 8 主题编制。整理日期:2026-09-09