Skip to content

RLCR 方法论改进:7 条基于实际开发会话的建议 #207

@WosunOO

Description

@WosunOO

RLCR 方法论改进建议

基于一次 6 轮 RLCR 会话的方法论分析。会话最终产出质量高(所有 AC 满足,审查者零误报),但轮次消耗比最优多 2-3 轮。

会话概要

指标 数值
总轮次 6
实现轮 4
纯审查轮 2
AC 完成率轨迹 4/7 → 4/7 → 5/7 → 7/7
审查误报率 0%
实现者过声明率 75%(4 轮中 3 轮过度声称完成)
有效轮占比 57%(理想 70-80%)

建议 1:提交前自检协议

模式:实现者在每轮结束时声称所有 AC 完成,但审查者总能发现未完成的合约。过声明率 75%。

建议:在标记轮次完成前,要求实现者执行结构化自检:

  1. 对每个 AC,运行审查者会运行的精确命令/测试,而非仅跑 build/lint
  2. 涉及行为合约的 AC,必须包含具体输入/输出示例证明合约满足
  3. 记录验证环境与生产环境的差异(如模拟环境与真实行为的差异)

预期影响:实现轮次减少约 50%(4 轮 → 2 轮)。


建议 2:审查轮范围预过滤

模式:纯审查轮(无代码改动)处理了重复或超出分支范围的发现项,消耗 2 轮无实质进展。

建议:进入完整审查轮前执行快速范围预过滤:

  1. 检查每个发现项引用的文件是否在当前分支 diff 中
  2. 检查是否重复已知 queued 项
  3. 过滤后若无新可操作发现项,跳过审查轮直接进入 finalize

预期影响:每次会话消除 1-2 个冗余审查轮。


建议 3:负面测试充分性门禁

模式:实现者编写的测试通过但未验证所需行为(静默跳过、过于宽松的断言、错误期望值)。审查者每轮都能捕获此类问题。

建议:在标记任务完成前增加测试质量门禁:

  1. 每个测试断言必须引用具体可验证的合约要求
  2. 错误/失败路径的测试必须断言精确错误条件
  3. 测试不得在环境不支持完整验证时静默跳过
  4. 对超时期望 exitCode=0 的测试是反模式,应被识别

预期影响:更早捕获问题,减少重做轮次。


建议 4:合约优先实现顺序

模式:实现者将所有子任务视为同等粒度完成,即使部分子任务有更严格的验收标准。脚手架被当作合约完成。

建议:当任务涉及行为合约(特定输入→特定输出)时:

  1. 先识别任务服务的 AC 和精确行为合约
  2. 隔离实现并验证合约(如手动测试精确预期输出)
  3. 然后才接入更广泛的系统(构建配置、测试框架等)
  4. 区分"脚手架完成"和"合约验证完成"两种状态

预期影响:提高首轮实现质量。


建议 5:轮次预算感知

模式:无机制标识轮次消耗在重做 vs 新进展上。

建议:跟踪简单指标:"每轮实际验证(非声称)的 AC 数"。若连续 2 个实现轮此指标不增长,触发暂停-重新规划而非继续迭代。

预期影响:更早检测系统性问题。


建议 6:模拟环境行为前置文档化

模式:实现者对模拟环境行为做出错误假设(如"sleep 是模拟的/即时的"),导致基于错误假设编写测试和声明完成。

建议:在涉及模拟环境的会话开始时,明确文档化什么是模拟的 vs 真实的。遇到"看似错误但无法在模拟环境中验证"的行为时,先验证模拟环境的实际行为再做判断。

预期影响:避免假设驱动的重做。


建议 7:扩展 BitLesson 触发条件

模式:BitLesson 仅捕获实现者主动发现的学习。审查者发现的、实现者本应捕获的缺陷未被记录为 BitLesson,但这些往往是最高价值的学习机会。

建议:BitLesson 触发条件扩展至审查者识别的缺陷。当审查者发现实现者遗漏的问题时,记录为"审查者发现的学习"。

预期影响:更好的知识保留和跨会话学习。


总体评估

RLCR 核心反馈循环(实现→审查→修复→验证)健全且收敛。审查者质量是方法论的强项。主要改进方向:

  1. 实现者侧:自检准确度(建议 1, 3, 4, 6)
  2. 流程侧:冗余轮次消除(建议 2, 5)
  3. 知识侧:学习捕获扩展(建议 7)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions