外观
第 38 章详细 Outline:Reflection、Evaluation 与 Approval Patterns
写作契约
本章要完成的学习目标
读者完成本章后应能:
- 将一次失败或低质量评估拆成观察、评估证据、反思记录、候选改进与决定,而不把任一中间结论当作已修复或已执行。
- 为有限重试、补证、独立评估、批准、拒绝和升级选择明确的入口条件,并说明每个入口不能推导的外部事实。
- 用范围、证据版本、影响、可逆性、未覆盖项和刷新条件组织一张批准卡(Approval Card),而不以单个置信度或口头确认替代责任分配。
- 为候选改进建立可回放的决定记录,区分“评估通过”“已批准”“已执行”和“效果已验证”。
- 在虚构的文档链接修复场景中设计最小的 Pattern Card 组合、纯内存路由接口与测试出口,并指出真实文件、网络、Git、CI、人员审批和回滚仍未发生。
读者、前置与明确边界
- 读者: 已能阅读结构化证据、状态和简单对象,正需要把自动反馈同人类责任连接起来的工程、测试、AI 与技术管理读者。
- 前置: 第 14 章的人类在环(Human-in-the-loop,HITL)与行动/审批记录;第 16 章的反思记录(Reflection Record);第 17 章的评估规格(Evaluation Spec)和证据矩阵;第 18 章的恢复出口;第 20 章的候选改进、变更门和受控发布边界;第 36、37 章的模式选择与可追溯记录。
- 本章负责: 把反思、评估、批准、升级和回放组织成可组合的 Pattern Card,规定各卡片的输入、输出、证据条件、责任断点与保守停止出口。
- 本章不负责: 真实重试、模型调用、代码或文件修改、链接检查、浏览器、网络、Git、CI、真实批准、身份核验、组织授权、部署、回滚、审计留存、事故响应或法律/合规判断。任何“ready”或“approved”状态只描述本书的教学路由,不能证明外部行动已经发生。
来源与本书模型的分层
| 使用位置 | 可归因材料 | 本章允许的有限陈述 | 本书原创内容 |
|---|---|---|---|
| 第 1 至 3 节 | CH38-REF-01 / REF-029 | Anthropic 工程文章在其语境中讨论 evaluator-optimizer 循环、明确评估条件、环境证据、检查点和停止边界。 | 反馈输入表、Evidence-first Retry、候选状态和各路由的字段/返回值。 |
| 第 3、4、6 节 | CH38-REF-02 / REF-062 | NIST AI RMF Core 将治理、度量、记录和独立审查置于可按组织情境组合的风险管理背景。 | Separated Evaluation、阈值表、独立性检查问题和决定包结构。 |
| 第 5、6 节 | CH38-REF-03 / REF-063 | NIST AI RMF 1.0 提供角色/责任、监督过程和记录可支持管理决定的框架背景。 | Approval Gate、决定者职责问题、刷新条件和升级路由;这些不是固定组织矩阵。 |
| 第 2、7 节 | CH38-REF-04 / REF-059 | Google SRE 的复盘实践包含事件、影响、处置、成因、预防行动和行动项审查的书面学习语境。 | Reflection-to-Candidate、Escalate-and-Replay、无责的教学记录字段和案例分支。 |
正文必须以“Anthropic 工程文章指出”“NIST 框架提供风险管理背景”“Google SRE 的复盘实践说明”或“本书工程模型/虚构教学输入”标记层次。不得把四项来源写成默认重试算法、跨组织审批规则、真实权限、合规结论、特定人数、固定阈值、真实事故流程或自动回滚保证。
章节叙事与逐节蓝图
1. 从反馈到决定:五种记录不能压缩成一句“已修复”
- 要回答的问题: 为什么 Agent 看到失败、得到评分或写出复盘后,仍不能直接重试、改规则或宣布任务完成?
- 场景输入: 虚构文档 Agent 收到一条“注入的链接检查证据未满足当前 Evaluation Spec”的记录、一段反思文本和一个待审候选路径。它们都是教学对象,不来自真实文件或检查器。
- 来源边界: CH38-REF-01 只提供评估反馈依赖清晰标准和可观察结果的工程背景;CH38-REF-04 只提供书面复盘与行动项审查的实践背景。
- 本书模型: 以“Observation、Evaluation Evidence、Reflection Record、Candidate Change、Decision Record”五列区分产生者、可支持结论、允许的下一步与不能推导的事实。特别标出
observed_failure ≠ root_cause、accepted_evaluation ≠ approved_change、approved_change ≠ executed_change。 - 最小证据: 让读者为五种记录分别填入“来源、范围、时间、未知项、责任人、下一步”,并识别缺少哪一项时必须回到补证。
- 失败与停止: 仅有模型自述、范围不明、证据过期、观察与结论不关联或声称外部效果已经发生时,输出
needs_evidence或blocked,不进入反思或批准。 - 过渡: 记录层次清楚后,下一节才讨论哪类失败能够受限地再取证,而不是把所有失败都当作可重试。
2. Evidence-first Retry:重试是受限的再取证,不是默认恢复动作
- 要回答的问题: 评估未通过时,什么条件允许形成有限重试候选,什么条件必须直接停止或升级?
- 来源边界: CH38-REF-01 仅用于说明检查点、阻塞、最大迭代等工程控制的背景;它不规定本章的次数、等待时间、成功率或任何产品行为。
- 本书模式卡:
Evidence-first Retry读取失败类别、任务范围、已知效果、幂等/可重复性声明、重试预算、当前证据与停止条件;它只输出collect_more_evidence、retry_limited、needs_approval或blocked,不调用任何工具。 - 阈值表: 用定性字段而非捏造数字:可定位且范围不变的可观察缺口可请求补证;外部效果未知、范围扩大、不可逆影响、预算耗尽或策略要求人工参与时不能自动重试。
- 最小证据: 对比三条虚构输入:缺少再次观察的证据、范围未变且只需重新评估、以及“前次外部效果未知”的候选;解释它们为何分别进入补证、有限重试候选和升级。
- 失败与停止: “可能是暂态问题”“模型很有信心”或“之前试过一次”都不能作为重试许可;没有效果状态或停止条件时保持
blocked。 - 过渡: 再取证只能改善证据,不能解释根因;下一节将反思限制为可被推翻的候选生成过程。
3. Reflection-to-Candidate:复盘建议必须经过反例和范围检查
- 要回答的问题: 怎样让反思帮助提出改进,而不把一段解释直接写成规则、修复或长期结论?
- 来源边界: CH38-REF-04 仅提供复盘应保留影响、处置、成因和后续行动的书面学习背景;“候选”“反例”和状态机是本书模型。
- 本书模式卡:
Reflection-to-Candidate将 Reflection Record 中的观察、假设、证据缺口、反事实、候选改变和可证伪检查分栏。只有带有范围与检查计划的项才能成为candidate_proposed;该状态不等于根因确认、规则更新或实际修复。 - 最小证据: 为“相对链接可能写错”列出竞争假设:路径表达错误、来源文件已移动、注入检查证据过期。读者需为每个假设给出会推翻它的观察,而不是选出一个听起来合理的答案。
- 失败与停止: 反思没有关联证据、把症状写成根因、候选扩大到来源事实或无可证伪检查时,路由为
needs_evidence、needs_scope_review或escalated。 - 过渡: 候选本身仍由生成/反思链提出;下一节用分离的评价问题防止同一链路自行给自己放行。
4. Separated Evaluation:评估通过只回答指定问题
- 要回答的问题: 如何防止候选改变由产生它的同一段推理、同一份证据或同一个模糊评分直接接受?
- 来源边界: CH38-REF-02 只提供 Measure、记录与独立审查可减轻偏差或利益冲突的风险管理背景;它不保证独立性,也不规定本章的评分器、阈值或审核人数。
- 本书模式卡:
Separated Evaluation将 Candidate Change、Evaluation Spec、证据版本、评估者/方法、未覆盖项和判定分开登记。它的输出只能是accepted_for_decision、rejected_for_reason、needs_evidence或needs_independent_review。 - 独立性检查: 以可审查问题而非承诺表示:评估是否复用了候选的未核验假设?是否只看了同一段摘要?规格是否覆盖候选的声明范围?是否记录了未覆盖的风险?回答“是/未知”会阻止自动进入批准。
- 最小证据: 将“链接路径在注入样例中满足格式规则”与“来源事实是否仍然准确”分为两个标准,说明前者的通过不能接受后者的变更。
- 失败与停止: 缺失 Evaluation Spec、证据版本不明、方法与候选范围不匹配或共享关键假设未披露时,保持
needs_independent_review;不借用“绿色结果”突破范围。 - 过渡: 一项评估结论可以为决定提供材料,但谁对风险和范围负责,需要通过明确的批准门来回答。
5. Approval Gate:把人类决定限定为一次、有条件的范围判断
- 要回答的问题: 人类应根据什么信息批准、拒绝或要求补证,以及为什么“人工确认”不能当作永久权限?
- 来源边界: CH38-REF-03 仅提供人机监督角色/责任与过程记录的框架背景;Action Card、字段、路由和条件均为本书工程模型,承接但不重复第 14 章的审批机制。
- 本书模式卡:
Approval Gate读取候选范围、影响类别、可逆性、证据版本与新鲜度、未覆盖项、策略输入、回滚准备摘要和请求的决定。它返回approval_required、ready_for_approval、needs_evidence、rejected或blocked,而非授权令牌。 - Approval Card: 最小字段为候选标识、意图、范围、已评估与未评估内容、证据/版本、影响与可逆性、可选方案、回滚准备声明、请求的决定、刷新条件、决定者角色和拒绝出口。卡片没有真实人员、签名或工具权限。
- 最小证据: 对比“仅更新一个受控相对链接候选”与“同时改写来源事实和多个章节”的虚构卡片。前者可能形成
ready_for_approval,后者必须先needs_scope_review或needs_evidence。 - 失败与停止: 审批范围扩大、证据刷新、可逆性未知、决定者职责未定义或候选要求实际执行时,旧决定不可复用;系统只保留待审或升级记录。
- 过渡: 批准与拒绝都不是闭环终点;下一节说明如何保存理由、反对意见与未决风险,供之后重新判断。
6. Escalate-and-Replay:停止和人工覆盖也必须可解释
- 要回答的问题: 当证据冲突、策略不清或人类拒绝候选时,怎样不丢失上下文,也不把升级写成失败掩盖?
- 来源边界: CH38-REF-02 提供记录和治理的风险管理语境;CH38-REF-03 提供监督过程定义/记录的背景;CH38-REF-04 提供行动项审查与学习语境。决定包的字段、重放语义和职责均是本书模型。
- 本书模式卡:
Escalate-and-Replay将候选、评估规格、证据版本、路由理由、决定、拒绝理由、未决项、责任入口和重新评估触发保存为 Decision Package。replayable指之后可以重读已保存的教学输入与理由,不等于真实系统可重放或已撤销效果。 - 升级策略模板: 按“证据冲突、影响不清、授权/策略缺口、外部效果未知、超出预算”区分问题;每类都要求最小输入、可请求的补充、负责角色和停止语句。模板不指定任何组织、SLA 或响应时间。
- 最小证据: 为“来源事实需要改写但只有格式检查通过”的候选生成升级包,明确保留已知部分和未知部分,而不是要求系统猜测事实正确性。
- 失败与停止: 记录缺少关联候选、未知项被删除、将拒绝重写为通过,或在证据冲突时继续生成执行步骤,均为
blocked;必须回到补证或具名责任入口。 - 过渡: 以上模式需要在同一案例中接受边界检查,下一节用双轨文档改动区分可受控修复与必须人工复核的事实变更。
7. 完整教学案例:自动修相对链接,人工复核来源事实
- 要回答的问题: 同一份文档中的两个问题,为什么不能由同一条“修复并通过”路径处理?
- 教学输入: 虚构 Agent 获得两个注入对象:其一是相对链接候选及有限的格式/路径评估证据;其二是一句带有来源声明但尚未重新核验的事实。输入不对应真实 Markdown、URL、仓库、账户、审批人或运行记录。
- 处理路径: 链接候选依次经过 Evidence-first Retry、Reflection-to-Candidate、Separated Evaluation 和 Approval Gate;若范围不变、证据完整且没有外部效果声明,最多输出
ready_for_approval。事实候选即使格式评估通过,也因来源范围/新鲜度缺口输出needs_evidence或escalated。 - 责任断点:
format_accepted ≠ fact_verified、accepted_for_decision ≠ approved_change、approval_recorded ≠ file_written、candidate_has_rollback_field ≠ rollback_executed。案例不执行写入、网络、Git、CI、审批或回滚。 - 最小证据: 用“输入 → 适用 Pattern Card → 输出 → 缺失证据/责任 → 不能主张”的五列表,覆盖有限链接候选、事实候选、范围扩大和证据冲突四条路线。
- 预期验证: 读者能指出为何链接候选需要范围检查,为何事实候选需要来源重读,以及为何两者都不能由测试名称或模型自评自动接受。
- 过渡: 表格解释了路由,下一节将路由限制转成不接触外部系统的最小接口和测试计划。
8. 最小示例:纯内存的反馈—批准路由评估器
- 要回答的问题: 如何把模式卡的停止条件做成可被反驳的输入/输出契约,而不模拟真实修复、审批或回滚?
- 示例边界: Example Implementation 阶段才确定函数文件、测试数和 npm 入口。计划函数名为
assessFeedbackApprovalRoute(input);它只读取注入的scope、evidence、reflection、candidate、evaluation、risk、approval与rollbackReadiness,返回教学路由及原因。 - 计划输出: 合法输入最多得到
collect_more_evidence、retry_limited、candidate_proposed、needs_independent_review、ready_for_approval、approval_required、needs_evidence、blocked或escalated。函数不返回“已修复”“已写入”“已发布”或“已回滚”。 - 计划测试: 覆盖缺证据、已知效果未知、受限重试候选、反思无可证伪检查、独立评估未完成、范围扩大、需要人工批准、拒绝/升级,以及记录不完整。断言只检查公开返回对象和原因。
- 预期验证: 本阶段不运行 Node、测试、演示、模型、浏览器、网络、文件、Git、CI、身份、审批或回滚工具。之后只有真实执行命令的输出才能写入测试结果。
- 过渡: 纯函数说明何时停止;下一节的图示需要让相同的断点在决策路径中一眼可见。
9. 图示:候选改进通过的不是直线,而是一组责任断点
- 要回答的问题: 一张图怎样表达自动反馈、人类决定与回放记录之间的关系,同时避免把批准画成执行?
- 图示内容:
Observation / Evaluation Evidence → Reflection Record → Candidate Change → Separated Evaluation → Approval Gate → Decision Package为主链。collect_more_evidence、retry_limited、needs_evidence、rejected和escalated分别离开主链,且retry_limited必须回到 Observation/Evidence,而不是直达 Candidate。 - 关键断点: 图中显式标注“反思建议 ≠ 已验证修复”“评估接受 ≠ 已批准”“批准记录 ≠ 已执行”“回放包 ≠ 真实回滚”。候选范围改变、证据过期、外部效果未知或责任缺失均不能跨越 Approval Gate。
- 工件与验收: 后续 Mermaid 源暂定
diagrams/mermaid/chapter-38-feedback-approval-decision-flow.mmd。正文图块、源文件、SVG/PNG、替代文字和视觉审查只能在 Diagram Review 阶段创建并相互核对。 - 最小证据: 图后按箭头列出输入、输出、负责者和禁止推论,要求读者说明为什么没有“approved → deployed”的箭头。
- 预期验证: 本阶段不声称 Mermaid 已存在、已渲染、已检查或真实流程已运行;图只计划表达本书模型与虚构输入。
- 过渡: 图给出当前的最小闭环;最后一节说明何时需要升级为真实组织控制,以及哪些捷径会再次把反馈误写成权限或效果。
10. 渐进增强、反模式、总结与后续连接
- 要回答的问题: 从纯内存 Pattern Card 走向真实项目时,需要补哪些控制,哪些看似高效的捷径必须拒绝?
- 渐进表:
| 新需求 | 必须新增的控制 | 升级触发 | 本章为何不实现 |
|---|---|---|---|
| 运行真实检查或有限重试 | 环境契约、目标范围、工具权限、效果观察、超时、预算和回读验证。 | 必须接触文件、网络、服务或其他外部系统。 | Pattern Card 不授予工具调用权。 |
| 写入或发布候选改变 | 变更预览、最小写权限、独立验证、批准记录、回滚方案、执行后观察。 | 候选将产生外部副作用。 | 批准不是执行,回滚准备不是回滚。 |
| 真实组织审批与治理 | 已核验的身份、授权、职责矩阵、保留策略、审计与组织制度。 | 决定影响多人、受控资料或生产系统。 | NIST 背景不替代当地制度。 |
| 长期监控与版本回放 | 版本化工件、数据保留、隐私/安全限制、回放隔离、漂移检查和弃用路径。 | 决定需要跨任务复用或复盘。 | Decision Package 只是教学记录。 |
- 反模式: 将低分自动解释为可重试;让反思直接改规则;用同一份未经复核的摘要完成候选和评估;将“审批人已看过”替代范围/证据/刷新条件;将
approved当作实际写入;把拒绝、停止或未知效果从记录中删除。 - 总结回收: 本章的核心不是增加更多门,而是让每个门只回答自己的问题:证据决定能否再观察,反思产生可被推翻的候选,评估判断指定标准,批准承担范围决定,升级保存无法自动解决的责任。任何外部行动仍需独立的权限、执行和观察证据。
- 练习:
- 为一个“链接测试偶发失败”的输入写出 Evidence-first Retry 所需字段,并指出哪个缺失项会阻止重试。
- 将“换一个提示词就能修复”改写成 Reflection-to-Candidate 记录,补上两个竞争假设和一个可证伪检查。
- 为“更新来源事实”写一张 Approval Card,列出三项必须先补的证据及一项不能由批准推出的结论。
- 设计一条
escalatedDecision Package,说明它如何保留未知项而不暗示真实回滚或审计已发生。
- 后续连接: 第 39 章将把评价规格扩展为 Harness 测试策略和 Benchmark;第 41、42 章分别扩展安全/审计和版本化/回滚控制;第 43 至 45 章将把研究、审查、交接和长期项目上下文放入技术书工厂。后续章节不得将本章的教学路由倒写为任何产品、组织或真实外部系统的执行事实。
后续阶段的交付与验证契约
| 阶段 | 计划产物 | 本阶段不应提前声称的事实 |
|---|---|---|
| First Draft | 原创正文、五张 Pattern Card、阈值表、升级策略、虚构文档案例和跨章节过渡。 | 任何循环、审批、重试、回滚、发布或组织流程已经真实运行。 |
| Technical Review | 重读 CH38-REF-01 至 CH38-REF-04,核查来源限定、术语首现、模式职责及第 14/16/17/20 章边界。 | 来源已经提供固定阈值、组织结构、产品 API 或真实合规结论。 |
| Example Implementation | 纯内存 assessFeedbackApprovalRoute、最小测试、演示计划和无副作用边界。 | Node 测试、链接检查、文件写入、Git、CI、审批或回滚已运行。 |
| Diagram Review | Mermaid 源、导出图、替代文字、图文断点核对与视觉审查。 | 图中任何节点等同真实系统状态、权限或外部效果。 |
| Fact Check / Language / Final Review | 来源复读、事实表、术语与时态检查、实际验证记录和状态收口。 | 动态资料、案例数据、工具行为或测试结果未经当日核验即可定论。 |
Outline 完成检查
- [x] 覆盖 Evidence-first Retry、Reflection-to-Candidate、Separated Evaluation、Approval Gate 与 Escalate-and-Replay 五张模式卡。
- [x] 将观察、评估、候选、批准、执行和效果验证的责任断点分开,并提供有限重试、补证、拒绝和升级出口。
- [x] 每个主要小节均说明允许来源、本书模型、虚构教学输入、最小证据、停止条件和过渡。
- [x] 明确第 14、16、17、18、20、39、41、42 章的输入输出边界,避免重复定义权限、恢复、评估或真实治理。
- [x] 只使用 CH38-REF-01 至 CH38-REF-04 已映射的正式来源;未把来源背景写成默认审批算法、实际执行或组织保证。
- [x] 已定义后续正文、纯内存示例、图示与审查的交付契约;本提纲阶段未声称它们已创建或已运行。
