外观
第 27 章 Detailed Outline:Git、Worktree 与代码审查
学习目标与中心问题
学习目标: 读者能够把一次 Agent 候选修改写为带有基线、范围、证据、冲突状态与人工审查结论的 Change Contract,并能在证据不足或范围冲突时停止而非默认合并。
中心问题: 怎样利用 Git 的比较与工作树概念,为人类保留一个可判断、可追溯且不被“自动完成”掩盖的变更入口?
小节蓝图
| 小节 | 读者问题 | 内容与边界 | 计划交付 |
|---|---|---|---|
| 变更不是文件集合 | 为什么“修改了几个文件”不够? | 用基线、范围、证据、审查和集成决定拆开完成声明。 | Change Contract 字段表。 |
| Git 与 worktree 的隔离面 | worktree 隔离了什么,仍共享什么? | 限定引用 Git 多工作树、分支检出和 per-worktree 文件;不写成安全沙箱。 | 隔离层次对照表。 |
| diff 是比较证据 | “我看过 diff”应该说明什么? | 比较对象、路径范围、未暂存/暂存差异与无法证明的语义。 | diff 证据卡。 |
| 人类代码审查 | Comment、Approve、Request changes 如何进入决策? | 限定引用 GitHub PR review 状态与仓库规则;不假设某仓库已启用保护规则。 | 审查结论矩阵。 |
| Change Contract 与集成门 | 如何连接局部工作与共享主线? | 本书模型的基线、范围、冲突、校验、人类审查和集成责任。 | 准入判断表。 |
| 冲突、回滚与停止 | 哪些情况不能自动继续? | 范围越界、共享写入、冲突未知、校验失败或未批准时停止;回滚技术留给第 42 章。 | 停止与升级 Runbook。 |
| 图示与最小示例 | 怎样无副作用地练习准入? | Mermaid 证据流与纯内存 assessGitChangeAdmission,先红后绿。 | 12 项 Node 测试和演示。 |
| 完整案例 | 章节草稿与示例修复怎样隔离交付? | 以教学文件路径说明局部作者、审查者、集成者的分工;不运行 Git。 | 角色—工件—证据表。 |
计划图示
问题: 候选变更怎样从任务意图进入可审查的集成决定,而不是绕过基线、范围、验证或人类判断?
图示元素: Change Contract、基线与范围检查、隔离工作树声明、diff 证据、验证证据、人类审查、Integration Decision、Stop、共享工件与未覆盖范围。
读图结论: worktree 只是候选变更的隔离声明之一;只有基线、范围、差异、验证、人工审查与集成责任形成完整证据链时,局部包才可交给决定者。任何缺失或共享写入都会使流程停在补证或集成门。
计划示例
模块: examples/agent/git-change-admission-assessment.mjs
输入: 一个教学 Change Contract:baseSnapshot、branch、worktreePath、专属/实际/共享路径、冲突声明、校验和审查证据。
输出: ready / blocked / requires_integration / not_applicable,加上路由、原因与准入路径。
测试路径: 完整教学契约;非契约输入;缺基线;缺 worktree 声明;共享路径;超出专属范围;缺 diff;校验失败;非人类审查;请求修改;冲突未知;共享路径误称专属。
边界: 模块不会调用 Git、创建 branch 或 worktree、读取 diff、写文件、运行子进程、访问远端、创建 PR、请求 review、合并、回滚、读取权限或改变外部系统。
与前后章节的关系
- 前置: 第 10 章提供状态与恢复;第 12、14 章提供权限与批准;第 17、18 章提供证据和失败路径;第 23 章提供自动化边界;第 26 章提供任务隔离与共享工件的集成门。
- 本章: 完成工程实践篇中的版本控制、隔离工作区、差异证据与人工审查边界。
- 后续: 第 28 至 35 章会在案例中使用这些控制概念;第 42 章进一步讨论版本化、回滚与 A/B 测试。
完成标准
- 正文以原创 Change Contract 组织 Git、worktree、diff 和审查证据,不复制 Git 或 GitHub 文档。
- CH27-REF-01 至 CH27-REF-03 只支持各自的限定产品事实;所有准入规则均标为本书模型。
- 示例保留模块缺失产生
ERR_MODULE_NOT_FOUND的红灯记录,并实际运行 Node 测试和演示。 - Mermaid 源、导出图、替代描述与正文使用同一术语,且不表示真实 Git 操作。
- 五类审查记录说明真实局部命令与未覆盖的真实 Git、远端、PR、权限、CI、merge 和回滚范围。
