[AI/模型] Kev:可自训自跑的开源「Jev 式决策模型」家族
0 序
1 概述
产品介绍
产品定位
Kev 是一套「Jev 式」的小型决策模型家族,构建在 Qwen3.5/3.8 开源基座之上,权重、训练代码、评估数据全部开放,开发者可以自训、自调、自部署;它的 API 与 TypeSafe 的 System One 完全兼容,可直接替换 Jev 作为本地实现。
- Slogan:"Small Jev-like decision models you can train and run yourself."(小型、类似 Jev 的决策模型,你可以自己训练并运行。)
- URLs
- GitHub:https://github.com/jaredpalmer/kev
- Hugging Face Space(网页试玩):https://huggingface.co/spaces/jaredpalmer/kev
诞生的背景与原因
- 新品类刚出现:2026-09-15 TypeSafe AI 发布 Jev,首次提出「System One Models(系统一模型)」品类——不生成文字、直接返回结构化、带校准概率的决策。9-21 Jev 全面开放,开发者涌入。Kev 正是瞄准这一"刚公开不到一周"的模型类别,把它开源化、本地化。
- 作者背景:Jared Palmer 现任 Cognition 工程副总裁,是 Turborepo(2021 年被 Vercel 收购)、Formik、Vercel v0、AI SDK 等知名开发者基础设施的缔造者。他一贯的路径是"把大产品背后的一层基础设施重新打包成开发者可以运行、修改、扩展的东西"——Kev 正是这一路径对 Jev 的复刻。
- 用编程智能体协作开发:Kev 由 Devin(Cognition 的编程智能体)协助构建,并把整个训练配方、评估、实验日志全部公开,示范"一名有经验的开发者 + 编程智能体 + 租赁 GPU 也能产出可用的开源实现"。
解决的核心问题
- 把"软件工作流里埋着的小型语义判断"(路由工单、选择升级路径、给客户愤怒程度打分、判断消息是否紧急)做成专门的决策模型接口,而不是让通用 LLM 先生成一整段文字再由程序解析。
- 给开发者提供可本地运行、权重开放、可针对私有数据微调的开源选项,避免把决策环节的数据与推理全部交给闭源托管 API。
- 一次调用内对同一份
state并行评估多个互相隔离的问题,返回概率分布供程序按阈值路由。
发展历程
| 时间 | 事件 |
|---|---|
| 2026-09-15 | TypeSafe AI 发布 Jev 与「System One Model」品类(Early Access) |
| 2026-09-20 | Jared Palmer 发布 Qwen3.5 版 Kev,形成 0.8B / 4B / 9B 三模型家族;随后补充 27B(Qwen3.8) |
| 2026-09-21 | Jev 全面开放;Kev 在 GitHub 已吸引约 1,300 星 |
| 2026-09-24 | Kev 发布 research-archive 归档(完整实验日志);Kev-4B 上线 OpenRouter |
| 2026-09-21~27 | 多篇技术媒体与审计报道 Kev 与 Jev 的校准对比(见参考文献) |
历史代际:早期原型 Kev-0.5B 用 Qwen2.5-0.5B;第一代正式家族用 Qwen3(0.6B / 4B / 8B);当前主推 Qwen3.5/3.8 代(0.8B / 4B / 9B / 27B)。
主要功能
- 三种决策原语(与 Jev 一致):
noul:对一句话判断"成立与否",返回 0~1 概率;choice:在 1~255 个候选中选一个,返回完整概率分布与 confidence;score:在有序等级(2~10 级)上给出加权分数、legend、概率与 confidence。
- 一次编码、多问题并行:同一份
state带多道题一次请求;题目共享文本但互相不可见(隔离)。 - 校准概率:每个 checkpoint 内置在留出数据上拟合的温度(0.8B=2.35 / 4B=2.41 / 9B=2.30 / 27B=1.38),加载时作用于 pointer head。
- 与 TypeSafe SDK 即插即用:TypeSafe Python SDK 不改代码即可指向本地 Kev 服务。
- 自训 / 微调:
kev.train+ JSONL 标注数据 +--init_from从已发布 checkpoint 续训;kev-finetuneskill 在 Modal 上自动跑完"找问题→标注/生成→微调→拟合温度→评分→部署→销毁"整条闭环。 - 一键部署 HTTPS 端点:Modal 部署,空闲缩到零,无闲置成本。
- 浏览器试玩:Hugging Face Space 直接体验 Kev-4B / Kev-0.8B。
核心优势
- 开源、可复现:Apache-2.0,权重 + LoRA 适配器 + pointer head + 训练脚本 + 冻结评估数据 + 模型卡 + 实验日志全部公开。
- 本地自部署与数据可控:可在笔记本 / 自建 GPU 上跑,适合对数据安全、本地部署有要求的场景。
- 成本透明且极低:Qwen3.5 实验总账单约 95 美元 H100 时长 + 0.03 美元 Jev API 调用;Kev-4B 一次微调训练约 1 美元(H100)。
- 校准可检验:自带拟合温度、可靠性曲线与 Brier 指标;校准误差在新源上从 0.106 降到 0.042,高置信错误从 8.7% 降到 4.0%(接近 Jev 的 3.7%)。
- 精度接近 Jev:Kev-27B 在新源数据上 0.848 vs Jev 0.857,仅差 1 个点;在 11 类新源类别中有 9 类与 Jev 持平或反超。
- 工程化完备:文档齐全、CI 校验 claims、API 与官方 SDK 一致性测试、Playground 与象棋 Demo。
主要短板 (必读)
- 顶层排名能力不如 Jev:5% 误差预算下 Kev 只能自动化约 0.45~0.57 的决策,Jev 为 0.70。
- 知识类问题受基座限制:MMLU 上 Kev-9B 0.74、Kev-27B 0.84,Jev 0.90;MMLU-Pro 0.52 vs 0.84。
- Mac 端延迟回退:Qwen3.5 代在 Apple M5 上 5 道题约 721~779ms,旧 Qwen3 代仅约 136~174ms;27B 无 Mac 路径(需 80GB 显存)。
- 长上下文未覆盖训练:训练最多 384 token 的 state;长文档上小模型精度明显下降(9B 在 1k~6k token 混杂文本中 0.556,27B 0.833)。
- 单温度校准:无法重排置信度;选项顺序变化仍可能改变答案。
- 微调可能回退基座单项能力:日期算术曾被微调破坏(需
KEV_DATE_FACTS=1恢复)。
局限性
- 校准非万能:单温度是"分布内"拟合;审计显示"决策所依赖的规则不在输入里"时,任何这类模型(含 Jev)都会"自信地犯错"——必须在自己的数据上做阈值回放。
- 非受控对比:作者明言不知道 Jev 的训练数据,因此 Kev vs Jev 的分数不是严格架构对照。
- Kev-27B 基座未知:基于 Qwen 的 post-trained 版本,其训练数据未知。
- Qwen3.5/3.8 为混合架构:Gated DeltaNet 递归层不遵守注意力掩码,Kev 用"每问独立行"保证隔离,但选项内部仍可能互相影响。
- 无法复现托管 Jev 本体:README 声明"未用 Jev 输出训练",但开源权重无法证明训练链路零上游残留;它是 Jev 接口的"开源实现",不是对 Jev 的逐字节复刻。
适用场景
- 客服工单路由、升级/转人工判断、客户情绪评分(README 的官方示例)。
- Agent 中的高频决策点:工具选择、任务终止、失败重试、安全检查、内容审核。
- 邮件/文本大规模批量分类打分(低成本、可本地)。
- 对数据敏感、要求本地部署与私有微调的企业(客服意图识别、银行/保险工单分派、销售线索优先级)。
- 想研究"决策模型"原理、需要可复现实验的学生与工程师。
同类竞品
| 竞品 | 形态 | 与 Kev 关系 |
|---|---|---|
| Jev / TypeSafe AI | 闭源托管 API | 被复刻的"正主",接口兼容、精度天花板更高 |
| 通用 LLM + 提示词 | 任意文本生成 | 可做同样判断,但慢、贵、需解析、未校准 |
| 传统分类器/意图识别/排序模型 | 专用监督模型 | 每任务需重训;Kev/Jev 有语义泛化、可提示词定义新任务 |
| 国内开源微调复刻(如其他 Qwen LoRA 决策模型) | 开源 | 趋势上可能出现更多同思路产品 |
核心对比:Kev vs Jev
| 维度 | Kev(jaredpalmer/kev) | Jev(TypeSafe AI) |
|---|---|---|
| 形态 | 开源,Apache-2.0 | 闭源,托管 API(invite-only 间歇) |
| 发布时间 | Qwen3.5 版 2026-09-20 | 2026-09-15 发布 / 09-21 全面开放 |
| 定位 | 可自训自跑的开源"Jev 式"决策模型 | 首个商业 "System One Model" |
| 基座/架构 | Qwen3.5/3.8 开源基座 + rank-16 LoRA + pointer head(全公开) | 未披露(新架构 + 并行 sampler + RLCD) |
| 权重 | 可下载(0.8B/4B/9B/27B) | 不可下载 |
| 训练方法 | 交叉熵微调(decision-v7 数据集) | RLCD(校准决策强化学习) |
| 决策原语 | noul / choice / score | noul / choice / score(同接口) |
| API/SDK | 兼容 TypeSafe System One,SDK 直连 | 官方 SDK + HTTP API |
| 新源精度 | 27B=0.848 | 0.857 |
| 可自动化比例(5%误差预算) | 0.45~0.57 | 0.70 |
| 知识类(MMLU) | 9B 0.74 / 27B 0.84 | 0.90 |
| 价格 | 自部署;微调约 $1/次(H100) | 输入 $0.042/百万 token,输出免费 | |
| 速度(声明) | H100 上 Kev-4B 6 题 18.1ms;Mac 偏慢 | 宣称比 LLM 快 193.6x、便宜 444.6x |
| 部署 | 本地 / Modal HTTPS / HF Space | 仅托管 API |
| 可复现/可审计 | 全公开(配方、评估、日志) | 黑盒,校准指标未公开 |
| 主要短板 | 顶层排名与知识类弱于 Jev;Mac 延迟 | 黑盒、成本/数据受控、校准非普适(有审计质疑) |
| 适用 | 数据敏感、本地化、私有微调、学习研究 | 追求最高判断质量、免运维、批量高频 |
发展趋势
- 开源社区活跃度:项目发布一周内即达约 606~1,300 星、296 commits、77 forks(不同时点快照),属高热度新兴品类项目;README 持续更新,research-archive 完整归档,社区讨论(dev.to、Reddit 转载)活跃。
- 迭代方向(作者公开工作清单):为"无法从给定证据回答"的问题加均匀目标训练样本、改进日期处理、覆盖断言式指令、加快 Mac 端服务(MLX 后端)。
- 总结:Kev 把"托管决策模型"迅速变成可自训自跑的开放基础设施,正在引领"判断类任务专用模型"走向开源与本地化,是 Jev 生态中最重要的开源实现。
2 工作原理与架构
概念术语
- System One Model(系统一模型):TypeSafe 提出的新品类,取自卡尼曼《思考,快与慢》的 System 1(快速直觉判断)。指"不生成文字、直接返回结构化概率决策"的模型。
- RLCD(Reinforcement Learning for Calibrated Decisions,校准决策强化学习):TypeSafe 的后训练方法;区别于 RLHF(优化人类偏好)与 RLVR(优化可验证结果),目标是让"模型给出的概率与真实发生频率相符"。
- 原语(Primitive):
noul(是否)、choice(选择)、score(评分)三类最小决策单元。 - LoRA 适配器:低秩适配器,Kev 用 rank-16 在 Qwen 基座之上学习决策任务,基座权重冻结。
- Pointer Head(指针头):Kev 附加在 Qwen 基座上的小型读出头,把候选/问题对应的隐藏态打分后经 softmax 变成概率。
- Gated DeltaNet:Qwen3.5/3.8 混用的递归层,不遵守注意力掩码,是 Kev 架构设计的关键约束。
- 校准(Calibration):模型说 80% 的样本应有约 80% 成立;用 Brier Score、ECE(期望校准误差)度量。
state:传给模型的待评估内容(文本/JSON/数组)。- Brier Score:对完整概率分布而非仅最高答案计分,越低越好。
架构与运行原理
Jev(闭源,仅官方披露)
- 官方披露:一套新架构 + 并行 sampler + RLCD 训练 + System One API/三原语 + workflow eval 方法 + Jev 1.13 已知失败模式。
- 未披露:参数量、网络层结构、基座模型家族、预训练语料明细、RLCD 完整损失/配方、可下载权重、可复现实验代码、正式论文。因此 Jev 属于"黑盒托管服务"。
Kev(开源,架构完全公开)
Kev 每个 checkpoint = rank-16 LoRA 适配器 + 小型 pointer head + Qwen 基座(冻结):
输入 state + 各问题(criteria)
│
▼
Qwen 基座(冻结) ←── 一次编码,共享状态缓存复用
│
├─ 每个问题独立行/独立注意力行(隔离)
│
▼
pointer head:对每个候选的 </opt> 隐藏态 vs 问题 <decide> 隐藏态 打分
│
▼
softmax → 概率分布 → 套拟合温度(校准) → noul/choice/score 结果
- Qwen3(纯注意力):state 与问题拼进同一 token 序列,用注意力掩码实现"能读 state 与自己问题、不能读其他问题"。
- Qwen3.5/3.8(混合注意力 + Gated DeltaNet):递归层忽略注意力掩码,故改为每问一行:state + 该问题独立成行,题目完全隔离;服务端与
DecisionModel.probs()只计算一次 state 并复用其 KV 缓存。 - 训练:交叉熵,目标为正确答案;LoRA 覆盖 attention、MLP、DeltaNet 投影;基座权重不动。
decision-v7训练集 = 1 万条(10 个公开数据集)+ 896 条生成策略例 + 1,680 条(60 个生成规则结构)。 - 校准:加载时 pointer head 应用拟合温度(只改变概率尺度,不改变胜出答案)。
- 候选间/问题间:问题间隔离精确;候选选项之间仍可能互相影响(选项顺序敏感性)。
3 使用指南
安装部署
本地运行(Windows / Linux / macOS) | 亲测
- 依赖:Python 3.12/3.13 +
uv(repo 的.python-version使uv sync用 3.13;torch 尚无 3.14 wheel)。 - 拉取并启动服务:
git clone https://github.com/jaredpalmer/kev.git && cd kev
uv sync --extra serve
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-4b --port 8009
- 说明:GPU(CUDA/ROCm)或 Apple Silicon(MLX)自动选择;首次运行下载适配器与基座;
--run也接受本地 checkpoint 目录或 Hub revision。

