TypeSafe Jev (System One) 简历-JD 匹配度初筛:判据模板 + 正/负/陷阱三类样本测试档案,判据 v1→v3 迭代全程可复现 / Resume-JD screening with TypeSafe Jev: atomic questions, calibrated criteria v1→v3, full reproducible test archive
在 DeepSeek Harness 终端运行:
dsh plugin --profile web add nanami-0713/jev-resume-screening用 TypeSafe 的 System One 模型 Jev 对候选人简历与岗位 JD 做原子化匹配度评估:文本进、类型化决策+校准概率出、代码侧合成总分。
本文件夹是完整的项目封装:判据模板、测试请求、测试结果、简历样本、实验记录全部在内。
state
├─ job # JD 结构化拆解(questions 用 `job.*` 路径引用)
│ ├─ title / team / mission
│ ├─ responsibilities[5] # 职责(英文转写)
│ └─ requirements # min_education / traits / skills / preferred
└─ resume.full_text # 简历原文(发送前剥离 PII)
questions(10 题,一次请求全并行)
├─ Noul ×5 教育门槛 / 英文书面证据 / AI 重度用户 / 效率工具实战 / 极致经历
├─ Score ×4 用户社区工作深度 / 数据指标能力 / 跨团队协调交付 / 碎片信号洞察(各 0–3 档)
└─ Choice ×1 dominant_background 背景分桶(路由给不同招聘官)
设计原则:每题只含一个判断;判据用 what/not_for/examples/signals 对比式定义;软要求给操作化定义;没有"匹配度总分"问题——总分是代码的事。
逐题结果(完整数据在 results/):
| 问题 | 预期 | CN | EN | 判定 |
|---|---|---|---|---|
| education_bachelor_or_above | 高 | 0.99 | 0.99 | ✓ |
| written_english_evidence | 高 | 0.98 | 0.97 | ✓ |
| ai_products_heavy_use | 高 | 0.98 | 0.99 | ✓ |
| efficiency_tools_in_work | 高 | 0.98 | 0.99 | ✓(TensorFlow 课程干扰未生效) |
| exceptional_pursuit | 高或中值+低置信 | 0.90 | 0.89 | ✓ 健康的判断题置信度 |
| user_community_work_depth | 2–3 | 3 (conf 1.0) | 3 (conf 1.0) | ✓ |
| data_and_metrics_ability | 2 | 2.99 (0.99) | 3.0 (1.0) | ✗ → v1 判据歧义,v2 修复 |
| coordination_and_delivery | 2 | 2.67 (0.67) | 2.75 (0.75) | △ 骑墙+低置信,但见发现 3 |
| signal_to_insight | 2–3 | 2.99 (0.99) | 2.99 (0.99) | ✓ |
| dominant_background | user_or_community_ops | ✓ 1.0 | ✓ 1.0 | ✓ |
发现 1 — 校准画像健康。 事实检索题(学历、证书)置信 0.97–0.99;主观判断题(exceptional)同一份证据只给 0.89–0.90。事实题高、判断题低半档,校准在正确工作。
发现 2 — 骑墙行为是健康信号。 coordination 题模型没有直接上当成 3,而是 {2: 0.33, 3: 0.67} 骑墙、置信 0.67——它"知道"这是边界案例。
发现 3 — 置信度阈值会跨语言漂移(生产风险)。 同一简历,CN 置信 0.67 / EN 0.75。若路由门槛设 0.7,中文版转人工、英文版自动放行——候选人命运取决于管线语言。对策:整条管线固定一种语言,并按该语言校准阈值。
发现 4 — 判据歧义导致"自信地错"。 data 题的"共建≠主导"区分从未写进判据,模型对模糊边界给了 0.99+ 高置信。改判据,不改提示词。
性能与成本: CN 3901 tok / 197ms,EN 3525 tok / 106ms(CJK 约 +10% token、延迟 ×1.9,均可承受);单份简历约 $0.00016,$5 赠金(2026-10-19 到期)约够筛三万份。
| 位置 | v1 问题 | v2 修改 |
|---|---|---|
data_and_metrics_ability 第 2 档 |
"共建指标体系"字面命中不了任何档 | what 增加 "or co-built metrics owned by others";signals 增加 "Co-defined metrics with analysts or PMs without owning the system" |
data_and_metrics_ability 第 3 档 |
"Defined metric systems" 未区分主导/参与 | what 改为 "Owned the definition of a metric system end-to-end (not merely co-built it), or built monitoring or alerting pipelines" |
coordination_and_delivery 第 3 档 |
"Led end-to-end" 未区分主导闭环/在场协调 | what 增加 "— personally owned the closure, not just attended or coordinated it" |
预期:小明这两题应落回 2 分档、置信回升。archive/v1-requests/ 与 results/*-test-result.json(无 v2 后缀)严格对应;requests/ 为 v2 判据版本。
v2 复测(2026-09-19,results/*-test-result-v2.json)——修订生效:
| 问题 | v1 CN / EN | v2 CN / EN | 结论 |
|---|---|---|---|
| data_and_metrics_ability | 2.99 (0.99) / 3.0 (1.0) | 2.18 (0.81) / 2.18 (0.81),分布逐字节一致 {2: 0.82, 3: 0.18} | 落回 2 档 ✓,中英零偏差 |
| coordination_and_delivery | 2.67 (0.67) / 2.75 (0.75) | 2.56 (0.56) / 2.60 (0.60) | 向 2 靠拢 ✓;置信更低而非回升——模型如实承认这是真边界案例,将稳定触发人工复核 |
复测结论:
v2 → v3 修订(负对照 B 驱动,2026-09-19 应用并回归):
| 位置 | v2 问题 | v3 修改 |
|---|---|---|
ai_products_heavy_use true |
"Describes routine, intensive use..." 未区分声称与证据 | what 改为 "Demonstrable, costly, or specific evidence of ... — not merely self-description" |
ai_products_heavy_use false |
未覆盖自我标榜话术 | what 增补 "or a self-described identity ('heavy user', 'frequent user') without any concrete usage scenario" |
exceptional_pursuit true |
实体规模可被记到个人头上 | what 增补 "attributable to the candidate's own sustained contribution — not merely association with a large entity or title" |
v3 全量回归(四例:小明 CN/EN + 负对照 A/B,results/*-v3.json):
resume-jd-matching/
├── README.md # 本文件
├── jev-recruiting-screening.json # 判据模板 v2(当前版;state.resume.full_text 为占位符)
├── requests/ # v3 判据的完整可发送请求(当前版)
│ ├── jev-screening-xiaoming-CN.json # 正样本:小明
│ ├── jev-screening-xiaoming-EN.json # 正样本英文版
│ ├── jev-screening-control-A-unqualified.json # 负对照 A:明显不合格
│ └── jev-screening-control-B-glossy-trap.json # 负对照 B:光鲜空洞陷阱
├── resumes/
│ ├── xiaoming-CN.txt
│ ├── xiaoming-EN.txt
│ ├── control-A-unqualified-CN.txt
│ └── control-B-glossy-trap-CN.txt
├── results/ # 实测结果(console 导出含耗时;API 直连无耗时字段)
│ ├── CN-test-result.json · EN-test-result.json # v1 判据 · 小明
│ ├── CN-test-result-v2.json · EN-test-result-v2.json # v2 判据 · 小明
│ ├── control-A-result.json · control-B-result.json # 负对照 · v2 判据
│ └── CN/EN-test-result-v3.json · control-A/B-result-v3.json # v3 回归 · 四例全量
├── archive/
│ ├── v1-requests/ # v1 请求(对应 CN/EN-test-result.json)
│ │ ├── jev-screening-xiaoming-CN.json
│ │ └── jev-screening-xiaoming-EN.json
│ └── v2-requests/ # v2 请求(对应 *-v2 与 control-*-result 结果)
│ ├── jev-screening-xiaoming-CN.json
│ ├── jev-screening-xiaoming-EN.json
│ ├── jev-screening-control-A-unqualified.json
│ └── jev-screening-control-B-glossy-trap.json
└── webapp/ # 网站工作台(node server.mjs 启动,详见第 10 节)
├── index.html / app.js / style.css # 四步流程前端(纯 vanilla,无构建步骤)
├── criteria.js # 判据校验器 + 合成评分/路由逻辑(浏览器与 Node 测试共用)
├── server.mjs # 零依赖本地代理(静态服务 + Jev/LLM 转发,仅监听 127.0.0.1)
└── demo-data.js # 内置演示:小明简历 + JD 原文 + v3 判据
Console Playground: 打开 console.typesafe.ai → Playground,粘贴 requests/*.json 全文发送(model 选 jev-latest)。
Python SDK:
import json
from typesafe_sdk import TypeSafeClient
with open("requests/jev-screening-xiaoming-CN.json") as f:
req = json.load(f)
with TypeSafeClient() as client:
resp = client.system_one(state=req["state"], questions=req["questions"])
a = resp.answers
print(a["dominant_background"].choice, a["user_community_work_depth"].score)
换候选人: 只替换 state.resume.full_text(先剥离姓名/照片/性别/年龄/婚育)。
换 JD: 重写 state.job.*,并逐题核对 questions 的判据与路径引用是否仍成立。
代码侧合成与路由(接在响应之后):
def norm(qid): return a[qid].score / 3 # Score 归一化
match = (0.30 * norm("user_community_work_depth")
+ 0.25 * norm("data_and_metrics_ability")
+ 0.25 * norm("coordination_and_delivery")
+ 0.20 * norm("signal_to_insight"))
# 硬门槛:证据不足 → 待核,不直接拒
gated = [q for q in ("education_bachelor_or_above",
"written_english_evidence") if a[q].noul < 0.8]
# 加分项
if a["ai_products_heavy_use"].noul > 0.8: match += 0.05
if a["exceptional_pursuit"].noul > 0.8: flag_for_manual_read()
# 置信度路由:任何一问不确定 → 人工;阈值按管线语言校准
low_conf = [q for q in a if getattr(a[q], "confidence", 1) < 0.7]
# 背景分桶 → 路由给对应招聘官
route_to(a["dominant_background"].choice)
上生产前最后一道关:检验机制对"不该通过的人"的分辨力。两份对照简历均为中文版(与"管线固定语言"决策一致),设计意图如下:
Case A control-A-unqualified(王强,明显不合格)——5 年房产销售/快消业务员,大专学历,无英语证据,DeepSeek 仅用来写周报,Excel 记账。探测三件事:
Case B control-B-glossy-trap(林浩然,光鲜空洞陷阱)——985 本科 + 雅思 7.5(硬门槛合法通过,因此拒他必须靠维度判断),大厂专家 title、福布斯 U30 入围、50 万粉自媒体联创;但全文无一因果性成果(只有"显著提升"),技能栏"精通 SQL/Python"零使用证据,AI 仅"高频用户"声称,联创实际职责是选题会与商务对接。探测四件事:
实测结果(2026-09-19,API 直连,v2 判据,results/control-*-result.json):
| 问题 | A 王强 实测 / 预期 | B 林浩然 实测 / 预期 |
|---|---|---|
| education | 0.03 / 低 ✓ | 0.99 / 高 ✓ |
| written_english | 0.02 / 低 ✓ | 0.84 / 高 ✓(证书-only 比小明的证书+使用证据 0.97 低——模型对证据强度敏感) |
| ai_products_heavy_use | 0.11 / 低 ✓ | 0.95 / 预期 0.3–0.6 ✗ |
| efficiency_tools | 0.10 / 低 ✓ | 0.17 / 低 ✓(not_for 生效,"精通 SQL/Python"关键词未放水) |
| exceptional_pursuit | 0.10 / 低 ✓ | 0.81 / 预期 0.5–0.75 △ |
| user_community_work_depth | 1.07 (0.93) / 1 ✓ | 2.31 (0.61) / 1–2 △ |
| data_and_metrics_ability | 0.12 (0.88) / 0 ✓ | 1.74 (0.72) / 1–2 ✓ |
| coordination_and_delivery | 0.03 (0.97) / 0–1 ✓ | 1.89 (0.71) / 1–2 ✓ |
| signal_to_insight | 0.00 (1.0) / 0–1 ✓ | 1.33 (0.42) / 0–1 △ |
| dominant_background | other_or_unclassifiable (0.88) ✓ | user_or_community_ops (1.0) ✓ |
| composite | ≈0.12,两门槛挂 → 拒绝堆 | ≈0.67,低于 0.8 红线 |
判定:机制通过负对照。 A 十题全中——地板不被"喜欢与人打交道"式自我标榜抬高,销售背景被兜底桶正确接住;B 落在 0.12 < 0.67 < 0.894 的正确序列上,且拒它的不是硬门槛(门槛合法通过)而是维度判断,验证了设计前提。合成总分排序 A 0.12 < B 0.67 < 小明 0.894,间距合理。
但 B 暴露一个判据缺口:
requests/(v2)重跑小明 CN/EN,验证 data / coordination 两题回落(2026-09-19:data → 2.18 且中英一致;coordination → 2.56/2.60、置信 0.56/0.60,详见第 4 节)把本项目的方法论包装成可用网站:用户粘贴简历与任意 JD,由通用 LLM 起草判据、Jev 做校准评估、代码合成匹配度。
启动(Node ≥ 18,零依赖):
cd webapp && node server.mjs # → http://127.0.0.1:8787
四步流程: ① 配置 Jev key + 通用 LLM(OpenAI 兼容 Base URL/Key/模型,均为 BYOK,仅存浏览器 localStorage);② 粘贴或上传简历与 JD;③ LLM 从 JD 起草判据 JSON(可手工编辑,实时 schema 校验)→ ④ 调用 Jev,渲染总分环形图、门槛状态、逐题概率条与路由建议。没有 LLM key 时可「载入演示判据」直接体验 Jev 评估(内置小明演示数据)。
架构决策(为什么需要本地代理 + 为什么需要通用 LLM):
api.typesafe.ai 的预检响应不含 access-control-allow-origin(origin 不在白名单),浏览器无法直连,因此由零依赖 Node 代理转发(仅监听 127.0.0.1,key 只在内存中转发、不落盘不打印)。验证记录(2026-09-19): 校验器单元测试四项全过(v3 模板通过 / 受保护属性拒绝 / 坏结构拒绝 / 用小明 v2 真实结果复现 README 合成分 0.944);LLM 代理错误路径透传正确(上游 401 原样返回);真实 key 经代理完成 Jev e2e(10 题返回,数字与 v3 回归一致);浏览器端到端(载入演示→判据→评估)总分 95%、路由"协调维度低置信转人工"。
typesafe-core-docs-翻译.md — 七个核心页完整译本 + 26 条术语表typesafe-state-翻译.md — State 单页精翻 + 术语表登录后即可为该插件评分和评价。
还没有人评价这个插件,来抢个沙发吧!