Jev 需求质量门禁:判断逻辑与工作过程
AI 时代需求像真的、又多又全,人工评审抓不到重点。核心设计:判断是主业,生成是副业 —— 用 System One 模型把质量判断变成可编程、带置信度、可批量、可复现的分拣信号。
TypeSafe System One「Jev」· 不生成文本,只返回带校准概率的结构化判断(Choice / Score / Noul)· 开源实现 jev-req-gate
① 它解决什么:四个真实痛点
AI 扩写的需求不是"写得差",而是"看起来全面、其实不可信"——工具定位是分拣,不是重写。
像真的,抓不到重点AI 按通用知识扩写,人工评审每条都像对的,却难判断是否契合当前项目上下文
冗余堆砌内容看起来全面、细致,实则不少条目"并不需要",评审被淹没
前后矛盾一篇文档内互相冲突(删除被引用商品:阻止 vs 强制删除),靠人通读才发现
隐形知识根因:文档自足性——大量术语、假设、依赖在文档之外,读的人以为懂了
② 工作过程:从文档到三堆(一次调用,全自动)
输入是手头就有的需求文档,输出是可直接行动的 放行 / 转人工 / 打回。
关键设计:跨条矛盾、上下文契合、隐性依赖都依赖比较——所以 state 打包"条目 + 全文 + 既有需求集",一次调用同时判 22 维,不是逐条孤立判断。
③ 判断逻辑精华:全量判断,但打回只看可靠信号
这是整套设计最值得借鉴的一点——不是"22 个维度都当硬规则",而是校准后分层使用。
MECE 5 面 × 22 个原子问题(每个问题只问一件事,复杂判断在代码里组合)
表述
无歧义 / 原子性 / 可理解 / 术语已定义
内容
完整 / 可验证 / 自足 / 不夹带实现方案
现实
正确 / 可行 / 必要 / 不冗余 / 符合上下文
关系
与既有需求不矛盾 / 依赖声明 / 一致
治理
可追溯 / 风险 / 优先级 / 验收可量化
打回(red)—— 只认 6 个最可靠信号
正向白名单:self_contained / correct / feasible / necessary < 0.3 任一破线,或负向 contradicts_siblings > 0.7,或质量均分 < 1.0 → 直接打回。宁可少杀,不可错杀。
提示(yellow)—— 其余全部降权
质量分 / terminology_defined / risk / implementation_free 只作提示,不参与打回——实测它们对"指标、约束、兼容性"等好需求系统性误伤。
④ 路由带:概率不是二分类,中间带交给人工
Jev 输出 0–1 概率,路由用阈值分层——不确定的绝不硬消,这是门禁可信度的来源。
实测行为:正常文档"无致命硬伤但处处需确认"时全黄——这是保守门禁该有的样子,不是故障。想更激进可用收紧阈值模板。
⑤ 为什么要 Jev 而不是 LLM:同一测试集、同一判定协议的真实对比
17 条 × 2 轮,Jev vs DeepSeek V4 Flash,本仓库实测(benchmarks/ 可复现)。
| 指标 | Jev(System One) | DeepSeek V4 Flash(LLM) |
| 误打回(错杀好需求) | 0.0 | 0.6 —— 门禁被错杀,团队就会绕过门禁 |
| 判定一致性(同条两次同结果) | 1.0 | 0.9412 —— 不可复现、不可审计 |
| 成本(17 条 × 2 轮) | $0.0022 | $0.0197(≈ 9×) |
| 延迟 p50 / p95 | 0.67s / 0.84s | 1.90s / 9.80s —— 长尾拖慢流水线 |
| 输出形态 | 校准概率(Choice/Score/Noul),可直接设阈值 | 自由文本,需解析、不稳定 |
| 拦截率(漏检口径) | 0.9167 | 0.9167(打平) |
如实记录:冗余条目(r15)Jev 与 LLM 同漏——non_redundant 是 Jev 弱项,流程层用编号级去重兜底。拦截率打平恰恰说明差异不在"能不能拦",而在"拦错多少 + 是否稳定 + 多贵"。
⑥ 最值得带走的四个设计原则
1
判断是主业,生成是副业LLM 天生擅长生成(拆解、解释、扩写);Jev 天生只做判断(校准概率、可复现)。各用所长:LLM 拆需求,Jev 判质量。
2
保守分层,宁可转人工,不可错杀中间带概率(0.25–0.75)绝不硬消,路由给人裁决。用 35% 转人工换取误打回 0——门禁只有不冤枉人,才会被团队信任、才可能成为硬门槛。
3
全量判断,但打回只看可靠信号22 个问题全问,但硬规则收敛到 6 个白名单信号;其余维度实测易误伤,降权为提示。判断维度多不等于规则多——规则要校准,不是堆砌。
4
用模板把隐形知识逼成显式字段术语表 / 假设清单 / 显式依赖声明,让自足性判断从"读全文猜"变成"对表判"——这直接回应了需求文档自足性这一根因痛点。