SDD + Harness 四周学习计划 · Week 3 · Day 19(工程化闭环第 5 课 / 全计划第 19 课)
今日主题:三大挑战与对策:规范演进管理(Git 单一事实来源);AI 不确定性纳入规范(语义等价类/置信度阈值/回退策略);模型权重管理(镜像分层)
建议用时:60–90 分钟 | 前置:Day 17 持续交付
输出物:一张「三大挑战对策卡」(一页纸,Day 21 周复盘用)
0. 一句话剧透
Day 17 的持续交付很理想:门禁五步、自动回滚、一切自动化。但真实世界有三个坎绕不过去——规范会演进(怎么管版本?)、AI 输出有不确定性(怎么把概率写进规范?)、模型权重会变(怎么保证部署版本可控?)。今天是 Day 17 的「现实版」:每个坎一套对策。
1. 今日目标(学完你能做到)
- 能说出三大挑战分别是什么
- 能解释「Git 单一事实来源」并说出三个配套动作(同仓、PR 评审、原子提交触发 CI/CD)
- 能说出把 AI 不确定性纳入规范的三个手段(语义等价类 / 置信度阈值 / 回退策略)
- 能解释镜像分层解决什么问题(基础环境镜像 + 权重动态挂载)
- 完成动手练:填三张对策卡
2. 学习动线(建议时间分配)
| 步骤 | 内容 | 用时 |
|---|---|---|
| 1 | 第 3 节:挑战一——规范演进管理 | 20 分钟 |
| 2 | 第 4 节:挑战二——AI 不确定性纳入规范 | 20 分钟 |
| 3 | 第 5 节:挑战三——模型权重管理 | 15 分钟 |
| 4 | 第 6 节:三张对策卡汇总 | 10 分钟 |
| 5 | 动手练(第 7 节) | 15 分钟 |
| 6 | 自测(第 8 节) | 10 分钟 |
3. 挑战一:规范演进管理 → Git 单一事实来源
问题:规范不是一次写死的。功能迭代、字段增减、AI 行为调整都会改 spec。如果规范散落在文档站、聊天记录、各人脑里,改到后面就没人知道「当前真相」是什么。
对策(已核验):
- 规范与代码同仓:规范文件跟着代码一起进 Git 仓库,随分支演进;
- Git 单一事实来源:仓库里的规范就是唯一权威版本,其他地方的都算副本;
- 规范变更走 PR 评审:改规范要像改代码一样走评审,不能悄悄改;
- 原子提交触发 CI/CD:规范和对应代码一起提交(原子提交),触发 CI/CD——这正是 Week 2 pre-commit hook 的「正规军版本」。
呼应 Week 1:OpenSpec 的 delta spec(ADDED / MODIFIED / REMOVED / RENAMED)就是「规范演进」在文件层面的表达——只记录本次变更,评审聚焦差异。
4. 挑战二:AI 不确定性纳入规范 → 概率不是 bug,但要写进规范
问题:AI 输出不是确定性的。同样的输入,回答可能不同;LLM 应用没法用「等于预期字符串」来验收。如果规范假装 AI 是确定性的,测试永远在飘。
对策(已核验):
- 语义等价类测试:不比对字面,比对「语义等价」——多个不同表述只要语义正确都算过,把「正确」定义为一组等价类而不是一个字符串;
- 置信度阈值触发人工兜底:给模型输出定置信度阈值,低于阈值自动转人工(人审兜底);
- 回退到预设安全回答:不确定/不达标时,回退到预先写好的安全回答,而不是让模型自由发挥。
一句话:把「AI 会不确定」这件事本身写进规范——规范约定「不确定时该怎么办」,而不是假装它不会发生。
5. 挑战三:模型权重管理 → 镜像分层
问题:AI 应用的「代码」不只是代码,还有模型权重。权重文件巨大、更新频繁,每次发布把代码和权重打包进同一个镜像,镜像会又大又难管理,版本也难以对齐。
对策(已核验):
- 镜像分层:基础运行环境(底层镜像) + 权重经 Artifact Store 部署时动态挂载——代码/环境一层,权重单独存放、部署时挂载,不打包进镜像;
- 版本号关联:每次发布记录「代码版本 ↔ 权重版本」的对应关系,回滚时能同时回退到匹配的组合。
一句话:代码和权重解耦管理,用版本号把它们重新绑起来。
6. 三张对策卡汇总
| 挑战 | 一句话问题 | 对策(已核验) | 关键动作 |
|---|---|---|---|
| 规范演进管理 | 规范散落、改到没人知道真相 | Git 单一事实来源 | 同仓 / PR 评审 / 原子提交触发 CI/CD |
| AI 不确定性 | 输出不确定,验收在飘 | 把概率写进规范 | 语义等价类测试 / 置信度阈值人工兜底 / 回退安全回答 |
| 模型权重管理 | 权重巨大、更新频繁、版本难对齐 | 镜像分层 | 底层镜像 + 权重 Artifact Store 动态挂载 / 版本号关联 |
三张卡有一个共同底色:所有「真相」都要有一个可追溯、可回退的单一载体——规范在 Git,输出在阈值与回退,权重在 Artifact Store + 版本号。这就是「可控」的工程含义。
7. 动手练(约 15 分钟)
填你自己的三张对策卡(存为 Week3-Day19-三大挑战对策卡.md):
1
2
3
4
5
6
7
8
9
10
11
挑战一:规范演进管理
我的项目里规范目前放在____(Git / 文档 / 聊天记录…)
我的对策第一步:____
挑战二:AI 不确定性
我的 AI 功能里「不确定」的表现:____
我打算用:□语义等价类 □置信度阈值 □回退安全回答(勾选 + 一句理由)
挑战三:模型权重管理
我的权重/模型文件现在怎么存:____
若用镜像分层,我的底层镜像和权重各是什么:____
8. 自测题
- 三大挑战是哪三个?各自一句话。
- 「Git 单一事实来源」的四个配套动作是什么?
- 规范变更走 PR 评审,和 Week 2 的 pre-commit hook 有什么关系?
- 语义等价类测试和普通断言测试的差别?
- 置信度阈值触发什么?回退策略回退到什么?
- 镜像分层里「分层」分的是哪两层?权重放哪里?
- 版本号关联解决什么问题?
答案与提示:
- 规范演进管理(规范会变)/ AI 不确定性(输出不确定)/ 模型权重管理(权重会变)。
- 规范与代码同仓、Git 单一事实来源、规范变更走 PR 评审、原子提交触发 CI/CD。
- hook 是「提交时强制改 spec」的机械执行,PR 评审是「人看变更是否合理」的上层把关,两层叠加。
- 语义等价类不比对字面,比对语义是否等价,把「正确」定义为一组等价类。
- 置信度低于阈值 → 转人工兜底;不确定/不达标 → 回退到预设安全回答。
- 基础运行环境(底层镜像)与权重(Artifact Store 部署时动态挂载)两层。
- 保证回滚时代码与权重能回到匹配的组合。
延伸阅读
- 腾讯云《SDD 规范驱动 + Harness:AI 全栈开发从「能跑」到「可控」》(三大挑战主出处):https://cloud.tencent.com/developer/article/2703349
- sdd-harness 仓库(规范与代码同仓 / hook 落地):https://github.com/iMark21/sdd-harness
- harness-sdd-template(可复制的 harness 模板):https://github.com/marcmassa/harness-sdd-template
本工作纸依据《SDD+Harness四周学习计划.md》Day 19 主题编制。整理日期:2026-09-09