验证机制:自动/LLM/人工三种方式的组合决策
📍 位置:AI-Agent任务评测框架 / 框架节点 2
📌 核心发现:四层漏斗(格式门禁 → 质量门禁 → LLM 审查 → 人工终审),自动 60-70%、LLM 20-25%、人工 5-15%
📥 输入:LLM-as-Judge 学术研究、CI/CD 质量门禁实践、Anthropic/OpenAI 评测指南
📤 流向:→ findings.md「验证机制」部分 + 产出/评测框架模板.md
1. 验证方式选择决策树
Q1: 该维度是否有确定性的对/错标准?
├─ 是(编译/测试/lint/格式/链接) → ✅ 自动验证
└─ 否
Q2: 是否可用明确的评分标准描述?
├─ 是(代码可读性/文档完整性/回答准确性)
│ Q3: 评判错误的后果是否严重?
│ ├─ 否 → ✅ LLM-as-Judge(单模型)
│ └─ 是 → ✅ LLM-as-Judge(多模型交叉)+ 人工抽样校准
└─ 否(商业价值/品牌调性/伦理合规/创新性)
→ ✅ 人工 Checklist
2. 四层漏斗架构
Layer 0: 格式门禁 编译/类型检查/格式化 0 成本,不通过直接打回
↓ 通过
Layer 1: 质量门禁 测试/覆盖率/lint/安全扫描 低成本,秒级
↓ 通过
Layer 2: LLM 审查 可读性/架构/文档质量/需求覆盖 中成本,秒级
↓ 通过/灰区
Layer 3: 人工终审 商业价值/UX/品牌/合规 + 灰区 高成本,小时级
关键原则:
- 每一层只处理该层该做的事,不越级
- 越早失败越好
- LLM 灰区(如 3 分/5 分)升级到人工,而非强行判定
- 人工收到的是经过两层过滤的高质量交付物
3. 自动验证覆盖矩阵
| 任务类型 | 可自动验证的维度 | 工具 |
|---|
| 代码 | 编译、类型检查、lint、测试、覆盖率、安全扫描、格式化 | tsc/ESLint/Jest/SonarQube/Snyk |
| UI | 视觉回归、Accessibility、性能(Lighthouse)、响应式 | Percy/Applitools/axe-core/Lighthouse |
| 文档 | 拼写、链接有效性、格式校验、结构完整性 | cspell/markdownlint/markdown-link-check |
| 工作流 | 端到端执行、输出格式(JSON Schema)、幂等性、性能 | 脚本化执行 + schema 校验 |
自动验证的边界:能覆盖二元判定和数值指标,不能覆盖「优雅」「美观」「有用」等主观维度。
4. LLM-as-Judge 方法论要点
评分范式选择
| 范式 | 鲁棒性 | 复杂度 | 适用场景 |
|---|
| Pointwise | 高(9% 翻转率) | O(n) | 大批量质量评估 |
| Pairwise | 低(35% 翻转率) | O(n²) | 模型选型/A-B 测试 |
结论:优先使用 Pointwise 评分。
Prompt 设计六原则
- 结构化 Rubric — 具体分级描述,不用模糊形容词
- 单维度单 Judge — 每个维度独立调用,不同时评多个维度
- CoT 先推理后评分 — 推理必须在分数之前
- Few-Shot 适度 — 1-2 个示例(覆盖高低分),不超过 3 个
- 二元判断优于细粒度 — Binary > 3-point > 5-point > 10-point
- 偏差缓解 — 位置交换、多 Judge 投票、温度控制、匿名化
已知偏差与缓解
| 偏差 | 严重度 | 缓解方法 |
|---|
| 位置偏差 | 高 | 随机化顺序 + 多次取平均 |
| 冗长偏差 | 中 | Rubric 中明确简洁性标准 |
| 自我偏好 | 中 | 使用不同模型做 Judge |
| 同意偏差 | 中 | 平衡正负样本 + 要求批判性 |
成本参考
- 单维度评分:$0.003-0.02/eval,1-5s
- 4 维度并行:$0.02-0.08/eval,5-20s
- 多 Judge 交叉(3×4):$0.06-0.24/eval,最高质量
5. 人工不可替代的场景
| 维度 | 为什么 AI 不行 |
|---|
| 商业价值判断 | 需要业务上下文和战略视角 |
| 品牌一致性 | 需要内化品牌调性 |
| 用户体验直觉 | 需要真实用户视角 |
| 伦理/合规 | 后果严重,需要法律背景 |
| 创意原创性 | AI 难以判断真正新颖 |
| 跨系统影响 | 需要全局架构理解 |
Checklist 设计原则
- 分层:阻断项(Must Pass)→ 关键项(Should Pass)→ 优化项(Nice to Have)
- 具体可判定:用可观察行为替代模糊描述
- 附带决策树:减少判断负担
- 动态裁剪:不同任务类型激活不同子集
6. 按任务类型的验证组合模板
代码任务
auto: [compile, type_check, lint, test(100%), coverage(≥70%), security_scan]
llm: [code_readability(5pt≥3), architecture_fit(binary), requirement_coverage(checklist)]
human: [security_review(高风险全量), cross_system_impact]
UI 任务
auto: [build, lint, accessibility(axe-core), lighthouse(perf≥80,a11y≥90), visual_regression]
llm: [layout_quality(screenshot+rubric), component_consistency, responsive_check]
human: [ux_flow, brand_consistency, edge_cases(空/错误/极端)]
文档任务
auto: [spell_check, link_check, format, structure_check]
llm: [accuracy(reference-based), completeness(checklist), readability(5pt), coherence]
human: [technical_accuracy(领域专家), audience_fit]
工作流任务
auto: [e2e_execution(exit=0), output_format(schema), idempotency, performance(≤timeout)]
llm: [output_quality, error_handling]
human: [business_logic, side_effects]
7. 渐进式升级路径
| 阶段 | 策略 | 人工比例 | 目的 |
|---|
| 冷启动 | 自动 + 全量人工 | 100% | 建立标注数据集 |
| 引入 LLM | 自动 + LLM + 50% 抽样 | 50% | 验证 LLM 一致率 |
| 稳态 | 自动 + LLM + 10-20% 抽样 + 灰区升级 | 10-20% | 持续校准 |
| 成熟 | 自动 + 分层 LLM + 5% 抽样 | 5% | 成本最优 |