Skip to content

第 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:baseSnapshotbranchworktreePath、专属/实际/共享路径、冲突声明、校验和审查证据。

输出: 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 和回滚范围。

从同一套 Markdown 书稿生成。