一键部署 HTTPS 端点(Modal)
pip install modal && modal setup
curl -LO https://raw.githubusercontent.com/jaredpalmer/kev/main/skills/kev-deploy/scripts/kev_serve.py
KEV_API_KEY=$(openssl rand -hex 24) modal deploy kev_serve.py
- 结果:L40S 上提供 Kev-4B,
Authorization: Bearer <key>;空闲缩零,闲置零成本,冷启动首请求约 35 秒。 - 换模型:
KEV_MODEL=jaredpalmer/kev-9b;Kev-27B 走 B200/H200/H100 80GB。
浏览器试玩
- https://huggingface.co/spaces/jaredpalmer/kev(Kev-4B / Kev-0.8B,免安装)。

关键操作
调用一次决策(curl)
curl -s localhost:8009/v1/systemone -H 'content-type: application/json' -d '{
"state": "Shoes arrived two weeks late and in the wrong size. Also I see two charges on my card.",
"model": "kev-latest",
"questions": {
"department": {"type": "choice", "instructions": "Which team should handle this?", "criteria": {"returns": "Exchanges, refunds, wrong or damaged items", "shipping": "Delivery status, delays", "billing": "Charges, invoices"}},
"escalate": {"type": "noul", "instructions": "Does this need urgent human attention?"},
"frustration": {"type": "score", "instructions": "How frustrated is the customer?", "criteria": ["Calm", "Frustrated", "Very angry"]}
}}'
- 完整调用过程: (kev-0.8b | 本地电脑)
curl -s localhost:8009/v1/systemone -H 'content-type: application/json' -d '{
"state": "一个农夫带着一只狼、一只羊和一棵白菜要过河,船一次只能载农夫和一样东西,狼会吃羊、羊会吃白菜。",
"model": "kev-latest",
"questions": {
"cross_river_policy": {"type": "score", "instructions": "农夫该怎么把它们全部安全运过河?", "criteria": ["狼-羊-白菜", "白菜-狼-羊", "白菜-狼-羊", "羊-白菜-狼", "狼-白菜-羊", "其他"]}
}}'
换成全英文:
curl -s localhost:8009/v1/systemone -H 'content-type: application/json' -d '{
"state": "A farmer was taking a wolf, a sheep and a cabbage across the river. The boat could only carry the farmer and one item at a time. The wolf would eat the sheep and the sheep would eat the cabbage.",
"model": "kev-latest",
"questions": {
"cross_river_policy": {"type": "score", "instructions": "How could the farmer transport all of them safely across the river?", "criteria": ["Wolf-Sheep-Cabbage", "Cabbage-Wolf-Sheep", "Cabbage-Wolf-Sheep", "Sheep-Cabbage-Wolf", "Wolf-Cabbage-Sheep", "Others"]}
}}'
- 预期目标/正确答案: "白菜-狼-羊" / "狼-白菜-羊"
- 实际响应:
kev-0.8b 的答案: (显然是错误的、错得离谱)
{
"model": "kev-latest",
"answers": {
"cross_river_policy": {
"type": "score",
"score": 2.948,
"legend": {
"0": "Wolf-Sheep-Cabbage",
"1": "Cabbage-Wolf-Sheep",
"2": "Cabbage-Wolf-Sheep",
"3": "Sheep-Cabbage-Wolf",
"4": "Wolf-Cabbage-Sheep",
"5": "Others"
},
"probabilities": {
"0": 0.1866,
"1": 0.0966,
"2": 0.1092,
"3": 0.1398,
"4": 0.125,
"5": 0.3426
},
"confidence": 0.0
}
},
"usage": {
"input_tokens": 105,
"output_tokens": 165
},
"latency_ms": 1231.2
}
Python(TypeSafe SDK 直连本地)
from typesafe_sdk import Choice, Noul, Score, TypeSafeClient
client = TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8009", model="kev-latest")
response = client.system_one(
state="I was charged twice. Please fix this ASAP.",
questions={
"billing": Noul(instructions="Is this ticket about billing?"),
"tone": Choice(instructions="What is the customer's tone?", criteria={"calm": None, "frustrated": None, "angry": None}),
"urgency": Score(instructions="How urgent is this ticket?", criteria=["can wait", "this week", "today"]),
})
微调(自训)
- 准备 JSONL,每行 = 一个请求 + 每题
label(choice=选项名,noul=true/false,score=等级下标,留 10~20% 做评估)。 - 从已发布 checkpoint 续训(比从基座零训效果好:基座零训在 836 例上只 0.33,
--init_from保持 0.83 并在新域达 0.88):
uv run python -m kev.train --data train.jsonl --base Qwen/Qwen3.5-4B-Base --init_from jaredpalmer/kev-4b \
--epochs 2 --lr 2e-5 --batch 1 --accum 8 --dtype bf16 --checkpointing 1 --device cuda --out runs/mine
uv run python -m kev.benchmark --run runs/mine --data heldout.jsonl --out runs/mine-eval
uv run --extra serve python -m kev.serve --run runs/mine --port 8009
- 或用编码智能体一键闭环:
npx skills add jaredpalmer/kev@kev-finetune,让 agent "fine-tune Kev on my support tickets"(Modal 自动跑完,Kev-4B 一次约 1 美元)。
关键环境变量
| 变量 | 作用 |
|---|---|
KEV_TEMPERATURE=1.0 |
返回未校准原始概率 |
KEV_DATE_FACTS=1 |
给 state 中成对日期追加天数差(日期策略题 0.80→0.90,Jev 0.93) |
KEV_DTYPE=fp32 |
走评估同款精确路径 |
KEV_API_KEY |
要求 Authorization: Bearer <key> |
服务端 API
POST /v1/systemone:主决策接口(state+questions,可任意题数)。GET /v1/models:模型卡与已加载 checkpoint 信息。POST /v1/systemone/permute:同一 choice 在不同选项顺序下多次运行。POST /v1/systemone/separate:每问独立前向。
Z FAQ for Kev
Q: Kev 和 Jev 是什么关系?Kev 是"抄"Jev 吗?
Kev 是 Jev 的开源、本地化实现:它遵循 TypeSafe System One 的接口与 API(含三原语、SDK 兼容),架构是"Qwen 基座 + LoRA + pointer head"的自研实现。README 明确声明未使用 Jev 输出做训练。因此 Kev 是"Jev 接口的兼容开源实现",不是对 Jev 本体的复刻,也不构成 TypeSafe 客户协议下的蒸馏。
Q: Kev 的精度能超过 Jev 吗?
不能(总体)。Kev-27B 在新源数据上 0.848 vs Jev 0.857,只差 1 个点,且 11 类中有 9 类持平或反超;但在"5% 误差预算下的可自动化比例"(0.45~0.57 vs 0.70)、知识类(MMLU)、以及外部测试集(WANLI、typesafe-v1)上仍落后 Jev。结论:Kev 适合"够用即可、要开源/本地/可微调"的场景;追求最高判断质量应继续用 Jev。
Q: Kev 的校准概率可靠吗?
自带拟合温度是分布内校准,可靠性曲线与 Brier 指标公开、可自测。但校准是群体统计性质,且随任务/领域/分布偏移剧烈变化;审计与 Jevals 均指出"Jev 式置信并非普适属性"。任何阈值都要在自己的标注集上回放后再上线。
Q: 为什么 Qwen3.5 版 Kev 在 Mac 上变慢了?
Qwen3.5/3.8 混入 Gated DeltaNet 递归层,Kev 改为"每问独立行"结构,Mac 上暂缺 MLX 优化后端,导致 5 道题约 700ms+(旧 Qwen3 代约 136~174ms)。低延迟 Mac 部署可先用旧 Qwen3 权重,待 MLX 后端就绪再迁移。
Q: Kev 在长文档上表现如何?
训练只覆盖最多 384 token 的 state,服务端虽允许 65,536 token,但长文档上精度下降;Kev-27B 明显更能扛(1k~6k token 混杂文本 0.833 vs 9B 0.556)。长文档场景优先选 27B。
Q: 微调会不会把模型搞坏?
可能。作者记录微调曾回退"日期算术"等基座单项能力;--init_from(从已发布 checkpoint 续训)比从基座零训稳健得多,建议用较小学习率(2e-5)。
Q: 部署 Kev 需要多少钱?
本地:按自有硬件;Modal 部署:空闲缩零、闲置零成本,冷启动约 35 秒。训练:Kev-4B 一次微调约 1 美元 H100;作者复现整个 Qwen3.5 实验约 95 美元。GPU 单价参考:L4 $0.80/h、L40S $1.95/h、H100 $3.95/h、B200 $6.25/h。
Y 推荐文献
- Kev - GitHub(README / 模型卡 / PLAN / research-archive)
- Kev 网页试玩(Hugging Face Space)
- TypeSafe AI - 官网 / Jev 介绍
- Introducing System One Models and Jev - TypeSafe AI News
- Jared Palmer ports Kev to Qwen3.5 - RuntimeWire
- Kev brings Jev-like local decision models to Qwen, while audits challenge universal calibration - DEV/Breach Protocol
- Jev 模型深度解读:不生成文字的 System One 决策模型 - CSDN
- Jev 爆火,具身智能迎来大救星? - 36氪/AIX财经
- Jev 与 RLCD 训练解析 - Analytics Made Simple
X 参考文献
- jaredpalmer/kev - GitHub
- Kev-4B - OpenRouter
- TypeSafe AI - Home
- Jared Palmer ports Kev to Qwen3.5 for roughly $95 in H100 time - RuntimeWire
- Kev brings Jev-like local decision models to Qwen, while audits challenge universal calibration - DEV Community
- Kev:开源本地决策模型,一次前向传播回答多个问题 - blog.mushroom.cv
- Jev 模型深度解读 - CSDN
- Jev 爆火,具身智能迎来大救星? - 36氪
- Decision-Centric AI: Why System One Models Like Jev Outperform Chatbots - DEV
- TypeSafe AI Releases Jev - MarkTechPost
- Jev — TypeSafe's model returns typed decisions - AI/TLDR
浙公网安备 33010602011771号