用途
Fallow Review 用于在合并前审查 PR、分支或 diff(无论由 AI 生成还是人工编写)。它把变更集转化为确定性的、由图派生的审查简报,并提供一个智能体契约循环。它回答的问题是“我该看哪里,哪些调用真正需要人的品味判断”,而不是“CI 会不会拦截这个变更”——后者是 fallow audit 的职责,audit 会做门禁。review 命令始终以 0 退出,因此无论结论如何都可以安全运行。
主要能力
它按顺序完成四项工作:
- subtract:报告变更文件中的死代码、复杂度、重复和样式问题,并将它们排除在判断循环之外,避免把注意力花在确定性检查已经负责的内容上。
- focus:按综合注意力评分(扇入/扇出、风险区域、变更形态)对变更文件单元排序,给出 review-here / not-prioritized 标签,并提供完整的降级逃生清单,确保没有内容被隐藏。
- structure:把少量关键的结构性决策从 diff 中提取出来,每个框定为一个判断问题,数量限制在工作记忆可容纳的范围内,每个都锚定到 fallow 发出的 signal_id。
- direct:向智能体提供图派生摘要、审查方向、图快照固定值,以及需要返回的确切判断 schema。
使用方式
快速人工简报:
# 自动检测基线(针对上游/远程默认分支的 merge-base):
fallow review
# 固定基线,或限定到精确 diff:
fallow review --base origin/main
git diff --find-renames origin/main...HEAD | fallow review --base origin/main --diff-stdin
人工简报会打印定位事实、焦点图和决策面(“Decisions to make”)。--format json 输出完整结构化信封(decisions、focus、deltas、impact_closure、partition、graph_facts)。--max-decisions N 调整上限(被限制在一个小范围内)。--show-deprioritized 展开焦点图折叠的内容。
决策面:每个决策都是一个框定问题,锚定到 fallow 从图中确定性派生的 signal_id(一个 delta key 或 coordination-gap key)。只有三类可交付类别:coupling-boundary(新的跨区域依赖边)、public-api-contract(新的导出公共 API 表面,或被本 diff 之外模块消费的变更契约)、dependency(变更的 package.json 新增第三方条目,或把已声明条目跨主版本移动,或 0.x 次版本移动)。
智能体契约循环:先获取指南 fallow review --base origin/main --walkthrough-guide --format json > guide.json,指南包含 digest、direction、graph_snapshot_hash、agent_schema 和 injection_note。digest 仅由图构建,PR 文本从不折叠进来,因此指南在构造上抗注入。然后按 agent_schema 返回判断,每个 signal_id 必须是 fallow 在指南中发出的(emitted_signal_ids),未锚定的 id 会被拒绝,graph_snapshot_hash 需原样回显。最后后验证:fallow review --base origin/main --walkthrough-file judgment.json --format json,响应会把每个判断分类为 accepted 或 rejected(原因包括 unanchored-signal-id、invalid-action、stale-snapshot)。
适用场景
- 在合并前审查 PR、分支或 diff(AI 生成或人工编写)。
- 智能体完成工作并移除了它能处理的 fallow 发现之后,用它呈现留给人类/智能体品味判断的部分。
- 产出可内联审查的判断,回流给编写代码的智能体。
限制
- 不用于对通过/失败结论做 CI 门禁:应使用 fallow audit(失败结论时以非零退出)。
- 不用于全项目健康、清理或死代码报告:应使用 fallow skill。
- 决策面只是确定性的切片,仅覆盖 fallow 能从图中证明的三类权衡;更广泛的架构权衡(抽象层级、错误处理策略、数据模型形态、急切与惰性、状态归属、可扩展性与 YAGNI、可测试性、信任边界)无法由图检测,需要模型阅读 diff,通过 references/tradeoff-elicitation.md 的提示词引出,且该步骤刻意不属于后验证的智能体契约循环,其信封不携带 fallow 级保证,每项保持 deterministic: false,不得呈现为 fallow 已验证。
- 实时反馈集成仅适用于在 Claude Code 内运行 fallow-review 时;Codex 及其他智能体必须跳过该部分,改用终端往返。
- 依赖决策没有 suppress 动作:它锚定在 package.json 上,而该文件无法承载注释,因此绝不要把 // fallow-ignore 行粘贴到清单文件中。
- 生产运行时数据(Fallow Cloud)仅作为上下文引用,绝不作为门禁。
其他说明
人工在环走查(终端,无需应用):同一循环可携带人类的裁决,具有相同的图验证、反幻觉保证,终端是一等捕获面。组合审查时按固定顺序渲染:先按 direction.order 呈现已接受的决策判断,再呈现引出步骤的权衡(最多五个),然后以一行呈现 subtract 计数,最后以一行呈现降级项计数。零决策且权衡信封为 abstained 的审查是完整审查,不是失败,也绝不是编造条目的理由。