@adlc/ review- 校正
ADLC阶段:P5 meta-gate——"谁审查审查员"
措施审查员通过布设的虫子召回. "我们做对质审查" 显示类别层次的盲点,并重新运行 每个模型的变化——抓住每个人目前吸收的无声回归 不知不觉.
这是针对 审查者 而不是代码(ADLC C8).
如何运作
- 目标文件: 文件更改于
--commit(单位:千美元)git diff-tree过滤到 非测试,非配置源代码。 倒计时--files如果实施 触摸没有符合条件的文件 . - 植物选择数字 :
mutate.generateMutants运行在每个目标文件上 全部内容。 最多--plants变种人通过绕行来选择 运营商负责覆盖。 每个植物都有真正的虫子 类别 (逐个, 逻辑倒置,无处理,.)和a 缺陷 说明.--plants-file植物还可携带 证人。 。 。 . - 等效混合滤波器有目击者的植物必须消毒 (通过原作,失败的变种人). 证人不在场的植物 歧视是等同的变种人 被从分母中排除,而不是被打中。 每项排除都是 (a) 印成说明理由的证人 被破坏的目击证人而不是同等的变种人)包括尾部 运行的输出, 而一个不能开始的说,而不是"超时".
- 控制自测试(计分器): 在打分前, 两个参考审查员运行
通过决定主义
referenceJudge- 一个 回声器 (必须得分~0)和 a 一个 预告 (必须得分1.0). 如果有错的话 计分员自己就坏了 和工具输出 1。 这个界限 计分器的汇总 - 它已经 没有非语义性的捷径——没有别的. 4个b. 自我测试控制(法官): 实际得到的号码是由 配置 法官,没有referenceJudge,所以回声控制运行一秒钟 只要法官做出至少一项判决 就能通过他 在那个 默认法官模式 无约束法官是操作失败(退出1)——a 法官不能拒绝回声评审者不能证明召回数字.--scorer string让法官通过建筑来"匹配一切" 永远无法限定: 运行仍然完成, 并报告configuredJudgeBounded: false因此,未验证的数字可见于一个 机器消费者,而不只是警告 当找不到时 找到一个工厂 法官从来没有咨询过, 两者configuredJudgeBounded财务报告和审定财务报表configuredJudgeEchoRecall为:null- 这个 所以没什么好约束的. - 应用所有植物, (中文(简体) ), 运行
--review-cmd(单位:千美元){base}* 承诺参考, 恢复 (在解剖学上,通过finally+ SIGINT 处理器;通过 下一个——见Safety. - 分析结果:审查者的产出被分析为结构化的结果
(对抗性审查)
--json形而上学,或修辞能力低下. - 分数: 只有当发现 LOCATES 时, 植物才为 CAUGHT( 文件+ 第±3行)
和 被配置的法官(一种廉价的模型)确认其识别出缺陷.
A 类
repro字段在查找中解析但从未运行: CLI 不执行 由它所测量的审查者提供的指令。 有一个 没有字符串匹配快捷键:一个回响已改变行分~0. 召回=捕获/有效植株. 精度=真实/(真实+虚假结论), 找到一个不识别植物的发现是虚假的. - 门: 如果召回, 退出 2 <
--min-recall(或精度 <--min-precision; 否则退出 0。 在操作出错或控制失败时退出 1 .
计分器模式( E)--scorer(中文(简体) )
judge(默认)——廉价型语义相配. 需要 LLM 提供者 (单位:千美元)ANTHROPIC_API_KEY编号 :OPENAI_API_KEY编号 :GEMINI_API_KEY) (中文(简体) ). 没有提供者 该工具 未关闭 (出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出不可信出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出. 每个发现地点都经过判断,包括载有repro。 。 。 .string——LEGACY 位置唯一匹配. 由审查者游戏 重复已更改的行; 打印一个警告, 而不是一个值得信赖的召回号码 . 仅作为离线逃生舱提供.
见 REDESIGN.md 说明每项决定的全部设计和理由.
安全问题
- 拒绝在肮脏的工作树上跑 (opError,出口1). 先交或者先藏起来.
- 工厂是写作和修复的 解剖学 (temp文件+重命名),所以没有 源文件总是被截断.
- 在正常的退出、出错或 Ctrl- C 时,文件由跑者恢复
finallyblock(和CLI的SIGINT处理器). - 一个跑步 被杀死 中期审查(CI取消的SIGTERM,
docker stop(笑声) 无法恢复任何事物本身spawnSync,没有 信号处理器运行。 在植入之前,CLI会写一个飞行记录 每个文件的原始内容并植入到 git dir (单位:千美元).git/adlc-review-calibration-inflight.json) (中文(简体) ). 这个 下一次运行 恢复 那些文件之前的 肮脏的树检查 和在stderr说。 只有这样 恢复一个仍然保存精确的已插入内容的文件; 如果文件有 自那以后,它拒绝(第1出院),不写作,保留记录 然后持有唯一一份原件。 由进程拥有的记录 仍然运行是单独运行(退出1). - 从审查命令中退出代码:0和2有效(通过/出门-故障). 任何其他出站代码都作为崩溃处理(opError,出站1).
使用量
review-calibration --review-cmd "cmd with {base} placeholder" [options]
选项
| 旗帜 | 默认 | 说明 |
|---|---|---|
--review-cmd <cmd> | (必须) | 贝壳指使管理审查员. {base} 改为承诺书. |
--commit <ref> | HEAD | 提交更改后的文件作为工厂目标. |
--plants <n> | 8 | 要植入的虫子数量 . |
--min-recall <f> | 0.5 | 必须通过的最低召回分数(0-1). |
--files <list> | —— 说 | 当任务没有符合条件的代码文件时, 以逗号分隔后退文件列表 . |
--json | 虚假 | 机器可读JSON输出. |
--help | —— 说 | 显示帮助. |
退出代码
| 代码 | 含义 |
|---|---|
0 | 出入口——召回 --min-recall |
1 | 操作错误 — 肮脏的树, 没有植物可基因化, 审查命令崩溃( exit {0, 2}) , 或参数错误 |
2 | 门失败- 记得 < --min-recall |
实例
与对抗性审查的基本校正:
review-calibration \
--review-cmd "adversarial-review --base {base} --json" \
--commit HEAD \
--plants 8 \
--min-recall 0.6
JSON 给管弦乐手的产出 :
review-calibration \
--review-cmd "my-reviewer {base}" \
--json
自定义文件倒置( 当承诺没有符合条件的源文件时) :
review-calibration \
--review-cmd "my-reviewer {base}" \
--commit HEAD \
--files "src/auth.mjs,src/api.mjs"
用一个微不足道的假审查员进行测试(CI 烟雾测试):
review-calibration \
--review-cmd 'node -e "process.stdout.write(\"LGTM\\n\")"' \
--min-recall 0 \
--json
JSON 输出形状
{
"recall": 0.625,
"caught": 5,
"total": 8,
"precision": 0.83,
"truePositives": 5,
"falsePositives": 1,
"minRecall": 0.5,
"minPrecision": null,
"gatePass": true,
"scorer": "judge",
"judgeAgreement": null,
"equivalentExcluded": 0,
"commit": "HEAD",
"reviewExitCode": 0,
"perCategory": {
"off-by-one": { "caught": 2, "total": 2, "recall": 1.0 },
"logic-inversion": { "caught": 2, "total": 4, "recall": 0.5 },
"null-handling": { "caught": 1, "total": 2, "recall": 0.5 }
},
"plants": [
{
"file": "src/auth.mjs",
"line": 42,
"category": "logic-inversion",
"operator": "invert-comparison",
"status": "caught",
"original": " if (user.role === 'admin') {",
"mutated": " if (user.role !== 'admin') {"
}
]
}
precision 真实 : truePositives / (truePositives + falsePositives)时
假阳性是发现没有植物的位置(在干净的地基中+只有我们的地基中)
树,没有别的破碎) 或者说 一个定位一个植物但识别不
工厂的缺陷——一种未经证实的说法,如对所改变的行的回音.
找到的每个地点都有自己的判断 所以用回声来补充真正的捕捉
降低精度. unsubstantiated 报告有多少虚假阳性
第二类。 何时 truePositives + falsePositives === 0 (审查员)
没有得出任何结论, precision 实值 null (不是1.0) 因为精度不能
被评价; 配置 --min-precision 如果精确度是
null。 。 。 .
校正逻辑
抓获 只有在发现时 植物才会被捕获
- 地点 它——提到文件的基名和±3范围内的一行.
- 识别 一个廉价的模型法官证实了这个结论 这个
缺陷
scorePlants接受注入verifyRepro图书馆服务员; cLI不提供一种。 )
没有“输出包含已更改行的下弦”规则: 确切地说,是什么让一个排行审查者得分1.0。 回声定位但不会 识别,所以它得分为~0——每跑一次由内置回声控制执行.
按类别召回 ——按真实bug类别细分的捕获率 (逐一取出,逻辑倒置,无所处理,. ),如此低召入一类 在特定的评审员盲点点点.
与兄弟姐妹工具的关系
| 工具 | 作用 |
|---|---|
hollow-test (C4级) | 以测试为目标的突变测试——通过测试套件杀死突变人 |
review-calibration (C8级) | 针对审查者的突变测试——措施审查员召回 |
adversarial-review | 正在测试的评审员; 将输出线接入 --review-cmd |
gate-manifest (C11) (中文(简体) ) | 将校正分数记录在每次复审判决的同时 |
核心差距
无——所有所需功能(mutate.generateMutants, (中文(简体) ), mutate.applyMutant, (中文(简体) ),
isDirty, (中文(简体) ), isGitRepo, (中文(简体) ), git, (中文(简体) ), parseArgs, (中文(简体) ), pass, (中文(简体) ), gateFail, (中文(简体) ), opError, (中文(简体) ),
printJson) 可在 @adlc/core。 。 。 .