ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Gentle-AI 的 R2 Readability 可读性评审透镜:从 Cursor Agent 定义到 4R 评审账本契约

Gentle-AI 的 R2 Readability 可读性评审透镜:从 Cursor Agent 定义到 4R 评审账本契约 【免费下载链接】gentle-aiGentle-AI configures the AI coding agents you already use: Claude Code, Cursor, OpenCode, Codex, Pi, and more. Choose persistent memory, Organic-Driven Development, curated skills, MCP servers, personas, and optional bounded review. Open source, no agent lock-in.项目地址https://gitcode.com/gh_mirrors/ge/gentle-ai点击查看免费下载Gentle-AI 的有界评审bounded review体系以四个只读评审透镜R1 Risk / R2 Readability / R3 Reliability / R4 Resilience为核心本文以 Cursor 平台的 review-readability.md 为骨架完整拆解 R2 可读性评审透镜的规则集、输出契约与评审账本review ledger契约并结合 transaction.go 与 bounded_lenses_test.go 等源码说明该透镜在 4R 流水线中的真实调用关系、预算约束与证据门控机制。读完本文你将掌握 R2 透镜的完整判定标准、账本条目 schema、对抗性验证投票规则以及如何在实际评审中选择与使用可读性透镜。R2 Readability 在 4R 评审体系中的定位Gentle-AI 的评审能力由一组可插拔的只读 agent 组成每个 agent 是一个评审透镜lens。在 transaction.go 中四个标准透镜被定义为字符串常量并构成固定顺序的支持列表const ( LensRisk review-risk LensResilience review-resilience LensReadability review-readability LensReliability review-reliability ) var supportedLenses []string{LensRisk, LensResilience, LensReadability, LensReliability}R2 Readability 的官方定位是命名、复杂度、意图、可维护性、评审规模与上下文清晰度的可读性评审者。它只负责找出清晰度问题不负责修复——这一点由 agent 定义文件中的 frontmatter 直接固化--- name: review-readability description: R2 Readability reviewer — naming, complexity, intention, maintainability, review size, and context clarity. model: inherit readonly: true background: false ---model: inherit透镜不指定独立模型继承评审发起方配置的模型readonly: true整个透镜被限制为只读禁止任何写操作这与评审者只报告、修复由 orchestrator/writer 子代理完成的架构约束一致background: false透镜以显式前台任务运行不作为后台静默 agent。同一份 agent 定义在 Gentle-AI 资产库中被多平台分发除 Cursor 外internal/assets/claude/agents/review-readability.md、internal/assets/opencode/agents/review-readability.md、internal/assets/kimi/agents/review-readability.md、internal/assets/kiro/agents/review-readability.md 均存在同名透镜安装与分发逻辑集中在 internal/components/reviewassets/install.go 中体现无 agent 锁定的设计取向。Review rules可读性透镜的九条判定标准R2 透镜依据 ai-course-2 系列讲义05-code-smells.md、06-safe-refactoring.md、07-advanced-refactoring.md、08-tech-debt.md、22-docs-as-code.md、25-executive-summary.md归纳出以下评审规则魔法数字应提取为命名常量或业务规则对象而不是散落在代码中的裸数字长参数列表参数过多时应重构为参数对象parameter object重复逻辑跨组件 / hooks / 模块的重复代码应被标记死代码注释掉的代码块、未使用的 import、不可达分支、从未被调用的函数隐藏意图的命名命名让人无法直接看出意图、或需要大量注释才能解释的命名含糊的 PR / 上下文说明如果评审对象的上文说明过于模糊无法安全评审应要求补足具体意图与影响范围过于复杂必须有证据凡是声称某处太复杂必须引用确切的函数、分支或重复模式作为证据反向豁免清晰、局部、自解释的小助手函数或内联常量不要标记精度门Precision gate只有当发现是真实、影响用户、并且你能用具体证据辩护的缺陷时才报告拿不准就保持沉默。风格与偏好类发现一律禁止除非它们掩盖了真实缺陷。第 9 条是贯穿整个账本契约的核心理念会在后续小节中反复出现。它从规则层面将 R2 与代码风格检查器划清界限R2 不是 lint而是缺陷门控。Output contract只报告不修复R2 的输出契约极其严格只输出发现findings不输出修复建议之外的任何冗余内容每条发现必须包含severity: BLOCKER | CRITICAL | WARNING | SUGGESTION、受影响的文件、证据以及为什么重要why it matters如果一切干净必须精确输出原文No findings.这一契约保证了多个透镜的产出可以机械地合并进同一个账本ledger为后续的对抗性验证与修复循环提供统一格式。在 internal/reviewerprovider/contract.go 中可以看到RoleLens lens角色与对应的结果 schema 绑定说明透镜结果在提供者契约层即被规范化。Review ledger contract把评审变成可审计的账本R2 的评审不是一次性对话而是围绕账本运行的受约束流水线。整个契约由以下机制组成Sweep budget扫描预算禁止循环到底标准评审standard review每个透镜对 diff 恰好执行1 次穷尽扫描然后停止Full-4R 评审hot path当 diff 触及 auth / update / security / payments 路径或变更超过 400 行时每个透镜最多执行2 次扫描系统中不存在循环直到扫净的机制——扫描预算是整个第一遍的全部。这条约束从机制上防止评审 agent 陷入再扫一遍的无限循环是成本控制的第一道闸门。Precision gate沉默是金原文明确给出代价不对称性漏掉一个 nitpick 不花任何代价一个误报false positive会浪费整整一轮修复周期。因此只有在能拿出具体证据时才报告拿不准就保持沉默风格与偏好类发现被禁止除非它们掩盖了缺陷。Findings ledger账本条目的统一 schema每一条账本条目必须遵循以下表格结构FieldValuesid{LENS}-{NNN}例如R1-001lensrisk | readability | reliability | resilience | judgment-daylocationpath/to/file.ext:line或:start-endseverityBLOCKER | CRITICAL | WARNING | SUGGESTIONstatusopen | fixed | verified | refuted | wont-fix | infoevidencewhy it matters注意lens取值中包含judgment-day——这是一个特殊的第五透镜见下文。如果第一遍扫描一无所获也必须持久化一条空账本记录而不是跳过持久化。这一要求保证了账本作为审计轨迹的完整性任何一次评审都在账本上留下痕迹。Adversarial verification只有严重候选才被验证只有BLOCKER / CRITICAL候选会被验证WARNING / SUGGESTION 永不验证因为它们永不驱动修复标准评审恰好1 个 general refuter评估合并后的完整候选列表对每条发现返回一个裁决Full-4R 评审恰好3 个 refuter分别从 correctness、exploitability/impact、reproducibility 三个视角评估同一份合并列表投票独立进行只有至少 2 个透镜裁决否决该发现时才被 refute1-of-3 或平局保持原判。对应地仓库中提供了专门的 review-refuter.md它是一个分离式只读验证器接收不可变评审目标与完整的 BLOCKER/CRITICAL 候选列表每条包含id、location、severity、claim、proof_refs用具体反证逐条攻击对每条返回corroborated证据存活/refuted被反证推翻/inconclusive证据不足然后终止——不编辑、不修复、不委派、不新增发现。Refutation protocol任务上限是结构性的orchestrator 在合并各透镜账本之后、任何修复工作之前恰好调用一次反驳只有 BLOCKER/CRITICAL 候选进入反驳任务上限是评审级结构上限标准评审 1 个 refuter 任务Full-4R 总计 3 个无论候选列表是 2 条还是 20 条绝不按候选数 spawn 任务每个任务都收到完整的合并候选列表标准评审中只有 general 裁决否决才标记为refutedFull-4R 中按 2-of-3 独立投票任何格式错误或缺失的逐条裁决默认按stands维持原判处理Judgment Day 是唯一例外其双法官收敛机制本身满足对抗性验证要求因此不派生任何review-refuter任务。Severity floor只有活过验证的严重项进入修复循环只有通过对抗性验证的BLOCKER / CRITICAL发现才能进入修复 → 再评审循环WARNING / SUGGESTION 仅报告一次状态为info永不再评审、永不阻塞Judgment Day 可以额外用assessment字段记录 real/theoretical但规范严重度仍是WARNING、规范状态仍是info——WARNING 永远不会是open。Convergence budget最多两轮修复每次评审最多2 轮修复一轮修复 orchestrator直接或经由单个 writer 子代理为所有 open 且已验证的 BLOCKER/CRITICAL 发现应用修复然后进行限定范围的再评审用账本核对修复 diff在 judgment-day 中修复执行者是jd-fix-agent第 2 轮之后仍未关闭的项原样报告给用户为 open——循环绝不延长。Ledger persistence持久化尊重 artifact store账本写到哪里取决于评审运行所在的 artifact storeopenspec写入openspec/changes/{change-name}/review-ledger.mdengramupsert 主题sdd/{change-name}/review-ledger对于没有 change 的 ad-hoc judgment-day使用review/{target-slug}/ledger其中target-slug的取值为评审 PR 时为pr-{number}否则为当前分支名的 kebab-case再否则为用户所述评审目标的 kebab-case slugnone账本只保留在本次对话响应内不写文件、不写 Engram 制品由于会话压缩后账本不持久必须在同一次会话内完成评审 → 修复 → 再评审的完整循环。Scoped validation限定范围验证杜绝越界再评审阶段只接收冻结的账本 不可变的修复 delta只验证原始验收标准 / 测试以及修正回归证据不检查完整原始 diff不做缺陷发现之后的观察属于非阻塞跟进不能改变发现、范围、ID、计数器或修正。Execution modesubagent 模式R2 以 subagent 模式运行透镜只产出自己的账本行由 orchestrator 合并进持久化账本。这与 4R 流水线的多透镜并行、集中合并、统一反驳拓扑保持一致。源码印证有界透镜的调用边界上述账本契约并非纯提示词约束而是被事务层代码强制执行的。在 bounded_lenses_test.go 中可以看到一组针对性测试透镜数量门控TestOrdinaryBoundedSupportsOnlyZeroOneOrCanonicalFourLenses验证合法组合只有 0 个、1 个或完整 4 个透镜2 个透镜、未知透镜、乱序透镜都会被NewTransaction拒绝单次记录门控TestOrdinaryBoundedRecordsEachSelectedLensExactlyOnceBeforeFreeze验证每个被选透镜只能RecordLensResult一次重复记录会被拒绝在所有被选透镜完成记录之前FreezeFindings不允许冻结未选中拒绝TestOrdinaryBoundedRejectsSupportedButUnselectedLens验证向未选中的透镜写入结果会得到 was not selected 错误空账本显式化TestZeroLensOrdinaryBoundedRequiresExplicitEmptyLedger验证零透镜评审必须显式持久化空账本CanonicalEmptyLedger隐式空结果不被接受。这些测试与 R2 agent 定义中的Sweep budget / Findings ledger / Precision gate形成呼应提示词层定义评审者的行为事务层保证这些行为不可被绕过。结合ModeOrdinary4R与ModeOrdinaryBounded两种模式transaction.go可以看出 4R 是完整流水线而 bounded 模式是面向低风险变更的精简通道。Judgment Day第五个特殊透镜账本 schema 中预留了judgment-day取值。它作为特殊情况被多处提及其双法官收敛机制本身满足对抗性验证要求不派生review-refuter任务修复执行者是jd-fix-agent允许用assessment记录 real/theoretical但规范严重度仍为 WARNING、状态仍为 info。从代码结构看这是 4R 之外的一条独立评审轨道适合对结论有重大分歧或需要最终裁定的场景其精确触发条件以当前仓库的评审编排实现为准。实战如何选择与使用 R2 透镜单透镜评审低风险、小规模变更可选择仅review-readability一个透镜事务层接受 0/1/4 三种合法组合完整 4R 评审变更触及 auth / update / security / payments 等 hot path或超过 400 行时应启用全部四个透镜并接受最多 2 次扫描 / 3 个 refuter 的结构上限阅读账本每条发现按id / lens / location / severity / status / evidence六字段阅读只有状态为open、严重度为 BLOCKER/CRITICAL 且通过验证的条目才会进入修复持久化位置根据 artifact store 类型确定账本落点openspec 文件、engram 主题或仅会话内联agent 分发透镜资产随 internal/components/reviewassets 安装到目标 agent 环境Cursor、Claude、OpenCode、Kimi、Kiro 均有对应副本可在各自平台直接使用。小结R2 Readability 透镜的核心价值不在于找风格问题而在于把可读性评审变成有预算、有门控、可审计、可反驳的工程流水线九条判定标准定义了什么值得报告精度门定义了什么不该报告账本契约定义了报告之后发生什么而事务层源码则保证这些约束无法被绕过。对于希望把 AI 评审引入日常提交流程的团队review-readability.md 及其配套的 review-refuter.md、review-risk.md、review-reliability.md、review-resilience.md 构成了一个可直接学习、直接复用的完整范式。赞分享【免费下载链接】gentle-aiGentle-AI configures the AI coding agents you already use: Claude Code, Cursor, OpenCode, Codex, Pi, and more. Choose persistent memory, Organic-Driven Development, curated skills, MCP servers, personas, and optional bounded review. Open source, no agent lock-in.项目地址https://gitcode.com/gh_mirrors/ge/gentle-ai点击查看免费下载相关推荐Meshery 代码评审 Agent 实践指南从 Go 后端到 Next.js 前端的全栈契约审查Meshery 代码评审 Agent 实践指南从 Go 后端到 Next.js 前端的全栈契约审查 本指南围绕 Meshery 仓库中定义的 Code Rev云原生微服务运维DevOpsGentle-AI R3 Reliability 评审透镜深度解析行为优先测试、覆盖价值与确定性保障Gentle AI R3 Reliability 评审透镜深度解析行为优先测试、覆盖价值与确定性保障 导读 本文围绕 Gentle AI 仓库中 CursorOpenHands Agent Canvas 定制代码评审实践用可执行架构测试约束 AI 与人类评审OpenHands Agent Canvas 定制代码评审实践用可执行架构测试约束 AI 与人类评审 本文围绕 OpenHands 仓库中 .agents/s人工智能AI Agent代码智能体前端后端上一篇HDagger CRC校验算法详解数据完整性的守护者下一篇CPDS-analyzer与Prometheus集成指南构建完整监控体系创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表